{"version":3,"file":"catng.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/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/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/auth-image.pipe.ts","../../../projects/catng/src/lib/pipes/contact.pipe.ts","../../../projects/catng/src/lib/pipes/phone.pipe.ts","../../../projects/catng/src/lib/pipes/cat-date.pipe.ts","../../../projects/catng/src/lib/components/dynamic-list/dynamic-columns/dynamic-columns.component.ts","../../../projects/catng/src/lib/components/dynamic-list/dynamic-columns/dynamic-columns.component.html","../../../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/button.component.ts","../../../projects/catng/src/lib/components/button/button/button.component.html","../../../projects/catng/src/lib/components/button/select-button/select-button.component.ts","../../../projects/catng/src/lib/components/button/select-button/select-button.component.html","../../../projects/catng/src/lib/components/button/split-button/split-button.component.ts","../../../projects/catng/src/lib/components/button/split-button/split-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/components/readonly-table/readonly-table.component.ts","../../../projects/catng/src/lib/components/readonly-table/readonly-table.component.html","../../../projects/catng/src/lib/components/readonly-details/readonly-details.component.ts","../../../projects/catng/src/lib/components/readonly-details/readonly-details.component.html","../../../projects/catng/src/lib/components/fieldset/fieldset.component.ts","../../../projects/catng/src/lib/components/fieldset/fieldset.component.html","../../../projects/catng/src/lib/components/sidebar/sidebar.component.ts","../../../projects/catng/src/lib/components/sidebar/sidebar.component.html","../../../projects/catng/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/catng/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/catng/src/lib/components/tab/tab.component.ts","../../../projects/catng/src/lib/components/tab/tab.component.html","../../../projects/catng/src/lib/components/pdf-viewer/pdf-viewer.component.ts","../../../projects/catng/src/lib/components/pdf-viewer/pdf-viewer.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/catng.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  readonly = \"readonly\",\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  multidropdown = \"multidropdown\",\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  userphoto = \"userphoto\",\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  tag = \"tag\",\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 FileShowTypeEnum {\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    forceSelection?: boolean = false;\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}","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    isRowExpansion?: boolean = false;\r\n    rowIndexText?: string = \"No\";\r\n    isRowClick?: boolean = true;\r\n    downloadExcel?: boolean = false;\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    styleClass?: string;\r\n    isRowEdit?: boolean = false;\r\n    showFooter?: boolean = false;\r\n    groupRowsBy?: string;\r\n    rowGroupMode?: RowGroupMode;\r\n    isReOrderableColumns?: boolean = false;\r\n    selectionMode?: string = \"single\";\r\n}\r\n\r\n\r\nexport type RowGroupMode = \"subheader\" | \"rowspan\" | undefined;","import { Type } from \"@angular/compiler\";\r\nimport { InputTypeEnum } from \"../enums\";\r\nimport { OptionItemModel } from \"./option-item.model\";\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    isEdit?: 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    pTooltip?: boolean = false;\r\n    tooltipText?: string;\r\n    tooltipPosition?: string = \"top\";\r\n    command?: (event: any) => void;\r\n    isRowExpansion?: boolean = false;\r\n    options?: OptionItemModel[];    \r\n    optionlabel?: string;\r\n    optionvalue?: string;\r\n    readonly?: boolean = false;\r\n    showTotal?: boolean = false;\r\n    showButton?: boolean = false;\r\n    editField?: string;\r\n    tagField?: string;\r\n    backgroundColor?: string = \"\";\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 { 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  appConfig: AppConfig;\r\n  http: HttpClient;\r\n\r\n  constructor( private router: Router,private confirmationService: ConfirmationService,private messageService: MessageService,private jwtHelper: JwtHelperService ) {\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  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    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      rejectButtonStyleClass:\"p-button-danger mr-3\",\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\r\n  convertToLocalDate(responseDate: any) {\r\n    try {\r\n      if (responseDate != null) {\r\n        if (typeof responseDate === 'string') {\r\n          if (String(responseDate.indexOf('T') >= 0)) {\r\n            responseDate = responseDate.split('T')[0];\r\n          }\r\n          if (String(responseDate.indexOf('+') >= 0)) {\r\n            responseDate = responseDate.split('+')[0];\r\n          }\r\n        }\r\n        responseDate = new Date(responseDate);\r\n        const newDate = new Date(\r\n          responseDate.getFullYear(),\r\n          responseDate.getMonth(),\r\n          responseDate.getDate(),\r\n          0,\r\n          0,\r\n          0\r\n        );\r\n        const userTimezoneOffset = newDate.getTimezoneOffset() * 60000;\r\n\r\n        const finalDate: Date = new Date(\r\n          newDate.getTime() - userTimezoneOffset\r\n        );\r\n        return finalDate;\r\n      } else {\r\n        return null;\r\n      }\r\n    } catch (error) {\r\n      return responseDate;\r\n    }\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","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 { Filter, HttpParam, Ref, ResponseModel } from \"../models\";\r\n\r\n\r\nexport abstract class BaseService<T> {\r\n  protected _baseApiUrl?: string;// base url (proje url)\r\n  public http: HttpClient;\r\n  public globalService: GlobalService;\r\n\r\n  constructor(apiName?: string) {\r\n    this.http = inject(HttpClient);\r\n    this.globalService = inject(GlobalService);\r\n\r\n    this._baseApiUrl = this.globalService.appConfig.projectsApi![apiName ?? this.globalService.appConfig.apiName!];\r\n  }\r\n\r\n  public get baseApiUrl(): string | undefined {\r\n    return this._baseApiUrl;\r\n  }\r\n\r\n  //#region get,post,put,delete\r\n  get<T>(url: string, ...params: any[]): Observable<ResponseModel<T>> | Observable<ResponseModel<null>> {\r\n    //örnek: http://localhost:89/api/auth/login\r\n    //örnek: http://turnaprojectapi.ua.gov.tr/api/auth/login\r\n    let _url = url.includes(\"http\") ? url : this._baseApiUrl + (url.indexOf('/') !== 0 ? '/' : '') + url;\r\n\r\n    if (params.length > 0 && typeof params[0] === 'string') { //route parametrelerini almak için\r\n      _url += `/${params.join('/')}`;\r\n    } else if (params.length > 0 && typeof params[0] === 'object') { //query parametrelerini almak için\r\n      return this.http.get<T>(_url, { params: params[0] }) as Observable<ResponseModel<T>>;\r\n    }\r\n    //parametre almayacak şekilde ayarlandı.\r\n    return this.http.get(_url) as Observable<ResponseModel<T>>;\r\n  }\r\n\r\n  post<T>(url: string, model: object | any): Observable<ResponseModel<T>> | Observable<ResponseModel<null>> {\r\n    if (!url || !model) {\r\n      return new Observable<ResponseModel<null>>(\r\n        (subscriber) => {\r\n\r\n          subscriber.next(new ResponseModel<null>());\r\n        }\r\n      );\r\n    }\r\n\r\n    let _url = url.includes(\"http\") ? url : this._baseApiUrl + (url.indexOf('/') !== 0 ? '/' : '') + url;\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  put<T>(url: string, model: object | any): Observable<ResponseModel<T>> | Observable<ResponseModel<null>> {\r\n    if (!url || !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.includes(\"http\") ? url : this._baseApiUrl + (url.indexOf('/') !== 0 ? '/' : '') + url;\r\n    let _model = JSON.stringify(model);\r\n\r\n    return this.http.put(_url, _model) as Observable<ResponseModel<T>>;\r\n  }\r\n\r\n  delete<T>(url: string, ...params: any[]): Observable<ResponseModel<T>> | Observable<ResponseModel<null>> {\r\n\r\n    let _url = url.includes(\"http\") ? url : this._baseApiUrl + (url.indexOf('/') !== 0 ? '/' : '') + url;\r\n\r\n    if (params.length > 0 && typeof params[0] === 'string') { //route parametrelerini almak için\r\n      _url += `/${params.join('/')}`;\r\n    } else if (params.length > 0 && typeof params[0] === 'object') { //query parametre yada model almak için\r\n      return this.http.delete<T>(_url, { params: params[0] }) as Observable<ResponseModel<T>>;\r\n    }\r\n\r\n    return this.http.delete<T>(_url) as Observable<ResponseModel<T>>;\r\n  }\r\n  //#endregion\r\n\r\n  list<T>(httpParam: HttpParam = {} as HttpParam): Observable<ResponseModel<T[]>> | Observable<ResponseModel<T>> | Observable<ResponseModel<any>> {\r\n    if (!httpParam.url) {\r\n      return throwError(() => new Error(`CATNG BaseService => Url not found`));\r\n    }\r\n\r\n    let _url = httpParam.url.includes(\"http\") ? httpParam.url : this._baseApiUrl + (httpParam.url.indexOf('/') !== 0 ? '/' : '') + httpParam.url;\r\n\r\n    if (httpParam.method != 'POST') {\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    if (!httpParam.filters || (httpParam.filters && httpParam.filters instanceof Filter)) {\r\n      return this.http.post(_url, httpParam) as Observable<ResponseModel<T[]>>;\r\n    } else {\r\n      return this.http.post(_url, httpParam.filters) as Observable<ResponseModel<T[]>>;\r\n    }\r\n\r\n  }\r\n\r\n  download<T>(url: string, ...params: any[]): Observable<Blob | MediaSource> {\r\n    let _url = url.includes(\"http\") ? url : this._baseApiUrl + (url.indexOf('/') !== 0 ? '/' : '') + url;\r\n\r\n    if (params.length > 0 && typeof params[0] === 'string') { //route parametrelerini almak için\r\n      _url += `/${params.join('/')}`;\r\n    } else if (params.length > 0 && typeof params[0] === 'object') { //query parametrelerini almak için\r\n      return this.http.get<T>(_url, { params : params[0] }) as Observable<Blob | MediaSource>;\r\n    }\r\n\r\n    return this.http.get(_url, { responseType: 'blob' as 'json' }) as Observable<Blob | MediaSource>;\r\n  }\r\n\r\n\r\n  getRef(refName: string, fkId?: number | undefined, fk2Id?: string | undefined, fk3Id?: number | undefined, fk4Id?: string | undefined): Observable<ResponseModel<Ref[]>> {\r\n    return this.http.post<ResponseModel<Ref[]>>(this._baseApiUrl + \"/ref/list\", { refName: refName, fkId: fkId, fk2Id: fk2Id, fk3Id: fk3Id, fk4Id: fk4Id });\r\n  }\r\n\r\n  getRefUrl(url: string, refName: string, fkId?: number | undefined, fk2Id?: string | undefined, fk3Id?: number | undefined, fk4Id?: string | undefined): Observable<ResponseModel<Ref[]>> {\r\n    return this.http.post<ResponseModel<Ref[]>>(url, { refName: refName, fkId: fkId, fk2Id: fk2Id, fk3Id: fk3Id, fk4Id: fk4Id });\r\n  }\r\n\r\n  downloadWithModel<T>(url: string, model: object): Observable<Blob | MediaSource> {\r\n    if (!url || !model) {\r\n      throw new Error('URL ve model zorunludur.');\r\n    }\r\n  \r\n    const _url = url.includes(\"http\") \r\n      ? url \r\n      : this._baseApiUrl + (url.indexOf('/') !== 0 ? '/' : '') + url;\r\n  \r\n    return this.http.post(_url, model, { 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  loadingMap: Map<string, boolean> = new Map<string, boolean>();\r\n  isLoading$ = this.loadingSub.asObservable();\r\n\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(url.includes('.json')) return;\r\n    setTimeout(() => {\r\n      if (loading) {\r\n        this.loadingMap.set(url, true);\r\n        if (this.loadingSub.value === false)\r\n          this.loadingSub.next(true);\r\n      } else if (loading === false) {\r\n        this.loadingMap.delete(url);\r\n        if (this.loadingMap.size === 0) {\r\n          this.loadingSub.next(false);\r\n        }\r\n      }\r\n    }, 10);\r\n  }\r\n}","import { Injectable } from '@angular/core';\r\nimport { BaseService } from '../services';\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\n// import { Message } from \"primeng/api\";\r\nimport { DatePipe } from '@angular/common';\r\nimport { FileShowTypeEnum, InputTypeEnum } from \"../enums\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { Message } from \"primeng/message\";\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  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  blocked: boolean = false;\r\n  success?: boolean;\r\n  msgs: Message[] = [];\r\n\r\n  // translate service\r\n  _translateService : TranslateService;\r\n\r\n  globalService: GlobalService;\r\n  datepipe: DatePipe;\r\n  constructor() {\r\n    this.globalService = inject(GlobalService);\r\n    this._translateService = inject(TranslateService);\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 FileShowTypeEnum {\r\n    return FileShowTypeEnum;\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 { 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\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],\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.belge?.dosyaYol)\r\n      this.fileOptions.url = \"/belge/get\";\r\n\r\n    if (this.fileOptions && !this.fileOptions.uploadUrl)\r\n      this.fileOptions.uploadUrl = \"/belge/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?.belge?.id) {\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    if(this.fileOptions?.belge){\r\n      event.formData.append('id', this.fileOptions?.belge.id?.toString());          \r\n      event.formData.append('belgeTurId', this.fileOptions?.belge.belgeTurId?.toString());\r\n      event.formData.append('refEntityId', this.fileOptions?.belge.refEntityId?.toString());\r\n      event.formData.append('entityId', this.fileOptions?.belge.entityId?.toString());\r\n      event.formData.append('ad', this.fileOptions?.belge.ad);\r\n      event.formData.append('boyut', event.files[0].size.toString());\r\n      event.formData.append('mime', event.files[0].type);     \r\n\r\n    }\r\n\r\n\r\n\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<div *ngIf=\"fileOptions.showType == fileShowTypeEnum.upload\">\r\n    <p-fileUpload mode=\"basic\" name=\"demo[]\" chooseIcon=\"fas fa-paperclip\" #fubauto [url]=\"fileOptions.uploadUrl\"\r\n        accept=\"image/*\" [maxFileSize]=\"10485760\" chooseLabel=\"Dosya Ekle\" (onBeforeUpload)=\"onBeforeUpload($event)\"\r\n        (onUpload)=\"onUpload($event)\" (onError)=\"onError($event)\" [auto]=\"true\"/>\r\n</div>\r\n}","import { Component, EventEmitter, Input, OnInit, 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\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n  template: ``,\r\n  standalone: true,\r\n  host: { 'compId': Math.random().toString() },\r\n  imports: [TranslateModule]\r\n})\r\nexport class BaseFormComponent<T> extends BaseComponent {\r\n  @Input() override id: any = null;\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  inputCommandList: InputControlCommand[] = [];\r\n\r\n  triggerMethod = new Subject<any>();\r\n  formControlTemplate: FormControlTemplate[];\r\n  formGroup: FormGroup | any;\r\n\r\n  // #region form urls\r\n  saveUrl?: string;\r\n  deleteUrl?: string;\r\n  getUrl?: string;\r\n\r\n  // #endregion\r\n\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  buttonLabel?: string;\r\n\r\n  saveHeaderLabel?: string;\r\n  saveMessageLabel?: string;\r\n  acceptLabel?: string;\r\n\r\n  deleteHeaderLabel?: string;\r\n  deleteMessageLabel?: string;\r\n  rejectLabel?: string;\r\n\r\n  response: any;\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    this.onLanguageChange();\r\n    this._translateService.onLangChange.subscribe(() => {\r\n      this.onLanguageChange();\r\n    });\r\n  }\r\n\r\n  onLanguageChange() {\r\n    this.saveHeaderLabel = this._translateService.instant('save');\r\n    this.saveMessageLabel = this._translateService.instant('saveMessage');\r\n    this.acceptLabel = this._translateService.instant('yes');\r\n\r\n    this.deleteHeaderLabel = this._translateService.instant('delete');\r\n    this.deleteMessageLabel = this._translateService.instant('deleteMessage');\r\n    this.rejectLabel = this._translateService.instant('no');\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\r\n  //otomatik olarak yani data annotation ile gelen refkey ve refurl alanlarını doldurmak için kullanılır.)\r\n  setRefList(item: FormControlTemplate) {\r\n    let url = item.refUrl ?? `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  setRef(refName: string, key: string | string[], fkId?: number | undefined, fk2Id?: string | undefined, fk3Id?: number | undefined, fk4Id?: string | undefined) {\r\n    this.service?.post(\"/ref/list\", { refName: refName, fkId: fkId, fk2Id: fk2Id, fk3Id: fk3Id, fk4Id: fk4Id }).subscribe(resp => {\r\n      if (typeof key != 'string') {\r\n        key.forEach(item => {\r\n          this.setControlOptions(item, resp.data);\r\n        });\r\n      } else\r\n        this.setControlOptions(key, resp.data);\r\n    });\r\n  }\r\n\r\n  setRefUrl(url: string, refName: string, key: string | string[], fkId?: number | undefined, fk2Id?: string | undefined, fk3Id?: number | undefined, fk4Id?: string | undefined) {\r\n\r\n    this.service?.post(url, { refName: refName, fkId: fkId, fk2Id: fk2Id, fk3Id: fk3Id, fk4Id: fk4Id }).subscribe(resp => {\r\n      if (typeof key != 'string') {\r\n        key.forEach(item => {\r\n          this.setControlOptions(item, resp.data);\r\n        });\r\n      } else\r\n        this.setControlOptions(key, resp.data);\r\n    });\r\n  }\r\n\r\n  setRefUrlMultiKeys(url: string, refName: string, key: string[], fkId?: number | undefined, fk2Id?: string | undefined, fk3Id?: number | undefined, fk4Id?: string | undefined) {\r\n\r\n    this.service?.post(url, { refName: refName, fkId: fkId, fk2Id: fk2Id, fk3Id: fk3Id, fk4Id: fk4Id }).subscribe(resp => {\r\n      key.forEach(item => {\r\n        this.setControlOptions(item, resp.data);\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\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    this.service?.delete(this.deleteUrl!, 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      this.globalService.showMessage(resp.statusCode, resp.message);\r\n    });\r\n  }\r\n\r\n  // #region form events\r\n  onSave(callback?: { comp: any, methodName: string }) {\r\n\r\n    this.saveControl();\r\n    if (this.formGroup.invalid)\r\n      return;\r\n\r\n    if (this.saveHeaderLabel)\r\n      this.service?.globalService.confirm(this.saveHeaderLabel!, this.saveMessageLabel!, () => { this.creteOrUpdate(callback) }, \"pi pi-exclamation-triangle\", this.acceptLabel, this.rejectLabel);\r\n    else\r\n      this.creteOrUpdate(callback);\r\n  }\r\n\r\n  creteOrUpdate(callback?: { comp: any, methodName: string }) {\r\n    if (this.body[this.primaryKeyName] && this.body[this.primaryKeyName] > 0) { //update\r\n      this.submitType = this.SubmitType.update;\r\n      this.service?.put(this.saveUrl!, this.body).subscribe(resp => {\r\n        this.resp.emit(resp);\r\n        this.setFormChange.emit(this.body);\r\n        if (resp && resp.data) {\r\n          this.globalService.showMessage(resp.statusCode, resp.message);\r\n          if (typeof resp.data != 'string' && typeof resp.data != 'number')\r\n            this.setForm(resp.data);\r\n        }\r\n        if (callback && callback.methodName && typeof callback.comp[callback.methodName] === 'function') {\r\n          callback.comp[callback.methodName](resp);\r\n        }\r\n      });\r\n    } else { //insert\r\n      this.submitType = this.SubmitType.insert;\r\n      this.service?.post(this.saveUrl!, this.body).subscribe(resp => {\r\n        this.resp.emit(resp);\r\n        this.setFormChange.emit(this.body);\r\n        if (resp && resp.data) {\r\n          this.globalService.showMessage(resp.statusCode, resp.message);\r\n          if (typeof resp.data != 'string' && typeof resp.data != 'number')\r\n            this.setForm(resp.data);\r\n        }\r\n        if (callback && callback.methodName && typeof callback.comp[callback.methodName] === 'function') {\r\n          callback.comp[callback.methodName](resp);\r\n        }\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.date || d.inputType == this.inputTypeEnum.dateTime).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], item.inputType == this.inputTypeEnum.date ? 'dd.MM.yyyy' : 'dd.MM.yyyy HH:mm');\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  // todo @berkay translate\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, inject, 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\n// import { CalendarModule } from 'primeng/calendar';\r\nimport { DatePickerModule } from 'primeng/datepicker';\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\nimport { TagModule } from 'primeng/tag';\r\nimport { TranslateModule } from '@ngx-translate/core';\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    DatePickerModule ,\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    TagModule,\r\n    TranslateModule\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() backColor: string = '#2196F3';\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  @Input() dropdown:boolean = false;\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  @Input() view: any = 'date'; //datepicker\r\n  @Input() dateFormat: any = 'dd.mm.yy'; //datepicker\r\n  @Input() dataType: any = 'string'; //datepicker\r\n  @Input() showButtonBar: any = true; //datepicker\r\n  \r\n  @Input() showButtons: any = false; //number\r\n  @Input() buttonLayout: string = \"horizontal\"; //number\r\n  @Input() step: number = 1; //number\r\n\r\n  @Input() maxSelectedLabels: number = 20; //multiSelect\r\n  @Input() showClear: boolean = false; //multiSelect\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  @Output() incrementClick: EventEmitter<any> = new EventEmitter();\r\n  @Output() decrementClick: EventEmitter<any> = new EventEmitter();\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  columns?: Column[];\r\n  filteredOptions: any[] = [];\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\r\n\r\n\r\n\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  // private readonly primengConfig = inject(PrimeNGConfig);\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         belge: {\r\n          id: this.value,\r\n          belgeTurId: 1,\r\n          refEntityId: this.fileRefEntityId,\r\n          entityId: this.fileEntityId,\r\n          mime: 'image/jpeg',\r\n          ad: 'Profil Fotoğrafı',\r\n          boyut: 0,\r\n          dosyaYol: this.fileUrl ?? (this.value ? `/file/get/${this.value}` : undefined),\r\n          lastTransactionDate: new Date()\r\n         },\r\n        canUpload: this.fileUploadUrl ? true : false,\r\n       \r\n      \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    if (this.inputType == this.inputTypeEnum.fileupload) {\r\n      this.fileOptions = {\r\n        belge: {\r\n          id: this.value,\r\n          belgeTurId: 1,\r\n          refEntityId: this.fileRefEntityId,\r\n          entityId: this.fileEntityId,\r\n          mime: 'image/jpeg',\r\n          ad: 'Profil Fotoğrafı',\r\n          boyut: 0,\r\n          dosyaYol: this.fileUrl ?? (this.value ? `/file/get/${this.value}` : undefined),\r\n          lastTransactionDate: new Date()\r\n         },\r\n        canUpload: this.fileUploadUrl ? true : false,\r\n       \r\n        showType: this.fileShowTypeEnum.upload,\r\n        showName: this.fileShowName ?? \"Dosya\",\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\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\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  filterMethod(event: any) {\r\n    let filtered: any[] = [];\r\n    let query = event.query;\r\n\r\n    for (let i = 0; i < this.options!.length; i++) {\r\n      let item = this.options![i];\r\n      if ((item as any)[this.optionLabel ?? 'name'].toLowerCase().includes(query.toLowerCase())) {\r\n        filtered.push(item);\r\n      }\r\n    }\r\n\r\n    this.filteredOptions = filtered;\r\n  }\r\n\r\n  complatedMethod(event: any) {\r\n    this.onChange.emit(event);\r\n    this.model = undefined;\r\n  }\r\n\r\n  moveCursorToStart(event: FocusEvent): void {\r\n    const input = event.target as HTMLInputElement;\r\n    if (input) {\r\n      // İmleci belirli bir konuma taşı\r\n      input.setSelectionRange(1, 1); // İlk rakamın hemen öncesine yerleşir\r\n    }\r\n  }\r\n\r\n  onIncrementClick(){\r\n    this.incrementClick.emit();\r\n  }\r\n\r\n  onDecrementClick(){\r\n    this.decrementClick.emit();\r\n  }\r\n}\r\n","<div [ngClass]=\"readonly? 'readonly':''\" [class.has-danger]=\"!getValid()\" style=\"margin: 5px 0;\">\r\n    <label *ngIf=\"['radiogroup','radiobutton','checkbox','checkboxgroup','profilephoto','fileupload'].indexOf(inputType!!) == -1\" 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! | translate }}\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\" [virtualScrollItemSize]=\"38\" [lazy]=\"true\" [autoDisplayFirst]=\"autoDisplayFirst\" [editable]=\"false\" [filter]=\"true\" [readonly]=\"readonly\" [options]=\"options\" (onFocus)=\"setFocus($event)\" [showClear]=\"showClear\" emptyMessage=\"Kayıt bulunamadı.\" emptyFilterMessage='' [optionLabel]=\"optionLabel ?? 'label'\" [optionValue]=\"optionValue ?? 'value'\" appendTo=\"body\" (keydown.delete)=\"keyDownDeleteEvent.emit($event)\" [group]=\"group\">\r\n        </p-dropdown>\r\n        }\r\n        @case (inputTypeEnum.multidropdown) {\r\n        <p-dropdown [options]=\"options\" [group]=\"true\" [(ngModel)]=\"model\" (ngModelChange)=\"setModelChange($event)\" appendTo=\"body\">\r\n        </p-dropdown>\r\n        }\r\n        @case (inputTypeEnum.email) {\r\n            <input [id]=\"key\" pInputText type=\"email\" [(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            pattern=\"^([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})(;\\s*[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})*;?$\"\r\n            #emailInput=\"ngModel\">\r\n            <small class=\"p-error block\" *ngIf=\"emailInput.invalid && (emailInput.dirty || emailInput.touched)\">\r\n                Lütfen geçerli e-posta adres(ler)i giriniz\r\n            </small>\r\n        }\r\n        @case (inputTypeEnum.display) {\r\n        <input pInputText type=\"text\" [(ngModel)]=\"model\" (ngModelChange)=\"setModelChange($event)\" readonly=\"readonly\" (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\" [readonly]=\"readonly\" [rows]=\"rows\" style=\"width:100%;\" id=\"float-input\" (keyup)=\"setKeyup($event)\" 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\" [readonly]=\"readonly\" [min]=\"min\" [max]=\"max\" [minFractionDigits]=\"0\" [useGrouping]=\"false\" (keyup)=\"setKeyup($event)\" (blur)=\"setBlur($event)\" pKeyFilter=\"pnum\" class=\"w-full\" (keydown.delete)=\"keyDownDeleteEvent.emit($event)\">\r\n        </p-inputNumber>\r\n        }\r\n        @case (inputTypeEnum.number) {\r\n        <p-inputNumber [(ngModel)]=\"model\" (ngModelChange)=\"setModelChange($event)\" [maxlength]=\"maxLength\" [readonly]=\"readonly\" [min]=\"min\" [max]=\"max\" [minFractionDigits]=\"0\" [useGrouping]=\"false\" (keyup)=\"setKeyup($event)\" (blur)=\"setBlur($event)\" pKeyFilter=\"pnum\" class=\"w-full\" (keydown.delete)=\"keyDownDeleteEvent.emit($event)\" [showButtons]=\"showButtons\" [buttonLayout]=\"buttonLayout\" [step]=\"step\">\r\n\r\n            <ng-template #incrementbuttonicon>\r\n                <span class=\"pi pi-plus\" (click)=\"onIncrementClick()\"></span>\r\n            </ng-template>\r\n            <ng-template #decrementbuttonicon>\r\n                <span class=\"pi pi-minus\" (click)=\"onDecrementClick()\"></span>\r\n            </ng-template>\r\n        </p-inputNumber>\r\n        }\r\n        @case (inputTypeEnum.decimal) {\r\n        <p-inputNumber [(ngModel)]=\"model\" (ngModelChange)=\"setModelChange($event)\" [maxlength]=\"maxLength\" [readonly]=\"readonly\" [min]=\"min\" [max]=\"max\" [useGrouping]=\"false\" [minFractionDigits]=\"2\" [maxFractionDigits]=\"2\" (keyup)=\"setKeyup($event)\" (blur)=\"setBlur($event)\" (focus)=\"moveCursorToStart($event)\" (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\" [unmask]=\"unmask != undefined ? unmask : false\" [maxlength]=\"maxLength\" [readonly]=\"readonly\" (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)\" \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]=\"dateFormat\" [dataType]=\"dataType\" [view]=\"view\"\r\n            (onBlur)=\"setBlur($event)\" (keydown.delete)=\"keyDownDeleteEvent.emit($event)\">\r\n        </p-calendar> -->\r\n        <p-datepicker [(ngModel)]=\"model\" (ngModelChange)=\"setModelChange($event)\" [minDate]=\"minDate\" [maxDate]=\"maxDate\" appendTo=\"body\" [readonlyInput]=\"readonlyInput\" [showTime]=\"showtime\" [timeOnly]=\"timeonly\" [showSeconds]=\"showseconds\" [selectOtherMonths]=\"false\" yearRange=\"1930:2030\" [dateFormat]=\"dateFormat\" [dataType]=\"dataType\" [view]=\"view\" [firstDayOfWeek]=\"1\" [showIcon]=\"true\" [showButtonBar]=\"showButtonBar\" [showOnFocus]=\"true\" [showSeconds]=\"true\" (onBlur)=\"setBlur($event)\" (keydown.delete)=\"keyDownDeleteEvent.emit($event)\">\r\n        </p-datepicker>\r\n        }\r\n        @case (inputTypeEnum.multiselect) {\r\n        <p-multiSelect [(ngModel)]=\"model\" [group]=\"group\" display=\"chip\" [virtualScrollItemSize]=\"31\" [filter]=\"true\" [readonly]=\"readonly\" [options]=\"options\" optionDisabled=\"disabled\" (ngModelChange)=\"setModelChange($event)\" (blur)=\"setOnChange($event)\" (onChange)=\"setOnChange($event)\" [selectionLimit]=\"selectionLimit??999\" [optionLabel]=\"optionLabel ?? 'name'\" [optionValue]=\"optionValue ??'code'\" (keydown.delete)=\"keyDownDeleteEvent.emit($event)\" [maxSelectedLabels]=\"maxSelectedLabels\">\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)\" [readonly]=\"readonly\" [binary]=\"true\" (keydown.delete)=\"keyDownDeleteEvent.emit($event)\">\r\n            </p-checkbox>\r\n            <label style=\"margin-left: 10px;\">{{ label! | translate}}</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! | translate}}</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\" (ngModelChange)=\"setModelChange($event)\" [inputId]=\"item.value\" [disabled]=\"item?.disabled ?? false\" (onChange)=\"setOnChange($event)\" (keydown.delete)=\"keyDownDeleteEvent.emit($event)\"></p-checkbox>\r\n                <label style=\"margin-left: 10px;\">{{ item.label | translate}}</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\" (onComplated)=\"setOnChange($event)\"></cat-file>\r\n        <!-- <cat-file></cat-file> -->\r\n        }\r\n\r\n        @case (inputTypeEnum.fileupload) {\r\n        <cat-file *ngIf=\"fileOptions\" [fileOptions]=\"fileOptions\" [canFileUpload]=\"fileOptions.canUpload\" (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.tag) {\r\n        <p-tag [style]=\"{ background: backColor }\">\r\n            <span class=\"text-base\">{{model}}</span>\r\n        </p-tag>\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! | translate }}</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! | translate }}</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\" (ngModelChange)=\"setModelChange($event)\" />\r\n            <label style=\"margin-left: 10px;\">{{ item.label | translate }}</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        <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\" [name]=\"'radio-' + satirIndex\" [value]=\"getMatrixObject(sutun.id,satir.id).secenekId\" [(ngModel)]=\"selectedMatrixValues[satirIndex].secenekId\" (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        @case(inputTypeEnum.autocomplete) {\r\n        <p-autoComplete [(ngModel)]=\"model\" [dropdown]=\"dropdown\" [suggestions]=\"filteredOptions\" (completeMethod)=\"filterMethod($event)\" (onSelect)=\"complatedMethod($event)\" [optionLabel]=\"optionLabel ?? 'name'\" [placeholder]=\"placeholder??''\" />\r\n        }\r\n\r\n        @default {\r\n\r\n        <input [id]=\"key\" pInputText type=\"text\" [(ngModel)]=\"model\" (ngModelChange)=\"setModelChange($event)\" (input)=\"input.emit($event)\" [maxlength]=\"maxLength\" [minLength]=\"minLength\" [readonly]=\"readonly\" (keyup)=\"setKeyup($event)\" (blur)=\"setBlur($event)\" [placeholder]=\"placeholder??''\" (click)=\"click.emit($event)\" (keyup.enter)=\"setKeyupEnter($event)\" (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>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { PrimeNG } from 'primeng/config';\r\nimport { AutoCompleteModule } from 'primeng/autocomplete';\r\nimport { CalendarModule, LocaleSettings } from 'primeng/calendar';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { ChipModule } from 'primeng/chip';\r\nimport { ColorPickerModule } from 'primeng/colorpicker';\r\nimport { DragDropModule } from 'primeng/dragdrop';\r\nimport { Dropdown, 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 { TextareaModule } from 'primeng/textarea';\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\nimport { TranslateModule } from '@ngx-translate/core';\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    TextareaModule ,\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    ChipModule,\r\n    EditorModule,\r\n    ColorPickerModule,\r\n    TranslateModule\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  @Output() clear: 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  @ViewChild('dropdown') dropdown: Dropdown | undefined;\r\n  scrollHeight: string = (33 * 10) + \"px\";\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 primeNG: PrimeNG) {\r\n    super();\r\n\r\n\r\n  }\r\n  ngOnInit(): void {\r\n    this.primeNG.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  clearValue() {\r\n      this.formControl?.setValue(null);\r\n      this.clear.emit();\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, 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","@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=\"['radiogroup', 'checkbox', 'checkboxgroup', 'profilephoto', 'fileupload' ].indexOf(control?.inputType!!) == -1\" class=\"flex 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 ? '0.2rem' : '0'\">\r\n            {{ control.label | translate }}\r\n        </span>\r\n        <div *ngIf=\"control.newItemButton\" (click)=\"setClickNewItemButton()\" class=\"add-button cursor-pointer text-primary mr-2\"> + {{ 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 ?? 0\" [max]=\"control.max\" [step]=\"control.step ?? 1\" [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.decimal\">\r\n      <p-inputNumber class=\"full-width\" *ngIf=\"!control.readonly\" [minFractionDigits]=\"2\" [formControlName]=\"control.key\" [min]=\"control.min  ?? 0\" [max]=\"control.max\" [step]=\"control.step ?? 1\" [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 checkbox\">\r\n            <p-checkbox [formControl]=\"formControl\" [readonly]=\"control.readonly\" [binary]=\"true\" (onChange)=\"setOnChange($event)\"></p-checkbox>\r\n            <span *ngIf=\"control.required\" class=\"star-label ms-1\">\r\n                <i class=\"fa-solid fa-star-of-life\"></i>\r\n            </span>\r\n            <span class=\"ml-1 mt-1\">{{ control.label | translate }}</span>\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 | translate }}\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 | translate }}</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 pTextarea [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)\" [feedback]=\"false\"></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 #dropdown [formControlName]=\"control.key\" [autoDisplayFirst]=\"control.autoDisplayFirst ?? false\" [editable]=\"control.editable\" [filter]=\"control.filter\" [virtualScroll]=\"control.virtualScroll\" [virtualScrollItemSize]=\"control.virtualScrollItemSize ?? 25\" [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'\"></p-dropdown>\r\n        <!--[scrollHeight]=\"(control.options?.length > 7 ? 7 : control.options?.length) * 42 + 'px'\"-->\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)\" (onSelect)=\"setOnSelect($event)\" [forceSelection]=\"control.forceSelection ?? false\"></p-autoComplete>\r\n        \r\n        <span *ngIf=\"formControl.value\" (click)=\"clearValue()\"><i class=\"fa fa-times autocomplete-icon\" ></i></span>\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\" value=\"{{ item.value }}\" [formControlName]=\"control.key\" (onClick)=\"setOnChange($event)\"></p-radiobutton>\r\n            <label>{{ item.label }}</label>\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 | translate }}\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 | translate }}\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\nimport { TranslateModule } from '@ngx-translate/core';\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, TranslateModule],\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 mt-2\">\r\n        <ng-container *ngIf=\"isShowButton\">\r\n            <span class=\"ml-2\" *ngIf=\"customButtonLabel\">\r\n                <p-button class=\"dynamic-form-button\" [raised]=\"true\"\r\n                    *ngIf=\"baseComp?.data?.id && baseComp?.data?.id != 0 \" pRipple [label]=\"customButtonLabel\"\r\n                    styleClass=\"p-button-primary\" [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\" [raised]=\"true\"\r\n                    *ngIf=\"baseComp?.data?.id && baseComp?.data?.id != 0 && baseComp.deleteUrl\" pRipple\r\n                    [label]=\"baseComp.buttonLabel??('delete' | translate)\" styleClass=\"p-button-danger\"\r\n                    icon=\"pi pi-trash\" (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\" [raised]=\"true\" [disabled]=\"baseComp.formGroup.invalid\"\r\n                    [label]=\"baseComp.buttonLabel??(baseComp.data?.id && baseComp.data?.id != 0 ? ('update' | translate) : ('save' | translate))\"\r\n                    styleClass=\"p-button-primary\" icon=\"pi pi-save\" (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(\"api/dynamicform/getform\", { 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 { 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 { 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, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TableModule } from 'primeng/table';\r\nimport { BaseListComponent } from '../../base-list.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { ColorPickerModule } from 'primeng/colorpicker';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { SplitButtonModule } from 'primeng/splitbutton';\r\nimport { TieredMenuModule } from 'primeng/tieredmenu';\r\nimport { CatFileComponent } from '../../file-control/file-control.component';\r\nimport { AuthImagePipe, ContactPipe, PhonePipe } from '../../../pipes';\r\nimport { CatDatePipe } from '../../../pipes/cat-date.pipe';\r\nimport { CatInputComponent, FileOptions } from '../../../../public-api';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TagModule } from 'primeng/tag';\r\n\r\n@Component({\r\n  selector: 'cat-dynamic-columns',\r\n  standalone: true,\r\n  imports: [CommonModule, TieredMenuModule, TableModule, CatFileComponent, ContactPipe, ButtonModule, InputTextModule, PhonePipe, CatDatePipe, SplitButtonModule, \r\n    TranslateModule, ColorPickerModule, FormsModule, AuthImagePipe, CatInputComponent, TagModule, RouterModule],\r\n  templateUrl: './dynamic-columns.component.html',\r\n  styleUrl: './dynamic-columns.component.scss'\r\n})\r\nexport class DynamicColumnsComponent extends BaseListComponent<any, any> {\r\n\r\n  @Input() item: any;\r\n  @Input() col: any;\r\n  @Input() columnIndex!: number;\r\n  @Input() rowEdit!: boolean;\r\n\r\n  @Output() incrementClick = new EventEmitter<any>();\r\n  @Output() decrementClick = new EventEmitter<any>();\r\n  @Output() cellEdit = new EventEmitter<any>();\r\n  @Output() cellBlur = new EventEmitter<any>();\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        belge: {\r\n          id: item.id,\r\n          // belgeTurId: this.listOptions.columns[columnIndex]?. ?? undefined,\r\n          refEntityId: this.listOptions.columns[columnIndex]?.refEntityId ?? undefined,\r\n          entityId: item.id,\r\n          mime: item.mime,\r\n          ad: item.name,\r\n          boyut: item.size,\r\n          dosyaYol: item.fileUrl ?? (item.guidId ? `/file/get/${item.guidId}` : undefined)\r\n        },\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  handleImageError(event: Event) {\r\n    (event.target as HTMLImageElement).src = '/assets/images/blank-profile-picture.png';\r\n  }\r\n\r\n  onIncrementClick(event: any) {\r\n    this.incrementClick.emit(event);\r\n  }\r\n\r\n  onDecrementClick(event: any) {\r\n    this.decrementClick.emit(event);\r\n  }\r\n\r\n}\r\n","@if (rowEdit) {\r\n<p-cellEditor>\r\n    <ng-template pTemplate=\"input\">\r\n        <cat-input class=\"editable-cell-input\" *ngIf=\"!col.editField\" [inputType]=\"col.type\" [id]=\"col.field\" [(model)]=\"item[col.field]\" [options]=\"col.options\" [optionLabel]=\"col.optionLabel\" [optionValue]=\"col.optionValue\" [readonly]=\"col.readonly\" (modelChange)=\"cellEdit.emit($event)\" (blur)=\"cellBlur.emit($event)\"></cat-input>\r\n        <cat-input class=\"editable-cell-input\" *ngIf=\"col.editField\" [inputType]=\"col.type\" [id]=\"col.field\" [(model)]=\"item[col.editField]\" [options]=\"col.options\" [optionLabel]=\"col.optionLabel\" [optionValue]=\"col.optionValue\" [readonly]=\"col.readonly\" (modelChange)=\"cellEdit.emit($event)\" (blur)=\"cellBlur.emit($event)\"></cat-input>\r\n    </ng-template>\r\n    <ng-template pTemplate=\"output\">\r\n        <ng-container [ngSwitch]=\"col.type\">\r\n            <span *ngSwitchCase=\"inputTypeEnum.decimal\">{{ item[col.field] | number:'1.2-2' }}</span>\r\n            <span *ngSwitchCase=\"inputTypeEnum.date\">{{ item[col.field] | catDate: 'dd.MM.yyyy' }}</span>\r\n            <span *ngSwitchCase=\"inputTypeEnum.longDate\">{{ item[col.field] | date: 'dd.MM.yyyy HH:mm:ss' }}</span>\r\n            <span *ngSwitchCase=\"inputTypeEnum.shortDate\">{{ item[col.field].substring(0, 10) }}</span>\r\n            <span *ngSwitchDefault>{{ item[col.field] }}</span>\r\n        </ng-container>\r\n    </ng-template>\r\n</p-cellEditor>\r\n} @else {\r\n@if (col.isEdit) {\r\n<!--Düzenlenebilir Input-->\r\n<p-cellEditor>\r\n    <ng-template pTemplate=\"input\">\r\n        <cat-input class=\"editable-cell-input\" *ngIf=\"!col.editField\" [inputType]=\"col.type\" [id]=\"col.field\" [(model)]=\"item[col.field]\" [options]=\"col.options\" [optionLabel]=\"col.optionLabel\" [optionValue]=\"col.optionValue\" (modelChange)=\"cellEdit.emit($event)\" (blur)=\"cellBlur.emit($event)\"></cat-input>\r\n        <cat-input class=\"editable-cell-input\" *ngIf=\"col.editField\" [inputType]=\"col.type\" [id]=\"col.field\" [(model)]=\"item[col.editField]\" [options]=\"col.options\" [optionLabel]=\"col.optionLabel\" [optionValue]=\"col.optionValue\" (modelChange)=\"cellEdit.emit($event)\" (blur)=\"cellBlur.emit($event)\"></cat-input>\r\n    </ng-template>\r\n    <ng-template pTemplate=\"output\">\r\n        {{ item[col.field] }}\r\n    </ng-template>\r\n</p-cellEditor>\r\n} @else {\r\n<ng-container [ngSwitch]=\"col.type\">\r\n    <!--İkon-->\r\n    <span *ngSwitchCase=\"inputTypeEnum.icon\" class=\"td-icon-col\">\r\n        <i [ngClass]=\"item[col.field]?.toString()\"></i>\r\n    </span>\r\n\r\n    <!--Table Checkbox-->\r\n    <span *ngSwitchCase=\"inputTypeEnum.checkbox\"  class=\"aling-center\">\r\n        <div class=\"checkbox-container\">\r\n            <p-tableCheckbox [value]=\"item\" />\r\n        </div>    </span>\r\n\r\n    <!--İçerik-->\r\n    <span *ngSwitchCase=\"inputTypeEnum.innerHTML\" [innerHTML]=\"item[col.field]\"></span>\r\n\r\n    <!--Dosya-->\r\n    <cat-file *ngSwitchCase=\"inputTypeEnum.profilephoto\" [fileOptions]=\"getFileOptions(item, columnIndex)\"></cat-file>\r\n\r\n    <!--Kullanıcı Fotoğrafı-->\r\n    <div *ngSwitchCase=\"inputTypeEnum.userphoto\">\r\n        <img class=\"user-avatar-medium\" [src]=\"item.imageUrl  | authImage | async\" alt=\"Resim\" (error)=\"handleImageError($event)\" />\r\n    </div>\r\n\r\n    <!--Tarih-->\r\n    <div *ngSwitchCase=\"inputTypeEnum.date\" style=\"width: 100%;\">\r\n        {{ item[col.field] | catDate: 'dd.MM.yyyy' }}\r\n    </div>\r\n\r\n    <!--Tarih ve Saat-->\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\r\n    <!--Kısa Tarih-->\r\n    <div *ngSwitchCase=\"inputTypeEnum.shortDate\" style=\"width: 100%;\">\r\n        {{ item[col.field].substring(0, 10) }}\r\n    </div>\r\n\r\n    <!--Link-->\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\r\n    <!--Sayı-->\r\n    <div *ngSwitchCase=\"inputTypeEnum.number || inputTypeEnum.decimal\" style=\"width: 100%;\">\r\n          <div *ngIf=\"!col.showButton\">\r\n          {{ item[col.field] | number: '1.2-2' }}\r\n          </div>\r\n          <div *ngIf=\"col.showButton\">\r\n           <div class=\"number-button\">\r\n              <button pButton type=\"button\" icon=\"pi pi-minus\" (click)=\"onDecrementClick(item)\"></button>\r\n              <span class=\"ml-2 mr-2\" style=\"font-size: larger;\">{{ item[col.field] }}</span>\r\n              <button pButton type=\"button\" icon=\"pi pi-plus\" (click)=\"onIncrementClick(item)\"></button>\r\n            </div>\r\n          </div>\r\n    </div>\r\n\r\n    <!--Telefon-->\r\n    <div *ngSwitchCase=\"inputTypeEnum.phone\" style=\"width: 100%;\">\r\n        {{ item[col.field] | phone }}\r\n    </div>\r\n\r\n    <!--İletişim-->\r\n    <div *ngSwitchCase=\"inputTypeEnum.contact\" style=\"width: 100%;\">\r\n        {{ item[col.field] | contact }}\r\n    </div>\r\n\r\n    <!--Evet/Hayır-->\r\n    <div *ngSwitchCase=\"inputTypeEnum.yesNo\" style=\"width: 100%;\">\r\n        {{ item[col.field] ? ('yes' | translate) : ('no' | translate) }}\r\n    </div>\r\n\r\n        <!--Renk-->\r\n        <div *ngSwitchCase=\"inputTypeEnum.colorPicker\">\r\n          <p-colorPicker [(ngModel)]=\"item[col.field]\" [disabled]=\"true\" /> &nbsp; {{ item[col.field] }}\r\n        </div>\r\n\r\n    <!--Tag-->\r\n    <div *ngSwitchCase=\"inputTypeEnum.tag\" style=\"width: 100%;\">\r\n        <p-tag [value]=\"item[col.field]\" [severity]=\"item[col.tagField]\"></p-tag>\r\n    </div>\r\n\r\n    <!--Varsayılan-->\r\n    <span *ngSwitchDefault>\r\n        {{ item[col.field] }}\r\n    </span>\r\n</ng-container>\r\n}\r\n}","import { Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, QueryList, TemplateRef, ViewChild, ViewChildren, 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 { AuthImagePipe, 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\nimport { ColorPickerModule } from 'primeng/colorpicker';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CatInputComponent } from '../input-control/input-control.component';\r\nimport { DynamicColumnsComponent } from \"./dynamic-columns/dynamic-columns.component\";\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n@Component({\r\n  selector: 'cat-dynamic-list',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,TieredMenuModule,TableModule,ButtonModule,InputTextModule,SplitButtonModule,TranslateModule,ColorPickerModule,FormsModule,DynamicColumnsComponent,TooltipModule,RouterModule],\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, OnChanges {\r\n  @ViewChild('dt') table: any;\r\n  @ViewChildren('rowEditorInitBtn') rowEditorInitBtns!: QueryList<ElementRef>;\r\n\r\n  // @Input() contentTemplate!: TemplateRef<any>;\r\n  @Input() override rowMenuItemList: MenuItem[] = [];\r\n  @Input() override actionMenuItems: MenuItem[] = [];\r\n  \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  @Output() rowEditInit: EventEmitter<{ item: any; index: number }> = new EventEmitter();\r\n  @Output() rowEditSave: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() rowEditDelete: EventEmitter<{ item: any; index: number }> = new EventEmitter();\r\n  @Output() rowEditCancel: EventEmitter<{ item: any; index: number }> = new EventEmitter();\r\n  @Output() cellEdit: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() cellBlur: EventEmitter<any> = new EventEmitter<any>();\r\n    @Output() incrementClick: EventEmitter<any> = new EventEmitter();\r\n  @Output() decrementClick: EventEmitter<any> = new EventEmitter();\r\n  @Output() rowReorder: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n  @Input() selectedItems: any[] = [];\r\n  @Output() selectedItemsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n  showType?: string;\r\n  expandedRows: { [key: string]: boolean } = {};\r\n\r\n  ngOnInit(): void {\r\n    this.listOptions!.tableSize = \"\"\r\n\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  ngOnChanges() {\r\n    // Herhangi bir değişiklik olduğunda seçilen öğeleri parent bileşene bildirmek için\r\n    this.selectedItemsChange.emit(this.selectedItems);\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  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, index});\r\n    }\r\n  }\r\n\r\n  rowEditInitEvent(item: any, index: number) {\r\n    this.rowEditInit.emit({ item, index });\r\n  }\r\n\r\n  rowEditSaveEvent(item: any) {\r\n    this.rowEditSave.emit(item);\r\n  }\r\n\r\n  rowEditCancelEvent(item: any, index: number) {\r\n    this.rowEditCancel.emit({ item, index });\r\n  }\r\n\r\n  rowEditDeleteEvent(item: any, index: number) {\r\n    this.rowEditDelete.emit({ item, index });\r\n  }\r\n\r\n  setRowMenu(event: Event, pm: TieredMenu, row: any) {\r\n    event.stopPropagation(); \r\n    pm.toggle(event); \r\n    event.preventDefault(); \r\n    this.rowClick.emit(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\r\n  getTotal(field: string): number {\r\n    if (!field || !this.listOptions?.dataList) {\r\n      return 0;\r\n    }\r\n  \r\n    return this.listOptions.dataList.reduce((total, item) => {\r\n      const value = item[field];\r\n      return total + (typeof value === 'number' ? value : 0);\r\n    }, 0);\r\n  }\r\n\r\n  getRowGroupTotal(field: string, key: string): number {\r\n    if (!field || !key || !this.listOptions?.dataList) {\r\n      return 0;\r\n    }\r\n\r\n    return this.listOptions?.dataList\r\n    .filter(row => row[this.listOptions.groupRowsBy!] === key) \r\n    .reduce((sum, row) => sum + (row[field] as number), 0); \r\n  }\r\n\r\n  getExpandedRows() {\r\n    if (this.listOptions.rowGroupMode) {\r\n      const groupByKey = this.listOptions.groupRowsBy!;\r\n      const groupedData = this.listOptions.dataList!.reduce((acc, item) => {\r\n        const key = item[groupByKey];\r\n        if (!acc[key]) {\r\n          acc[key] = [];\r\n        }\r\n        acc[key].push(item);\r\n        return acc;\r\n      }, {});\r\n  \r\n      return Object.keys(groupedData).reduce((acc, key) => {\r\n        acc[key] = true;\r\n        return acc;\r\n      }, {} as { [s: string]: boolean });\r\n    }\r\n  \r\n    return {}; \r\n  }\r\n  \r\n\r\n  onSelectItem(event: any) {\r\n    this.selectedRow.emit(event);\r\n  }\r\n\r\n  onIncrementClick(event: any){\r\n    this.incrementClick.emit(event);\r\n  }\r\n\r\n  onDecrementClick(event: any){\r\n    this.decrementClick.emit(event);\r\n  }\r\n  toggleRow(item: any) {\r\n    const dataKey = this.listOptions?.dataKey;\r\n    const id = item[dataKey!];\r\n    if (!this.expandedRows) {\r\n      this.expandedRows = {};\r\n    }\r\n    if (this.expandedRows[id]) {\r\n      delete this.expandedRows[id];\r\n    } else {\r\n      this.expandedRows = {};\r\n      this.expandedRows[id] = true;\r\n    }\r\n  }\r\n\r\n  onRowReorder(event: any) {\r\n    if (this.listOptions?.dataList) {\r\n      // Update the dataList based on the new order\r\n      const movedItem = this.listOptions.dataList[event.dragIndex];\r\n      this.listOptions.dataList.splice(event.dragIndex, 1);\r\n      this.listOptions.dataList.splice(event.dropIndex, 0, movedItem);\r\n      \r\n      // Emit the updated dataList\r\n      this.rowReorder.emit(this.listOptions.dataList);\r\n    }\r\n  }\r\n}","<p-tieredMenu #rowMenu [popup]=\"true\" [model]=\"rowMenuItemList\" [appendTo]=\"'body'\"></p-tieredMenu>\r\n<div class=\"card\" [class]=\"listOptions.styleClass\">\r\n  @if(listOptions && showType == 'grid') { \r\n    <ng-container *ngIf=\"listOptions\">\r\n        <p-table #dt styleClass=\"p-datatable-gridlines p-datatable-sm\" \r\n                      responsiveLayout=\"scroll\" \r\n                      ortMode=\"single\" \r\n                      editMode=\"row\" \r\n                      [selectionMode]=\"listOptions.selectionMode === 'single' ? 'single' : 'multiple'\"\r\n                      [value]=\"listOptions.dataList ?? []\" \r\n                      [(selection)]=\"selectedItems\"\r\n                      (selectionChange)=\"onSelectItem($event)\"\r\n                      [columns]=\"listOptions.columns\" \r\n                      [styleClass]=\"listOptions.tableSize\" \r\n                      [scrollable]=\"listOptions!!.scrollable\" \r\n                      [scrollHeight]=\"listOptions!!.scrollHeight ?? '750px'\" \r\n                      [virtualScroll]=\"listOptions!!.scrollable ? true : false\" \r\n                      [virtualScrollItemSize]=\"25\" \r\n                      [globalFilterFields]=\"listOptions.filterColumns\" \r\n                      [dataKey]=\"listOptions.dataKey\" \r\n                      [paginator]=\"listOptions.pageSize ? true : false\" \r\n                      [rows]=\"listOptions.pageSize ?? 5000\" \r\n                      [currentPageReportTemplate]=\"('showRecords' | translate) + ' {first} - {last} / {totalRecords}'\" \r\n                      [showCurrentPageReport]=\"true\" \r\n                      [loading]=\"listOptions.loading\"\r\n                      [rowGroupMode]=\"listOptions.rowGroupMode || undefined\"\r\n                      [groupRowsBy]=\"listOptions.rowGroupMode ? listOptions.groupRowsBy : undefined\"\r\n                      [expandedRowKeys]=\"listOptions.rowGroupMode ? getExpandedRows() : expandedRows\"\r\n                      [reorderableColumns]=\"listOptions.isReOrderableColumns\"\r\n                      (onRowReorder)=\"onRowReorder($event)\">\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 | translate }}\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                  <input pInputText type=\"text\" (input)=\"filter($event)\" [placeholder]=\"'search' | translate\" pAutoFocus [autofocus]=\"true\" class=\"header-search-input\" />\r\n                  <i class=\"pi pi-search\"></i>\r\n                </span>\r\n                <p-button icon=\"pi pi-plus\" [label]=\"'add' | translate\" [raised]=\"true\" class=\"p-button-raised\" *ngIf=\"listOptions.isAddButton\" (click)=\"add()\"></p-button>\r\n                <p-splitButton [label]=\"'actions' | translate\" (onClick)=\"customButtonEvent()\" [model]=\"actionMenuItems\" class=\"header-split-btn\" raised outlined *ngIf=\"listOptions.isActionsButton\" appendTo=\"body\" />\r\n                <p-button icon=\"pi pi-filter\" class=\"header-btn\" *ngIf=\"listOptions.isComplexSearchEnabled\" [pTooltip]=\"'filter' | translate\" />\r\n                <p-button icon=\"pi pi-file-excel\" class=\"header-btn\" (click)=\"download()\" *ngIf=\"listOptions.downloadExcel\" pTooltip=\"Excel\" />\r\n                <p-button icon=\"pi pi-print\" class=\"header-btn\" (click)=\"print()\" *ngIf=\"listOptions.print\" [pTooltip]=\"'print' | translate\" />\r\n                <p-button icon=\"pi pi-refresh\" class=\"header-btn\" (click)=\"refresh()\" *ngIf=\"listOptions.isRefreshButton\" [pTooltip]=\"'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 style=\"width:3rem\" *ngIf=\"listOptions.isReOrderableColumns\"></th>\r\n              <th style=\"width: 5rem\" *ngIf=\"listOptions.isRowExpansion\"></th>\r\n              <th *ngIf=\"listOptions.isRowIndexVisible\" class=\"custom-row-index\" pReorderableColumn>\r\n                {{listOptions.rowIndexText??'#'}}\r\n              </th>\r\n              <ng-container *ngFor=\"let col of columns\">\r\n                <th *ngIf=\"col.type !== 'checkbox'\" pSortableColumn=\"{{col.field}}\" pReorderableColumn style=\"min-width:55px !important\">\r\n                  {{ col.header | translate }}\r\n                </th>\r\n      \r\n                <th *ngIf=\"col.type === 'checkbox'\" style=\"width: 4rem; text-align: center;\">\r\n                    <div class=\"checkbox-header-container\">\r\n                        <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n                    </div>\r\n                </th>\r\n            </ng-container>\r\n              <th *ngIf=\"(rowMenuItemList && rowMenuItemList.length > 0) || listOptions.customButtons\" class=\"action-buttons-title\">{{'actions' | translate}}\r\n              </th>\r\n              <th *ngIf=\"listOptions.isRowEdit\"></th>\r\n            </tr>\r\n            <tr *ngIf=\"listOptions.isSearchableFilter\">\r\n              <th *ngIf=\"listOptions.isRowIndexVisible\" class=\"custom-row-index\" pReorderableColumn></th>\r\n              <th *ngFor=\"let col of columns\">\r\n                <p-columnFilter *ngIf=\"listOptions.filterColumns?.includes(col.field)\" type=\"text\" field=\"{{col.field}}\" placeholder=\"Aramak için yazın\" ariaLabel=\"Filter {{col.field}}\" matchMode=\"contains\" [showMenu]=\"false\" />\r\n              </th>\r\n              <th *ngIf=\"(rowMenuItemList && rowMenuItemList.length > 0) || listOptions.customButtons\" class=\"action-buttons-title\">\r\n              </th>\r\n            </tr>\r\n          </ng-template>\r\n          @if (listOptions.rowGroupMode) {\r\n            <ng-template pTemplate=\"groupheader\" let-columns let-rowIndex=\"rowIndex\" let-expanded=\"expanded\">\r\n                <tr>\r\n                    <td colspan=\"40\">\r\n                      <div class=\"d-flex align-items-center\">\r\n                        <button \r\n                          type=\"button\" \r\n                          pButton \r\n                          pRipple \r\n                          [pRowToggler]=\"columns\" \r\n                          class=\"p-button-text p-button-rounded p-button-plain mr-2 mt-2\" \r\n                          [icon]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\">\r\n                        </button>\r\n                        <div class=\"font-bold ml-2 mt-2\">{{ columns[listOptions.groupRowsBy!] }}</div>\r\n                      </div>\r\n                    </td>\r\n                  </tr>\r\n            </ng-template>\r\n            <ng-template pTemplate=\"groupfooter\" let-columns=\"columns\" let-item>\r\n              <tr class=\"p-rowgroup-footer\">\r\n                <ng-container *ngFor=\"let col of columns\">\r\n                  <td *ngIf=\"!col.showTotal\"></td>\r\n                  <td *ngIf=\"col.showTotal\">{{ getRowGroupTotal(col.field, item[listOptions.groupRowsBy!]) | number }}</td>\r\n                </ng-container>\r\n              </tr>\r\n            </ng-template>\r\n            <ng-template pTemplate=\"header\">\r\n              <ng-content  select=\"[tableGroupModeHeader]\"></ng-content>\r\n            </ng-template>\r\n          }\r\n          <ng-template pTemplate=\"body\" let-item let-columns=\"columns\" let-rowIndex=\"rowIndex\" let-expanded=\"expanded\" let-editing=\"editing\">\r\n            <tr [pReorderableRow]=\"rowIndex\" [pEditableRow]=\"item\" [pSelectableRow]=\"item\" [ngClass]=\"item.rowClass\">\r\n              <td *ngIf=\"listOptions.isReOrderableColumns\">\r\n                <span class=\"pi pi-bars\" pReorderableRowHandle></span>\r\n             </td>\r\n              <td *ngIf=\"listOptions.isRowExpansion\" class=\"custom-row-index\">\r\n                <p-button type=\"button\" pRipple (click)=\"toggleRow(item)\" [text]=\"true\" [rounded]=\"true\" [plain]=\"true\" [icon]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\" />\r\n              </td>\r\n              <td *ngIf=\"listOptions.isRowIndexVisible\" class=\"custom-row-index\">\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\"\r\n                    (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' : col.width\" \r\n                    [style.background]=\"item[col.backgroundColor] || 'transparent'\"\r\n                    [pTooltip]=\"col.pTooltip ? col.tooltipText ? col.tooltipText : item[col.field] : null\"\r\n                    [tooltipPosition]=\"col.tooltipPosition\" \r\n                    tooltipStyleClass=\"custom-tooltip\" \r\n                    [style.cursor]=\"col.isEdit ? 'text' : (col.commond || col.isRowClick || listOptions.isRowClick ? 'pointer' : 'auto')\"\r\n                    [pEditableColumn]=\"col.isEdit ? item[col.field] : null\"\r\n                    [pEditableColumnField]=\"col.isEdit ? col.field : null\"\r\n                    [pEditableColumnDisabled]=\"listOptions.isRowEdit\">\r\n                      <cat-dynamic-columns [col]=\"col\" [item]=\"item\" [columnIndex]=\"columnIndex\" [rowEdit]=\"listOptions.isRowEdit!\" (incrementClick)=\"onIncrementClick(item)\" (decrementClick)=\"onDecrementClick(item)\" \r\n                      (cellEdit)=\"cellEdit.emit({$event,item,columnIndex})\" (cellBlur)=\"cellBlur.emit({$event,item,columnIndex})\"/>\r\n                </td>\r\n              </ng-container>\r\n              @if(listOptions.isRowEdit) {\r\n                <div class=\"flex align-items-center justify-content-center gap-2\">\r\n                  <button #rowEditorInitBtn \r\n                      *ngIf=\"!editing\" \r\n                      pButton \r\n                      pRipple \r\n                      type=\"button\" \r\n                      pInitEditableRow \r\n                      icon=\"pi pi-pencil\" \r\n                      (click)=\"rowEditInitEvent(item, rowIndex)\" \r\n                      class=\"p-button-rounded p-button-text mt-1 mr-2\">\r\n                  </button>\r\n                  <button \r\n                      *ngIf=\"editing\" \r\n                      pButton \r\n                      pRipple \r\n                      type=\"button\" \r\n                      pSaveEditableRow \r\n                      icon=\"pi pi-check\" \r\n                      (click)=\"rowEditSaveEvent(item)\" \r\n                      class=\"p-button-rounded p-button-text p-button-success mr-2 mt-4\">\r\n                  </button>\r\n                  <button \r\n                      *ngIf=\"editing\" \r\n                      pButton \r\n                      pRipple \r\n                      type=\"button\" \r\n                      pDeleteEditableRow \r\n                      icon=\"pi pi-trash\" \r\n                      (click)=\"rowEditDeleteEvent(item, rowIndex)\" \r\n                      class=\"p-button-rounded p-button-text p-button-warn mr-2 mt-4\">\r\n                  </button>\r\n                  <button \r\n                      *ngIf=\"editing\" \r\n                      pButton \r\n                      pRipple \r\n                      type=\"button\" \r\n                      pCancelEditableRow \r\n                      icon=\"pi pi-times\" \r\n                      (click)=\"rowEditCancelEvent(item, rowIndex)\" \r\n                      class=\"p-button-rounded p-button-text p-button-danger mr-2 mt-4\">\r\n                  </button>\r\n                </div>\r\n              }\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 (click)=\"button.event!(item)\" *ngIf=\"button.visible\" class=\"custom-button\" [style.color]=\"button.color ?? 'var(--primary-color)'\" [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\" (click)=\"setRowMenu($event, rowMenu, item)\" class=\"custom-button\" [style.color]=\"'var(--primary-color)'\" [pTooltip]=\"'actions' | translate\">\r\n                  <i class=\"fa fa-list\"></i>\r\n                </button>\r\n              </td>\r\n            </tr>\r\n          </ng-template>\r\n          <ng-template pTemplate=\"expandedrow\" let-item let-rowIndex=\"rowIndex\" let-columns=\"columns\">\r\n            <tr>\r\n                @if (listOptions.rowGroupMode) {\r\n                  <ng-container *ngFor=\"let col of columns; let columnIndex = index;\">\r\n                    <td [ngClass]=\"col.className\"\r\n                        (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' : col.width\" \r\n                        [pTooltip]=\"col.pTooltip ? col.tooltipText ? col.tooltipText : item[col.field] : null\"\r\n                        [tooltipPosition]=\"col.tooltipPosition\" \r\n                        tooltipStyleClass=\"custom-tooltip\" \r\n                        [style.cursor]=\"col.isEdit ? 'text' : (col.commond || col.isRowClick || listOptions.isRowClick ? 'pointer' : 'auto')\"\r\n                        [pEditableColumn]=\"col.isEdit ? item[col.field] : null\"\r\n                        [pEditableColumnField]=\"col.isEdit ? col.field : null\">\r\n                        <cat-dynamic-columns [col]=\"col\" [item]=\"item\" [columnIndex]=\"columnIndex\" [rowEdit]=\"listOptions.isRowEdit!\"/>\r\n                    </td>\r\n                  </ng-container>\r\n                } @else {\r\n                  <td colspan=\"40\">\r\n                    <div class=\"p-3\">\r\n                      <p-table [value]=\"listOptions.dataList ? [listOptions.dataList[rowIndex]] : []\" [dataKey]=\"listOptions.dataKey\" [columns]=\"listOptions.columnsRowExpansion\">\r\n                        <ng-template pTemplate=\"header\" let-columns>\r\n                          <tr>\r\n                            <th *ngFor=\"let col of columns\" pSortableColumn=\"{{ col.field }}\" pReorderableColumn style=\"min-width: 55px !important\">\r\n                              {{ col.header | translate }}\r\n                            </th>\r\n                          </tr>\r\n                        </ng-template>\r\n                        <ng-template pTemplate=\"body\" let-item let-columns=\"columns\">\r\n                          <tr>\r\n                            <ng-container *ngFor=\"let col of columns; let columnIndex = index;\">\r\n                              <td>{{ item[col.field] }}</td>\r\n                            </ng-container>\r\n                          </tr>\r\n                        </ng-template>\r\n                      </p-table>\r\n                    </div>\r\n                  </td>\r\n                }\r\n              </tr>\r\n          </ng-template>\r\n          @if (listOptions.showFooter) {\r\n            <ng-template pTemplate=\"footer\" let-columns>\r\n              <tr>\r\n                <td><strong>{{ 'total' | translate }} : </strong></td>\r\n                <ng-container *ngFor=\"let col of columns\">\r\n                  <td *ngIf=\"col.showTotal\">{{ getTotal(col.field) | number }}</td>\r\n                </ng-container>\r\n                @if (listOptions.isRowEdit) {\r\n                  <td></td>\r\n                }\r\n              </tr>\r\n            </ng-template>\r\n          }\r\n        </p-table>\r\n    </ng-container> \r\n  } @else if (showType == 'list') {\r\n    <p>{{'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(\"api/dynamiclist/getlistoptions\",{ 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()\" [draggable]=\"false\" [resizable]=\"false\">\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    <ng-content class=\"p-toolbar-group-center w-100\" select=\"[toolbarFull]\"></ng-content>\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\nimport { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n  selector: 'cat-button',\r\n  standalone: true,\r\n  imports: [ButtonModule, FormsModule, CommonModule, TranslateModule],\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  @Input() options: any;\r\n  @Input() isSelectButton: boolean = false;\r\n  @Input() model: any;\r\n  @Output() buttonClick: EventEmitter<void> = new EventEmitter();\r\n  @Output() modelChange: EventEmitter<any> = new EventEmitter();\r\n  @Output() onChange: EventEmitter<any> = new EventEmitter();\r\n\r\n  onClick(event: any) {\r\n    this.buttonClick.emit(event);\r\n  }\r\n\r\n  setModelChange(event: any) {\r\n    this.modelChange.emit(event);\r\n  }\r\n\r\n  setOnChange(event: any) {\r\n    this.onChange.emit(event);\r\n  }\r\n}\r\n","<p-button  [label]=\"buttonModel.label! | translate\" [icon]=\"buttonModel.icon\"\r\n    [styleClass]=\"buttonModel.styleClass\" [disabled]=\"buttonModel.disabled\" [loading]=\"buttonModel.loading\" [class]=\"buttonModel.styleClass\"\r\n    [severity]=\"buttonModel.severity\" [raised]=\"buttonModel.raised\" [text]=\"buttonModel.text\"\r\n    [outlined]=\"buttonModel.outlined\" [rounded]=\"buttonModel.rounded\" [badge]=\"buttonModel.badge\"\r\n    [size]=\"buttonModel.size === 'small' || buttonModel.size === 'large' ? buttonModel.size : 'small'\"\r\n    (click)=\"onClick($event)\">\r\n</p-button>\r\n\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { BaseComponent } from '../../base.component';\r\nimport { ButtonModel } from '../../../models/button.model';\r\nimport { SelectButtonModule } from 'primeng/selectbutton';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n  selector: 'cat-select-button',\r\n  standalone: true,\r\n  imports: [SelectButtonModule, FormsModule, CommonModule, TranslateModule],\r\n  templateUrl: './select-button.component.html',\r\n  styleUrl: './select-button.component.scss'\r\n})\r\nexport class CatSelectButtonComponent extends BaseComponent {\r\n  @Input() buttonModel: ButtonModel = {};\r\n  @Input() options: any;\r\n  @Input() isSelectButton: boolean = false;\r\n  @Input() model: any;\r\n  \r\n  @Output() modelChange: EventEmitter<any> = new EventEmitter();\r\n  @Output() onChange: EventEmitter<any> = new EventEmitter();\r\n\r\n\r\n\r\n  setModelChange(event: any) {\r\n    this.modelChange.emit(event);\r\n  }\r\n\r\n  setOnChange(event: any) {\r\n    this.onChange.emit(event);\r\n  }\r\n}\r\n","\r\n<p-selectButton [options]=\"options\" [(ngModel)]=\"model\" (onChange)=\"setOnChange($event)\"\r\n    (ngModelChange)=\"setModelChange($event)\"  [class]=\"buttonModel.styleClass\" [disabled]=\"buttonModel.disabled ?? false\"\r\n    [size]=\"buttonModel.size === 'small' || buttonModel.size === 'large' ? buttonModel.size : 'small'\"></p-selectButton>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { BaseComponent } from '../../base.component';\r\nimport { ButtonModel } from '../../../models/button.model';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { SplitButtonModule } from 'primeng/splitbutton';\r\nimport { MenuItem } from 'primeng/api';\r\n\r\n@Component({\r\n  selector: 'cat-split-button',\r\n  standalone: true,\r\n  imports: [ FormsModule, CommonModule, TranslateModule,SplitButtonModule],\r\n  templateUrl: './split-button.component.html',\r\n  styleUrl: './split-button.component.scss'\r\n})\r\nexport class CatSplitButtonComponent extends BaseComponent {\r\n  @Input() buttonModel: ButtonModel = {};\r\n  @Input() options: any;\r\n  @Input() isSelectButton: boolean = false;\r\n  @Input() model: any;\r\n  \r\n  @Output() modelChange: EventEmitter<any> = new EventEmitter();\r\n  @Output() onMenuHide: EventEmitter<any> = new EventEmitter();\r\n  @Output() onMenuShow: EventEmitter<any> = new EventEmitter();\r\n  @Output() buttonClick: EventEmitter<void> = new EventEmitter();\r\n  @Output() onDropdownClick: EventEmitter<any> = new EventEmitter();\r\n  @Input() items: MenuItem[] = [];\r\n\r\n\r\n  setModelChange(event: any) {\r\n    this.modelChange.emit(event);\r\n  }\r\n\r\n\r\n\r\n  onClick(event: any) {\r\n    this.buttonClick.emit(event);\r\n  }\r\n\r\n  menuHide(event: any) {\r\n    this.onMenuHide.emit(event);\r\n  }\r\n\r\n  menuShow(event: any) {\r\n    this.onMenuShow.emit(event);\r\n  }\r\n\r\n  dropdownClick(event: any) {\r\n    this.onDropdownClick.emit(event);\r\n  }\r\n}\r\n","\r\n<p-splitbutton [(ngModel)]=\"model\" [label]=\"buttonModel.label\" [model]=\"items\" [icon]=\"buttonModel.icon\"\r\n    (ngModelChange)=\"setModelChange($event)\"  [class]=\"buttonModel.styleClass\" [disabled]=\"buttonModel.disabled ?? false\" (onClick)=\"onClick($event)\" \r\n    (onMenuHide)=\"menuHide($event)\" (onMenuShow)=\"menuShow($event)\" (onDropdownClick)=\"dropdownClick($event)\"\r\n    [size]=\"buttonModel.size === 'small' || buttonModel.size === 'large' ? buttonModel.size : 'small'\" [buttonDisabled]=\"buttonModel.buttonDisabled\" ></p-splitbutton>","import { Component } from '@angular/core';\r\nimport { BaseComponent } from '../base.component';\r\nimport { ButtonModule } from 'primeng/button';\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: '40rem' }\" ></p-confirmDialog>\r\n<p-toast [breakpoints]=\"{ '920px': { width: '100%', right: '0', left: '0' } }\" />","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { FieldsetModule } from 'primeng/fieldset';\r\n\r\n@Component({\r\n  selector: 'cat-readonly-table',\r\n  standalone: true,\r\n  imports: [CommonModule, FieldsetModule, TranslateModule],\r\n  templateUrl: './readonly-table.component.html',\r\n  styleUrl: './readonly-table.component.scss'\r\n})\r\nexport class CatReadonlyTableComponent {\r\n  @Input() headers: Record<string, string> = {};\r\n  @Input() data: any[] = [];\r\n\r\n  get headerKeys(): string[] {\r\n    return Object.keys(this.headers);\r\n  }\r\n}\r\n","<div class=\"overflow-x-auto\">\r\n    <table class=\"w-full readonly-table\">\r\n        <thead>\r\n            <tr>\r\n                <th *ngFor=\"let header of headerKeys\" class=\"text-left font-semibold py-3 border-bottom-1 surface-border white-space-nowrap\">\r\n                    {{ headers[header] | translate }}\r\n                </th>\r\n            </tr>\r\n        </thead>\r\n        <tbody>\r\n            <tr *ngFor=\"let item of data\">\r\n                <td *ngFor=\"let header of headerKeys\" class=\"text-left py-3 border-bottom-1 surface-border\">\r\n                    {{ item[header] }}\r\n                </td>\r\n            </tr>\r\n        </tbody>\r\n    </table>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n  selector: 'cat-readonly-details',\r\n  standalone: true,\r\n  imports: [CommonModule, TranslateModule],\r\n  templateUrl: './readonly-details.component.html',\r\n  styleUrl: './readonly-details.component.scss'\r\n})\r\nexport class CatReadonlyDetailsComponent {\r\n  @Input() details: { label: string, value: string }[] = [];\r\n  @Input() columns: number = 2;\r\n\r\n  columnGroups: { label: string, value: string }[][] = [];\r\n\r\n  ngOnInit() {\r\n    this.splitColumns();\r\n  }\r\n\r\n  splitColumns() {\r\n    const chunkSize = Math.ceil(this.details.length / this.columns);\r\n    this.columnGroups = [];\r\n\r\n    for (let i = 0; i < this.details.length; i += chunkSize) {\r\n      this.columnGroups.push(this.details.slice(i, i + chunkSize));\r\n    }\r\n  }\r\n}\r\n","<div class=\"flex flex-wrap\">\r\n    <div *ngFor=\"let group of columnGroups\" class=\"col-6\">\r\n        <div class=\"flex flex-column\">\r\n        <span *ngFor=\"let detail of group\" class=\"inline-flex align-items-center mb-3 detail-container\">\r\n            <span class=\"text-700 mr-2 font-bold label-width\">{{ detail.label | translate }}</span>\r\n            <span class=\"text-700 mr-4 font-bold\">: </span>\r\n            <span class=\"text-700\">{{ detail.value }}</span>\r\n        </span>\r\n        </div>\r\n    </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { FieldsetModule } from 'primeng/fieldset';\r\n\r\n@Component({\r\n  selector: 'cat-fieldset',\r\n  standalone: true,\r\n  imports: [FieldsetModule],\r\n  templateUrl: './fieldset.component.html',\r\n  styleUrl: './fieldset.component.scss'\r\n})\r\nexport class CatFieldsetComponent {\r\n  @Input() header: string = '';\r\n  @Input() toggleable: boolean = false;\r\n}\r\n","<p-fieldset [toggleable]=\"toggleable\">\r\n    <ng-template pTemplate=\"header\">\r\n        <div class=\"flex align-items-center gap-4 px-3\">\r\n            <span class=\"text-lg font-bold header\">{{ header }}</span>\r\n        </div>\r\n    </ng-template>\r\n    <ng-content select=\"[contentTemplate]\"></ng-content>\r\n</p-fieldset>","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\nimport { DrawerModule } from 'primeng/drawer';\r\n\r\n@Component({\r\n  selector: 'cat-sidebar',\r\n  standalone: true,\r\n  imports: [DialogModule, DrawerModule],\r\n  templateUrl: './sidebar.component.html',\r\n  styleUrl: './sidebar.component.scss'\r\n})\r\nexport class CatSidebarComponent extends BaseComponent implements OnInit {\r\n\r\n  @Input() formDialog: boolean = false;\r\n  @Input() position: string = 'left';\r\n  @Input() header: string = '';\r\n  @Input() styleInfo: {} = { height: 'auto',width: 'auto' };\r\n  @Input() inComponent: boolean = false;\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","@if(inComponent){\r\n<div class=\"top-bar\" [class.closed]=\"formDialog\">\r\n    <ng-content select=\"[formContent]\"></ng-content>\r\n</div>\r\n<button class=\"toggle-btn\" (click)=\"formDialog = !formDialog\">\r\n    <span class=\"icon\">\r\n        {{formDialog ? '▼' : '▲'}}\r\n    </span>\r\n</button>\r\n}\r\n@else{\r\n<p-drawer [header]=\"header\" [(visible)]=\"formDialog\" [position]=\"position\"  (onHide)=\"hideDialog()\">\r\n    <ng-content select=\"[formContent]\"></ng-content>\r\n</p-drawer>\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, inject, Input, OnChanges, OnInit, Output } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { BreadcrumbModule } from 'primeng/breadcrumb';\r\nimport { ChangeDetectorRef } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'cat-breadcrumb',\r\n  imports: [BreadcrumbModule, RouterModule, CommonModule],\r\n  templateUrl: './breadcrumb.component.html',\r\n  styleUrl: './breadcrumb.component.scss'\r\n})\r\nexport class CatBreadcrumbComponent implements OnChanges {\r\n  @Input() items: MenuItem[] | undefined;\r\n\r\n  private cd: ChangeDetectorRef;\r\n\r\n  constructor() {\r\n    this.cd = inject(ChangeDetectorRef);\r\n  }\r\n\r\n  ngOnChanges() {\r\n    this.cd.detectChanges();\r\n  }\r\n}\r\n","<p-breadcrumb class=\"max-w-full\" [model]=\"items\">\r\n    <ng-template #item let-item>\r\n        <ng-container *ngIf=\"item.route\">\r\n            <a [routerLink]=\"item.route\" class=\"p-breadcrumb-item-link\" (click)=\"item.command && item.command()\">\r\n                <span [ngClass]=\"item?.icon ? item.icon + ' breadcrumb-label' : 'text-color breadcrumb-label'\">\r\n                </span>\r\n                <span *ngIf=\"items && items?.length && items.length > 0; else noItems\" [ngClass]=\"{'text-primary font-semibold': item === items[items.length - 1], \r\n                                'text-color': item !== items[items.length - 1], \r\n                                'breadcrumb-label': true}\">\r\n                    {{ item.label }}\r\n                </span>\r\n            </a>\r\n        </ng-container>\r\n\r\n        <ng-template #noItems></ng-template>\r\n\r\n        <ng-container *ngIf=\"!item.route && item.url\">\r\n            <a [href]=\"item.url\">\r\n                <span class=\"text-color breadcrumb-label\">{{ item.label }}</span>\r\n            </a>\r\n        </ng-container>\r\n        <ng-container *ngIf=\"!item.route && !item.url && item.command\">\r\n            <a (click)=\"item.command()\">\r\n                <span class=\"text-color breadcrumb-label\">{{ item.label }}</span>\r\n            </a>\r\n        </ng-container>\r\n    </ng-template>\r\n    <ng-template #separator>\r\n        <i class=\"pi pi-angle-double-right breadcrumb-separator\"></i>\r\n    </ng-template>\r\n</p-breadcrumb>","import { ChangeDetectorRef, Component, EventEmitter, inject, Input, OnChanges, OnInit, Output } from '@angular/core';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { BaseComponent } from '../base.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Router, RouterModule } from '@angular/router';\r\n\r\n@Component({\r\n  selector: 'cat-tab',\r\n  imports: [CommonModule, RouterModule],\r\n  templateUrl: './tab.component.html',\r\n  styleUrl: './tab.component.scss'\r\n})\r\nexport class CatTabComponent extends BaseComponent implements OnChanges {\r\n  @Input() items: MenuItem[] = [];\r\n  @Input() aktifIndex: number = 0;\r\n  \r\n  aktifAltMenu?: number | null | undefined = null;\r\n  private _router: Router;\r\n  private cd: ChangeDetectorRef;\r\n\r\n  constructor() {\r\n    super();\r\n    this._router = inject(Router);\r\n    this.cd = inject(ChangeDetectorRef);\r\n  }\r\n\r\n  ngOnChanges() {\r\n    this.cd.detectChanges();\r\n  }\r\n\r\n  menuClick(item: MenuItem, index?: number) {\r\n    this.aktifIndex = index!;\r\n    if (item.items) {\r\n      this.aktifAltMenu = this.aktifAltMenu === index ? null : index;\r\n    }\r\n    if (item.command) {\r\n      item.command({ originalEvent: new Event('click'), item });\r\n    }\r\n    if (item.routerLink) {\r\n      this._router.navigate(item.routerLink);\r\n    }\r\n  }\r\n}","<div class=\"tab-menu\">\r\n  <div *ngFor=\"let item of items; let i = index\" class=\"tab-menu-item-wrapper\" (mouseenter)=\"aktifAltMenu = i\"\r\n    (mouseleave)=\"aktifAltMenu = null\">\r\n\r\n    <div class=\"tab-menu-item\" [class.active]=\"i === aktifIndex\" (click)=\"!item.items ? menuClick(item, i) : null\"\r\n      [routerLink]=\"!item.items ? item.routerLink : null\">\r\n      <i class=\"{{ item.icon }} me-2\"></i> {{ item.label }}\r\n      <i *ngIf=\"item.items\" class=\"fas fa-chevron-down submenu-icon\" [class.open]=\"aktifAltMenu === i\"></i>\r\n    </div>\r\n\r\n    <div *ngIf=\"aktifAltMenu === i\" class=\"submenu\">\r\n      <div *ngFor=\"let subItem of item.items\" class=\"submenu-item\" (click)=\"menuClick(subItem, i)\"\r\n        [routerLink]=\"subItem.routerLink\">\r\n        <i class=\"{{ subItem.icon }} me-2\"></i> {{ subItem.label }}\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { PdfViewerModule, ZoomScale } from 'ng2-pdf-viewer';\r\n\r\n@Component({\r\n  selector: 'cat-pdf-viewer',\r\n  imports: [PdfViewerModule, CommonModule],\r\n  templateUrl: './pdf-viewer.component.html',\r\n  styleUrl: './pdf-viewer.component.scss'\r\n})\r\nexport class CatPdfViewerComponent {\r\n  @Input() src: string = '';\r\n  @Input() rotation: number = 0;\r\n  @Input() originalSize: boolean = false;\r\n  @Input() showAll: boolean = true;\r\n  @Input() fitToPage: boolean = true;\r\n  @Input() zoom: number = 1.5;\r\n  @Input() zoomScale: ZoomScale = 'page-fit';\r\n  @Input() stickToPage: boolean = false;\r\n  @Input() renderText: boolean = true;\r\n  @Input() externalLinkTarget: string = 'blank';\r\n  @Input() autoresize: boolean = true;\r\n  @Input() showBorders: boolean = false;\r\n}\r\n","<pdf-viewer [src]=\"src\" [rotation]=\"rotation\" [original-size]=\"originalSize\" [show-all]=\"showAll\"\r\n    [fit-to-page]=\"fitToPage\" [zoom]=\"zoom\" [zoom-scale]=\"zoomScale\" [stick-to-page]=\"stickToPage\"\r\n    [render-text]=\"renderText\" [external-link-target]=\"externalLinkTarget\" [autoresize]=\"autoresize\"\r\n    [show-borders]=\"showBorders\" style=\"width: 100%; height: 600px;\"></pdf-viewer>","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  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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3.JwtHelperService","i2","i1","i14","i3","i4","i5","i6","i7","i8","i9","i10","i11","i12","i13","i19"],"mappings":"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"}