{"version":3,"file":"testngcat.mjs","sources":["../../../projects/catng/src/lib/models/apipaths.model.ts","../../../projects/catng/src/lib/models/filter-page-sort.model.ts","../../../projects/catng/src/lib/models/formparameter.model.ts","../../../projects/catng/src/lib/enums/comp.enum.ts","../../../projects/catng/src/lib/enums/icon.enum.ts","../../../projects/catng/src/lib/enums/input-type.enum.ts","../../../projects/catng/src/lib/enums/message-status-type.enum.ts","../../../projects/catng/src/lib/enums/submit-type.enum.ts","../../../projects/catng/src/lib/enums/file-show-type.enum.ts","../../../projects/catng/src/lib/models/form.model.ts","../../../projects/catng/src/lib/models/response.model.ts","../../../projects/catng/src/lib/models/app.config.ts","../../../projects/catng/src/lib/models/http/http-param.model.ts","../../../projects/catng/src/lib/models/input-control-command.model.ts","../../../projects/catng/src/lib/models/list-options.model.ts","../../../projects/catng/src/lib/models/column.model.ts","../../../projects/catng/src/lib/services/jwthelper.service.ts","../../../projects/catng/src/lib/services/global.service.ts","../../../projects/catng/src/lib/services/base.service.ts","../../../projects/catng/src/lib/services/loading.service.ts","../../../projects/catng/src/lib/services/dynamic-form-page.service.ts","../../../projects/catng/src/lib/components/base.component.ts","../../../projects/catng/src/lib/components/filter-page-sort.component.ts","../../../projects/catng/src/lib/components/base-list.component.ts","../../../projects/catng/src/lib/pipes/auth-image.pipe.ts","../../../projects/catng/src/lib/pipes/contact.pipe.ts","../../../projects/catng/src/lib/pipes/phone.pipe.ts","../../../projects/catng/src/lib/components/file-control/file-control.component.ts","../../../projects/catng/src/lib/components/file-control/file-control.component.html","../../../projects/catng/src/lib/components/base-form.component.ts","../../../projects/catng/src/lib/components/input-control/input-control.component.ts","../../../projects/catng/src/lib/components/input-control/input-control.component.html","../../../projects/catng/src/lib/components/input-form-control/input-form-control.component.ts","../../../projects/catng/src/lib/components/input-form-control/input-form-control.component.html","../../../projects/catng/src/lib/components/dynamic-form/dynamic-form.component.ts","../../../projects/catng/src/lib/components/dynamic-form/dynamic-form.component.html","../../../projects/catng/src/lib/components/dynamic-form-page/dynamic-form-page.component.ts","../../../projects/catng/src/lib/components/dynamic-form-page/dynamic-form-page.component.html","../../../projects/catng/src/lib/pipes/cat-date.pipe.ts","../../../projects/catng/src/lib/components/dynamic-list/dynamic-list.component.ts","../../../projects/catng/src/lib/components/dynamic-list/dynamic-list.component.html","../../../projects/catng/src/lib/services/dynamic-list-page.service.ts","../../../projects/catng/src/lib/components/dynamic-list-page/dynamic-list-page.component.ts","../../../projects/catng/src/lib/components/dynamic-list-page/dynamic-list-page.component.html","../../../projects/catng/src/lib/components/dialog/dialog.component.ts","../../../projects/catng/src/lib/components/dialog/dialog.component.html","../../../projects/catng/src/lib/components/toolbar/toolbar.component.ts","../../../projects/catng/src/lib/components/toolbar/toolbar.component.html","../../../projects/catng/src/lib/components/button/button.component.ts","../../../projects/catng/src/lib/components/button/button.component.html","../../../projects/catng/src/lib/components/confirm-toast/confirm-toast.component.ts","../../../projects/catng/src/lib/components/confirm-toast/confirm-toast.component.html","../../../projects/catng/src/lib/interceptors/app-http.interceptor.ts","../../../projects/catng/src/lib/catng.service.ts","../../../projects/catng/src/lib/catng.component.ts","../../../projects/catng/src/public-api.ts","../../../projects/catng/src/testngcat.ts"],"sourcesContent":["export class ApiPaths {\r\n\r\n    getUrl?: string;\r\n    listUrl?: string;\r\n    addUrl?: string;\r\n    updateUrl?: string;\r\n    deleteUrl?: string;\r\n\r\n\r\n\r\n    // baseUrl?: string;\r\n    // defaultUrl?: string;\r\n\r\n\r\n    // ListByParentUrl?: string;\r\n    // LookupUrl?: string;\r\n\r\n    // SelfUrl?: string;\r\n    // AddUrl?: string;\r\n    // AddsUrl?: string;\r\n    // UpdateUrl?: string;\r\n    // UpdatesUrl?: string;\r\n\r\n    // SaveUrl?: string;\r\n\r\n\r\n    // PutUrl?: string;\r\n\r\n\r\n    // PostUrl?: string;\r\n\r\n\r\n    // DeleteUrl?: string;\r\n    // DeletesUrl?: string;\r\n\r\n    // GridListUrl?: string;\r\n    // GridListByParentUrl?: string;\r\n\r\n    // SearchUrl?: string;\r\n\r\n} ","export class Filter {\r\n\tfield?: string\r\n\tvalue?: string;\r\n\tmatchMode?: string;\r\n\tconstructor(field?: string, value?: string, matchMode?: string) {\r\n\t\tthis.field = field;\r\n\t\tthis.value = value;\r\n\t\tthis.matchMode = matchMode;\r\n\t}\r\n}\r\n\r\nexport class Sort {\r\n\tfield?: string;\r\n\torder?: number;\r\n}\r\n\r\nexport class FilterPageSort {\r\n\tfirst?: number = 0;\r\n\trows?: number = 15;\r\n\tfilter?: Filter[];\r\n\tsort?: Sort[];\r\n}\r\n","export class FormParameter {\r\n    [x: string]: any;\r\n    Id: any;\r\n    Data: any;\r\n    ParentId: any;\r\n    //ParentItem:any;\r\n    PrimaryKeyName: string = \"Id\";\r\n    ParentIdPropertyName?: string;\r\n    ResultProperty?: string;\r\n    \r\n    IsReactive:boolean=false;\r\n\r\n}","export enum Comp {\r\n  dataType = 'string',\r\n  dateFormat = 'dd.mm.yy',\r\n  maxFileSize = 104857600,\r\n  user = 'portalErisim',\r\n  lsJwt = 'portalAT',\r\n  lsRefresh = 'portalRT',\r\n  lsLocale = 'portalLocale',\r\n  lsSunucu = 'portalSunucu',\r\n}\r\n","export enum Icon {\r\n\tlogin = 'pi pi-sign-in',\r\n\tlogining = 'pi pi-spin pi-spinner',\r\n\tactions = 'pi pi-bars',\r\n\tlist = 'pi pi-list',\r\n\tedit = 'pi pi-pencil',\r\n\tsave = 'pi pi-check',\r\n\tnew = 'pi pi-file-o',\r\n\tassign = 'pi pi-forward',\r\n\tcheckc = 'pi pi-check-circle',\r\n\tchecks = 'pi pi-check-square',\r\n\tminusc = 'pi pi-minus-circle',\r\n\ttimesc = 'pi pi-times-circle',\r\n\ttimes = 'pi pi-times',\r\n\tlink = 'pi pi-external-link',\r\n\tfolder = 'pi pi-folder',\r\n\tfoldero = 'pi pi-folder-open',\r\n\tpdf = 'pi pi-file-pdf',\r\n\texcel = 'pi pi-file-excel',\r\n\tword = 'fas fa-file-word',\r\n\tsend = 'pi pi-send',\r\n}\r\n","export enum InputTypeEnum {\r\n\r\n  //form için elmanlar\r\n  form = \"form\",\r\n  row = \"row\",\r\n  column = \"column\",\r\n  card = \"card\",\r\n\r\n\r\n  //inputlar\r\n  number = \"number\",\r\n  int = \"int\",\r\n  decimal = \"decimal\",\r\n  display = \"display\",\r\n  currency = \"currency\",\r\n  textbox = \"textbox\",\r\n  treeselect = \"treeselect\",\r\n  editor = \"editor\",\r\n  dropdown = \"dropdown\",\r\n  multiselect = \"multiselect\",\r\n  // boolean='boolean',\r\n  checkbox = \"checkbox\",\r\n  checkboxgroup = \"checkboxgroup\",\r\n  date = \"date\",\r\n  dateTime = \"datetime\",\r\n  time = \"time\",\r\n  radiobutton = \"radiobutton\",\r\n  switchbutton = \"switchbutton\",\r\n  radiogroup = \"radiogroup\",\r\n  password = \"password\",\r\n  picklist = \"picklist\",\r\n  selection = \"selection\",\r\n  routerlink = \"routerlink\",\r\n  profilephoto = \"profilephoto\",\r\n  icon = \"icon\",\r\n  mask = \"mask\",\r\n  textarea = \"textarea\",\r\n  email = \"email\",\r\n  phone = \"phone\",\r\n  alphabetic = \"alphabetic\",\r\n  pnum = \"pnum\",\r\n  chips = \"chips\",\r\n  tree = \"tree\",\r\n  fileupload = 'fileupload',\r\n  autocomplete = 'autocomplete',\r\n  longDate = 'longDate',\r\n  shortDate = 'shortDate',\r\n  innerHTML = 'innerHTML',\r\n  link = \"link\",\r\n  fileupload_yabancidil = \"fileupload_yabancidil\",\r\n  contact = \"contact\",\r\n  listitems = \"listitems\",\r\n  yesNo = \"yesNo\",  \r\n  colorPicker = \"colorPicker\",\r\n  rating = \"rating\",\r\n  matrix = \"matrix\",\r\n}\r\n\r\n","export enum MessageStatusType {\r\n    success = 'success',\r\n    warning = 'warning',\r\n    error = 'error',\r\n    warn = 'warn',\r\n    info = 'info'\r\n\r\n}\r\n","export enum SubmitType {\r\n    insert = 'insert',\r\n    update = 'update',\r\n    delete = 'delete',\r\n    login='login'\r\n}\r\n","export enum FileShowTypEnum {\r\n    upload = \"upload\",\r\n    uploadAndShow = \"uploadAndShow\",\r\n    list = \"list\",\r\n    tableButton = \"tableButton\",\r\n    profilePhoto = \"profilePhoto\",\r\n    show = \"show\"\r\n}","\r\nimport { FormGroup } from \"@angular/forms\";\r\nimport { Ref } from \"./ref.model\";\r\nimport { InputTypeEnum } from \"../enums\";\r\nimport { FormListItemModel } from \"./form/form-list-item.model\";\r\n\r\nexport interface FormModel {\r\n    id: number;\r\n    name?: string;\r\n    title?: string;\r\n    description?: string;\r\n    tableName?: string;\r\n    getdataUrl?: string;\r\n    saveUrl?: string;\r\n    updateUrl?: string;\r\n    deleteUrl?: string;\r\n    formControlTemplateList?: FormControlTemplate[];\r\n    row: number;\r\n    col: number;\r\n}\r\n\r\nexport interface RowConfig {\r\n    col?: number;\r\n}\r\n\r\nexport class FormControlTemplate {\r\n    type?: string | any;\r\n    inputType?: string = InputTypeEnum.textbox;\r\n    key: string | any;\r\n    label?: string | any;\r\n    value?: FormListItemModel[] | any;\r\n    explanation?: string | any;\r\n    placeholder?: string | any;\r\n    required?: boolean | any;\r\n    readonly?: boolean = false;\r\n    minLength?: number | any;\r\n    maxLength?: number | any;\r\n    autoComplete?:boolean\r\n    //yeni item butonu ile ilgili alanlar \r\n    newItemButton?: boolean = false;\r\n    newItemButtonLabel?: string;\r\n    newItemButtonClick?: (event?: any) => void;\r\n    //yeni item butonu ile ilgili alanlar \r\n\r\n    class?: string | any;\r\n    style?: string | any;\r\n    show?: boolean = true;\r\n    oneMore?: boolean = false;\r\n    disabled?: boolean | any;\r\n\r\n    //mask textbox\r\n    mask?: string | any;\r\n\r\n    //number\r\n    min?: number | any;\r\n    max?: number | any;\r\n    prefix?: string | any;\r\n    suffix?: string | any;\r\n    step?: number | any;\r\n\r\n    //select,dropdown,multiselect\r\n    options?: Ref[] | any;\r\n    optionLabel?: string | any;\r\n    optionValue?: string | any;\r\n    showClear?: boolean | any;\r\n    autoDisplayFirst?: boolean | any;\r\n    virtualScroll?: boolean | any;\r\n    filter?: boolean | any;\r\n    editable?: boolean | any;\r\n    virtualScrollItemSize?: number | any;\r\n    grouped?: boolean | any;\r\n    display?: string | any;\r\n    selectionLimit?: number | any;\r\n\r\n    refUrl?: string;\r\n    refKey?: string;\r\n    queryParameter?: string;\r\n\r\n\r\n\r\n    //calendar\r\n    minDate?: Date | any;\r\n    maxDate?: Date | any;\r\n    showTime?: boolean = false;\r\n    timeOnly?: boolean = false;\r\n    showSeconds?: boolean = false;\r\n\r\n\r\n\r\n    //texterea\r\n    rows?: number | any;\r\n    cols?: number | any;\r\n    autoResize?: boolean | any;\r\n\r\n\r\n    //fileupload\r\n    fileCanUpload?: boolean = true;\r\n    fileRefEntityId?: number;//table id veri tabanında ki tablolara karşılık geliyor\r\n    fileEntityId?: number;\r\n    fileUrl?: string;\r\n    fileDeleteUrl?: string;\r\n    fileUploadUrl?: string;\r\n    fileDownloadUrl?: string;\r\n    fileListUrl?: string;\r\n    fileShowType?: string;\r\n    fileShowName?: string;\r\n    fileName?: string;\r\n    fileBorder?: string;\r\n    fileRadius?: string;\r\n    fileMime?: string;\r\n    fileWidth?: any;\r\n    fileHeight?: any;\r\n    fileButtonText?: string;\r\n\r\n\r\n    picklistTarget?: any[] = [];\r\n    picklistSource?: any[] = [];\r\n\r\n    children?: FormControlTemplate[] = [];\r\n\r\n    // Row and Column\r\n    //row?: RowConfig[] = [];\r\n    //defaultCol?: number = 1;\r\n    showGrid?: boolean = true;\r\n\r\n    rowOrder?: number = 0;\r\n}\r\nexport class FormGroupTemplate {\r\n    refEntityId?: number;//table id veri tabanında ki tablolara karşılık geliyor\r\n    controls: FormControlTemplate[] = [];\r\n    formGroup: FormGroup | any;\r\n    formSubmited: boolean = false;\r\n}\r\nexport class FormGroupControlTemplate {\r\n    key?: string;\r\n    refEntityId?: number;//table id veri tabanında ki tablolara karşılık geliyor\r\n    control?: FormControlTemplate = {} as FormControlTemplate;\r\n    formGroup: FormGroup | any;\r\n    formSubmited: boolean = false;\r\n}","\r\nimport { ListOptions } from \"./list-options.model\";\r\nimport { FormControlTemplate,  } from \"./form.model\";\r\n\r\nexport class ResponseModel<T> {\r\n    statusCode?: number;\r\n    errorCode?: number;\r\n    \r\n    message?: string;\r\n    data?: T | any;\r\n    listOptions?: ListOptions<T>; // dyanmic bir list olacaksa \r\n\r\n    //dynamic form oluşturmak için\r\n    formControlTemplate?: FormControlTemplate[] | any[] | any = [];\r\n\r\n    //pagination\r\n    pageNo?: number;\r\n    pageSize?: number;\r\n    totalCount?: number;\r\n    totalPages?: number;\r\n   \r\n}","import { Project } from \"./project.model\";\r\n\r\nexport class AppConfig {\r\n      production?: boolean;\r\n      API_URL?: string;\r\n      baseurl?: string;\r\n      apiName?: string;\r\n      projects?: Project;\r\n      projectsApi?: Project;\r\n\r\n      constructor() {}\r\n}","import { Filter } from \"./filter.model\";\r\nimport { Sort } from \"./sort.model\";\r\n\r\nexport class HttpParam{\r\n    url?: string | null;\r\n    filters?: Filter[];\r\n    page?: number;\r\n    pageSize?: number;\r\n    sortBy?: Sort[];\r\n    id?: any;\r\n    method?: 'POST' | 'GET' | 'PUT' | 'DELETE';\r\n}","export class InputControlCommand{\r\n    key?:string;\r\n    command?: (event?: any) => void;\r\n}","import { ListButtons } from \"./list-button.model\";\r\nimport { Column } from \"./column.model\";\r\n\r\nexport class ListOptions<T> {\r\n    dataList?: T[]; //kayıtlar\r\n    tableSize?: string;\r\n    columns?: Column[]; //kolonların adları\r\n    columnsRowExpansion?: Column[]; //RowExpansion kolonların adları\r\n    filterColumns?: string[] = []; // hangi alanların filtreleneceğini bildirir\r\n    tableName?: string = \"Liste\";//tablo adı\r\n    dataKey?: string = \"Id\";\r\n    pageSize?: number = 50;\r\n    loading?: boolean = false;\r\n    scrollable?: boolean = true;\r\n    scrollHeight?: string = \"400px\";\r\n    formMode?: string = \"modal\"; //modal,inline\r\n    isHeader?: boolean = true;\r\n    isRowIndexVisible?: boolean = false;\r\n    rowIndexText?: string = \"No\";\r\n    isRowClick?: boolean = true;\r\n    downloadExcel?: boolean = false;\r\n    customButtonText?: string = \"Tablo Görünümü\";\r\n    isSearchableFilter?: boolean = false;\r\n    isLazyLoading?: boolean = false;\r\n    print?:boolean = false;\r\n    isComplexSearchEnabled?: boolean = false;\r\n    isSearchEnabled?: boolean = false;\r\n    isRefreshButton?: boolean = true;\r\n    isAddButton?: boolean = true;\r\n    isActionsButton?: boolean = false;\r\n    customButtons?: ListButtons[] = [];\r\n}\r\n","import { InputTypeEnum } from \"../enums\";\r\nexport class Column {\r\n    refEntityId?: number;\r\n    field?: string;\r\n    header?: string;\r\n    routerLinkText?: string;\r\n    type?: InputTypeEnum = InputTypeEnum.textbox;\r\n    filter?: boolean = false;\r\n    isMergeable?: boolean = false;\r\n    className?: string;\r\n    isRowEdit?: boolean = false;\r\n    isRowClick?: boolean = false;\r\n    index?: number;\r\n    columnName?: string;\r\n    columnIndex?: number;\r\n    fileCanUpload?: boolean = false;\r\n    width?: string;\r\n    height?: string;\r\n    border?: string;// = '2px solid #d2d6de;';\r\n    radius?: string;// = \"50%\";\r\n    class?: string;\r\n    style?: string;\r\n    command?: (event: any) => void;\r\n}\r\n","import { HttpRequest } from '@angular/common/http';\n// tslint:disable:no-bitwise\n\nimport { Injectable, Inject } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class JwtHelperService {\n\n  public urlBase64Decode(str: string): string {\n    let output = str.replace(/-/g, '+').replace(/_/g, '/');\n    switch (output.length % 4) {\n      case 0: {\n        break;\n      }\n      case 2: {\n        output += '==';\n        break;\n      }\n      case 3: {\n        output += '=';\n        break;\n      }\n      default: {\n        throw new Error('Illegal base64url string!');\n      }\n    }\n    return this.b64DecodeUnicode(output);\n  }\n\n  // credits for decoder goes to https://github.com/atk\n  private b64decode(str: string): string {\n    const chars =\n      'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n    let output = '';\n\n    str = String(str).replace(/=+$/, '');\n\n    if (str.length % 4 === 1) {\n      throw new Error(\n        `'atob' failed: The string to be decoded is not correctly encoded.`\n      );\n    }\n\n    for (\n      // initialize result and counters\n      let bc = 0, bs: any, buffer: any, idx = 0;\n      // get next character\n      (buffer = str.charAt(idx++));\n      // character found in table? initialize bit storage and add its ascii value;\n      ~buffer &&\n        ((bs = bc % 4 ? bs * 64 + buffer : buffer),\n          // and if not first of each 4 characters,\n          // convert the first 8 bits to one ascii character\n          bc++ % 4)\n        ? (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6))))\n        : 0\n    ) {\n      // try to find character in table (0-63, not found => -1)\n      buffer = chars.indexOf(buffer);\n    }\n    return output;\n  }\n\n  private b64DecodeUnicode(str: any) {\n    return decodeURIComponent(\n      Array.prototype.map\n        .call(this.b64decode(str), (c: any) => {\n          return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n        })\n        .join('')\n    );\n  }\n\n\n  decodeToken<T = any>(token: string): null | T {\n    if (!token || token === '') {\n      return null;\n    }\n\n    const parts = token.split('.');\n\n    if (parts.length !== 3) {\n      throw new Error(\n        `The inspected token doesn't appear to be a JWT. Check to make sure it has three parts and see https://jwt.io for more.`\n      );\n    }\n\n    const decoded = this.urlBase64Decode(parts[1]);\n    if (!decoded) {\n      throw new Error('Cannot decode the token.');\n    }\n\n    return JSON.parse(decoded);\n  }\n\n\n  getTokenExpirationDate(token: string): Date | null {\n    let decoded: any;\n    decoded = this.decodeToken(token);\n\n    if (!decoded || !decoded.hasOwnProperty('exp')) {\n      return null;\n    }\n\n    const date = new Date(0);\n    date.setUTCSeconds(decoded.exp);\n\n    return date;\n  }\n\n  isTokenExpired(\n    token: string | null,\n    offsetSeconds?: number\n  ): boolean {\n    if (!token || token === '') {\n      return true;\n    }\n    const date = this.getTokenExpirationDate(token);\n    offsetSeconds = offsetSeconds || 0;\n\n    if (date === null) {\n      return false;\n    }\n\n    return !(date.valueOf() > new Date().valueOf() + offsetSeconds * 1000);\n  }\n\n  public getAuthScheme(\n    authScheme: Function | string | undefined,\n    request: HttpRequest<any>\n  ): string | undefined {\n    if (typeof authScheme === 'function') {\n      return authScheme(request);\n    }\n\n    return authScheme;\n  }\n}\n","import { Injectable, inject } from '@angular/core';\r\nimport { BaseService } from './base.service';\r\nimport { NavigationExtras, Router } from '@angular/router';\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport { JwtHelperService } from './jwthelper.service';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { HttpClient, HttpErrorResponse, HttpResponse } from '@angular/common/http';\r\nimport { ValidationErrors } from '@angular/forms';\r\nimport { AppConfig, User } from '../models';\r\nimport { BaseComponent } from '../components';\r\n\r\n@Injectable()\r\nexport class GlobalService {\r\n\r\n  appConfig: AppConfig;\r\n  http: HttpClient;\r\n  constructor(\r\n    private router: Router,\r\n    private confirmationService: ConfirmationService,\r\n    private messageService: MessageService,\r\n    private jwtHelper: JwtHelperService,\r\n  ) {\r\n    this.appConfig = inject(AppConfig);\r\n    this.http = inject(HttpClient);\r\n  }\r\n  getUserLocal(): User | any {\r\n    let token = this.getTokenLocal();\r\n    if (!token)\r\n      return null;\r\n    let expirationDate = this.jwtHelper.getTokenExpirationDate(token);\r\n    let user = this.jwtHelper.decodeToken(token) as User | any;\r\n    if (user && user.id && user.id != 0) {\r\n      user.roles = user.roles ?? user['http://schemas.microsoft.com/ws/2008/06/identity/claims/role'];\r\n    }\r\n    return user;\r\n  }\r\n  isAuthenticated(): boolean {\r\n    return this.getUserLocal() ? true : false;\r\n  }\r\n\r\n\r\n\r\n\r\n  getApiName(): string {\r\n    return this.appConfig.apiName ?? \"\";\r\n  }\r\n  navigate(commands: any[], extras?: NavigationExtras): void {\r\n    this.router.navigate(commands, extras);\r\n  }\r\n  onError(error: HttpErrorResponse | any, cmp?: BaseComponent) {\r\n\r\n    if (cmp) {\r\n      cmp.blocked = false;\r\n      cmp.success = false;\r\n    }\r\n    if ([401, 403].includes(error.status)) {\r\n      if (this.getTokenLocal()) {\r\n        // this.logout();\r\n        this.showMessage('warring', 'Oturum süreniz dolmuştur.');\r\n      }\r\n    } else {\r\n      this.onErrorMessage(error);\r\n    }\r\n    return throwError(() => error);//() => new Error(error);\r\n  }\r\n  onSuccess(cmp?: BaseComponent): void {\r\n    if (cmp) {\r\n      cmp.success = true;\r\n    }\r\n  }\r\n  showMessage(status: any, mesaj?: string, konu?: string): void {\r\n    let severity_, summary_;\r\n    if (status == 'error' || status == false || status == 0 || status == 'hata') {\r\n      severity_ = 'error';\r\n      summary_ = konu ?? 'Hata';\r\n    } else if (status == 'success' || status == true || status == 1 || status == 'başarılı' || status == 'basarili'\r\n    ) {\r\n      severity_ = 'success';\r\n      summary_ = konu ?? 'Başarılı';\r\n    } else if (status == 'warn' || status == 'warring' || status == 2 || status == 'uyarı' || status == 'uyari') {\r\n      severity_ = 'warn';\r\n      summary_ = konu ?? 'Uyarı';\r\n    } else if (status == 'info' || status == 3 || status == 'bilgi') {\r\n      severity_ = 'info';\r\n      summary_ = konu ?? 'Bilgi';\r\n    }\r\n    this.messageService.add({\r\n      severity: severity_,\r\n      summary: summary_,\r\n      detail: mesaj,\r\n      life: 5000,\r\n    });\r\n  }\r\n  onErrorMessage(event: any, mesaj?: string, konu?: string): void {\r\n    let severity_, summary_;\r\n    severity_ = 'error';\r\n    summary_ = konu ?? 'Hata';\r\n\r\n    let error = event?.error?.Message ?? event.error;\r\n\r\n    console.error(event);\r\n    let hataIndex = -1;\r\n    if (error && error.length > 0) {\r\n      hataIndex = error?.indexOf('HATA!');\r\n    }\r\n\r\n    if ((hataIndex || hataIndex == 0) && hataIndex > -1) {\r\n      hataIndex += 5;\r\n      let hataIndexSon = error?.indexOf('\\r\\n');\r\n      if (hataIndexSon < 0) {\r\n        hataIndexSon = error.length;\r\n      }\r\n      mesaj = error?.substr(hataIndex, hataIndexSon - hataIndex);\r\n    } else if (!mesaj) {\r\n      let index;\r\n      if (event.status == 400) {\r\n        mesaj =\r\n          error ??\r\n          event.error?.title ??\r\n          'Bir veya daha fazla form doğrulama hatası oluştu.';\r\n      } else {\r\n        mesaj = error;\r\n        // if (event && event.error && event.error.length > 0)\r\n        //   index = event.error?.indexOf('\\r\\n') ?? -1;\r\n\r\n        // mesaj = error ?? index > -1 ? hataIndex.error.substr(0, index) : hataIndex.message;\r\n      }\r\n    }\r\n    this.messageService.add({\r\n      severity: severity_,\r\n      summary: summary_,\r\n      detail: mesaj,\r\n      life: 5000,\r\n    });\r\n  }\r\n  showMessageData(data: any) {\r\n    let detail, severity, summary;\r\n    if (data == true) {\r\n      detail = 'İşlem başarılı';\r\n      summary = 'Başarılı';\r\n      severity = 'success';\r\n    } else if (data instanceof HttpErrorResponse) {\r\n      const body = data.error || '';\r\n      const err = (body.Data && body.Data.Hata) || data.statusText;\r\n      severity = 'error';\r\n      summary = data.name;\r\n      detail = err;\r\n    } else {\r\n      if (typeof data === 'string') {\r\n        data = JSON.parse(data);\r\n      }\r\n      if (data.Success == false || (data.Data && data.Data.Success == false)) {\r\n        severity = 'error';\r\n        summary = 'Hata';\r\n        if (data.Success == false) {\r\n          detail = data.Mesaj || data.Data.Mesaj;\r\n        }\r\n      } else {\r\n        detail = data.Mesaj || data?.Data?.Detail || data.Data?.Mesaj || '';\r\n        summary = 'Başarılı';\r\n        severity = 'success';\r\n      }\r\n    }\r\n    this.messageService.add({\r\n      severity: severity,\r\n      summary: summary,\r\n      detail: detail,\r\n    });\r\n  }\r\n  confirm(header: string, message: string, callback: { (): void } , icon?: string, acceptLabel?: string, rejectLabel?: string) {\r\n    this.confirmationService.confirm({\r\n      header: header,\r\n      message: message,\r\n      icon: icon,\r\n      acceptLabel : acceptLabel,\r\n      rejectLabel : rejectLabel,\r\n      accept: () => {\r\n        callback();\r\n      },\r\n    });\r\n  }\r\n\r\n  getIpClient(): Observable<any> {\r\n    return this.http.get('https://api.ipify.org/?format=json', {\r\n      responseType: 'json',\r\n    });\r\n  }\r\n  convertToDate(tarih: any) {\r\n    if (tarih instanceof Date) return tarih;\r\n    if (!tarih) {\r\n      return null;\r\n    }\r\n    let gun = +tarih.substring(0, 2);\r\n    let ay = +tarih.substring(3, 5);\r\n    let yil = +tarih.substring(6, 10);\r\n    let saat = 0;\r\n    let dakika = 0;\r\n    if (tarih.length > 10) {\r\n      saat = +tarih.substring(11, 13);\r\n      dakika = +tarih.substring(14, 16);\r\n    }\r\n    return new Date(yil, ay - 1, gun, saat, dakika);\r\n  }\r\n  convertToTime(saatInput: string) {\r\n    let tarih = new Date();\r\n\r\n    let saat = +saatInput.split(\":\")[0];\r\n    let dakika = +saatInput.split(\":\")[1];\r\n\r\n    return new Date(tarih.getFullYear(), tarih.getMonth(), tarih.getDay(), saat, dakika);\r\n  }\r\n  convertToStringTime(tarih: any) {\r\n    if (typeof tarih != \"string\")\r\n      return tarih.getHours() + \":\" + (tarih.getMinutes().length == 1 ? \"0\" + tarih.getMinutes() : tarih.getMinutes());\r\n    else if (tarih.toString().length < 10) {\r\n      return tarih;\r\n    }\r\n    else {\r\n      let saat = tarih.substring(11, 13);\r\n      let dakika = tarih.substring(14, 16);\r\n      return saat + \":\" + dakika;\r\n    }\r\n\r\n  }\r\n  convertToDatetoString(tarih: any) {\r\n    if (!tarih) {\r\n      return null;\r\n    }\r\n    let gun = +tarih.substring(0, 2);\r\n    let ay = +tarih.substring(3, 5);\r\n    let yil = +tarih.substring(6, 10);\r\n    let saat = 0;\r\n    let dakika = 0;\r\n    if (tarih.length > 10) {\r\n      saat = +tarih.substring(11, 13);\r\n      dakika = +tarih.substring(14, 16);\r\n    }\r\n    return yil + \"-\" + ay + \"-\" + gun + \" \" + saat + \":\" + dakika;\r\n  }\r\n  //#region localstorce\r\n  getCookieValue(cookieName: string) {\r\n    const allCookies = decodeURIComponent(document.cookie).split(\"; \");\r\n    for (let i = 0; i < allCookies.length; i++) {\r\n      const cookie = allCookies[i];\r\n      if (cookie.startsWith(cookieName + \"=\")) {\r\n        return cookie.substring(cookieName.length + 1);\r\n      }\r\n    }\r\n    return \"\";\r\n  }\r\n  getTokenLocal(): string | any {\r\n    return localStorage.getItem('auth-token');\r\n  }\r\n  setTokenLocal(token: string) {\r\n    localStorage.removeItem('auth-token');\r\n    localStorage.setItem('auth-token', token);\r\n  }\r\n\r\n  setRefreshTokenLocal(token: string) {\r\n    localStorage.removeItem('auth-token');\r\n    localStorage.setItem('auth-token', token);\r\n  }\r\n\r\n\r\n  removeToken(): void {\r\n    localStorage.removeItem('auth-token');\r\n    localStorage.removeItem('menu-list');\r\n  }\r\n  setLocalStorage(key: string, value: string): void {\r\n    localStorage.setItem(key, value);\r\n  }\r\n\r\n  removeLocalStorage(key: string): void {\r\n    localStorage.removeItem(key);\r\n  }\r\n\r\n  getLocalStorage(key: string): string | any {\r\n    return localStorage.getItem(key);\r\n  }\r\n  removeMenuList(): void {\r\n    localStorage.removeItem('menu-list');\r\n  }\r\n  //#endregion\r\n\r\n  //#region kontroller\r\n  isEmpty(deger: any, bosGecilebilir?: boolean): boolean {\r\n    return deger == null || deger == undefined || deger == 'null' || deger == 'undefined' || ((deger instanceof Array) && (!deger.length || deger.length == 0)) || (!bosGecilebilir ? deger === '' : false);\r\n  }\r\n\r\n  isNumber(deger: any) {\r\n    return typeof deger === 'number' || Object.prototype.toString.call(deger) === '[object Number]';\r\n  }\r\n  isDate(data: any): boolean {\r\n    if (data instanceof Date) {\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n  isTckn(tckn: number): boolean {\r\n    let deger = new String(tckn);\r\n    let sonuc: boolean = true;\r\n    if (deger) {\r\n      if (deger.substring(0, 1) == \"0\" || deger.length > 11 || deger.length < 11) {\r\n        sonuc = false;\r\n      }\r\n      if (sonuc == true) {\r\n        var i = 9;\r\n        let md = '';\r\n        let mc = '';\r\n        let digit: string;\r\n        let mr = '';\r\n        while (digit = deger.charAt(--i)) {\r\n          i % 2 == 0 ? md += digit : mc += digit;\r\n        }\r\n\r\n        if ((((+(md.split('').join('+')) * 7) - +(mc.split('').join('+'))) % 10) != parseInt(deger.slice(9, 1), 10)) {\r\n          sonuc = false;\r\n        }\r\n        if (sonuc == true) {\r\n          for (var c = 0; c <= 9; c++) {\r\n            mr += deger.charAt(c);\r\n          }\r\n          if (+(mr.split('').join('+')) % 10 != parseInt(deger.slice(10, 1), 10)) {\r\n            sonuc = false;\r\n          }\r\n        }\r\n      }\r\n    }\r\n    return sonuc;\r\n  }\r\n  isIban(deger: string): boolean {\r\n    let sonuc: boolean = true;\r\n    if (deger) {\r\n      sonuc = /^([a-zA-Z0-9]{4} ){2,8}[a-zA-Z0-9]{1,4}|[a-zA-Z0-9]{12,34}$/.test(deger);\r\n    }\r\n    return sonuc;\r\n  }\r\n\r\n  iban(control: any): ValidationErrors | null {\r\n    if (this.isEmpty(control.value) || this.isIban(control.value)) {\r\n      return null;\r\n    }\r\n    return { iban: true };\r\n  }\r\n\r\n  tckn(control: any): ValidationErrors | null {\r\n    if (this.isEmpty(control.value) || this.isTckn(control.value)) {\r\n      return null;\r\n    }\r\n    return { tckn: true };\r\n  }\r\n  //#endregion\r\n  public handleBlobResponse(event: HttpResponse<any>) {\r\n    let blob = event.body;\r\n    var contentDispositionHeader = event.headers.get('Content-Disposition');\r\n    if (contentDispositionHeader) {\r\n      var result = contentDispositionHeader\r\n        .split(';')[1]\r\n        .trim()\r\n        .split('=')[1];\r\n      if (result) {\r\n        var fileName = result.replace(/\"/g, '');\r\n        let link = document.createElement('a');\r\n        link.style.display = 'none';\r\n        document.body.appendChild(link);\r\n        if (link.getAttribute('download') !== undefined) {\r\n          link.setAttribute('href', URL.createObjectURL(blob));\r\n          link.setAttribute('download', fileName);\r\n          link.click();\r\n        }\r\n        document.body.removeChild(link);\r\n      }\r\n    }\r\n  }\r\n\r\n  getBodyHeight(): number {\r\n    return document.body.clientHeight - 50;\r\n\r\n  }\r\n\r\n\r\n}\r\n\r\n","import { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { inject } from \"@angular/core\";\r\nimport { GlobalService } from \"./global.service\";\r\nimport { Observable, catchError, of, tap, throwError } from \"rxjs\";\r\nimport { HttpParam, ResponseModel } from \"../models\";\r\n\r\nexport abstract class BaseService<T> {\r\n  protected controlUrl?: string;\r\n  protected _baseApiUrl?: string;\r\n\r\n  private _mainControlUrl: string | undefined;\r\n\r\n  public http: HttpClient;\r\n  public globalService: GlobalService;\r\n\r\n  constructor() {\r\n    this.http = inject(HttpClient);\r\n    this.globalService = inject(GlobalService);\r\n    this._baseApiUrl = this.globalService.appConfig.API_URL;\r\n\r\n  }\r\n\r\n  public get mainControlUrl(): string | undefined {\r\n    if (!this._mainControlUrl) {\r\n      this._mainControlUrl = this.controlUrl;\r\n    }\r\n    return this._mainControlUrl;\r\n  }\r\n\r\n  public get baseApiUrl(): string | undefined {\r\n    return this._baseApiUrl;\r\n  }\r\n\r\n  setControlUrl(url: string, apiName?: string) {\r\n    const projectsApi = this.globalService.appConfig.projectsApi;\r\n\r\n    if (apiName && projectsApi) {\r\n      this._baseApiUrl = projectsApi[apiName];\r\n    }\r\n\r\n    url = this._baseApiUrl + (url.indexOf('/') !== 0 ? '/' : '') + url;\r\n    this.controlUrl = url;\r\n  }\r\n\r\n  get<T>(httpParam: HttpParam = {} as HttpParam): Observable<ResponseModel<T>> | Observable<ResponseModel<null>> {\r\n    if (!httpParam.url && !this.controlUrl) {\r\n      return new Observable<ResponseModel<null>>(\r\n        (subscriber) => {\r\n          subscriber.next(new ResponseModel<null>());\r\n        }\r\n      );\r\n    }\r\n    let _url = `${httpParam.url ?? this.controlUrl}` + '/' + (httpParam.id != undefined ? `${httpParam.id}` : '');\r\n    return this.http.get(_url) as Observable<ResponseModel<T>>;\r\n  }\r\n  getHeader<T>(url: string, params?: any): Observable<ResponseModel<T>> | Observable<ResponseModel<null>>  {\r\n    let _url = url.includes(\"/api/\") ? url : this.mainControlUrl + url;\r\n\r\n    return this.http.get<T>(_url, { params }) as Observable<ResponseModel<T>>;\r\n  }\r\n  list<T>(httpParam: HttpParam = {} as HttpParam): Observable<ResponseModel<T[]>> | Observable<ResponseModel<T>> | Observable<ResponseModel<any>> {\r\n    if (!httpParam.url && !this.controlUrl) {\r\n      return throwError(() => new Error(`CATNG BaseService => Url not found`));\r\n    }\r\n  \r\n    let _url = httpParam.url ? (httpParam.url.includes(\"/api/\") ? httpParam.url : this.mainControlUrl + httpParam.url) : `${this.controlUrl}`;\r\n  \r\n    if (httpParam.method === 'GET') {\r\n      if (httpParam.page && httpParam.pageSize) {\r\n        _url += `/${httpParam.page}/${httpParam.pageSize}`;\r\n      }\r\n\r\n      if (httpParam.sortBy && httpParam.sortBy.length > 0) {\r\n        _url += `/${httpParam.sortBy.join('/')}`;\r\n      }\r\n\r\n      return this.http.get(_url) as Observable<ResponseModel<T[]>>;\r\n    }\r\n\r\n    return this.http.post(_url, httpParam) as Observable<ResponseModel<T[]>>;\r\n  }\r\n\r\n  //#region CRUD işlmeleri\r\n  create<T>(model: T | any, url: string | null = null): Observable<ResponseModel<T>> | Observable<ResponseModel<null>> {\r\n    if ((!url && !this.controlUrl) || !model || (model[\"id\"] && +model[\"id\"] > 0)) {\r\n      return new Observable<ResponseModel<null>>(\r\n        (subscriber) => {\r\n          subscriber.next(new ResponseModel<null>());\r\n        }\r\n      );\r\n    }\r\n\r\n    let _url = url ?? `${this.controlUrl}`;\r\n    let _model = JSON.stringify(model);\r\n\r\n    return this.http.post(_url, _model) as Observable<ResponseModel<T>>;\r\n  }\r\n\r\n  listWithModel<T>(model: T | any, url: string | null = null): Observable<ResponseModel<T | null>> {\r\n    if (!model || (!url && !this.controlUrl)) {\r\n      console.error(\"işlem başarısız: geçersiz model veya url\", model);\r\n      return of(new ResponseModel<null>()); // Return Observable with ResponseModel<null> in case of invalid model or URL.\r\n    }\r\n    // aşağıda ref servisinin url'inde /api/ olup olmadığı kontrol edilerek url oluşturuldu.(Ref verilerinin controlleri ayrı olduğu için)\r\n    const _url = url ? (url.includes(\"/api/\") ? url : this.mainControlUrl + url) : `${this.controlUrl}/list`;\r\n    const _model = JSON.stringify(model);\r\n\r\n    const _options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n\r\n    return this.http.post<ResponseModel<T>>(_url, _model, _options)\r\n      .pipe(\r\n        catchError((error) => {\r\n          console.error(\"HTTP request failed:\", error);\r\n          return of(new ResponseModel<null>() as ResponseModel<T | null>); // Ensure the return type is consistent.\r\n        })\r\n      );\r\n  }\r\n\r\n  delete<T>(id: number | string, url: string | null = null): Observable<ResponseModel<T>> | Observable<ResponseModel<null>> {\r\n    if ((!url && !this.controlUrl) || !id || Number(id) <= 0) {\r\n      console.error(\"delete işlemi başarısız\", id);\r\n      return new Observable<ResponseModel<null>>(\r\n        (subscriber) => {\r\n          subscriber.next(new ResponseModel<null>());\r\n        }\r\n      );\r\n    }\r\n\r\n    let _url = url ?? `${this.controlUrl}/delete/${id}`;\r\n    return this.http.delete(_url) as Observable<ResponseModel<T>>;\r\n  }\r\n  deleteHeader<T>( url: string, params?: any): Observable<ResponseModel<T>> | Observable<ResponseModel<null>> {\r\n    let _url = url ? `${this.mainControlUrl}${url}` : `${this.controlUrl}/delete/`;\r\n    return this.http.delete(_url, { params }) as Observable<ResponseModel<T>>;\r\n  }\r\n  update<T>(model: T | any, url: string | null = null): Observable<ResponseModel<T>> | Observable<ResponseModel<null>> {\r\n    if ((!url && !this.controlUrl) || !model || !model[\"id\"] || model[\"id\"] == 0) {\r\n      console.error(\"add işlemi başarısız\", model);\r\n      return new Observable<ResponseModel<null>>(\r\n        (subscriber) => {\r\n          subscriber.next(new ResponseModel<null>());\r\n        }\r\n      );\r\n    }\r\n\r\n    let _url = url ?? `${this.controlUrl}` + `/update`;\r\n    let _model = JSON.stringify(model);\r\n    return this.http.post(_url, _model) as Observable<ResponseModel<T>>;\r\n  }\r\n\r\n  addOrUpdate<T>(model: T | any, url: string | null = null): Observable<ResponseModel<T | null>> {\r\n    if (!model || (!url && !this.controlUrl)) {\r\n      console.error(\"işlem başarısız: geçersiz model veya url\", model);\r\n      return of(new ResponseModel<null>()); // Return Observable with ResponseModel<null> in case of invalid model or URL.\r\n    }\r\n\r\n    const _url = url ?? `${this.controlUrl}/addOrUpdate`;\r\n    const _model = JSON.stringify(model);\r\n\r\n    const _options = {\r\n      headers: new HttpHeaders({\r\n        'Content-Type': 'application/json',\r\n      }),\r\n    };\r\n\r\n    return this.http.post<ResponseModel<T>>(_url, _model, _options)\r\n      .pipe(\r\n        catchError((error) => {\r\n          console.error(\"HTTP request failed:\", error);\r\n          return of(new ResponseModel<null>() as ResponseModel<T | null>); // Ensure the return type is consistent.\r\n        })\r\n      );\r\n  }\r\n  //#endregion\r\n\r\n  download<T>(httpParam: HttpParam = {} as HttpParam): Observable<Blob | MediaSource> {\r\n    if (!httpParam.url && !this.controlUrl) {\r\n      return new Observable<Blob | MediaSource>(\r\n        (subscriber) => {\r\n          subscriber.next(new Blob || new MediaSource);\r\n        }\r\n      );\r\n    }\r\n    let _url = `${httpParam.url ?? this.controlUrl}` + (httpParam.id != undefined ? `/${httpParam.id}` : '');\r\n    return this.http.get(_url, { responseType: 'blob' as 'json' }) as Observable<Blob | MediaSource>;\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {BehaviorSubject} from 'rxjs';\r\n\r\n@Injectable()\r\nexport class LoadingService {\r\n  loadingSub: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n  loadingMap: Map<string, boolean> = new Map<string, boolean>();\r\n  isLoading$ = this.loadingSub.asObservable();\r\n  constructor() { }\r\n\r\n  /**\r\n   * Sets the loadingSub property value based on the following:\r\n   * - If loading is true, add the provided url to the loadingMap with a true value, set loadingSub value to true\r\n   * - If loading is false, remove the loadingMap entry and only when the map is empty will we set loadingSub to false\r\n   * This pattern ensures if there are multiple requests awaiting completion, we don't set loading to false before\r\n   * other requests have completed. At the moment, this function is only called from the @link{HttpRequestInterceptor}\r\n   * @param loading {boolean}\r\n   * @param url {string}\r\n   */\r\n  setLoading(loading: boolean, url: string): void {\r\n    if (!url) {\r\n      throw new Error('The request URL must be provided to the LoadingService.setLoading function');\r\n    }\r\n    if (loading === true) {\r\n      this.loadingMap.set(url, loading);\r\n      this.loadingSub.next(true);\r\n    }else if (loading === false && this.loadingMap.has(url)) {\r\n      this.loadingMap.delete(url);\r\n    }\r\n    if (this.loadingMap.size === 0) {\r\n      this.loadingSub.next(false);\r\n    }\r\n  }\r\n}","import { Injectable } from '@angular/core';\r\nimport { BaseService } from '../services';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpParam, ResponseModel } from '../models';\r\n\r\n@Injectable()\r\nexport class DynamicFormPageService<T> extends BaseService<any> {\r\n\r\n  constructor() {\r\n    super();\r\n   }\r\n}\r\n","import { Component, inject } from \"@angular/core\";\r\nimport { GlobalService } from \"../services\";\r\nimport { Message } from \"primeng/api\";\r\nimport { DatePipe } from '@angular/common';\r\nimport { FileShowTypEnum, InputTypeEnum } from \"../enums\";\r\n\r\n@Component({\r\n    standalone: true,\r\n    imports: [],\r\n    template: ``,\r\n    host: { 'Id': Math.random().toString() },\r\n})\r\nexport class BaseComponent {\r\n    controlUrl: string = \"\";\r\n    primaryKeyName: string = \"id\"; // bu alanı formlarda id dışında primary key kullanmak için override edebilirsiniz.\r\n    id?: any;\r\n    page: number = 1;\r\n    pageRowsCount: number = 50;\r\n    totalRecords: number = 0;\r\n    sortField: string[] = [];\r\n  \r\n    blocked?: boolean;\r\n    // loading?: boolean;\r\n    success?: boolean;\r\n  \r\n    msgs: Message[] = [];\r\n\r\n\r\n    globalService: GlobalService;\r\n    datepipe: DatePipe;\r\n    constructor() {\r\n      this.globalService = inject(GlobalService);\r\n      this.datepipe = inject(DatePipe);\r\n    }\r\n  \r\n  \r\n    public get inputTypeEnum(): typeof InputTypeEnum {\r\n      return InputTypeEnum;\r\n    }\r\n    public get fileShowTypeEnum(): typeof FileShowTypEnum {\r\n      return FileShowTypEnum;\r\n    }\r\n  \r\n  \r\n    public getRandomInt(max: number) {\r\n      return Math.random() * max;\r\n    }\r\n  \r\n  }\r\n  ","import { Component } from '@angular/core';\r\nimport { BaseComponent } from './base.component';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\ttemplate: ``,\r\n\thost: { 'Id': Math.random().toString() },\r\n})\r\nexport class FilterPageSortComponent extends BaseComponent {\r\n\trows = 15;\r\n\tfilterDelay = 1000;\r\n\trowsPerPageOptions = [25, 50, 100];\r\n\tcurrentPageReportTemplate = \"{first} - {last} / {totalRecords}\"\r\n}\r\n\r\n","import { Component, EventEmitter, Output } from '@angular/core';\r\nimport { FilterPageSortComponent } from './filter-page-sort.component';\r\nimport { ListOptions } from '../models/list-options.model';\r\nimport { MenuItem } from 'primeng/api';\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'lib-base',\r\n  template: ``,\r\n  host: { 'Id': Math.random().toString() },\r\n})\r\nexport class BaseListComponent<ListModel, FormModel> extends FilterPageSortComponent {\r\n  list: ListModel[] = [];\r\n  data?: FormModel;\r\n  formVisible: boolean = false;\r\n  rowMenuItemList: MenuItem[] = [];\r\n  actionMenuItems: MenuItem[] = [];\r\n  listOptions: ListOptions<ListModel>;\r\n  @Output() resp = new EventEmitter();\r\n  /**\r\n   *\r\n   */\r\n  constructor() {\r\n    super();\r\n    this.listOptions = {};\r\n  }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Pipe, PipeTransform, inject } from '@angular/core';\r\n\r\nimport { lastValueFrom } from 'rxjs';\r\nimport { GlobalService } from '../services';\r\n\r\n@Pipe({\r\n  name: 'authImage',\r\n  standalone: true\r\n})\r\nexport class AuthImagePipe implements PipeTransform {\r\n\r\n\r\n  http : HttpClient;\r\n  globalService : GlobalService\r\n\r\n\r\n  constructor(\r\n    // private http: HttpClient,\r\n    //private auth: AuthService, // our service that provides us with the authorization token\r\n  ) { \r\n\r\n    this.http = inject(HttpClient);\r\n    this.globalService = inject(GlobalService);\r\n\r\n  }\r\n\r\n  async transform(src: string): Promise<string> {\r\n    const token = this.globalService.getTokenLocal();\r\n    const headers = new HttpHeaders({ 'Authorization': `Bearer ${token}` });\r\n    try {\r\n      const imageBlob = await lastValueFrom(this.http.get(src, { headers, responseType: 'blob' }));\r\n      const reader = new FileReader();\r\n      return new Promise((resolve, reject) => {\r\n        reader.onloadend = () => resolve(reader.result as string);\r\n        reader.readAsDataURL(imageBlob);\r\n      });\r\n    } catch {\r\n      //return '/assets/images/no-image.jpg';\r\n      return '';\r\n    }\r\n  }\r\n\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'contact',\r\n  standalone: true\r\n})\r\nexport class ContactPipe implements PipeTransform {\r\n\r\n  transform(value: string): unknown {\r\n    if (!value)\r\n      return value;\r\n    if (value.includes('@'))\r\n      return value;\r\n    let newValue = value.charAt(0) == '0' ? value : '0' + value;\r\n    newValue = \"(\" + newValue.substring(0, 4) + \") \" + newValue.substring(4, 7) + \" - \" + newValue.substring(7, 9) + \" \" + newValue.substring(9, 11);\r\n\r\n    return newValue;\r\n  }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'phone',\r\n  standalone: true\r\n})\r\nexport class PhonePipe implements PipeTransform {\r\n\r\n  transform(value: string): unknown {\r\n    if (!value)\r\n      return value;\r\n\r\n    let newValue = value.charAt(0) == '0' ? value : '0' + value;\r\n    newValue = \"(\" + newValue.substring(0, 4) + \") \" + newValue.substring(4, 7) + \" \" + newValue.substring(7, 9) + \" \" + newValue.substring(9, 11);\r\n\r\n    return newValue;\r\n  }\r\n\r\n}\r\n","import { Component, EventEmitter, HostListener, Input, OnInit, Output, ViewChild, inject } from '@angular/core';\r\nimport { BaseListComponent } from '../base-list.component';\r\nimport { Column, FileOptions } from '../../models';\r\nimport { FileUpload } from 'primeng/fileupload';\r\nimport { AppConfig } from '../../models/app.config';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\nimport { FileUploadModule } from 'primeng/fileupload';\r\nimport { AuthImagePipe } from '../../pipes';\r\n\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'cat-file',\r\n  templateUrl: './file-control.component.html',\r\n  styleUrls: ['./file-control.component.scss'],\r\n  host: { 'Id': Math.random().toString() },\r\n  imports: [CommonModule, FileUploadModule, AuthImagePipe],\r\n  providers: [DatePipe]\r\n})\r\nexport class CatFileComponent extends BaseListComponent<FileOptions, any> implements OnInit {\r\n\r\n  @Input() fileOptions?: FileOptions;\r\n  @Input() uploadButtonText?: string;\r\n  @Output() uploadCompleted = new EventEmitter();\r\n  @Output() onCompleted = new EventEmitter();\r\n  @Input() canFileUpload?: boolean;\r\n  @Input() fileUploaded?: boolean;\r\n  @Input() readonly?: boolean = false;\r\n\r\n  get isFileUpload(): boolean {\r\n    return this.canFileUpload ?? this.fileOptions?.canFileUpload ?? false;\r\n  }\r\n\r\n  token?: string;\r\n  baseurl?: string;\r\n  //fileUrl: string;\r\n\r\n  date?: Date | string | any;\r\n\r\n  showModal: boolean = false;\r\n  preview: boolean = false;\r\n\r\n  files: File[] = [];\r\n  fileTur?: number;\r\n  fileTurList?: SelectItem[];\r\n\r\n\r\n  isPDF?: boolean;\r\n  PDFdosyayolu?: string;\r\n  pdfHeight: string = \"450px\";\r\n\r\n  fileUrl: string = '';\r\n\r\n  columns?: Column[];\r\n  fileCss: object | any = {};\r\n\r\n  datePipe: DatePipe;\r\n\r\n\r\n  @ViewChild('fu') fu?: FileUpload;\r\n  mimeClass = [\r\n    { mime: 'image', class: 'fas fa-file-image' },\r\n    { mime: 'audio', class: 'fas fa-file-audio' },\r\n    { mime: 'video', class: 'fas fa-file-video' },\r\n    { mime: 'application/pdf', class: 'fas fa-file-pdf' },\r\n    { mime: 'application/msword', class: 'fas fa-file-word' },\r\n    { mime: 'application/vnd.ms-word', class: 'fas fa-file-word' },\r\n    { mime: 'application/vnd.oasis.opendocument.text', class: 'fas fa-file-word' },\r\n    { mime: 'application/vnd.openxmlformats-officedocument.wordprocessingml', class: 'fas fa-file-word' },\r\n    { mime: 'application/vnd.ms-excel', class: 'fas fa-file-excel' },\r\n    { mime: 'application/vnd.openxmlformats-officedocument.spreadsheetml', class: 'fas fa-file-excel' },\r\n    { mime: 'application/vnd.oasis.opendocument.spreadsheet', class: 'fas fa-file-excel' },\r\n    { mime: 'application/vnd.ms-powerpoint', class: 'fas fa-file-powerpoint' },\r\n    { mime: 'application/vnd.openxmlformats-officedocument.presentationml', class: 'fas fa-file-powerpoint' },\r\n    { mime: 'application/vnd.oasis.opendocument.presentation', class: 'fas fa-file-powerpoint' },\r\n    { mime: 'text/plain', class: 'fas fa-file-text' },\r\n    { mime: 'text/html', class: 'fas fa-file-code' },\r\n    { mime: 'application/json', class: 'fas fa-file-code' },\r\n    { mime: 'application/gzip', class: 'fas fa-file-archive' },\r\n    { mime: 'application/zip', class: 'fas fa-file-archive' },\r\n  ]\r\n\r\n  appConfig: AppConfig;\r\n\r\n  constructor(\r\n  ) {\r\n    super();\r\n    this.appConfig = inject(AppConfig);\r\n    this.datePipe = inject(DatePipe);\r\n    this.date = this.datePipe.transform(new Date(), 'dd.MM.yyyy h:mm:ss a');\r\n  }\r\n\r\n\r\n  ngOnInit(): void {\r\n    this.date = new Date();\r\n    this.token = this.globalService.getTokenLocal();\r\n    this.baseurl = this.appConfig.API_URL + '/api';\r\n    this.columns = [\r\n      { field: 'ad', header: 'label.ad' },\r\n      { field: 'zaman', header: 'label.zaman' },\r\n      { field: 'boyut', header: 'label.boyut' },\r\n      { field: 'tur', header: 'label.tur' }\r\n    ];\r\n    //this.isFileYuklu = //(this.fileYukle?.GuidId && this.fileYukle?.GuidId != '00000000-0000-0000-0000-000000000000') ? true : false;\r\n\r\n\r\n    if (this.fileOptions && !this.fileOptions.url)\r\n      this.fileOptions.url = \"/file/get\";\r\n\r\n    if (this.fileOptions && !this.fileOptions.uploadUrl)\r\n      this.fileOptions.uploadUrl = \"/file/upload\";\r\n\r\n    if (this.fileOptions)\r\n      this.setFileUrl();\r\n    // alttaki satır hata fırlatmasın diye kapatıldı.\r\n    \r\n    // Resim Gözükmüyor Diye Kapatıldı.\r\n    // if (this.fileUrl == null || this.fileUrl == undefined || this.fileUrl == '')\r\n    //   this.fileUrl = this.appConfig.API_URL + '/' + (this.fileOptions?.url ?? \"/file/get\");\r\n\r\n\r\n    if (this.fileOptions?.showType == this.fileShowTypeEnum.show) {\r\n      this.setPreview();\r\n    }\r\n\r\n    this.setFileCss();\r\n    //this.load();\r\n  }\r\n  setFileUrl() {\r\n    this.date = this.datepipe.transform(this.date, 'dd.MM.yyyy HH:mm:ss') as string;\r\n  }\r\n\r\n  load() {\r\n    if (this.fileOptions?.entityId) {\r\n    }\r\n  }\r\n\r\n  onUpload(event: any) {\r\n    this.date = this.datePipe.transform(new Date(), 'dd.MM.yyyy h:mm:ss a');\r\n    // this.blocked = false;\r\n    // AppUtil.loading = false;\r\n    // this.appService.showMessage(MessageStatusType.success, \"File başarıyla yüklendi.\", \"File Yükleme\");\r\n    // this.isFileYuklu = true;\r\n    // this.fileYukle.Mime = event.originalEvent.body.Item?.Mime;\r\n    // this.fileYukle.GuidId = event.originalEvent.body.Item?.GuidId;\r\n    // this.yuklemeTamam.emit(event.originalEvent.body);\r\n    // this.onComplated.emit(event.originalEvent.body)\r\n    // this.date = new Date();\r\n    // this.showModal = false;\r\n    // if (event.originalEvent.body.Item instanceof SoruDto) {\r\n    //   this.fileYukle.GuidId = event.originalEvent.body.Item?.BasvuruCevap[0]?.Cevap ?? this.appService.newGuid();\r\n\r\n    // } else {\r\n    //   this.fileYukle.GuidId = event.originalEvent.body.Item?.GuidId ?? event.originalEvent.body.Item?.Id ?? null;\r\n\r\n    // }\r\n    // AppUtil.fileDate = this.datepipe.transform(this.date, 'dd.MM.yyyy hh:mm:ss') as string;\r\n\r\n\r\n  }\r\n\r\n  onError(event: any) {\r\n    // let hataMesaj = \"File yüklenemedi!\";\r\n\r\n    // this.appService.onErrorMessage(event.error, hataMesaj, \"File Yükleme\")\r\n    this.load();\r\n  }\r\n\r\n  indir(event: any) {\r\n    // this.appService.post('file/indir', { id: event, kid: this.erisim.Id }).subscribe();\r\n  }\r\n\r\n  sil(row: any) {\r\n    // this.appService.confirm(row.ad + '(' + row.tur + ')', 'Silmek istediğinizden emin misiniz?', () => {\r\n    //   this.appService.post('file/sil', { id: row.id, kid: this.erisim.Id }).subscribe(() => {\r\n    //     this.load();\r\n    //   });\r\n    // });\r\n  }\r\n\r\n  onBeforeUpload(event: any) {\r\n\r\n    // if (!this.fileYukle.BasvuruGuidId) {\r\n    //   event.formData.append('GuidId', this.fileYukle.GuidId ?? this.appService.newGuid());\r\n    //   event.formData.append('EntityId', this.fileYukle.EntityId);\r\n    //   event.formData.append('FileTurId', this.fileYukle.FileTurId);\r\n    //   event.formData.append('RefEntityId', this.fileYukle.RefEntityId);\r\n    //   event.formData.append('Ad', this.fileYukle.FileAd);\r\n    // } else {\r\n    //   event.formData.append('Id', !this.fileYukle.GuidId || this.fileYukle.GuidId == this.appService.guidEmpty() ? this.appService.newGuid() : this.fileYukle.GuidId);\r\n    //   event.formData.append('BasvuruGuidId', this.fileYukle.BasvuruGuidId);\r\n    //   event.formData.append('SoruId', this.fileYukle.SoruId);\r\n    //   event.formData.append('Ad', this.fileYukle.Soru?.FileAd ?? this.fileYukle.Soru?.Ad ?? 'Başvuru File');\r\n    // }\r\n\r\n  }\r\n\r\n  onSelect(event: any, fu: FileUpload) {\r\n    this.files = fu.files;\r\n  }\r\n\r\n  onRemove(event: any, fu: FileUpload) {\r\n    this.files = fu.files;\r\n  }\r\n\r\n  mimeTypeToClass(mimeType: string): string {\r\n    let clazz = this.mimeClass.find(f => mimeType.startsWith(f.mime));\r\n    if (clazz) {\r\n      return clazz.class;\r\n    }\r\n    return 'fas fa-file';\r\n  }\r\n  getFileDate(): string {\r\n    return this.date;\r\n  }\r\n\r\n  setFileCss() {\r\n\r\n    if (this.fileOptions?.border) {\r\n      this.fileCss['border'] = this.fileOptions?.border;\r\n      this.fileCss['padding'] = '3px';\r\n\r\n    }\r\n    if (this.fileOptions?.radius)\r\n      this.fileCss['border-radius'] = this.fileOptions?.radius;\r\n    if (this.fileOptions?.width)\r\n      this.fileCss['width'] = ((this.fileOptions?.width) instanceof Number ? this.fileOptions?.width + 'px' : this.fileOptions?.width)\r\n    if (this.fileOptions?.height)\r\n      this.fileCss['height'] = ((this.fileOptions?.height) instanceof Number ? this.fileOptions?.height + 'px' : this.fileOptions?.height);\r\n\r\n  }\r\n\r\n\r\n  errorHandler(event: any) {\r\n    console.debug(event);\r\n    if (event.target.alt == \"EpostaImza\")\r\n      event.target.src = \"/assets/images/empty.png\";\r\n    else\r\n      event.target.src = \"/assets/images/blank-profile-picture.png\";\r\n  }\r\n\r\n\r\n  setPreview() {\r\n    // this.PDFdosyayolu = null;\r\n    // if (!this.isFileYuklu)\r\n    //   return false;\r\n    // this.fileUrl = this.fileYukle.Url;//(this.fileYukle.Url + '/' + this.fileYukle.GuidId);\r\n    // if (!this.fileYukle.Mime?.includes('pdf'))\r\n    //   this.preview = true;\r\n    // else {\r\n    //   this.appService.getPDFFile(this, this.fileUrl).subscribe((response: any) => {\r\n\r\n    //     let file = new Blob([response], { type: 'application/pdf' });\r\n    //     var fileURL = URL.createObjectURL(file);\r\n    //     this.PDFdosyayolu = fileURL;\r\n\r\n    //     this.preview = true;\r\n    //     //window.open(fileURL); // yeni sekmede açmak için\r\n    //   });\r\n    // }\r\n\r\n  }\r\n  fileIndir() {\r\n    // let url = this.fileYukle.DownloadUrl ?? this.fileYukle.Url ?? './basvuru/getfile/' + this.fileYukle.GuidId\r\n    // this.appService.download(this, url).subscribe(data => {\r\n    //   const a = document.createElement('a')\r\n    //   const objectUrl = URL.createObjectURL(data)\r\n    //   a.href = objectUrl\r\n    //   a.download = this.fileYukle.FileAd ?? \"Başvuru_File\";\r\n    //   a.click();\r\n    //   URL.revokeObjectURL(objectUrl);\r\n    // });\r\n  }\r\n\r\n  silBasvuruFile() {\r\n\r\n    // this.appService.confirm(\"File Silme Onayı\", \"Filenizi silmek isetediğinizden emin misiniz?\", () => {\r\n    //   // this.appService.get(this, './basvuru/silfile', this.fileYukle.GuidId).subscribe(data => {\r\n\r\n    //   this.appService.get(this, this.fileYukle.DeleteUrl).subscribe(data => {\r\n    //     this.preview = false;\r\n    //     this.fileYukle.GuidId = '00000000-0000-0000-0000-000000000000';\r\n    //     this.isFileYuklu = false;\r\n    //   });\r\n    // });\r\n\r\n  }\r\n\r\n  @HostListener('window:resize', ['$event'])\r\n  onResize(event: any) {\r\n    let height = window.innerHeight;//document.getElementById(\"body\").clientHeight;\r\n    this.pdfHeight = (height - 170) + 'px';\r\n  }\r\n\r\n\r\n\r\n}\r\n","@if(fileOptions){    \r\n    <div class=\"profilepic d-inline-flex pt-2 bd-highlight\" *ngIf=\"fileOptions.showType == fileShowTypeEnum.profilePhoto\">\r\n        <!-- <img alt=\"File\" class=\"profilepic__image\" [src]=\"fileUrl + '?' +getFileDate() |authImage | async\" width=\"{{fileOptions.width?? 400}}\" height=\"{{fileOptions.height??400}}\" [ngStyle]=\"fileOptions.Radius?{ 'border-radius': fileOptions.Radius}:{}\" /> -->\r\n        <!-- <img alt=\"File\" *ngIf=\"fileUrl && !fileUrl.includes('png')  && !fileUrl.includes('img')\"\r\n            class=\"profilepic__image img-responsive {{fileOptions.class??''}}\"\r\n            [src]=\"fileUrl + '?v=' + getFileDate() | authImage | async\" [ngStyle]=\"fileCss\"\r\n            (error)=\"errorHandler($event)\" /> -->\r\n    \r\n        <img alt=\"File\" *ngIf=\"fileUrl && (fileUrl.includes('png')  || fileUrl.includes('img'))\"\r\n            class=\"profilepic__image img-responsive {{fileOptions.class??''}}\" [src]=\"fileUrl + '?v=' + getFileDate()\"\r\n            [ngStyle]=\"fileCss\" (error)=\"errorHandler($event)\" />\r\n    \r\n        <img alt=\"File\" *ngIf=\"!fileUrl\" class=\"profilepic__image img-responsive {{fileOptions.class??''}}\"\r\n            src=\"/assets/images/blank-profile-picture.png\" [ngStyle]=\"fileCss\" (error)=\"errorHandler($event)\" />\r\n    \r\n        <!-- <div class=\"profilepic__content\" *ngIf=\"isFileUpload\"> -->\r\n        <div class=\"profilepic__content\">\r\n            <span class=\"profilepic__icon\">\r\n                <p-fileUpload mode=\"basic\" styleClass=\"p-button-info\" #fubauto chooseIcon=\"pi pi-pencil\" name=\"demo[]\"\r\n                    accept=\"image/png,image/jpeg,image/jpg\" [url]=\"fileOptions.uploadUrl\" [maxFileSize]=\"10485760\"\r\n                    (onBeforeUpload)=\"onBeforeUpload($event)\" (onUpload)=\"onUpload($event)\" (onError)=\"onError($event)\"\r\n                    [auto]=\"true\"></p-fileUpload>\r\n            </span>\r\n            <span class=\"profilepic__text\">Düzenle</span>\r\n        </div>\r\n    </div>\r\n    }","import { Component, EventEmitter, Input, Output, inject } from '@angular/core';\r\nimport { SubmitType } from '../enums';\r\n\r\nimport { BaseComponent } from '.';\r\nimport { Subject } from 'rxjs';\r\nimport { FormBuilder, FormControl, FormGroup, ValidatorFn, Validators } from '@angular/forms';\r\nimport { FormControlTemplate, FormGroupControlTemplate, FormGroupTemplate, InputControlCommand, Ref, ResponseModel } from '../models';\r\nimport { BaseService } from '../services';\r\n\r\n@Component({\r\n  template: ``,\r\n  standalone: true,\r\n  host: { 'Id': Math.random().toString() },\r\n})\r\nexport class BaseFormComponent<T> extends BaseComponent {\r\n  @Input() override id: any;\r\n  data: T | any;\r\n  rawData: T | any;\r\n  @Output() setFormChange = new EventEmitter();\r\n  @Output() setSubmit = new EventEmitter();\r\n  @Output() resp = new EventEmitter();\r\n\r\n  inputCommandList: InputControlCommand[] = [];\r\n\r\n  triggerMethod = new Subject<any>();\r\n  formControlTemplate: FormControlTemplate[];\r\n  formGroup: FormGroup | any;\r\n  saveUrl?: string;\r\n  deleteUrl?: string;\r\n  getUrl?: string;\r\n  formSubmited: boolean = false;\r\n  get SubmitType(): typeof SubmitType { return SubmitType; }\r\n  body: any;\r\n  submitType?: string;\r\n  service?: BaseService<T>;\r\n\r\n  formBuilder: FormBuilder;\r\n\r\n  buttonLabel?: string;\r\n\r\n  saveHeaderLabel?: string = \"Kaydet\";\r\n  saveMessageLabel?: string = \"Kaydetmek istediğinizden emin misiniz?\";\r\n\r\n  deleteHeaderLabel?: string = \"Sil\";\r\n  deleteMessageLabel?: string = \"Silmek istediğinizden emin misiniz?\";\r\n\r\n  constructor() {\r\n    super();\r\n    this.formControlTemplate = new Array<FormControlTemplate>();\r\n    this.formBuilder = inject(FormBuilder);\r\n  }\r\n\r\n  // #region formgroup methods\r\n  setValue(item: T) {\r\n    this.data = item;\r\n    if (this.data) {\r\n      setTimeout(() => {\r\n        this.formGroup?.patchValue(this.data);\r\n      }, 0);\r\n    }\r\n  }\r\n\r\n  setControlOptions(key: string, items: any, isSetValue: boolean = true) {\r\n    if (this.formControlTemplate == undefined) return;\r\n\r\n    this.formControlTemplate.find(f => f.key === key)!['options'] = items;\r\n    if (this.formControlTemplate.find(f => f.key === key)!.inputType == this.inputTypeEnum.picklist) {\r\n      this.setPickList(key);\r\n    }\r\n    else if (this.formControlTemplate.find(f => f.key === key)!.inputType == this.inputTypeEnum.multiselect) {\r\n      if (typeof this.data[key] == 'string') {\r\n        let array = (this.data[key].split(',') as string[]).filter(d => d && d != \"\");\r\n        this.formGroup.controls[key].setValue(array);\r\n      }\r\n    }\r\n\r\n    if (isSetValue && this.data && this.data[key] && this.data[key] != \"\" && this.data[key] != 0) {\r\n      this.formGroup.controls[key].setValue(this.data[key]);\r\n    }\r\n  }\r\n  setValueControl(key: string) {\r\n    this.formGroup.controls[key].setValue(this.data[key]);\r\n  }\r\n  setForm(resp: ResponseModel<T> | any = null, saveUrl: string | any = null) {\r\n\r\n    if (resp && resp.Data) {\r\n      this.data = resp.Data;\r\n      this.rawData = { ...resp.Data };\r\n      if (resp.FormControlTemplate?.length > 0) {\r\n        if (!(resp.FormControlTemplate instanceof Array)) {\r\n          this.formControlTemplate = JSON.parse(resp.FormControlTemplate as string);\r\n        } else {\r\n          this.formControlTemplate = resp.FormControlTemplate;\r\n        }\r\n        let optionControls = this.formControlTemplate!.filter(d => d.options && d.options.length > 0);\r\n        if (optionControls.length > 0) {\r\n          optionControls.forEach(item => {\r\n            if (!(item.options instanceof Array)) {\r\n              item.options = JSON.parse(item.options as string);\r\n            }\r\n            this.setControlOptions(item.key, item.options, false);\r\n          });\r\n        }\r\n      }\r\n\r\n    } else if (resp) {\r\n      this.data = resp;\r\n      this.rawData = { ...resp };\r\n    }\r\n    if (saveUrl) {\r\n      this.saveUrl = saveUrl;\r\n    }\r\n    this.setFormGroup();\r\n\r\n    if (this.data) {\r\n      let newKayit = JSON.parse(JSON.stringify(this.data));\r\n      if (this.formControlTemplate!.findIndex(d => d.inputType == this.inputTypeEnum.multiselect) > -1) {\r\n        this.formControlTemplate!.filter(d => d.inputType == this.inputTypeEnum.multiselect).forEach(item => {\r\n          if (typeof this.data[item.key] == 'string') {\r\n            newKayit[item.key] = this.data[item.key] == \"\" ? [] : (this.data[item.key].split(',') as string[]).filter(d => d && d != \"\");\r\n          }\r\n        });\r\n      }\r\n      // this.formControlTemplate.filter(d => d.InputType == this.inputTypeEnum.autocomplete).forEach(item => {\r\n\r\n      //   if (typeof this.data[item.Key] == 'string') {\r\n      //     let array = { label: this.data[item.Key], value: this.data[item.Key]};\r\n      //     this.formGroup.controls[item.Key].setValue(array);\r\n      //   }\r\n      // });\r\n\r\n\r\n      setTimeout(() => {\r\n        this.formGroup.patchValue(newKayit);\r\n      }, 2);\r\n    }\r\n  }\r\n\r\n  setFormGroup() {\r\n    let group: any = {};\r\n    this.formGroup = undefined;\r\n    this.formControlTemplate!.forEach((item) => {\r\n      group[item.key] = new FormControl(\r\n        { value: item.value || null, disabled: item.disabled },\r\n        this.getFormValidators(item)\r\n      );\r\n      if (item.refKey && (!item.options || item.options?.length == 0)) {\r\n        this.setRefList(item);\r\n      }\r\n    });\r\n    this.formGroup = new FormGroup(group);\r\n  }\r\n  setRefList(item: FormControlTemplate) {\r\n    let url = item.refUrl ?? `api/ref/${item.refKey}${item.queryParameter ? '/' + item.queryParameter : ''}`;\r\n    this.service?.list({ url: url })?.subscribe(resp => {\r\n      this.setControlOptions(item.key, resp.data);\r\n\r\n\r\n    });\r\n\r\n  }\r\n\r\n  setRef(key: string[], refName: string, fkId?: any, fk2Id?: any, fk3Id?: any, url?: any) {\r\n    let _url = url ?? \"/api/ref/list\";\r\n    this.service?.listWithModel({ refName: refName, fkId: fkId, fk2Id: fk2Id, fk3Id: fk3Id }, this.service.baseApiUrl + _url).subscribe(resp => {\r\n      key.forEach(item => {\r\n        this.setControlOptions(item, resp.data);\r\n      });\r\n    });\r\n  }\r\n\r\n\r\n  private setPickList(key: string | any = null) {\r\n    if (key && this.data) {\r\n      this.setPickListItem(key)\r\n    }\r\n    else if (this.formControlTemplate!.find(f => f.inputType == this.inputTypeEnum.picklist) && this.data) {\r\n      this.formControlTemplate!.filter(f => f.inputType == this.inputTypeEnum.picklist).forEach(element => {\r\n        if (element.options?.length)\r\n          this.setPickListItem(element.key);\r\n      });\r\n    }\r\n  }\r\n  setPickListItem(key: string) {\r\n    let items = this.formControlTemplate!.find(f => f.key === key)!['options'] as string[];\r\n    if (items?.length > 0) {\r\n      this.formControlTemplate!.find(f => f.key === key)!['picklistTarget'] = items.filter(d => (this.data[key] as string[])?.findIndex(c => c == (d as any).value) > -1)\r\n      this.formControlTemplate!.find(f => f.key === key)!['picklistSource'] = items.filter(d => (this.data[key] as string[])?.findIndex(c => c == (d as any).value) == -1)\r\n    }\r\n  }\r\n\r\n  getControl(key: string) {\r\n    return this.formControlTemplate!.find(f => f.key === key);\r\n  }\r\n\r\n  getFormGroupControl(key: string): FormGroupControlTemplate {\r\n    return {\r\n      key: key,\r\n      formGroup: this.formGroup,\r\n      control: this.formControlTemplate!.find(f => f.key === key),\r\n      formSubmited: this.formSubmited\r\n\r\n    }\r\n  }\r\n\r\n  setStatue(controls: any[]) {\r\n    controls.forEach(item => {\r\n      let ctrl = this.formGroup.get(item.Key);\r\n      if (item.disabled) {\r\n        ctrl.reset();\r\n        ctrl.disable();\r\n      } else {\r\n        ctrl.enable();\r\n      }\r\n      ctrl.setValidators(this.getFormValidators(item));\r\n      ctrl.updateValueAndValidity();\r\n    });\r\n  }\r\n\r\n  getFormValidators(control: any): ValidatorFn[] {\r\n    let validators: any[] = [];\r\n    if (control.required) {\r\n      validators.push(Validators.required);\r\n    }\r\n\r\n    if (control.min) {\r\n      validators.push(Validators.min(control.min));\r\n    }\r\n\r\n    if (control.max) {\r\n      validators.push(Validators.max(control.max));\r\n    }\r\n\r\n    if (control.minLength || control.Len) {\r\n      validators.push(Validators.minLength(control.minLength));\r\n    }\r\n\r\n    if (control.maxLength || control.Len) {\r\n      validators.push(Validators.maxLength(control.maxLength));\r\n    }\r\n\r\n    if (control.minLength || control.Len) {\r\n      validators.push(Validators.minLength(control.minLength));\r\n    }\r\n\r\n    if (control.Pattern) {\r\n      validators.push(Validators.pattern(control.Pattern));\r\n    }\r\n\r\n    if (control.Email) {\r\n      validators.push(Validators.email);\r\n    }\r\n\r\n    // if (control.Iban) {\r\n    //   validators.push(AppUtil.iban);\r\n    // }\r\n\r\n    if (control.Tckn) {\r\n      validators.push(this.service?.globalService.tckn);\r\n    }\r\n    return validators;\r\n  }\r\n\r\n  valid() {\r\n    this.msgs = [];\r\n    Object.keys(this.formGroup.controls).map((controlName) => {\r\n      const ctrl = this.formGroup.get(controlName);\r\n      ctrl.markAsTouched({ onlySelf: true });\r\n      if (ctrl.invalid) {\r\n        //console.error('Invalid ' + controlName);\r\n        let label = this.formControlTemplate!.find(f => f.key === controlName)!['label'];\r\n        if (!label) {\r\n          const errors = ctrl.errors;\r\n          if (errors != null) {\r\n            Object.keys(errors).forEach(keyError => {\r\n              label = errors[keyError].message;\r\n            });\r\n          }\r\n        }\r\n        // this.globalService.showMessage('error', label, 'Hatalı Alan');\r\n      }\r\n    });\r\n  }\r\n\r\n  getErrors() {\r\n    let error = \"\";\r\n    Object.keys(this.formGroup.controls).map((controlName) => {\r\n      if (this.formGroup.get(controlName).invalid) {\r\n\r\n        let label = this.formControlTemplate!.find(f => f.key === controlName)!['label'];\r\n        if (!label) {\r\n          label = controlName;\r\n        }\r\n        error += label + ', ';\r\n      }\r\n    });\r\n    let index = error.lastIndexOf(', ');\r\n    if (index > -1) {\r\n      error = error.substring(0, index);\r\n    }\r\n    return error + `${error.includes(', ') ? ' alanlarını' : ' alanını'} kontrol ediniz!`;\r\n  }\r\n\r\n  // #endregion\r\n\r\n  onDelete() {\r\n    if (this.deleteHeaderLabel)\r\n      this.service?.globalService.confirm(this.deleteHeaderLabel!, this.deleteMessageLabel!, () => { this.delete() });\r\n    else\r\n      this.delete();\r\n  }\r\n\r\n  delete() {\r\n    let url = this.deleteUrl ? this.deleteUrl : \"\";\r\n    this.service?.deleteHeader(url, this.body).subscribe(resp => {\r\n      this.resp.emit(resp);\r\n      this.setFormChange.emit(this.body);\r\n      this.setForm(resp.data);\r\n    });\r\n  }\r\n\r\n  // #region form events\r\n  onSave() {\r\n    this.saveControl();\r\n\r\n    if (this.saveHeaderLabel)\r\n      this.service?.globalService.confirm(this.saveHeaderLabel!, this.saveMessageLabel!, () => { this.creteOrUpdate() });\r\n    else\r\n      this.creteOrUpdate();\r\n  }\r\n\r\n  creteOrUpdate() {\r\n    let url = this.saveUrl ? this.service?.mainControlUrl + this.saveUrl : null;\r\n    //yeni kayıt (insert) işlemi -> post kullanılacak  \r\n    if (this.body[this.primaryKeyName] && this.body[this.primaryKeyName] > 0) {\r\n      this.submitType = this.SubmitType.update;\r\n      this.service?.update(this.body, url).subscribe(resp => {\r\n        this.resp.emit(resp);\r\n        this.setFormChange.emit(this.body);\r\n        if (resp.data)\r\n          this.setForm(resp.data);\r\n        this.globalService.showMessage(resp.statusCode, resp.message);\r\n      });\r\n    } else { // güncelleme (update) işlemi -> put kullanılacak\r\n      this.submitType = this.SubmitType.insert;\r\n      this.service?.create(this.body, url).subscribe(resp => {\r\n        this.resp.emit(resp);\r\n        this.setFormChange.emit(this.body);\r\n        if (resp.data)\r\n          this.setForm(resp.data);\r\n        this.globalService.showMessage(resp.statusCode, resp.message);\r\n      });\r\n    }\r\n  }\r\n\r\n  saveControl() {\r\n    this.formGroup.updateValueAndValidity();\r\n    this.body = this.formGroup.value;\r\n    this.formSubmited = true;\r\n    if (this.formGroup.invalid) {\r\n      let errorMesaj = this.getErrors();\r\n      this.globalService.showMessage('error', `Hatalı ${errorMesaj.includes(', ') ? 'alanlar' : 'alan'} var`, errorMesaj);\r\n      return;\r\n    }\r\n\r\n    this.formControlTemplate!.filter(d => d.inputType == this.inputTypeEnum.multiselect).forEach(item => {\r\n      if (this.data[item.key] != undefined\r\n        && this.data[item.key] != null\r\n        && typeof (this.rawData ? this.rawData[item.key] : this.data[item.key]) == 'string' && typeof this.body[item.key] != 'string') {//\r\n        this.body[item.key] = this.body[item.key].join(',');\r\n      }\r\n\r\n    });\r\n\r\n    this.formControlTemplate!.filter(d => d.inputType == this.inputTypeEnum.dateTime).forEach(item => {\r\n      if (typeof this.body[item.key] == 'string') {\r\n        this.body[item.key] = this.globalService.convertToDate(this.body[item.key]);\r\n      }\r\n    });\r\n    this.formControlTemplate!.filter(d => d.inputType == this.inputTypeEnum.date).forEach(item => {\r\n      if (typeof this.body[item.key] == 'string') {\r\n        if (this.body[item.key].includes(\"T\"))\r\n          this.body[item.key] = this.globalService.convertToDate(new Date(this.body[item.key]));\r\n        else\r\n          this.body[item.key] = this.globalService.convertToDate(this.body[item.key]);\r\n\r\n      }\r\n      this.body[item.key] = this.datepipe.transform(this.body[item.key], 'yyyy-MM-dd');\r\n    });\r\n    this.formControlTemplate!.filter(d => d.inputType == this.inputTypeEnum.time).forEach(item => {\r\n      if (typeof this.body[item.key] == 'string')\r\n        this.body[item.key] = this.globalService.convertToTime(this.body[item.key]);\r\n    });\r\n    this.formControlTemplate!.filter(d => d.inputType == this.inputTypeEnum.autocomplete).forEach(item => {\r\n      if (typeof this.body[item.key].label) {\r\n        this.body[item.key] = this.body[item.key].label;\r\n      }\r\n    });\r\n    this.formControlTemplate!.filter(d => d.inputType == this.inputTypeEnum.mask).forEach(item => {\r\n      let control = this.formControlTemplate!.find(f => f.key === item.key)!;\r\n      if (control.type.includes('Null')\r\n        || control.type.includes('null')\r\n        || control.type.includes('NULL')\r\n        || control.type.includes('Int')\r\n        || control.type.includes('int')\r\n        || control.type.includes('INT')\r\n        || control.type.includes('Decimal')\r\n        || control.type.includes('decimal')\r\n        || control.type.includes('DECIMAL')\r\n        || control.type.includes('Double')\r\n        || control.type.includes('double')\r\n        || control.type.includes('DOUBLE')\r\n        || control.type.includes('Float')\r\n        || control.type.includes('float')\r\n        || control.type.includes('FLOAT')\r\n      ) {\r\n        this.body[item.key] = this.body[item.key] ? +this.body[item.key] : null;\r\n      }\r\n\r\n    });\r\n  }\r\n\r\n\r\n  // #endregion\r\n\r\n  submit(submitType: string, callback?: { comp: any }) {\r\n    if (this.formGroup.valid) {\r\n      this.msgs = [];\r\n      let header, message: string;\r\n\r\n      if (submitType == SubmitType.insert) {\r\n        header = 'Yeni Kayıt';\r\n        message = 'Yeni kayıt eklemek istediğinizden emin misiniz?'\r\n        this.body = this.formGroup.value;\r\n      }\r\n      else if (submitType == SubmitType.update) {\r\n        header = 'Kayıt Güncelle';\r\n        message = 'Kaydı güncellemek istediğinizden emin misiniz?'\r\n        this.body = this.formGroup.value;\r\n\r\n      }\r\n      else if (submitType == SubmitType.delete) {\r\n        header = 'Kayıt Sil';\r\n        message = 'Kaydı silmek istediğinizden emin misiniz?'\r\n        this.body = this.formGroup.value.Id;\r\n\r\n      }\r\n      // else {\r\n      //   header = 'Toplu Kayıt Sil';\r\n      //   message = 'Seçil olan {{this.seciliIdList.length}} kaydı silmek istediğinizden emin misiniz?'\r\n      //   this.body = this.seciliIdList\r\n      // }\r\n\r\n      // this.globalService.confirm(header!!, message!!, () => {\r\n      //   if (this.formControlTemplate.findIndex(d => d.inputType == this.inputTypeEnum.multiselect) > -1) {\r\n\r\n      //     this.formControlTemplate.filter(d => d.inputType == this.inputTypeEnum.multiselect).forEach(item => {\r\n      //       if (this.data[item.Key] != undefined && this.data[item.Key] != null && typeof (this.rawData ? this.rawData[item.Key] : this.data[item.Key]) == 'string' && typeof this.body[item.Key] != 'string') {//\r\n      //         this.body[item.Key] = this.body[item.Key].join(',');\r\n      //       }\r\n\r\n      //     });\r\n      //   }\r\n      //   this.formControlTemplate.filter(d => d.inputType == this.inputTypeEnum.date || d.inputType == this.inputTypeEnum.dateTime).forEach(item => {\r\n      //     if (typeof this.body[item.Key] != 'string') {\r\n      //       this.body[item.Key] = this.datepipe.transform(this.body[item.Key], 'dd.MM.yyyy HH:mm');\r\n      //     }\r\n\r\n      //   });\r\n      //   this.formControlTemplate.filter(d => d.inputType == this.inputTypeEnum.date).forEach(item => {\r\n      //     if (typeof this.body[item.Key] != 'string') {\r\n      //       this.body[item.Key] = this.datepipe.transform(this.body[item.Key], 'dd.MM.yyyy');\r\n\r\n      //     }\r\n      //     else if (this.body[item.Key].length > 10) {\r\n      //       this.body[item.Key] = this.body[item.Key].substring(0, 10)\r\n      //     }\r\n      //   });\r\n      //   this.triggerMethod.next(true);\r\n\r\n      //   // this.globalService.post(this.saveUrl, this.body, this).subscribe(resp => {\r\n\r\n      //   //   this.msgs = [];\r\n      //   //   let detail = '';\r\n      //   //   let summary = 'form.message.success';\r\n      //   //   let severity = \"success\";\r\n      //   //   if (resp.Success) {\r\n      //   //     this.appService.showMessage(MessageStatusType.success, \"İşlem Başarılı\", 'Sonuç');\r\n      //   //     //this.formGroup.patchValue(resp.Item);\r\n      //   //     this.kayit = resp.Item;\r\n      //   //     this.setForm();\r\n      //   //     this.resp.emit(resp);\r\n      //   //     this.setFormChange.emit(this.body);\r\n      //   //     this.setKaydet.emit(resp.Item);\r\n\r\n      //   //     if (callback) {\r\n      //   //       callback(this);\r\n      //   //     }\r\n      //   //   }\r\n      //   //   else {\r\n      //   //     detail = resp.Mesaj;\r\n      //   //     severity = \"error\";\r\n      //   //     summary = 'form.message.error';\r\n      //   //     this.appService.showMessage(MessageStatusType.error, detail, 'HATA');\r\n\r\n      //   //   }\r\n      //   // });\r\n      // })\r\n    } else {\r\n      this.valid();\r\n    }\r\n  }\r\n\r\n  onChangeInput(item: FormControlTemplate) {\r\n    this.inputCommandList.filter(d => d.key == item.key).forEach(d => {\r\n\r\n      d.command?.call(this, this.formGroup.controls[item.key].value);\r\n    });\r\n  }\r\n  showMessage(status: any, message: any) {\r\n    this.globalService.showMessage(status, message);\r\n  }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { LocaleSettings } from 'primeng/calendar';\r\nimport { FileUpload } from 'primeng/fileupload';\r\nimport { Column, FileOptions, Ref } from '../../models';\r\nimport { BaseComponent } from '../base.component';\r\nimport { AutoCompleteModule } from 'primeng/autocomplete';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { DragDropModule } from 'primeng/dragdrop';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { InputMaskModule } from 'primeng/inputmask';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { MessageModule } from 'primeng/message';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { CatFileComponent } from '../file-control/file-control.component';\r\nimport { RatingModule } from 'primeng/rating';\r\nimport { SafeHtml } from '@angular/platform-browser';\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'cat-input, [catInput]',\r\n  templateUrl: './input-control.component.html',\r\n  styleUrl: './input-control.component.scss',\r\n  host: { 'Id': Math.random().toString() },\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    AutoCompleteModule,\r\n    CalendarModule,\r\n    CheckboxModule,\r\n    InputMaskModule,\r\n    InputNumberModule,\r\n    InputSwitchModule,\r\n    InputTextModule,\r\n    MessagesModule,\r\n    MessageModule,\r\n    MultiSelectModule,\r\n    RadioButtonModule,\r\n    DragDropModule,\r\n    DropdownModule,\r\n    CatFileComponent,\r\n    RatingModule\r\n  ],\r\n  providers: [\r\n    { provide: NG_VALUE_ACCESSOR, useExisting: CatInputComponent, multi: true }\r\n  ],\r\n\r\n})\r\nexport class CatInputComponent extends BaseComponent implements OnInit, ControlValueAccessor {\r\n  @Input() inputType: string = this.inputTypeEnum.textbox;\r\n  // @Input() value: any;\r\n  @Input() model: any;\r\n  @Input() selectedValue?: any;\r\n  @Input() key: string | any;\r\n  @Input() label?: string;\r\n  @Input() options?: Ref[];\r\n  @Input() stars?: number = 1;\r\n  @Input() innerHtml?: SafeHtml;\r\n  @Input() group: boolean = false;\r\n  @Input() secenekler?: any[];\r\n  @Input() altSorular?: any[];\r\n\r\n  @Input() readonly: boolean = false;\r\n  @Input() required: boolean = false;\r\n\r\n  @Input() maxLength: number | any;\r\n  @Input() minLength: number | any;\r\n  @Input() rows: number | any;\r\n  @Input() min: number | any;\r\n  @Input() max: number | any;\r\n  @Input() mask?: string;\r\n  @Input() minDate?: Date;\r\n  @Input() maxDate?: Date;\r\n  @Input() showtime: boolean = false;\r\n  @Input() timeonly: boolean = false;\r\n  @Input() showseconds: boolean = false;\r\n  @Input() readonlyInput: boolean = false;\r\n  @Input() placeholder?: string;\r\n\r\n  @Input() optionLabel?: string;\r\n  @Input() optionValue?: string;\r\n  @Input() autoDisplayFirst: boolean = false;\r\n  @Input() filter: boolean = true;\r\n\r\n\r\n\r\n  @Input() suggestions: any[] = [];\r\n  @Input() unmask: string | any;\r\n\r\n  @Input() explanation?: string;\r\n  @Input() selectionLimit?: number;\r\n\r\n\r\n  @Input() errorMessage?: string;\r\n\r\n  filteredAutoComplateList: any[] = [];\r\n\r\n  @Input() fileOptions?: FileOptions;\r\n  @Input() fileId: string | null = null;\r\n\r\n  @Input() fileUrl?: string;\r\n  @Input() fileUploadUrl?: string;\r\n  @Input() fileListUrl?: string;\r\n  @Input() fileDeleteUrl?: string;\r\n\r\n  @Input() fileRefEntityId?: any;\r\n  @Input() fileEntityId?: number;\r\n  @Input() fileShowName?: string;\r\n  @Input() fileButtonText?: string;\r\n\r\n  @Input() fileBorder?: string;\r\n  @Input() fileRadius?: any;\r\n  @Input() fileWidth?: string;\r\n  @Input() fileHeight?: string;\r\n  @Input() selectedMatrixValues: any[] = [];\r\n\r\n\r\n  // @Output() modelChange: EventEmitter<any> = new EventEmitter();\r\n  @Output() selectedValueChange = new EventEmitter<any>();\r\n  @Output() modelChange: EventEmitter<any> = new EventEmitter();\r\n  @Output() onChange: EventEmitter<any> = new EventEmitter();\r\n\r\n  @Output() onNodeSelect: EventEmitter<any> = new EventEmitter();\r\n  @Output() onNodeUnselect: EventEmitter<any> = new EventEmitter();\r\n\r\n  @Output() input: EventEmitter<any> = new EventEmitter();\r\n  @Output() yuklemeTamam = new EventEmitter();\r\n\r\n  @Output() keyup: EventEmitter<any> = new EventEmitter();\r\n  @Output() blur: EventEmitter<any> = new EventEmitter();\r\n  @Output() focus: EventEmitter<any> = new EventEmitter();\r\n  @Output() ddblur: EventEmitter<any> = new EventEmitter();\r\n\r\n  @Output() autocomplateFilterItems: EventEmitter<any> = new EventEmitter();\r\n  @Output() ddYeniKayitSet: EventEmitter<any> = new EventEmitter();\r\n  @Output() click: EventEmitter<any> = new EventEmitter();\r\n  @Output() keyupEnter: EventEmitter<any> = new EventEmitter();\r\n\r\n  @Output() keyDownDeleteEvent: EventEmitter<any> = new EventEmitter();\r\n\r\n  lastSelectedValue: any = {};\r\n\r\n  disabled = false;\r\n\r\n  invalid: boolean = false;\r\n  valid: boolean = true;\r\n\r\n  fileCss: object | any = {};\r\n\r\n  token?: string;\r\n  baseurl?: string;\r\n  //fileUrl: string;\r\n\r\n  date?: Date;\r\n\r\n  showModal: boolean = false;\r\n  preview: boolean = false;\r\n\r\n  files: File[] = [];\r\n  fileTur?: number;\r\n  fileTurList?: SelectItem[];\r\n\r\n\r\n  isPDF?: boolean;\r\n  PDFdosyayolu?: string;\r\n  pdfHeight: string = \"450px\";\r\n\r\n\r\n  columns?: Column[];\r\n\r\n  @ViewChild('fu') fu?: FileUpload;\r\n  mimeClass = [\r\n    { mime: 'image', class: 'fas fa-file-image' },\r\n    { mime: 'audio', class: 'fas fa-file-audio' },\r\n    { mime: 'video', class: 'fas fa-file-video' },\r\n    { mime: 'application/pdf', class: 'fas fa-file-pdf' },\r\n    { mime: 'application/msword', class: 'fas fa-file-word' },\r\n    { mime: 'application/vnd.ms-word', class: 'fas fa-file-word' },\r\n    { mime: 'application/vnd.oasis.opendocument.text', class: 'fas fa-file-word' },\r\n    { mime: 'application/vnd.openxmlformats-officedocument.wordprocessingml', class: 'fas fa-file-word' },\r\n    { mime: 'application/vnd.ms-excel', class: 'fas fa-file-excel' },\r\n    { mime: 'application/vnd.openxmlformats-officedocument.spreadsheetml', class: 'fas fa-file-excel' },\r\n    { mime: 'application/vnd.oasis.opendocument.spreadsheet', class: 'fas fa-file-excel' },\r\n    { mime: 'application/vnd.ms-powerpoint', class: 'fas fa-file-powerpoint' },\r\n    { mime: 'application/vnd.openxmlformats-officedocument.presentationml', class: 'fas fa-file-powerpoint' },\r\n    { mime: 'application/vnd.oasis.opendocument.presentation', class: 'fas fa-file-powerpoint' },\r\n    { mime: 'text/plain', class: 'fas fa-file-text' },\r\n    { mime: 'text/html', class: 'fas fa-file-code' },\r\n    { mime: 'application/json', class: 'fas fa-file-code' },\r\n    { mime: 'application/gzip', class: 'fas fa-file-archive' },\r\n    { mime: 'application/zip', class: 'fas fa-file-archive' },\r\n  ]\r\n\r\n\r\n  private onChangeFunctions = new Array<(value: any) => void>();\r\n  private onTouchedFunctions = new Array<() => void>();\r\n\r\n  private innerValue: any = '';\r\n\r\n  //get accessor\r\n  get value(): any {\r\n    return this.innerValue;\r\n  };\r\n\r\n  //set accessor including call the onchange callback\r\n  set value(value: any) {\r\n    if (this.innerValue !== value) {\r\n      this.innerValue = value;\r\n      this.onChangeFunctions.forEach(f => f(value));\r\n    }\r\n  }\r\n\r\n  constructor(private elementRef: ElementRef) {\r\n    super();\r\n  }\r\n\r\n  touch() {\r\n    this.onTouchedFunctions.forEach(f => f());\r\n  }\r\n\r\n\r\n  writeValue(obj: any): void {\r\n    this.innerValue = obj;\r\n  }\r\n  registerOnChange(fn: any): void {\r\n    this.onChangeFunctions.push(fn);\r\n  }\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouchedFunctions.push(fn);\r\n  }\r\n  setDisabledState?(isDisabled: boolean): void {\r\n    this.disabled = isDisabled;\r\n  }\r\n  ngOnInit(): void {\r\n    if (this.selectedMatrixValues.length == 0 && this.secenekler != undefined && this.altSorular != undefined) {\r\n      this.secenekler.forEach(() => {\r\n        this.altSorular?.forEach(() => {\r\n          this.selectedMatrixValues.push({ secenekId: undefined, altSoruId: undefined });\r\n        });\r\n      });\r\n    }\r\n    else if (this.selectedMatrixValues == null && this.secenekler != undefined && this.altSorular != undefined) {\r\n      this.secenekler.forEach(() => {\r\n        this.altSorular?.forEach(() => {\r\n          this.selectedMatrixValues.push({ secenekId: undefined, altSoruId: undefined });\r\n        });\r\n      });\r\n    }\r\n    if (this.inputType == this.inputTypeEnum.profilephoto) {\r\n      this.fileOptions = {\r\n        guidId: this.value,\r\n        canUpload: this.fileUploadUrl ? true : false,\r\n        refEntityId: this.fileRefEntityId,\r\n        entityId: this.fileEntityId,\r\n        showType: this.fileShowTypeEnum.profilePhoto,\r\n        showName: this.fileShowName ?? \"Fotoğraf\",\r\n        border: this.fileBorder,\r\n        radius: this.fileRadius ?? \"4px\",\r\n        width: this.fileWidth ?? \"100%\",\r\n        height: this.fileHeight ?? \"275px\",\r\n        buttonText: this.fileButtonText ?? \"Resim Seç\",\r\n        url: this.fileUrl ?? (this.value ? `/file/get/${this.value}` : undefined),\r\n        uploadUrl: this.fileUploadUrl ?? \"file/upload\",\r\n        downloadUrl: this.fileUrl ?? (this.value ? `/file/get/${this.value}` : undefined),\r\n        //fileListUrl: this.control.fileListUrl ?? ((this.control.fileEntityId ?? this.formGroup.controls['id'].value) ? `/file/get/${this.formControl?.value}` : undefined),\r\n        deleteUrl: this.fileDeleteUrl ?? (this.value ? `/file/delete/${this.value}` : undefined),\r\n      };\r\n      this.setFileCss();\r\n    }\r\n  }\r\n  setModelChange(event: any) {\r\n    // if (this.options) {\r\n    //   const selectedOption = this.options!.find((x) => x.value === event);\r\n    //   this.selectedValue = selectedOption;\r\n    //   this.selectedValueChange.emit(this.selectedValue);\r\n    // } \r\n    this.value = event;\r\n    this.modelChange.emit(event);\r\n  }\r\n  setMatrixChange(value: any, rowIndex: number, satirId: number): void {\r\n    const isDuplicate = this.selectedMatrixValues.some((selectedValue, index) =>\r\n      selectedValue?.secenekId === value && index !== rowIndex\r\n    );\r\n    if (isDuplicate) {\r\n      setTimeout(() => {\r\n        this.selectedMatrixValues[rowIndex].secenekId = undefined;\r\n        this.selectedMatrixValues[rowIndex].altSoruId = undefined;\r\n      });\r\n    } else {\r\n      this.lastSelectedValue = { secenekId: value, altSoruId: satirId };\r\n      this.selectedMatrixValues[rowIndex].secenekId = value;\r\n      this.selectedMatrixValues[rowIndex].altSoruId = satirId;\r\n    }\r\n    this.setModelChange(this.selectedMatrixValues);\r\n  }\r\n  setOnChange(event: any) {\r\n    // if (this.soru?.IsReadOnly) {\r\n    //   return;\r\n    // }\r\n    this.blur.emit(event);\r\n    setTimeout(() => {\r\n      this.onChange.emit(this.value);\r\n      // setTimeout(() => {\r\n      //   this.value = null;\r\n      // }, 250);\r\n    }, 250);\r\n  }\r\n  setFocus(event: any) {\r\n    // if (this.soru?.IsReadOnly) {\r\n    //   return;\r\n    // }\r\n    this.focus.emit(event);\r\n  }\r\n  setBlur(event: any) {\r\n    // if (this.soru?.IsReadOnly) {\r\n    //   return;\r\n    // }\r\n    this.onTouchedFunctions.forEach(fn => fn());\r\n    this.blur.emit(this.value);\r\n\r\n  }\r\n  setDdBlur(event: any) {\r\n    // if (this.soru?.IsReadOnly) {\r\n    //   return;\r\n    // }\r\n    this.blur.emit(event);\r\n    // this.ddblur.emit(event);  \r\n  }\r\n\r\n  setKeyupEnter(event: any) {\r\n    this.keyupEnter.emit(event);\r\n  }\r\n  setKeyup(event: any) {\r\n    this.keyup.emit(event);\r\n  }\r\n\r\n\r\n  getValid(): boolean {\r\n    return this.invalid ? false : true;\r\n  }\r\n\r\n  calendarLocale: LocaleSettings = {\r\n    firstDayOfWeek: 1,\r\n    today: 'Bugün',\r\n    clear: 'Temizle',\r\n    dateFormat: 'dd.mm.yy',\r\n    weekHeader: 'Hft',\r\n    dayNames: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\"],\r\n    dayNamesShort: [\"Paz\", \"Pzt\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cmt\"],\r\n    dayNamesMin: [\"Pz\", \"Pt\", \"Sa\", \"Ça\", \"Pe\", \"Cu\", \"Ct\"],\r\n    monthNames: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\r\n    monthNamesShort: [\"Oca\", \"Şub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Ağu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"]\r\n  };\r\n\r\n\r\n  filterAutoComplate(event: any) {\r\n    let filtered: any[] = [];\r\n    let query = event.query;\r\n\r\n    for (let i = 0; i < this.suggestions.length; i++) {\r\n      let item = this.suggestions[i];\r\n      if (item.label.toLowerCase().includes(query.toLowerCase())) {\r\n        filtered.push(item);\r\n      }\r\n    }\r\n\r\n    this.filteredAutoComplateList = filtered;\r\n  }\r\n\r\n  getFileCss(): string {\r\n    let css = 'border-radius :' + this.fileOptions?.radius + \";\";\r\n    css += 'width:' + ((this.fileOptions?.width) instanceof Number ? (this.fileOptions?.width as number + 10) + 'px' : this.fileOptions?.width) + \";\";\r\n    css += 'height:' + ((this.fileOptions?.height) instanceof Number ? (this.fileOptions?.height as number + 10) + 'px' : this.fileOptions?.height) + \";\";\r\n    //width=\"{{fileYukle?.width?? 400}}\"\r\n    // [ngStyle]=\"fileYukle.Radius?{ 'border-radius': fileYukle.Radius}:{}\"\r\n\r\n    // this.fileYukle.width instanceof String?\r\n    return css;\r\n  }\r\n\r\n  onUpload(event: any) {\r\n    // this.blocked = false;\r\n    // AppUtil.loading = false;\r\n    // this.appService.showMessage(MessageStatusType.success, \"File başarıyla yüklendi.\", \"File Yükleme\");\r\n    // this.isFileYuklu = true;\r\n    // this.fileYukle.Mime = event.originalEvent.body.Item?.Mime;\r\n    // this.fileYukle.GuidId = event.originalEvent.body.Item?.GuidId;\r\n    // this.yuklemeTamam.emit(event.originalEvent.body);\r\n    // this.onComplated.emit(event.originalEvent.body)\r\n    // this.date = new Date();\r\n    // this.showModal = false;\r\n    // if (event.originalEvent.body.Item instanceof SoruDto) {\r\n    //   this.fileYukle.GuidId = event.originalEvent.body.Item?.BasvuruCevap[0]?.Cevap ?? this.appService.newGuid();\r\n\r\n    // } else {\r\n    //   this.fileYukle.GuidId = event.originalEvent.body.Item?.GuidId ?? event.originalEvent.body.Item?.Id ?? null;\r\n\r\n    // }\r\n    // AppUtil.fileDate = this.datepipe.transform(this.date, 'dd.MM.yyyy hh:mm:ss') as string;\r\n\r\n\r\n  }\r\n\r\n  onError(event: any) {\r\n    // let hataMesaj = \"File yüklenemedi!\";\r\n\r\n    // this.appService.onErrorMessage(event.error, hataMesaj, \"File Yükleme\")\r\n    //this.load();\r\n  }\r\n\r\n  indir(event: any) {\r\n    // this.appService.post('file/indir', { id: event, kid: this.erisim.Id }).subscribe();\r\n  }\r\n\r\n  sil(row: any) {\r\n    // this.appService.confirm(row.ad + '(' + row.tur + ')', 'Silmek istediğinizden emin misiniz?', () => {\r\n    //   this.appService.post('file/sil', { id: row.id, kid: this.erisim.Id }).subscribe(() => {\r\n    //     this.load();\r\n    //   });\r\n    // });\r\n  }\r\n\r\n  onBeforeUpload(event: any) {\r\n    this.blocked = true;\r\n\r\n    // if (!this.fileYukle.BasvuruGuidId) {\r\n    //   event.formData.append('GuidId', this.fileYukle.GuidId ?? this.appService.newGuid());\r\n    //   event.formData.append('EntityId', this.fileYukle.EntityId);\r\n    //   event.formData.append('FileTurId', this.fileYukle.FileTurId);\r\n    //   event.formData.append('RefEntityId', this.fileYukle.RefEntityId);\r\n    //   event.formData.append('Ad', this.fileYukle.FileAd);\r\n    // } else {\r\n    //   event.formData.append('Id', !this.fileYukle.GuidId || this.fileYukle.GuidId == this.appService.guidEmpty() ? this.appService.newGuid() : this.fileYukle.GuidId);\r\n    //   event.formData.append('BasvuruGuidId', this.fileYukle.BasvuruGuidId);\r\n    //   event.formData.append('SoruId', this.fileYukle.SoruId);\r\n    //   event.formData.append('Ad', this.fileYukle.Soru?.FileAd ?? this.fileYukle.Soru?.Ad ?? 'Başvuru File');\r\n    // }\r\n\r\n  }\r\n\r\n  onSelect(event: any, fu: FileUpload) {\r\n    this.files = fu.files;\r\n  }\r\n\r\n  onRemove(event: any, fu: FileUpload) {\r\n    this.files = fu.files;\r\n  }\r\n\r\n  mimeTypeToClass(mimeType: string): string {\r\n    let clazz = this.mimeClass.find(f => mimeType.startsWith(f.mime));\r\n    if (clazz) {\r\n      return clazz.class;\r\n    }\r\n    return 'fas fa-file';\r\n  }\r\n  getFileDate(): string {\r\n    return new Date().toDateString();\r\n  }\r\n\r\n  setFileCss() {\r\n\r\n    if (this.fileOptions?.border) {\r\n      this.fileCss['border'] = this.fileOptions?.border;\r\n      this.fileCss['padding'] = '3px';\r\n\r\n    }\r\n    if (this.fileOptions?.radius)\r\n      this.fileCss['border-radius'] = this.fileOptions?.radius;\r\n    if (this.fileOptions?.width)\r\n      this.fileCss['width'] = ((this.fileOptions?.width) instanceof Number ? this.fileOptions?.width + 'px' : this.fileOptions?.width)\r\n    if (this.fileOptions?.height)\r\n      this.fileCss['height'] = ((this.fileOptions?.height) instanceof Number ? this.fileOptions?.height + 'px' : this.fileOptions?.height);\r\n\r\n  }\r\n\r\n\r\n  errorHandler(event: any) {\r\n    console.debug(event);\r\n    if (event.target.alt == \"EpostaImza\")\r\n      event.target.src = \"/assets/images/empty.png\";\r\n    else\r\n      event.target.src = \"/assets/images/blank-profile-picture.png\";\r\n  }\r\n\r\n  getMatrixObject(sutunId: number, satirId: number) {\r\n    return { secenekId: sutunId, altSoruId: satirId };\r\n  }\r\n}\r\n","<div [ngClass]=\"readonly? 'readonly':''\" [class.has-danger]=\"!getValid()\" style=\"margin: 5px;\">\r\n    <label\r\n        *ngIf=\"['radiogroup','radiobutton','checkbox','checkboxgroup','profilephoto','fileupload'].indexOf(inputType!!) == -1\"\r\n        class=\"flex justify-content-between m-0\">\r\n        <span *ngIf=\"required\" style=\"position: absolute; margin-top: -3px;\">\r\n            <i class=\"fa-sharp fa-solid fa-star-of-life\"></i>\r\n        </span>\r\n        <span [style.margin-left]=\"required ? '13px' : '0'\">\r\n            {{label}}\r\n        </span>\r\n    </label>\r\n\r\n    <div class=\"input-container\">\r\n\r\n        @switch (inputType) {\r\n        @case (inputTypeEnum.dropdown){\r\n        <p-dropdown [(ngModel)]=\"model\" (ngModelChange)=\"setModelChange($event)\" [virtualScroll]=\"true\"\r\n            [virtualScrollItemSize]=\"38\" [lazy]=\"true\" [autoDisplayFirst]=\"autoDisplayFirst\" [editable]=\"false\"\r\n            [filter]=\"true\" [readonly]=\"readonly\" [options]=\"options\" (onFocus)=\"setFocus($event)\"\r\n            [showClear]=\"!required && !readonly\" emptyMessage=\"Kayıt bulunamadı.\" emptyFilterMessage=''\r\n            [optionLabel]=\"optionLabel ?? 'label'\" [optionValue]=\"optionValue ?? 'value'\"\r\n            (keydown.delete)=\"keyDownDeleteEvent.emit($event)\">\r\n        </p-dropdown>\r\n        }\r\n        @case (inputTypeEnum.email) {\r\n        <input pInputText type=\"email\" [(ngModel)]=\"model\" [maxlength]=\"maxLength\" [readonly]=\"readonly\"\r\n            (keyup)=\"setKeyup($event)\" (blur)=\"setBlur($event)\" (keydown.delete)=\"keyDownDeleteEvent.emit($event)\">\r\n        }\r\n        @case (inputTypeEnum.display) {\r\n        <input pInputText type=\"text\" [(ngModel)]=\"model\" (ngModelChange)=\"setModelChange($event)\" readonly=\"readonly\"\r\n            (keyup)=\"setKeyup($event)\" (blur)=\"setBlur($event)\" (keydown.delete)=\"keyDownDeleteEvent.emit($event)\">\r\n        }\r\n        @case (inputTypeEnum.textarea) {\r\n        <textarea pInputTextarea [(ngModel)]=\"model\" (ngModelChange)=\"setModelChange($event)\" [maxlength]=\"maxLength\"\r\n            [readonly]=\"readonly\" [rows]=\"rows\" style=\"width:100%;\" id=\"float-input\" (keyup)=\"setKeyup($event)\"\r\n            placeholder=\"{{placeholder}}\" (blur)=\"setBlur($event)\" (keydown.delete)=\"keyDownDeleteEvent.emit($event)\">\r\n    </textarea>\r\n        }\r\n        @case (inputTypeEnum.int) {\r\n        <p-inputNumber [(ngModel)]=\"model\" (ngModelChange)=\"setModelChange($event)\" [maxlength]=\"maxLength\"\r\n            [readonly]=\"readonly\" [min]=\"min\" [max]=\"max\" [minFractionDigits]=\"0\" [useGrouping]=\"false\"\r\n            (keyup)=\"setKeyup($event)\" (blur)=\"setBlur($event)\" pKeyFilter=\"pnum\" class=\"w-full\"\r\n            (keydown.delete)=\"keyDownDeleteEvent.emit($event)\">\r\n        </p-inputNumber>\r\n        }\r\n        @case (inputTypeEnum.decimal) {\r\n        <p-inputNumber [(ngModel)]=\"model\" (ngModelChange)=\"setModelChange($event)\" [maxlength]=\"maxLength\"\r\n            [readonly]=\"readonly\" [min]=\"min\" [max]=\"max\" [useGrouping]=\"false\" [minFractionDigits]=\"2\"\r\n            [maxFractionDigits]=\"2\" (keyup)=\"setKeyup($event)\" (blur)=\"setBlur($event)\"\r\n            (keydown.delete)=\"keyDownDeleteEvent.emit($event)\">\r\n        </p-inputNumber>\r\n        }\r\n        @case (inputTypeEnum.mask) {\r\n        <p-inputMask [(ngModel)]=\"model\" (ngModelChange)=\"setModelChange($event)\" [mask]=\"mask\"\r\n            [unmask]=\"unmask != undefined ? unmask : false\" [maxlength]=\"maxLength\" [readonly]=\"readonly\"\r\n            (onBlur)=\"setBlur($event)\" (keydown.delete)=\"keyDownDeleteEvent.emit($event)\">\r\n        </p-inputMask>\r\n        }\r\n        @case (inputTypeEnum.date) {\r\n        <p-calendar [(ngModel)]=\"model\" (ngModelChange)=\"setModelChange($event)\" [locale]=\"calendarLocale\"\r\n            [monthNavigator]=\"true\" [yearNavigator]=\"true\" [minDate]=\"minDate\" [maxDate]=\"maxDate\"\r\n            [readonlyInput]=\"readonlyInput\" [showTime]=\"showtime\" [timeOnly]=\"timeonly\" [showSeconds]=\"showseconds\"\r\n            [selectOtherMonths]=\"false\" yearRange=\"1930:2030\" dateFormat=\"dd.mm.yy\" dataType=\"string\"\r\n            (onBlur)=\"setBlur($event)\" (keydown.delete)=\"keyDownDeleteEvent.emit($event)\">\r\n        </p-calendar>\r\n        }\r\n        @case (inputTypeEnum.multiselect) {\r\n        <p-multiSelect [(ngModel)]=\"model\" [group]=\"group\" display=\"chip\" [virtualScrollItemSize]=\"31\" [filter]=\"true\"\r\n            [readonly]=\"readonly\" [options]=\"options\" optionDisabled=\"disabled\" (ngModelChange)=\"setModelChange($event)\"\r\n            (blur)=\"setOnChange($event)\" (onChange)=\"setOnChange($event)\" [selectionLimit]=\"selectionLimit??999\"\r\n            [optionLabel]=\"optionLabel ?? 'name'\" [optionValue]=\"optionValue ??'code'\"\r\n            (keydown.delete)=\"keyDownDeleteEvent.emit($event)\">\r\n        </p-multiSelect>\r\n        }\r\n        @case (inputTypeEnum.checkbox) {\r\n        <label class=\"form-check-label\">\r\n            <p-checkbox [ngModel]=\"model\" (ngModelChange)=\"setModelChange($event)\" (onChange)=\"setOnChange($event)\"\r\n                [readonly]=\"readonly\" [binary]=\"true\" (keydown.delete)=\"keyDownDeleteEvent.emit($event)\">\r\n            </p-checkbox>\r\n            <label style=\"margin-left: 10px;\">{{label}}</label>\r\n        </label>\r\n        }\r\n        @case (inputTypeEnum.checkboxgroup) {\r\n        <p style=\"font-weight:bold; margin-bottom:17px; white-space: normal !important;\">{{label}}</p>\r\n        @for (item of options; track $index) {\r\n        <div class=\"field-checkbox\">\r\n            <span [ngClass]=\"{'selected':value && value?.indexOf(item.value) > -1}\">\r\n                <p-checkbox [name]=\"key\" [value]=\"item.value\" [(ngModel)]=\"model\"\r\n                    (ngModelChange)=\"setModelChange($event)\" [inputId]=\"item.value\" [disabled]=\"item?.disabled ?? false\"\r\n                    (onChange)=\"setOnChange($event)\" (keydown.delete)=\"keyDownDeleteEvent.emit($event)\"></p-checkbox>\r\n                <label style=\"margin-left: 10px;\">{{item.label}}</label>\r\n            </span>\r\n        </div>\r\n        }\r\n\r\n        }\r\n\r\n        @case (inputTypeEnum.profilephoto) {\r\n        <cat-file *ngIf=\"fileOptions\" [fileOptions]=\"fileOptions\" [canFileUpload]=\"fileOptions.canUpload\"\r\n            (onComplated)=\"setOnChange($event)\"></cat-file>\r\n        <!-- <cat-file></cat-file> -->\r\n        }\r\n\r\n        @case (inputTypeEnum.rating) {\r\n        <p-rating [(ngModel)]=\"model\" [stars]=\"stars\" (ngModelChange)=\"setModelChange($event)\" />\r\n        <!--  [cancel]=\"false\" [readonly]=\"true\" [disabled]=\"true\"  />-->\r\n        }\r\n\r\n        @case (inputTypeEnum.radiobutton) {\r\n        <div class=\"radio-group\">\r\n            <p-radioButton [(ngModel)]=\"model\" name=\"radio\" [value]=\"value\"></p-radioButton>\r\n            <label style=\"margin-left: 10px;\">{{label}}</label>\r\n        </div>\r\n        }\r\n\r\n        @case (inputTypeEnum.radiogroup) {\r\n        <p style=\"font-weight:bold; margin-bottom:17px; white-space: normal !important;\">{{label}}</p>\r\n        @for (item of options; track $index) {\r\n        <div class=\"radio-group\">\r\n            <p-radioButton [inputId]=\"item.value\" name=\"radio\" [value]=\"item.value\" [(ngModel)]=\"model\"\r\n                (ngModelChange)=\"setModelChange($event)\" />\r\n            <label style=\"margin-left: 10px;\">{{item.label}}</label>\r\n        </div>\r\n        }\r\n        }\r\n\r\n        @case (inputTypeEnum.innerHTML) {\r\n        <span [innerHTML]=\"innerHtml\"></span>\r\n        }\r\n\r\n        @case (inputTypeEnum.matrix) {\r\n\r\n        <table>\r\n            <thead>\r\n                <tr>\r\n                    <th></th>\r\n                    <th *ngFor=\"let sutun of secenekler; let sutunIndex = index\">\r\n                        {{sutun.ad}}\r\n                    </th>\r\n                </tr>\r\n            </thead>\r\n            <tbody>\r\n                <tr *ngFor=\"let satir of altSorular; let satirIndex = index\">\r\n                    <td>{{ satir.ad }}</td>\r\n                    <td *ngFor=\"let sutun of secenekler; let sutunIndex = index\">\r\n                        <div class=\"radio-group\">\r\n                            <p-radioButton [inputId]=\"'radio-' + satirIndex + '-' + sutunIndex\"\r\n                                [name]=\"'radio-' + satirIndex\" [value]=\"getMatrixObject(sutun.id,satir.id).secenekId\"\r\n                                [(ngModel)]=\"selectedMatrixValues[satirIndex].secenekId\"\r\n                                (ngModelChange)=\"setMatrixChange($event, satirIndex, satir.id)\"></p-radioButton>\r\n                        </div>\r\n                    </td>\r\n                </tr>\r\n            </tbody>\r\n        </table>\r\n        }\r\n\r\n        @default {\r\n\r\n        <input [id]=\"key\" pInputText type=\"text\" [(ngModel)]=\"model\" (ngModelChange)=\"setModelChange($event)\"\r\n            (input)=\"input.emit($event)\" [maxlength]=\"maxLength\" [minLength]=\"minLength\" [readonly]=\"readonly\"\r\n            (keyup)=\"setKeyup($event)\" (blur)=\"setBlur($event)\" [placeholder]=\"placeholder??''\"\r\n            (click)=\"click.emit($event)\" (keyup.enter)=\"setKeyupEnter($event)\"\r\n            (keydown.delete)=\"keyDownDeleteEvent.emit($event)\">\r\n        }\r\n\r\n\r\n        }\r\n        <!-- <ng-content select=\".svg-icon\"></ng-content> -->\r\n    </div>\r\n\r\n\r\n\r\n    <style>\r\n        .fa-star-of-life {\r\n            font-size: 6px;\r\n            margin-left: 5px;\r\n            margin-top: 0px;\r\n            position: absolute;\r\n\r\n        }\r\n\r\n        .p-component {\r\n            width: 100% !important;\r\n        }\r\n    </style>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { PrimeNGConfig, SelectItem } from 'primeng/api';\r\nimport { AutoCompleteModule } from 'primeng/autocomplete';\r\nimport { CalendarModule, LocaleSettings } from 'primeng/calendar';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { ChipsModule } from 'primeng/chips';\r\nimport { ColorPickerModule } from 'primeng/colorpicker';\r\nimport { DragDropModule } from 'primeng/dragdrop';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { EditorModule } from 'primeng/editor';\r\nimport { InputMaskModule } from 'primeng/inputmask';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { MessageModule } from 'primeng/message';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { PasswordModule } from 'primeng/password';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { BaseComponent, CatFileComponent } from '..';\r\nimport { FormControlTemplate, FormGroupControlTemplate } from '../../models';\r\nimport { FormListItemModel } from '../../models/form/form-list-item.model';\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'cat-input-form, [catInputForm]',\r\n  templateUrl: './input-form-control.component.html',\r\n  styleUrls: ['./input-form-control.component.scss'],\r\n  host: { 'Id': Math.random().toString() },\r\n  imports: [\r\n    CommonModule, FormsModule, ReactiveFormsModule,\r\n    AutoCompleteModule,\r\n    CalendarModule,\r\n    CheckboxModule,\r\n    InputMaskModule,\r\n    InputNumberModule,\r\n    InputSwitchModule,\r\n    InputTextModule,\r\n    InputTextareaModule,\r\n    MessagesModule,\r\n    MessageModule,\r\n    MultiSelectModule,\r\n    RadioButtonModule,\r\n    DragDropModule,\r\n    DropdownModule,\r\n    PasswordModule,\r\n    TooltipModule,\r\n    ChipsModule,\r\n    EditorModule,\r\n    ColorPickerModule\r\n  ]\r\n})\r\nexport class CatInputFormComponent extends BaseComponent implements OnInit {\r\n\r\n  // labelState: string = 'inactive';\r\n  @Input() formGroupControlTemplate: FormGroupControlTemplate | any;\r\n  //{ formGroup: FormGroup; control: FormGroupTemplate; };\r\n\r\n  @Output() onChange: EventEmitter<any> = new EventEmitter();\r\n  @Output() blur: EventEmitter<any> = new EventEmitter();\r\n  @Output() select: EventEmitter<any> = new EventEmitter();\r\n  @Output() keyup: EventEmitter<any> = new EventEmitter();\r\n  @Output() onFilter: EventEmitter<any> = new EventEmitter();\r\n  @Output() clickNewItemButton: EventEmitter<any> = new EventEmitter();\r\n  @Output() autoComplete: EventEmitter<any> = new EventEmitter();\r\n\r\n\r\n  listItemModel?: any;\r\n  // listItems?: FormListItemModel[];\r\n\r\n  isSet: boolean = false;\r\n  isMultiselectVirtulaScroll: boolean = true;\r\n  filteredAutoComplateList: any[] = [];\r\n\r\n  formItemId: any;\r\n\r\n\r\n  get formGroup() { return this.formGroupControlTemplate?.formGroup; }\r\n  get control() { return this.formGroupControlTemplate.control as FormControlTemplate; }\r\n  get formControl() { return this.formGroup?.get(this.control.key!!); }\r\n  get formSubmited() { return this.formGroupControlTemplate.formSubmited; }\r\n\r\n  get isValid() {\r\n    return this.formControl?.valid;\r\n  }\r\n  get valid() {\r\n    return this.formControl?.valid;\r\n  }\r\n\r\n  get invalid() {\r\n    return !this.formControl?.valid && (this.formControl?.touched || this.formControl?.dirty || this.formSubmited);\r\n  }\r\n\r\n\r\n\r\n  get errorMessage() {\r\n    //console.error(this.control.key, this.formControl?.errors);\r\n    for (const propertyName in this.formControl?.errors) {\r\n      return this.getValidatorErrorMessage(propertyName);\r\n    }\r\n    return undefined;\r\n  }\r\n\r\n  picklistSource?: SelectItem[];\r\n  picklistTarget?: SelectItem[];\r\n\r\n\r\n  constructor(private config: PrimeNGConfig) {\r\n    super();\r\n\r\n\r\n  }\r\n  ngOnInit(): void {\r\n    this.config.setTranslation(this.calendarLocale);\r\n\r\n    this.isSet = true;\r\n    setTimeout(() => {\r\n      this.isSet = true;\r\n\r\n    }, 10);\r\n\r\n  }\r\n\r\n\r\n  getValidatorErrorMessage(code: string) {\r\n    const config: any = {\r\n      required: 'Bu alan gereklidir.',\r\n      min: 'Minimum değer ' + this.control.minLength,\r\n      max: 'Maksimum değer ' + this.control.maxLength,\r\n      minLength: 'Minimum uzunluk ' + this.control.minLength,\r\n      maxLength: 'Maksimum uzunluk ' + this.control.maxLength,\r\n      email: 'Geçersiz e- posta adresi',\r\n      iban: 'Geçersiz IBAN',\r\n      tckn: 'Geçersiz TCKN',\r\n    };\r\n    return config[code];\r\n  }\r\n\r\n  calendarLocale: LocaleSettings = {\r\n    firstDayOfWeek: 1,\r\n    today: 'Bugün',\r\n    clear: 'Temizle',\r\n    dateFormat: 'dd.mm.yy',\r\n    weekHeader: 'Hft',\r\n    dayNames: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\"],\r\n    dayNamesShort: [\"Paz\", \"Pzt\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cmt\"],\r\n    dayNamesMin: [\"Pz\", \"Pt\", \"Sa\", \"Ça\", \"Pe\", \"Cu\", \"Ct\"],\r\n    monthNames: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\r\n    monthNamesShort: [\"Oca\", \"Şub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Ağu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"]\r\n  };\r\n\r\n  filterAutoComplate(event: any) {\r\n    let filtered: any[] = [];\r\n    let query = event.query;\r\n    for (let i = 0; i < this.control.options.length; i++) {\r\n      let item = this.control.options[i];\r\n\r\n      if (item.label.toLowerCase().indexOf(query.toLowerCase()) == 0) {\r\n        filtered.push(item);\r\n      }\r\n    }\r\n    this.filteredAutoComplateList = filtered;\r\n    this.autoComplete.emit(this.filteredAutoComplateList);\r\n  }\r\n\r\n  checkModelList() {\r\n    return typeof this.formControl[this.control.key!!] == \"string\" ? false : true;\r\n  }\r\n\r\n  setOnChange(event: any) {\r\n    this.onChange.emit(event);\r\n  }\r\n  setOnDateSelect(event: any) {\r\n    this.select.emit(event);\r\n  }\r\n  setKeyup(event: any) {\r\n    this.keyup.emit(event);\r\n  }\r\n  setBlur(event: any) {\r\n    this.blur.emit(event);\r\n  }\r\n  setOnFilter(event: any) {\r\n    this.onFilter.emit(event);\r\n  }\r\n\r\n  setOnSelect(event: any) {\r\n    this.select.emit(event);\r\n  }\r\n\r\n  clear() {\r\n    this.formControl.setValue(null);\r\n  }\r\n\r\n  addListItemModel(konu: any) {\r\n    if (!this.control.value)\r\n      this.control.value = [];\r\n\r\n    if (!this.listItemModel) {\r\n      return;\r\n    }\r\n\r\n    if (this.formItemId) { // güncelleme\r\n      let index = this.control.value.findIndex((x: any) => x.GuidId || x.Id == this.formItemId);\r\n      if (!this.control.autoComplete)\r\n        this.control.value[index].Konu = this.listItemModel;\r\n      else {\r\n        this.control.value[index].Konu = this.listItemModel.label;\r\n        this.control.value[index].Id = this.listItemModel.Id;\r\n      }\r\n    }\r\n\r\n    else { // yeni ekleme\r\n      if (!this.control.autoComplete)\r\n        this.control.value?.push({ Id: 0, GuidId: Date.now(), Konu: this.listItemModel });\r\n      else {\r\n        if (this.control.value.findIndex((x: any) => x.Id == this.listItemModel.Id) > -1) {\r\n          this.globalService.showMessage(0, \"Eklemek istediğiniz kayit listede mevcuttur.\");\r\n          this.listItemModel = \"\";\r\n          return;\r\n        }\r\n        else\r\n          this.control.value?.push({ Id: this.listItemModel.Id, GuidId: Date.now(), Konu: this.listItemModel.label });\r\n      }\r\n    }\r\n\r\n    this.listItemModel = \"\";\r\n    this.formItemId = undefined;\r\n\r\n    this.formGroup.controls[this.control.key!!].setValue(this.control.value);\r\n\r\n    // if (!this.control.value)\r\n    //   this.control.value = [];\r\n    // this.control.value?.push({ Id: 0, Konu: this.listItemModel?.valueOf() });\r\n    // this.formGroup.controls[this.control.key!!].setValue(this.control.value);\r\n    // this.listItemModel = \"\";\r\n  }\r\n  deleteListItem(item: FormListItemModel) {\r\n    this.control.value = (this.control.value as any[])?.filter(x => x != item);\r\n    this.formControl.setValue(this.control.value);\r\n  }\r\n\r\n  setClickNewItemButton() {\r\n    this.clickNewItemButton.emit(this.formGroupControlTemplate.key);\r\n    this.control.newItemButtonClick?.call(this.formGroupControlTemplate.key);\r\n  }\r\n\r\n  onClicked(item: any) {\r\n    this.listItemModel = item.Konu;\r\n    this.formItemId = item.GuidId || item.Id;\r\n  }\r\n\r\n}\r\n","@if(control && control.inputType && control.inputType != undefined){ \r\n  <div [formGroup]=\"formGroup!\" *ngIf=\"\r\n    isSet &&\r\n    formGroup &&\r\n    control &&\r\n    control.inputType != inputTypeEnum.listitems &&\r\n    !control.disabled\r\n  \" [ngClass]=\"control.readonly ? 'readonly' : ''\" [ngSwitch]=\"control.inputType\" class=\"field form-group-container\" [class.has-danger]=\"invalid ?? false\" [class.has-success]=\"false\" [class.form-check]=\"control.inputType === 'checkbox'\">\r\n  <label *ngIf=\"\r\n      [\r\n        'radiogroup',\r\n        'checkbox',\r\n        'checkboxgroup',\r\n        'profilephoto',\r\n        'fileupload'\r\n      ].indexOf(control?.inputType!!) == -1\r\n    \" class=\"flex justify-content-between m-0\">\r\n    <span *ngIf=\"control.required\" class=\"star-label\">\r\n      <i class=\"fa-solid fa-star-of-life\"></i>\r\n    </span>\r\n    <span [style.margin-left]=\"control.required ? '13px' : '0'\">\r\n      {{ control.label }}\r\n    </span>\r\n    <!-- yeni item ekleme butonu -->\r\n    <div *ngIf=\"control.newItemButton\" (click)=\"setClickNewItemButton()\" class=\"add-button cursor-pointer text-primary mr-2\"> \r\n      <i class=\"fa-solid fa-plus\"></i> {{ control.newItemButtonLabel }}\r\n    </div>\r\n  </label>\r\n  <ng-container *ngSwitchDefault>\r\n    <input pInputText class=\"catng-input-small\" type=\"text\" [formControlName]=\"control.key\" [maxlength]=\"control.maxLength\" [value]=\"control.value\" [readonly]=\"control.readonly\" (keyup)=\"setKeyup($event)\" [placeholder]=\"control.placeholder ?? ''\" (blur)=\"setBlur($event)\" />\r\n  </ng-container>\r\n  <ng-container *ngSwitchCase=\"inputTypeEnum.number\">\r\n    <p-inputNumber class=\"full-width\" *ngIf=\"!control.readonly\" [formControlName]=\"control.key\" [min]=\"control.min\" [max]=\"control.max\" [step]=\"control.step\" [prefix]=\"control.prefix\" [suffix]=\"control.suffix\" (keyup)=\"setKeyup($event)\" (blur)=\"setBlur($event)\"></p-inputNumber>\r\n    <input class=\"catng-input-small full-width\" *ngIf=\"control.readonly\" pInputText type=\"text\" [formControlName]=\"control.key\" [value]=\"control.value\" [readonly]=\"control.readonly\" />\r\n  </ng-container>\r\n  <ng-container *ngSwitchCase=\"inputTypeEnum.editor\">\r\n    <p-editor [formControlName]=\"control.key\" />\r\n  </ng-container>\r\n  <ng-container *ngSwitchCase=\"inputTypeEnum.checkbox\">\r\n    <label class=\"form-check-label\">\r\n      <p-checkbox [formControl]=\"formControl\" [readonly]=\"control.readonly\" [binary]=\"true\" (onChange)=\"setOnChange($event)\"></p-checkbox>\r\n      {{ control.label }}\r\n  </label>\r\n  </ng-container>\r\n  <ng-container *ngSwitchCase=\"inputTypeEnum.checkboxgroup\">\r\n    <p class=\"checkbox-group-label\">\r\n      {{ control.label }}\r\n    </p>\r\n    <div *ngFor=\"let item of control?.options\" class=\"field-checkbox\">\r\n      <p-checkbox [name]=\"control.key\" [value]=\"item.value\" [formControl]=\"formControl\" [inputId]=\"item.value\" [disabled]=\"item?.disabled\" [readonly]=\"item?.disabled\" (onChange)=\"setOnChange($event)\"></p-checkbox>\r\n      <label>{{ item?.label }}</label>\r\n    </div>\r\n  </ng-container>\r\n  <ng-container *ngSwitchCase=\"inputTypeEnum.phone\">\r\n    <p-inputMask class=\"catng-input-small\" [formControlName]=\"control.key\" [mask]=\"'(0999) 999 99 99'\" [unmask]=\"true\" type=\"tel\" [readonly]=\"control.readonly\" (keyup)=\"setOnChange($event)\" (blur)=\"setOnChange($event)\"></p-inputMask>\r\n  </ng-container>\r\n  <ng-container *ngSwitchCase=\"'mask'\">\r\n    <p-inputMask class=\"catng-input-small\" [formControlName]=\"control.key\" [mask]=\"control.mask\" [unmask]=\"true\" [maxlength]=\"control.maxLength\" [minlength]=\"control.minLength\" [readonly]=\"control.readonly\" [readonly]=\"control.readonly\" (keyup)=\"setOnChange($event)\" (blur)=\"setOnChange($event)\"></p-inputMask>\r\n  </ng-container>\r\n  <ng-container *ngSwitchCase=\"inputTypeEnum.textarea\">\r\n    <textarea pInputTextarea [formControlName]=\"control.key\" [maxlength]=\"control.maxLength\" [readonly]=\"control.readonly\" [value]=\"control.value\" [autoResize]=\"control.autoResize ?? false\" [rows]=\"control.rows ?? 6\" [cols]=\"control.cols\" class=\"full-screen\" id=\"float-input\" (blur)=\"setBlur($event)\"></textarea>\r\n  </ng-container>\r\n  <ng-container *ngSwitchCase=\"inputTypeEnum.password\">\r\n    <p-password styleClass=\"p-input-icon-right\" class=\"catng-input-password full-width\" inputId=\"{{ control.key }}\" [formControlName]=\"control.key\" (blur)=\"setOnChange($event)\"></p-password>\r\n  </ng-container>\r\n  <ng-container *ngSwitchCase=\"inputTypeEnum.email\">\r\n    <input class=\"catng-input-small\" pInputText type=\"email\" [formControlName]=\"control.key\" [maxlength]=\"control.maxLength\" [readonly]=\"control.readonly\" (keyup)=\"setKeyup($event)\" (blur)=\"setBlur($event)\" />\r\n  </ng-container>\r\n  <ng-container *ngSwitchCase=\"inputTypeEnum.dropdown\">\r\n    <p-dropdown [formControlName]=\"control.key\" [autoDisplayFirst]=\"control.autoDisplayFirst\" [editable]=\"control.editable\" [filter]=\"control.filter\" [virtualScroll]=\"true\" [virtualScrollItemSize]=\"control.virtualScrollItemSize ?? 38\" [readonly]=\"control.readonly\" [options]=\"control.options\" [style]=\"control.style\" [showClear]=\"control.showClear\" (onChange)=\"setOnChange($event)\" (onBlur)=\"setBlur($event)\" appendTo=\"body\" [optionLabel]=\"control.optionLabel ?? 'label'\" [optionValue]=\"control.optionValue ?? 'value'\" [scrollHeight]=\"\r\n        (control.options?.length > 7 ? 7 : control.options?.length) * 42 + 'px'\r\n      \"></p-dropdown>\r\n  </ng-container>\r\n  <ng-container *ngSwitchCase=\"inputTypeEnum.multiselect\">\r\n    <p-multiSelect *ngIf=\"control.grouped && control.options && checkModelList()\" [group]=\"true\" [formControlName]=\"control.key\" [display]=\"control.display ?? 'chip'\" [virtualScroll]=\"true\" [virtualScroll]=\"true\" [virtualScrollItemSize]=\"31\" [filter]=\"true\" [readonly]=\"control.readonly\" [options]=\"control.options\" appendTo=\"body\" optionDisabled=\"disabled\" (onChange)=\"setOnChange($event)\" (onFilter)=\"setOnFilter($event)\" [selectionLimit]=\"control.selectionLimit ?? 999\" [optionLabel]=\"control.optionLabel ?? 'label'\" [optionValue]=\"control.optionValue ?? 'value'\">\r\n      <ng-template let-group pTemplate=\"group\">\r\n        <div class=\"p-d-flex p-ai-center\">\r\n          <span>{{ group.label }}</span>\r\n        </div>\r\n      </ng-template>\r\n    </p-multiSelect>\r\n    <p-multiSelect *ngIf=\"!control.grouped && control.options\" [group]=\"control.grouped\" [formControlName]=\"control.key\" [display]=\"control.display ?? 'chip'\" [virtualScroll]=\"true\" [virtualScrollItemSize]=\"31\" [filter]=\"true\" [readonly]=\"control.readonly\" appendTo=\"body\" [options]=\"control.options\" optionDisabled=\"disabled\" (onChange)=\"setOnChange($event)\" [selectionLimit]=\"control.selectionLimit ?? 999\" (onFilter)=\"setOnFilter($event)\" [optionLabel]=\"control.optionLabel ?? 'label'\" [optionValue]=\"control.optionValue ?? 'value'\"></p-multiSelect>\r\n  </ng-container>\r\n  <ng-container *ngSwitchCase=\"'autocomplete'\">\r\n    <p-autoComplete [minLength]=\"2\" [formControlName]=\"control.key\" field=\"label\" [suggestions]=\"filteredAutoComplateList\" (completeMethod)=\"filterAutoComplate($event)\"\r\n    (onSelect)=\"setOnSelect($event)\"></p-autoComplete>\r\n    <em *ngIf=\"formControl.Value\" (click)=\"clear()\" class=\"fa fa-times autocomplete-icon\"></em>\r\n  </ng-container>\r\n  <div *ngSwitchCase=\"inputTypeEnum.radiogroup\" class=\"radio-group\">\r\n    <p></p>\r\n    <div class=\"container\" *ngFor=\"let item of control.options\">\r\n      <p-radioButton [name]=\"control.key\" label=\"{{ item.label }}\" value=\"{{ item.value }}\" [formControlName]=\"control.key\" (onClick)=\"setOnChange($event)\"></p-radioButton>\r\n      <span *ngIf=\"item?.explanation?.length > 0\" class=\"icon\" [pTooltip]=\"item.explanation\">\r\n        <i class=\"fa-solid fa-circle-question\"></i>\r\n      </span>\r\n    </div>\r\n  </div>\r\n  <ng-container *ngSwitchCase=\"inputTypeEnum.date\">\r\n    <p-calendar *ngIf=\"!control.readonly\" [formControlName]=\"control.key\" [locale]=\"calendarLocale\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" [minDate]=\"control.minDate\" [maxDate]=\"control.maxDate\" [readonlyInput]=\"control.readonly\" [selectOtherMonths]=\"true\" [showTime]=\"false\" [timeOnly]=\"false\" yearRange=\"1930:2030\" dateFormat=\"dd.mm.yy\" dataType=\"string\" appendTo=\"body\" (onBlur)=\"setOnChange($event)\" (onSelect)=\"setOnDateSelect($event)\" [showIcon]=\"true\"></p-calendar>\r\n    <input class=\"catng-input-small full-width\" *ngIf=\"control.readonly\" pInputText type=\"text\" [formControlName]=\"control.key\" [maxlength]=\"control.maxLength\" [value]=\"control.value\" [readonly]=\"control.readonly\" (keyup)=\"setOnChange($event)\" (blur)=\"setOnChange($event)\" />\r\n  </ng-container>\r\n  <ng-container *ngSwitchCase=\"inputTypeEnum.dateTime\">\r\n    <p-calendar *ngIf=\"!control.readonly\" [formControlName]=\"control.key\" [locale]=\"calendarLocale\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" [minDate]=\"control.minDate\" [maxDate]=\"control.maxDate\" [readonlyInput]=\"control.readonly\" [selectOtherMonths]=\"true\" [showTime]=\"true\" [timeOnly]=\"false\" yearRange=\"1930:2030\" dateFormat=\"dd.mm.yy\" dataType=\"string\" appendTo=\"body\" (onBlur)=\"setOnChange($event)\" (onSelect)=\"setOnDateSelect($event)\" [showIcon]=\"true\"></p-calendar>\r\n    <input class=\"catng-input-small full-width\" *ngIf=\"control.readonly\" pInputText type=\"text\" [formControlName]=\"control.key\" [maxlength]=\"control.maxLength\" [value]=\"control.value\" [readonly]=\"control.readonly\" (keyup)=\"setOnChange($event)\" (blur)=\"setOnChange($event)\" />\r\n  </ng-container>\r\n  <ng-container *ngSwitchCase=\"inputTypeEnum.time\">\r\n    <p-calendar *ngIf=\"!control.readonly\" [formControlName]=\"control.key\" [timeOnly]=\"true\" hourFormat=\"24\" (onBlur)=\"setOnChange($event)\" [showIcon]=\"true\" dataType=\"date\"></p-calendar>\r\n    <input class=\"catng-input-small full-width\" *ngIf=\"control.readonly\" pInputText type=\"text\" [formControlName]=\"control.key\" [maxlength]=\"control.maxLength\" [value]=\"control.value\" [readonly]=\"control.readonly\" (keyup)=\"setOnChange($event)\" (blur)=\"setOnChange($event)\" />\r\n  </ng-container>\r\n  <ng-container *ngSwitchCase=\"inputTypeEnum.chips\">\r\n    <p-chips [formControlName]=\"control.key\" separator=\",\" class=\"full-width\"></p-chips>\r\n  </ng-container>\r\n  <ng-container *ngSwitchCase=\"inputTypeEnum.colorPicker\">\r\n    <p-colorPicker [formControlName]=\"control.key\" [styleClass]=\"control.class\" />\r\n  </ng-container>\r\n  <div *ngIf=\"invalid\" class=\"ui-message required-input-span\">\r\n    {{ errorMessage }}\r\n  </div>\r\n  <span *ngIf=\"control?.explanation?.length > 0\" style=\"\r\n      position: absolute;\r\n      top: -11px;\r\n      right: 7px;\r\n      cursor: pointer;\r\n      color: #007bff;\r\n      font-size: 20px;\r\n      background-color: white;\r\n    \" [pTooltip]=\"control.explanation\">\r\n    <i class=\"fa-solid fa-circle-question\"></i>\r\n  </span>\r\n</div>\r\n<!-- <div class=\"{{control.class}} field\" [class.has-danger]=\"invalid??false\"\r\n    *ngIf=\"control.inputType == inputTypeEnum.listitems\" style=\"width: 100%; position: relative; min-height: 70px;\"><label\r\n      *ngIf=\"['radiogroup','checkbox','checkboxgroup','profilephoto','fileupload'].indexOf(control?.inputType!!) == -1\"><span *ngIf=\"control.required\" style=\"position: absolute; margin-top: -3px;\"><i class=\"fa-sharp fa-solid fa-star-of-life\"></i></span><span [style.margin-left]=\"control.required ? '13px' : '0'\">\r\n        {{control.label}}\r\n      </span></label><ul class=\"list-group\" style=\"margin-bottom: 15px;\"><li *ngFor=\"let item of control.value\" class=\"list-group-item\"><span style=\"width: calc(100%-50px);\">{{item.Konu}}</span><span style=\"width: 50xp;cursor: pointer; float: right;\" (click)=\"deleteListItem(item)\"><i class=\"fa-solid fa-circle-xmark\"></i></span></li></ul><input pInputText type=\"text\" [(ngModel)]=\"listItemModel\" style=\"width:100%;\" [maxlength]=\"4000\"\r\n      (keyup.enter)=\"addListItemModel($event)\" (blur)=\"addListItemModel($event)\"></div> -->\r\n<div class=\"{{ control.class }} field\" [class.has-danger]=\"invalid ?? false\" *ngIf=\"control.inputType == inputTypeEnum.listitems\" style=\"width: 100%; position: relative; min-height: 70px\">\r\n  <label *ngIf=\"\r\n      [\r\n        'radiogroup',\r\n        'checkbox',\r\n        'checkboxgroup',\r\n        'profilephoto',\r\n        'fileupload'\r\n      ].indexOf(control?.inputType!!) == -1\r\n    \">\r\n    <span *ngIf=\"control.required\" style=\"position: absolute; margin-top: -3px\">\r\n      <i class=\"fa-sharp fa-solid fa-star-of-life\"></i>\r\n    </span>\r\n    <span [style.margin-left]=\"control.required ? '13px' : '0'\">\r\n      {{ control.label }}\r\n    </span>\r\n    <span *ngIf=\"control.newItemButton\" (click)=\"setClickNewItemButton()\" class=\"add-button cursor-pointer text-primary mr-2\">+ {{ control.newItemButtonLabel }}</span>\r\n  </label>\r\n  <div class=\"flex\">\r\n    <p-autoComplete *ngIf=\"control.autoComplete\" class=\"w-full\" [(ngModel)]=\"listItemModel\" (onSelect)=\"addListItemModel($event)\" (completeMethod)=\"filterAutoComplate($event)\" [suggestions]=\"filteredAutoComplateList\" field=\"label\"></p-autoComplete>\r\n    <input *ngIf=\"!control.autoComplete\" pInputText type=\"text\" [(ngModel)]=\"listItemModel\" style=\"width: 100%\" [maxlength]=\"4000\" (keyup.enter)=\"addListItemModel($event)\" (blur)=\"addListItemModel($event)\" />,\r\n  </div>\r\n  <ul *ngIf=\"control.value?.length > 0\" class=\"list-group border border-blue-300\">\r\n    <!-- <ul class=\"list-group\" [ngStyle]=\"{'margin-bottom.px': control.value.length > 0 ? 15 : 5}\"> -->\r\n    <li *ngFor=\"let item of control.value\" class=\"list-group-item cursor-pointer\" (click)=\"onClicked(item)\">\r\n      <span style=\"width: calc(100%-50px)\">{{ item.Konu }}</span>\r\n      <span style=\"width: 50xp; cursor: pointer; float: right\" (click)=\"deleteListItem(item)\">\r\n        <i class=\"fa-solid fa-circle-xmark\"></i>\r\n      </span>\r\n    </li>\r\n  </ul>\r\n</div> \r\n}","import { CommonModule, JsonPipe } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { LocaleSettings } from 'primeng/calendar';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { BaseComponent, BaseFormComponent, CatInputFormComponent } from '../../components';\r\nimport { SubmitType } from '../../enums';\r\nimport { FormControlTemplate } from '../../models';\r\nimport { cloneDeep, get, set } from 'lodash';\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'cat-dynamic-form, [cat-dynamic-form]',\r\n  templateUrl: './dynamic-form.component.html',\r\n  styleUrls: ['./dynamic-form.component.scss'],\r\n  host: { 'Id': Math.random().toString() },\r\n  imports: [CommonModule, ReactiveFormsModule, CatInputFormComponent, ButtonModule, JsonPipe],\r\n  providers: [\r\n    { provide: NG_VALUE_ACCESSOR, useExisting: DynamicFormComponent, multi: true }\r\n  ],\r\n})\r\nexport class DynamicFormComponent extends BaseComponent implements OnInit {\r\n\r\n  submitType = SubmitType;\r\n  @Input() baseComp!: BaseFormComponent<any>;\r\n  @Input() isShowButton: boolean = true;\r\n  @Input() customButtonLabel: string = \"\";\r\n  @Input() customButtonIcon: string = \"\";\r\n  @Output() onSave: EventEmitter<any> = new EventEmitter();\r\n  @Output() onDelete: EventEmitter<any> = new EventEmitter();\r\n  @Output() onCancel: EventEmitter<any> = new EventEmitter();\r\n  @Output() onCustomEvent: EventEmitter<any> = new EventEmitter();\r\n  @Output() clickNewItemButton: EventEmitter<any> = new EventEmitter();\r\n\r\n  formShowType: string = \"base-form\";\r\n  formControlTemplateRow?: FormControlTemplate[];\r\n\r\n  //@Input() baseComp: BaseFormComponent<any>;\r\n  // @Input() metaData: BaseFormComponent<any> ;\r\n  // @Input() baseComp: BaseFormComponent<any> ;\r\n\r\n  get profilePhtoControl() {\r\n    return this.baseComp!.formControlTemplate!.find((x: any) => x.inputType == this.baseComp.inputTypeEnum.profilephoto);\r\n  }\r\n  // get formControlTemplate(): FormControlTemplate[] {\r\n\r\n  //   return this.baseComp!.formControlTemplate!.filter((x: any) => x.show != false) as FormControlTemplate[];\r\n  // }\r\n  constructor() {\r\n    super();\r\n\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    setTimeout(() => {\r\n      if (!this.baseComp.formControlTemplate)\r\n        this.baseComp.formControlTemplate = [];\r\n\r\n      if (this.baseComp.formControlTemplate.findIndex(x => x.inputType == this.inputTypeEnum.row) > -1) {\r\n        this.formShowType = \"dyanmic-form\";\r\n        this.formControlTemplateRow = cloneDeep(this.baseComp.formControlTemplate);\r\n        this.baseComp.formControlTemplate = [];\r\n        this.getFormControlTemplateOnlyInput(cloneDeep(this.formControlTemplateRow));\r\n        this.baseComp.setForm();\r\n      } else {\r\n        this.baseComp.setForm();\r\n      }\r\n\r\n    }, 10);\r\n  }\r\n\r\n  save(data?: any) {\r\n    this.onSave.emit(data);\r\n  }\r\n  cancel(data: any) {\r\n    this.onCancel.emit(data);\r\n  }\r\n  delete(data: any) {\r\n    this.onDelete.emit(data);\r\n  }\r\n  customEvent(data: any) {\r\n    this.onCustomEvent.emit(data);\r\n  }\r\n\r\n  calendarLocale: LocaleSettings = {\r\n    firstDayOfWeek: 1,\r\n    today: 'Bugün',\r\n    clear: 'Temizle',\r\n    dateFormat: 'dd.mm.yy',\r\n    weekHeader: 'Hft',\r\n    dayNames: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\"],\r\n    dayNamesShort: [\"Paz\", \"Pzt\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cmt\"],\r\n    dayNamesMin: [\"Pz\", \"Pt\", \"Sa\", \"Ça\", \"Pe\", \"Cu\", \"Ct\"],\r\n    monthNames: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\r\n    monthNamesShort: [\"Oca\", \"Şub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Ağu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"]\r\n  };\r\n\r\n  getInputClass(control: any, index: number) {\r\n    if (control.class) {\r\n      return control.class;\r\n    } else if (control.InputType == this.baseComp.inputTypeEnum.profilephoto) {\r\n      return \"input-profil-content\";\r\n    } else if (this.profilePhtoControl && index < 5) {\r\n      return \"profile-photo-text\";\r\n    }\r\n    else {\r\n      return \"col-12\";\r\n    }\r\n  }\r\n\r\n  setClickNewItemButton(event: string) {\r\n    this.clickNewItemButton.emit(event)\r\n  }\r\n\r\n  // onClick(event:string) {\r\n  //   this.clickNewItemButton.emit(event)\r\n  // }\r\n\r\n\r\n  getFormControlTemplateOnlyInput(item: FormControlTemplate[]) {\r\n     for (let index = 0; index < item.length; index++) {\r\n      if ([\"row\", \"column\", \"card\"].includes(item[index].inputType!)) {\r\n        this.getFormControlTemplateOnlyInput(item[index].children as FormControlTemplate[]);\r\n      }\r\n      else {\r\n        this.baseComp.formControlTemplate?.push(item[index]);\r\n      }\r\n    } \r\n  }\r\n\r\n\r\n\r\n}\r\n","@if(baseComp.formGroup && baseComp.formControlTemplate && baseComp.formControlTemplate.length > 0){\r\n<form #frm [formGroup]=\"baseComp.formGroup\">\r\n    @if(formShowType == \"dyanmic-form\"){\r\n    @for (rowItem of formControlTemplateRow; track $index) {\r\n    @if(rowItem.inputType == inputTypeEnum.row){\r\n    <div class=\"row\">\r\n        @for (column of rowItem.children; track $index) {\r\n        <div class=\"col\">\r\n            @for (item of column.children; track $index ; let i = $index) {\r\n                <div *ngIf=\"item.show == undefined || item.show != false\" class=\"{{getInputClass(item,i)}}\">\r\n                    <cat-input-form [formGroupControlTemplate]=\"baseComp.getFormGroupControl(item.key)\"\r\n                        (onChange)=\"baseComp.onChangeInput(item)\" (clickNewItemButton)=\"setClickNewItemButton($event)\"\r\n                        class=\"w-full\"></cat-input-form>\r\n                </div>\r\n            }\r\n            <!-- <div *ngFor=\"let item of column.children; let i = index\">\r\n                <div *ngIf=\"item.show == undefined || item.show != false\" class=\"{{getInputClass(item,i)}}\">\r\n                    <cat-input-form [formGroupControlTemplate]=\"baseComp.getFormGroupControl(item.key)\"\r\n                        (onChange)=\"baseComp.onChangeInput(item)\" (clickNewItemButton)=\"setClickNewItemButton($event)\"\r\n                        class=\"w-full\"></cat-input-form>\r\n                </div>\r\n            </div> -->\r\n        </div>\r\n        }\r\n    </div>\r\n    }\r\n    }\r\n    }@else{\r\n\r\n        @for (item of baseComp.formControlTemplate; track $index; let i = $index) {\r\n            <div *ngIf=\"item.show != false\" class=\"{{getInputClass(item,i)}}\" >\r\n                <cat-input-form [formGroupControlTemplate]=\"baseComp.getFormGroupControl(item.key)\"\r\n                    (onChange)=\"baseComp.onChangeInput(item)\" (clickNewItemButton)=\"setClickNewItemButton($event)\"\r\n                    class=\"w-full\"></cat-input-form>\r\n            </div>\r\n        }\r\n\r\n\r\n    <!-- <div *ngFor=\"let item of baseComp.formControlTemplate; let i = index\">\r\n        <div *ngIf=\"item.show != false\" class=\"{{getInputClass(item,i)}}\">\r\n            <cat-input-form [formGroupControlTemplate]=\"baseComp.getFormGroupControl(item.key)\"\r\n                (onChange)=\"baseComp.onChangeInput(item)\" (clickNewItemButton)=\"setClickNewItemButton($event)\"\r\n                class=\"w-full\"></cat-input-form>\r\n        </div>\r\n    </div> -->\r\n    }\r\n    <div class=\"col-12 flex justify-content-end pr-2\">\r\n        <ng-container *ngIf=\"isShowButton\">\r\n            <span class=\"ml-2\" *ngIf=\"customButtonLabel\">\r\n                <p-button class=\"dynamic-form-button\" \r\n                          [raised]=\"true\" \r\n                          *ngIf=\"baseComp?.data?.id && baseComp?.data?.id != 0 \" \r\n                          pRipple\r\n                          [label]=\"customButtonLabel\" \r\n                          styleClass=\"p-button-primary\" \r\n                          [icon]=\"customButtonIcon\"\r\n                          (click)=\"customEvent(baseComp.formGroup?.value)\">\r\n                </p-button>\r\n            </span>\r\n            <span class=\"ml-2\">\r\n                <p-button class=\"dynamic-form-button\" \r\n                          [raised]=\"true\" \r\n                          *ngIf=\"baseComp?.data?.id && baseComp?.data?.id != 0 \" \r\n                          pRipple\r\n                          [label]=\"baseComp.buttonLabel??'Sil'\" \r\n                          styleClass=\"p-button-danger\" \r\n                          icon=\"pi pi-trash\"\r\n                          (click)=\"delete(baseComp.formGroup?.value)\">\r\n                </p-button>\r\n            </span>\r\n            <span class=\"ml-2 dynamic-form-button\">\r\n                <p-button class=\"dynamic-form-button\" \r\n                          [raised]=\"true\" \r\n                          [disabled]=\"baseComp.formGroup.invalid\"\r\n                          [label]=\"baseComp.buttonLabel??(baseComp.data?.id && baseComp.data?.id != 0 ? 'Güncelle' : 'Kaydet')\"\r\n                          styleClass=\"p-button-primary\" \r\n                          icon=\"pi pi-save\"\r\n                          (click)=\"save(baseComp.formGroup?.value)\">\r\n                </p-button>\r\n            </span>\r\n        </ng-container>\r\n        <ng-content select=\"[customFormButton]\"></ng-content>\r\n    </div>\r\n</form>\r\n}","import { Component, OnInit, inject } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { DynamicFormPageService } from '../../services';\r\nimport { BaseFormComponent } from '../base-form.component';\r\nimport { DynamicFormComponent } from '../dynamic-form/dynamic-form.component';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'cat-dynamic-form-page',\r\n  templateUrl: './dynamic-form-page.component.html',\r\n  styleUrls: ['./dynamic-form-page.component.scss'],\r\n  host: { 'Id': Math.random().toString() },\r\n  imports: [DynamicFormComponent],\r\n  providers: [\r\n    DynamicFormPageService,\r\n    { provide: NG_VALUE_ACCESSOR, useExisting: DynamicFormPageComponent, multi: true }\r\n  ],\r\n})\r\nexport class DynamicFormPageComponent extends BaseFormComponent<any> implements OnInit {\r\n\r\n  formUrl: string = \"\";\r\n\r\n\r\n\r\n\r\n\r\n  constructor(\r\n\r\n    private route: ActivatedRoute,\r\n    //private service: DynamicFormPageService\r\n  ) {\r\n    super();\r\n    this.service = inject(DynamicFormPageService);\r\n    this.service?.setControlUrl(\"api/dynamicform/getform\");\r\n    //this.controlUrl = \"api/dynamicform/getform\";\r\n  }\r\n\r\n  ngOnInit(): void {\r\n\r\n    this.route.params.subscribe(params => {\r\n\r\n      this.formUrl = params[\"formurl\"];\r\n      // this.controlUrl = `dynamicform/getform/${params[\"controlUrl\"]}`;\r\n      this.id = params[\"Id\"];\r\n      //this.service?.setControlUrl(this.controlUrl);\r\n      this.getForm();\r\n    });\r\n  }\r\n\r\n  getForm() {\r\n    this.service?.get({ id: this.formUrl }).subscribe(resp => {\r\n      this.formControlTemplate = JSON.parse(resp.data.formControlTemplate as string);\r\n    });\r\n  }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n","@if(this.formControlTemplate && this.formControlTemplate.length > 0){\r\n    <div class=\"card\">\r\n        <cat-dynamic-form [baseComp]=\"this\" (onSave)=\"onSave()\" ></cat-dynamic-form>\r\n    </div>\r\n\r\n}","import { DatePipe } from '@angular/common';\r\nimport { inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { GlobalService } from '../services';\r\n\r\n\r\n@Pipe({\r\n  name: 'catDate',\r\n  standalone: true\r\n})\r\nexport class CatDatePipe implements PipeTransform {\r\n\r\n  globalService: GlobalService = inject(GlobalService);\r\n  datePie: DatePipe = inject(DatePipe);\r\n\r\n  transform(value: any, format:string): unknown {\r\n\r\n    if (!this.globalService.isDate(value)) {\r\n      value = this.globalService.convertToDate(value);\r\n    }\r\n    return this.datePie.transform(value, format);\r\n  }\r\n\r\n}\r\n","import { Component, EventEmitter, HostListener, Input, OnInit, Output, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { BaseListComponent } from '../base-list.component';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TableModule } from 'primeng/table';\r\nimport { CatFileComponent } from '../file-control/file-control.component';\r\nimport { ContactPipe, PhonePipe } from '../../pipes';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { TieredMenu } from 'primeng/tieredmenu';\r\nimport { TieredMenuModule } from 'primeng/tieredmenu';\r\nimport { Column, FileOptions } from '../../models';\r\nimport { CatDatePipe } from '../../pipes/cat-date.pipe';\r\nimport { SplitButtonModule } from 'primeng/splitbutton';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n  selector: 'cat-dynamic-list',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    TieredMenuModule,\r\n    TableModule,\r\n    CatFileComponent,\r\n    ContactPipe,\r\n    ButtonModule,\r\n    InputTextModule,\r\n    PhonePipe,\r\n    CatDatePipe,\r\n    SplitButtonModule,\r\n    TranslateModule\r\n  ],\r\n  inputs: ['listOptions'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  host: { 'Id': Math.random().toString() },\r\n  templateUrl: './dynamic-list.component.html',\r\n  styleUrl: './dynamic-list.component.scss',\r\n  providers: [TranslateService]\r\n})\r\nexport class DynamicListComponent extends BaseListComponent<any, any> implements OnInit {\r\n\r\n  @ViewChild('dt') table: any;\r\n  // @Input() contentTemplate!: TemplateRef<any>;\r\n  @Input() override rowMenuItemList: MenuItem[] = [];\r\n  @Input() override actionMenuItems: MenuItem[] = [];\r\n  @Output() rowClick: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() downloadExcel: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() customEvent: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() printTable: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() refreshData: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() addEvent: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() selectedRow = new EventEmitter();\r\n\r\n  showType?: string;\r\n\r\n  ngOnInit(): void {\r\n    this.listOptions!.tableSize = \"\"\r\n    setTimeout(() => {\r\n      this.onResize(null);\r\n      if (!this.listOptions.filterColumns)\r\n        this.listOptions.filterColumns = [];\r\n    }, 20);\r\n  }\r\n\r\n  @HostListener('window:resize', ['$event'])\r\n  onResize(event: any) {\r\n    let width = window.innerWidth;\r\n    if (width < 481) {\r\n      this.showType = \"list\";\r\n    }\r\n    else {\r\n      this.showType = \"grid\";\r\n    }\r\n\r\n    /*\r\n\r\n      320px — 480px: Mobile devices\r\n      481px — 768px: iPads, Tablets\r\n      769px — 1024px: Small screens, laptops\r\n      1025px — 1200px: Desktops, large screens\r\n    */\r\n\r\n    //document.getElementById(\"body\").clientWidth;\r\n    //let height = window.innerHeight;//document.getElementById(\"body\").clientHeight;       \r\n    //var item = document.getElementById(\"modal-bod\").style.minHeight = height+\"px\";\r\n  }\r\n\r\n  getFileOptions(item: any, columnIndex: number): FileOptions {\r\n    if (this.listOptions && this.listOptions.columns && this.listOptions.columns[columnIndex]) {\r\n      return {\r\n        guidId: item.guidId,\r\n        refEntityId: this.listOptions.columns[columnIndex]?.refEntityId ?? undefined,\r\n        entityId: item.id,\r\n        showType: this.fileShowTypeEnum.profilePhoto,\r\n        showName: \"Fotoğraf\",\r\n        border: this.listOptions.columns[columnIndex]?.border,\r\n        radius: this.listOptions.columns[columnIndex]?.radius ?? \"4px\",\r\n        width: this.listOptions.columns[columnIndex]?.width ?? '50px',\r\n        height: this.listOptions.columns[columnIndex]?.height ?? '50px',\r\n        buttonText: \"Resim Seç\",\r\n        url: item.fileUrl ?? (item.guidId ? `/file/get/${item.guidId}` : undefined),\r\n        uploadUrl: item.fileUploadUrl ?? \"file/upload\",\r\n        downloadUrl: item.fileDownloadUrl ?? (item.guidId ? `/file/get/${item.guidId}` : undefined),\r\n        class: this.listOptions.columns[columnIndex]?.class,\r\n        canUpload: this.listOptions.columns[columnIndex]?.fileCanUpload ?? false,\r\n        //fileListUrl: this.control.fileListUrl ?? ((this.control.fileEntityId ?? this.formGroup.controls['id'].value) ? `/file/get/${this.formControl?.value}` : undefined),\r\n        //deleteUrl: this.control.fileDeleteUrl ?? (this.control.value ? `/file/delete/${this.formControl?.value}` : undefined),\r\n      }\r\n    }\r\n    return {};\r\n  }\r\n\r\n  rowClickEvent(item: any, col: Column, index: number) {\r\n    this.data = item;\r\n    if (col.command) {\r\n      col.command?.call(this, item);\r\n    }\r\n    else if (this.listOptions.isRowClick) {\r\n      this.rowClick.emit(item);\r\n    }\r\n    // this.rowClick.emit(item);\r\n  }\r\n  setRowMenu(event: Event, pm: TieredMenu, row: any) {\r\n    pm.toggle(event);\r\n    event.preventDefault();\r\n    this.selectedRow.emit(row);\r\n    // this.kayit = row;\r\n  }\r\n\r\n  filter(event: any) {\r\n    this.table.filterGlobal(event.target.value, 'contains')\r\n  }\r\n\r\n  download() {\r\n    this.downloadExcel.emit();\r\n  }\r\n\r\n  customButtonEvent() {\r\n    this.customEvent.emit();\r\n  }\r\n\r\n  print() {\r\n    this.printTable.emit();\r\n  }\r\n\r\n  refresh() {\r\n    this.refreshData.emit();\r\n  }\r\n\r\n  add() {\r\n    this.addEvent.emit();\r\n  }\r\n}","<p-tieredMenu #rowMenu [popup]=\"true\" [model]=\"rowMenuItemList\"></p-tieredMenu>\r\n<div class=\"card\">\r\n  @if(listOptions && showType == 'grid') {\r\n  <ng-container *ngIf=\"listOptions\">\r\n    <p-table #dt styleClass=\"p-datatable-gridlines p-datatable-sm\" responsiveLayout=\"scroll\" ortMode=\"single\"\r\n      editMode=\"row\" [value]=\"listOptions.dataList ?? []\" [columns]=\"listOptions.columns\"\r\n      [styleClass]=\"listOptions.tableSize\" [reorderableColumns]=\"true\" [scrollable]=\"listOptions!!.scrollable\"\r\n      [scrollHeight]=\"listOptions!!.scrollHeight ??'750px'\" [virtualScroll]=\"listOptions!!.scrollable? true : false\"\r\n      [globalFilterFields]=\"listOptions.filterColumns\" [dataKey]=\"listOptions.dataKey\"\r\n      [paginator]=\"listOptions.pageSize?true:false\" [rows]=\"listOptions.pageSize?? 5000\"\r\n      [currentPageReportTemplate]=\"('lbl-ShowRecords' | translate) + ' {first} - {last} / {totalRecords}'\"\r\n      [showCurrentPageReport]=\"true\" [loading]=\"listOptions.loading\">\r\n      <!-- <ng-template pTemplate=\"caption\">\r\n          <div *ngIf=\"!listOptions.tableName\">\r\n            <ng-content select=\"[tableHeader]\"></ng-content>\r\n          </div>\r\n          <div style=\"text-align: center;font-weight: bold;\" *ngIf=\"listOptions.tableName\">\r\n            <span style=\"float: left !important;margin-top: -8px;\">\r\n              <p-button *ngIf=\"listOptions.downloadExcel\" (click)=\"download()\" icon=\"pi pi-file-excel\" label=\"Excel İndir\"></p-button>\r\n            </span>\r\n            {{listOptions.tableName}}\r\n            <span class=\"p-input-icon-left ml-auto\" style=\"float: right !important;margin-top: -8px;width:180px\">\r\n              <i class=\"pi pi-search\"></i>\r\n              <input pInputText type=\"text\" (input)=\"filter($event)\" placeholder=\"Ara\" pAutoFocus [autofocus]=\"true\" />\r\n            </span>\r\n            <span style=\"float: right !important; margin-right: 8px;\">\r\n              <p-button *ngIf=\"listOptions.customButtonText\" (click)=\"customButtonEvent()\" icon=\"pi pi-calendar\" label=\"{{listOptions.customButtonText}}\"></p-button>\r\n            </span>\r\n          </div>\r\n        </ng-template> -->\r\n      <ng-template pTemplate=\"caption\">\r\n        <div *ngIf=\"!listOptions.tableName\">\r\n          <ng-content select=\"[tableHeader]\"></ng-content>\r\n        </div>\r\n        <div *ngIf=\"listOptions.tableName\" class=\"flex justify-content-between align-items-center w-full\">\r\n          <div>\r\n            {{listOptions.tableName}}\r\n          </div>\r\n          <div class=\"flex gap-2\">\r\n            <span class=\"p-input-icon-left ml-auto\" *ngIf=\"listOptions.isSearchEnabled\">\r\n              <i class=\"pi pi-search\"></i>\r\n              <input pInputText type=\"text\" (input)=\"filter($event)\" [placeholder]=\"'lbl-Search' | translate\" pAutoFocus\r\n                [autofocus]=\"true\" class=\"header-search-input\" />\r\n            </span>\r\n            <p-button icon=\"pi pi-plus\" [label]=\"'btn-Add' | translate\" [raised]=\"true\" class=\"p-button-raised\"\r\n              *ngIf=\"listOptions.isAddButton\" (click)=\"add()\"></p-button>\r\n            <p-splitButton [label]=\"'btn-Actions' | translate\" (onClick)=\"customButtonEvent()\" [model]=\"actionMenuItems\"\r\n              class=\"header-split-btn\" raised outlined *ngIf=\"listOptions.isActionsButton\" />\r\n            <p-button icon=\"pi pi-filter\" class=\"header-btn\" *ngIf=\"listOptions.isComplexSearchEnabled\"\r\n              [pTooltip]=\"'lbl-Filter' | translate\" />\r\n            <p-button icon=\"pi pi-file-excel\" class=\"header-btn\" (click)=\"download()\" *ngIf=\"listOptions.downloadExcel\"\r\n              pTooltip=\"Excel\" />\r\n            <p-button icon=\"pi pi-print\" class=\"header-btn\" (click)=\"print()\" *ngIf=\"listOptions.print\"\r\n              [pTooltip]=\"'lbl-Print' | translate\" />\r\n            <p-button icon=\"pi pi-refresh\" class=\"header-btn\" (click)=\"refresh()\" *ngIf=\"listOptions.isRefreshButton\"\r\n              [pTooltip]=\"'lbl-Refresh' | translate\" />\r\n          </div>\r\n        </div>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"header\" let-columns>\r\n        <tr *ngIf=\"listOptions.isHeader != false\">\r\n          <th *ngIf=\"listOptions.isRowIndexVisible\" style=\"width: 3rem;text-align:center\" pReorderableColumn>\r\n            {{listOptions.rowIndexText??'#'}}\r\n          </th>\r\n          <th *ngFor=\"let col of columns\" pSortableColumn=\"{{col.field}}\" pReorderableColumn\r\n            style=\"min-width:75px !important\">\r\n            {{col.header}}\r\n          </th>\r\n          <th *ngIf=\"(rowMenuItemList && rowMenuItemList.length > 0) || listOptions.customButtons\" class=\"action-buttons-title\">{{'btn-Actions' | translate}}\r\n          </th>\r\n        </tr>\r\n        <tr *ngIf=\"listOptions.isSearchableFilter\">\r\n          <th *ngIf=\"listOptions.isRowIndexVisible\" style=\"width: 3rem;text-align:center\" pReorderableColumn></th>\r\n          <th *ngFor=\"let col of columns\">\r\n            <p-columnFilter *ngIf=\"listOptions.filterColumns?.includes(col.field) && col.type == inputTypeEnum.textbox\"\r\n              type=\"text\" field=\"{{col.field}}\" placeholder=\"Aramak için yazın\" ariaLabel=\"Filter {{col.field}}\"\r\n              matchMode=\"contains\" [showMenu]=\"false\" />\r\n          </th>\r\n          <th *ngIf=\"(rowMenuItemList && rowMenuItemList.length > 0) || listOptions.customButtons\" class=\"action-buttons-title\"></th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-item let-columns=\"columns\" let-rowIndex=\"rowIndex\">\r\n        <tr [pReorderableRow]=\"rowIndex\">\r\n          <td *ngIf=\"listOptions.isRowIndexVisible\" style=\"width: 3rem;text-align:center;\">\r\n            {{rowIndex+1 }}\r\n          </td>\r\n          <ng-container *ngFor=\"let col of columns; let columnIndex = index;\">\r\n            <td [ngClass]=\"col.className\" (click)=\"rowClickEvent(item,col,columnIndex)\"\r\n              [attr.colspan]=\"item['ColSpan'] && item['ColSpan'].length>0 ?item['ColSpan'][columnIndex]:1\"\r\n              [style.width]=\"col.type == inputTypeEnum.icon?'3rem':'auto'\"\r\n              [style.cursor]=\"col.commond ||  col.isRowClick || listOptions.isRowClick ? 'pointer':'auto'\">\r\n              <ng-container [ngSwitch]=\"col.type\">\r\n                <span *ngSwitchCase=\"inputTypeEnum.icon\" class=\"td-icon-col\">\r\n                  <i [ngClass]=\"item[col.field]?.toString()\"></i>\r\n                </span>\r\n                <span *ngSwitchCase=\"inputTypeEnum.innerHTML\" [innerHTML]=\"item[col.field]\"></span>\r\n                <cat-file *ngSwitchCase=\"inputTypeEnum.profilephoto\"\r\n                  [fileOptions]=\"getFileOptions(item, columnIndex)\"></cat-file>\r\n                <div *ngSwitchCase=\"inputTypeEnum.date\" style=\"width: 100%;\">\r\n                  {{ item[col.field] | catDate: 'dd.MM.yyyy' }}\r\n                </div>\r\n                <div *ngSwitchCase=\"inputTypeEnum.longDate\" style=\"width: 100%;\">\r\n                  {{ item[col.field] | date: 'dd.MM.yyyy HH:mm:ss' }}\r\n                </div>\r\n                <div *ngSwitchCase=\"inputTypeEnum.shortDate\" style=\"width: 100%;\">\r\n                  {{ item[col.field].substring(0, 10) }}\r\n                </div>\r\n                <div *ngSwitchCase=\"inputTypeEnum.routerlink\" style=\"width: 100%; text-align: center;\">\r\n                  <a [routerLink]=\"item[col.field]\">{{ col.routerLinkText }}</a>\r\n                </div>\r\n                <div *ngSwitchCase=\"inputTypeEnum.number\" style=\"width: 100%;\">\r\n                  {{ item[col.field] | number: '1.2-2' }}\r\n                </div>\r\n                <div *ngSwitchCase=\"inputTypeEnum.phone\" style=\"width: 100%;\">\r\n                  {{ item[col.field] | phone }}\r\n                </div>\r\n                <div *ngSwitchCase=\"inputTypeEnum.contact\" style=\"width: 100%;\">\r\n                  {{ item[col.field] | contact }}\r\n                </div>\r\n                <div *ngSwitchCase=\"inputTypeEnum.yesNo\" style=\"width: 100%;\">\r\n                  {{ item[col.field] ? ('lbl-Yes' | translate) : ('lbl-No' | translate) }}\r\n                </div>\r\n                <span *ngSwitchDefault>\r\n                  {{ item[col.field] }}\r\n                </span>\r\n              </ng-container>\r\n              <!-- <span *ngIf=\"item.Aciklama?.length > 0 \" tooltipPosition=\"bottom\"\r\n                                        style=\"float: right; top:-11px; right: 7px; cursor: pointer;color: #007bff; font-size: 20px;background-color: white;\"\r\n                                        [pTooltip]=\"item['Aciklama']\"><i class=\"fa-solid fa-circle-info\"></i></span> -->\r\n              <!-- <div *ngIf=\"col.type == InputType.checkbox\" style=\"width: 100%; text-align: center;\"><p-checkbox [(ngModel)]=\"item[col.field]\" [binary]=\"true\" inputId=\"binary\"\r\n                                    [readonly]=\"!col.isRowEdit\" (onChange)=\"checkOnChange(item)\"></p-checkbox></div><div *ngIf=\"col.type == InputType.switchbutton\" style=\"width: 100%; text-align: center;\"><p-inputSwitch [(ngModel)]=\"item[col.field]\" (onChange)=\"switchOnChange(item)\"></p-inputSwitch></div> -->\r\n            </td>\r\n          </ng-container>\r\n          <td *ngIf=\"(rowMenuItemList && rowMenuItemList.length > 0) || listOptions.customButtons\" class=\"action-buttons\">\r\n            <ng-container *ngIf=\"listOptions.customButtons\">\r\n              <ng-container *ngFor=\"let button of listOptions.customButtons\">\r\n                <button \r\n                  (click)=\"button.event!(item)\" \r\n                  *ngIf=\"button.visible\" \r\n                  class=\"custom-button\" \r\n                  [style.color]=\"button.color ?? 'var(--primary-color)'\"\r\n                  [pTooltip]=\"button.tooltip! | translate\">\r\n                  <i class=\"{{button.icon}}\"></i>\r\n                </button>\r\n              </ng-container>\r\n            </ng-container>\r\n            <button *ngIf=\"rowMenuItemList && rowMenuItemList.length > 0\" \r\n              (click)=\"setRowMenu($event, rowMenu, item)\" \r\n              class=\"custom-button\" \r\n              [style.color]=\"'var(--primary-color)'\"\r\n              [pTooltip]=\"'btn-Actions' | translate\">\r\n              <i class=\"fa fa-list\"></i>\r\n            </button>\r\n          </td>                 \r\n          <!-- <td *ngIf=\"(listOptions.isEdit || listOptions.isDelete)\" style=\"text-align:center; width: 50px\"></td> -->\r\n        </tr>\r\n      </ng-template>\r\n    </p-table>\r\n  </ng-container>\r\n  } @else if (showType == 'list') {\r\n  <p>{{'lbl-ListView' | translate}}</p>\r\n  }\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { BaseService } from '.';\r\n\r\n@Injectable()\r\nexport class DynamicListPageService extends BaseService<any> {\r\n\r\n  constructor() {\r\n    super();\r\n   }\r\n}\r\n","import { Component, OnInit, inject } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { DynamicListPageService } from '../../services/dynamic-list-page.service';\r\nimport { BaseListComponent } from '../base-list.component';\r\nimport { DynamicFormComponent } from '../dynamic-form/dynamic-form.component';\r\nimport { DynamicListComponent } from '../dynamic-list/dynamic-list.component';\r\nimport { ButtonModule } from 'primeng/button';\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: 'cat-dynamic-list-page',\r\n  templateUrl: './dynamic-list-page.component.html',\r\n  styleUrl: './dynamic-list-page.component.scss',\r\n  host: { 'Id': Math.random().toString() },\r\n  imports: [DynamicFormComponent, DynamicListComponent, ButtonModule],\r\n  providers: [\r\n    DynamicListPageService,\r\n    { provide: NG_VALUE_ACCESSOR, useExisting: DynamicListPageComponent, multi: true }\r\n  ],\r\n})\r\nexport class DynamicListPageComponent extends BaseListComponent<any, any> implements OnInit {\r\n\r\n  formUrl: string = \"\";\r\n  service: DynamicListPageService;\r\n\r\n  constructor(\r\n\r\n    private route: ActivatedRoute,\r\n    //private service: DynamicFormPageService\r\n  ) {\r\n    super();\r\n    this.service = inject(DynamicListPageService);\r\n    //this.controlUrl = \"api/dynamiclist/getlistoptions\";\r\n    this.service?.setControlUrl(\"api/dynamiclist/getlistoptions\");\r\n  }\r\n\r\n  ngOnInit(): void {\r\n\r\n    this.route.params.subscribe(params => {\r\n      this.formUrl = params[\"listurl\"];\r\n      // this.controlUrl = `dynamicform/getform/${params[\"controlUrl\"]}`;\r\n      this.id = params[\"Id\"];\r\n      //this.service?.setControlUrl(this.controlUrl);\r\n      this.getForm();\r\n    });\r\n  }\r\n\r\n  getForm() {\r\n    this.service?.get({ id: this.formUrl }).subscribe(resp => {\r\n      //debugger;\r\n      this.listOptions = JSON.parse(resp.data.listOptions as string);\r\n    });\r\n  }\r\n\r\n  rowClick(event: any) {\r\n    //this.rowClick.emit(event);\r\n  }\r\n\r\n\r\n\r\n\r\n\r\n\r\n}\r\n","\r\n<div class=\"cat-content p-0\">\r\n    <button pButton pRipple icon=\"pi pi-plus\" class=\"flex-1 mb-2\" label=\"Yeni Kayıt\" routerLink=\"form\"></button>\r\n    @if(listOptions){\r\n        <cat-dynamic-list [listOptions]=\"listOptions\" [rowMenuItemList]=\"rowMenuItemList\" (rowClick)=\"rowClick($event)\"></cat-dynamic-list>\r\n    }\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<!-- \r\n@if(this.formControlTemplate && this.formControlTemplate.length > 0){\r\n    <div class=\"card\">\r\n        <cat-dynamic-form [baseComp]=\"this\" (onSave)=\"onSave()\" ></cat-dynamic-form>\r\n    </div>\r\n\r\n} -->","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { BaseComponent } from '../base.component';\r\n\r\n@Component({\r\n  selector: 'cat-dialog',\r\n  standalone: true,\r\n  imports: [DialogModule, ButtonModule],\r\n  templateUrl: './dialog.component.html',\r\n  styleUrl: './dialog.component.scss'\r\n})\r\nexport class CatDialogComponent extends BaseComponent implements OnInit {\r\n\r\n  @Input() formDialog: boolean = false;\r\n  @Input() modal: boolean = false;\r\n  @Input() header: string = '';\r\n  @Input() styleInfo: {} = { width: '450px', height: '350px' };\r\n\r\n  @Output() formDialogChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  hideDialog() {\r\n    this.formDialog = false;\r\n    this.formDialogChange.emit(this.formDialog);\r\n  }\r\n}\r\n","<p-dialog [(visible)]=\"formDialog\" [style]=\"styleInfo\" [header]=\"header\" \r\n    [modal]=\"modal\" styleClass=\"p-fluid\" [breakpoints]=\"{ '1199px': '75vw', '575px': '90vw' }\" focusOnShow=\"false\"\r\n    (onHide)=\"hideDialog()\">\r\n    <ng-template pTemplate=\"content\">\r\n        <ng-content select=\"[formContent]\"></ng-content>\r\n    </ng-template>\r\n</p-dialog>","import { Component, OnInit } from '@angular/core';\r\nimport { BaseComponent } from '../base.component';\r\nimport { ToolbarModule } from 'primeng/toolbar';\r\n\r\n@Component({\r\n  selector: 'cat-toolbar',\r\n  standalone: true,\r\n  imports: [ToolbarModule],\r\n  templateUrl: './toolbar.component.html',\r\n  styleUrl: './toolbar.component.scss'\r\n})\r\nexport class CatToolbarComponent extends BaseComponent implements OnInit {\r\n  ngOnInit(): void {\r\n  }\r\n\r\n}\r\n","<p-toolbar>\r\n    <div class=\"p-toolbar-group-start\">\r\n        <ng-content select=\"[toolbarStart]\"></ng-content>\r\n    </div>\r\n    <div class=\"p-toolbar-group-end\">\r\n        <ng-content select=\"[toolbarEnd]\"></ng-content>\r\n    </div>\r\n</p-toolbar>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { BaseComponent } from '../base.component';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { ButtonModel } from '../../models/button.model';\r\n\r\n@Component({\r\n  selector: 'cat-button',\r\n  standalone: true,\r\n  imports: [ButtonModule],\r\n  templateUrl: './button.component.html',\r\n  styleUrl: './button.component.scss'\r\n})\r\nexport class CatButtonComponent extends BaseComponent {\r\n  @Input() buttonModel: ButtonModel = {}; \r\n  @Output() buttonClick: EventEmitter<void> = new EventEmitter(); \r\n  \r\n\r\n  onClick(): void {\r\n    this.buttonClick.emit();\r\n  }\r\n}\r\n","<p-button \r\n    [label]=\"buttonModel.label\" \r\n    [icon]=\"buttonModel.icon\" \r\n    [styleClass]=\"buttonModel.styleClass\" \r\n    [disabled]=\"buttonModel.disabled\" \r\n    [loading]=\"buttonModel.loading\" \r\n    [severity]=\"buttonModel.severity\" \r\n    [raised]=\"buttonModel.raised\" \r\n    [text]=\"buttonModel.text\" \r\n    [outlined]=\"buttonModel.outlined\" \r\n    [rounded]=\"buttonModel.rounded\" \r\n    [badge]=\"buttonModel.badge\" \r\n    [size]=\"buttonModel.size === 'small' || buttonModel.size === 'large' ? buttonModel.size : 'small'\"\r\n    (click)=\"onClick()\"> \r\n</p-button>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { BaseComponent } from '../base.component';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { ButtonModel } from '../../models/button.model';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ToastModule } from 'primeng/toast';\r\n\r\n@Component({\r\n  selector: 'cat-confirm-toast',\r\n  standalone: true,\r\n  imports: [ButtonModule,ConfirmDialogModule,ToastModule],\r\n  templateUrl: './confirm-toast.component.html',\r\n  styleUrl: './confirm-toast.component.scss'\r\n})\r\nexport class CatConfirmToastComponent extends BaseComponent {\r\n\r\n}\r\n","<p-confirmDialog [style]=\"{ width: '450px' }\" acceptLabel=\"Evet\" rejectLabel=\"Hayır\" rejectButtonStyleClass=\"mr-3\"></p-confirmDialog>\r\n<p-toast [breakpoints]=\"{ '920px': { width: '100%', right: '0', left: '0' } }\" />","import { Injectable, inject} from '@angular/core';\r\nimport {\r\n  HttpRequest,\r\n  HttpHandler,\r\n  HttpEvent,\r\n  HttpInterceptor,\r\n  HttpHeaders,\r\n  HttpErrorResponse,\r\n  HttpResponse\r\n} from '@angular/common/http';\r\n// import { environment } from 'src/environments/environment';\r\nimport { Observable, catchError, finalize, map, tap, throwError } from 'rxjs';\r\nimport { GlobalService } from '../services/global.service';\r\nimport { LoadingService } from '../services';\r\n\r\n@Injectable()\r\nexport class AppHttpInterceptor implements HttpInterceptor {\r\n  globalService: GlobalService;\r\n  loading: LoadingService\r\n  constructor() { \r\n\r\n    this.globalService = inject(GlobalService);\r\n    this.loading = inject(LoadingService);\r\n    \r\n  }\r\n\r\n  intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n    const csrf = this.globalService.getCookieValue(\"XSRF-REQUEST-TOKEN\");\r\n    const token = this.globalService.getTokenLocal();\r\n\r\n    let _responseType: 'arraybuffer' | 'blob' | 'json' | 'text' = \"json\";\r\n    let headers: HttpHeaders = new HttpHeaders();\r\n\r\n    if (csrf) {\r\n      headers = headers.append('X-XSRF-TOKEN', csrf);\r\n    }\r\n\r\n    if (request.url.indexOf('indir') > -1 || request.url.indexOf('download') > -1) {\r\n\r\n      _responseType = 'blob';\r\n    }\r\n\r\n    if (request.url.startsWith(\"http\")) {\r\n      return next.handle(request);\r\n    }\r\n    // let url = this.globalService.appConfig.API_URL + (request.url.indexOf('/') != 0 ? '/api/' : '/api') + request.url;\r\n\r\n    let urlList = request.url.split('/');\r\n    if (urlList[0] == '') {\r\n      urlList.shift();\r\n    }\r\n    let api = urlList.shift();\r\n    \r\n    let apiUrl = this.globalService.appConfig.API_URL;\r\n    if (!apiUrl) {\r\n      this.globalService.onErrorMessage(\"apiUrl not found\");\r\n      return throwError(() => \"apiUrl not found\");\r\n    }\r\n\r\n    // let api = request.url.indexOf('/') == 0 ? request.url.split('/')[1] : request.url.split('/')[0];\r\n\r\n\r\n    let url = apiUrl + '/' + urlList.join('/');\r\n    //this.globalService.appConfig.API_URL + (request.url.indexOf('/') != 0 ? '/' : '') + request.url;\r\n\r\n    if (token) {\r\n      headers = new HttpHeaders().set(\"Authorization\", `Bearer ${token}`);\r\n    }\r\n\r\n\r\n    if (request.method != 'GET') {\r\n\r\n      let requestClone: HttpRequest<any>;\r\n      if (request.url.indexOf('upload') > -1) {\r\n      }\r\n      else {\r\n        headers = headers.append('Content-type', 'application/json');\r\n        headers = headers.append('Access-Control-Allow-Origin', '*');\r\n        headers = headers.append('Access-Control-Allow-Headers', 'Content-Type');\r\n        headers = headers.append('Access-Control-Allow-Methods', 'POST');\r\n        headers = headers.append('X-Requested-With', 'XMLHttpRequest');\r\n        headers = headers.append('Accept-Language', 'tr-TR');\r\n      }\r\n      requestClone = request.clone({\r\n        responseType: _responseType,\r\n        headers: headers,\r\n        url: url\r\n      });\r\n      this.loading.setLoading(true, request.url);\r\n      \r\n      return next.handle(requestClone).pipe(\r\n        catchError(error =>\r\n          this.globalService.onError(error)),\r\n        tap((event: HttpEvent<any>) => {\r\n          if (event instanceof HttpResponse) {            \r\n           // this.loading.setLoading(false, request.url);\r\n            if (event.headers.has('Authorization')) {\r\n              // localStorage.setItem(Comp.lsJwt, event.headers.get('Authorization'));\r\n              this.globalService.setTokenLocal(event.headers.get('Authorization')!!);\r\n            }\r\n            if (event.headers.has('Refresh')) {\r\n              this.globalService.setRefreshTokenLocal(event.headers.get('Refresh')!!);\r\n            }\r\n            if (event instanceof Blob && request.url.endsWith('indir')) {\r\n\r\n              this.handleBlobResponse(event);\r\n            }\r\n\r\n          }\r\n        }),\r\n        finalize(() => \r\n          this.loading.setLoading(false, request.url)\r\n        )\r\n      );\r\n    } else {\r\n      var requestCloneGet = request.clone({\r\n        headers: headers,\r\n        url: url\r\n      });\r\n      this.loading.setLoading(true, request.url)\r\n      return next.handle(requestCloneGet).pipe(\r\n        catchError(error => this.globalService.onError(error)),\r\n        tap((event: HttpEvent<any>) => {\r\n          if (event instanceof HttpResponse) {\r\n            if (event.body instanceof Blob && request.url.endsWith('indir')) {\r\n              this.handleBlobResponse(event);\r\n            }\r\n          }\r\n        }),\r\n        finalize(() => this.loading.setLoading(false, request.url))\r\n      );\r\n\r\n    }\r\n\r\n\r\n\r\n\r\n    return next.handle(request);\r\n  }\r\n\r\n  private handleBlobResponse(event: HttpResponse<any>) {\r\n    let blob = event.body;\r\n    var contentDispositionHeader = event.headers.get('Content-Disposition');\r\n    if (contentDispositionHeader) {\r\n      var result = contentDispositionHeader\r\n        .split(';')[1]\r\n        .trim()\r\n        .split('=')[1];\r\n      if (result) {\r\n        var fileName = result.replace(/\"/g, '');\r\n        let link = document.createElement('a');\r\n        link.style.display = 'none';\r\n        document.body.appendChild(link);\r\n        if (link.getAttribute('download') !== undefined) {\r\n          link.setAttribute('href', URL.createObjectURL(blob));\r\n          link.setAttribute('download', fileName);\r\n          link.click();\r\n        }\r\n        document.body.removeChild(link);\r\n      }\r\n    }\r\n  }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class CatngService {\r\n\r\n  constructor() { }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'lib-catng',\r\n  standalone: true,\r\n  imports: [],\r\n  template: `\r\n    <p>\r\n      catng works!\r\n    </p>\r\n  `,\r\n  styles: ``\r\n})\r\nexport class CatngComponent {\r\n\r\n}\r\n","/*\r\n * Public API Surface of catng\r\n */\r\n\r\nexport * from './lib/components/index';\r\nexport * from './lib/enums/index';\r\nexport * from './lib/interceptors/index';\r\nexport * from './lib/models/index';\r\nexport * from './lib/pipes/index';\r\nexport * from './lib/services/index';\r\n\r\nexport * from './lib/catng.service';\r\nexport * from './lib/catng.component';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3.JwtHelperService","i2","i1","i4","i5","i6","i7","i9","i10","i11","i13","i3","i8"],"mappings":"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"}