@koalarx/ui 21.2.2 → 21.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/fesm2022/koalarx-ui-core-base.mjs +16 -16
  2. package/fesm2022/koalarx-ui-core-base.mjs.map +1 -1
  3. package/fesm2022/koalarx-ui-core-components-dialog.mjs +3 -3
  4. package/fesm2022/koalarx-ui-core-components-kl-root.mjs +4 -4
  5. package/fesm2022/koalarx-ui-core-components-kl-root.mjs.map +1 -1
  6. package/fesm2022/koalarx-ui-core-components-loader-page.mjs +7 -7
  7. package/fesm2022/koalarx-ui-core-components-loader-page.mjs.map +1 -1
  8. package/fesm2022/koalarx-ui-core-components-loader.mjs +4 -4
  9. package/fesm2022/koalarx-ui-core-components-loader.mjs.map +1 -1
  10. package/fesm2022/koalarx-ui-core-components-side-window.mjs +3 -3
  11. package/fesm2022/koalarx-ui-core-components-snackbar.mjs +3 -3
  12. package/fesm2022/koalarx-ui-core-config.mjs +1 -1
  13. package/fesm2022/koalarx-ui-core-config.mjs.map +1 -1
  14. package/fesm2022/koalarx-ui-core-guards.mjs +3 -3
  15. package/fesm2022/koalarx-ui-core-guards.mjs.map +1 -1
  16. package/fesm2022/koalarx-ui-shared-components-accordion.mjs +4 -4
  17. package/fesm2022/koalarx-ui-shared-components-accordion.mjs.map +1 -1
  18. package/fesm2022/koalarx-ui-shared-components-alert.mjs +6 -6
  19. package/fesm2022/koalarx-ui-shared-components-alert.mjs.map +1 -1
  20. package/fesm2022/koalarx-ui-shared-components-code-viewer.mjs +11 -11
  21. package/fesm2022/koalarx-ui-shared-components-code-viewer.mjs.map +1 -1
  22. package/fesm2022/koalarx-ui-shared-components-collapse.mjs +3 -3
  23. package/fesm2022/koalarx-ui-shared-components-confirm.mjs +6 -6
  24. package/fesm2022/koalarx-ui-shared-components-confirm.mjs.map +1 -1
  25. package/fesm2022/koalarx-ui-shared-components-datatable.mjs +47 -47
  26. package/fesm2022/koalarx-ui-shared-components-datatable.mjs.map +1 -1
  27. package/fesm2022/koalarx-ui-shared-components-dialog.mjs +9 -9
  28. package/fesm2022/koalarx-ui-shared-components-dialog.mjs.map +1 -1
  29. package/fesm2022/koalarx-ui-shared-components-dropdown.mjs +6 -6
  30. package/fesm2022/koalarx-ui-shared-components-dropdown.mjs.map +1 -1
  31. package/fesm2022/koalarx-ui-shared-components-field-errors.mjs +4 -4
  32. package/fesm2022/koalarx-ui-shared-components-field-errors.mjs.map +1 -1
  33. package/fesm2022/koalarx-ui-shared-components-horizontal-menu.mjs +7 -7
  34. package/fesm2022/koalarx-ui-shared-components-horizontal-menu.mjs.map +1 -1
  35. package/fesm2022/koalarx-ui-shared-components-input-field-field-group.mjs +3 -3
  36. package/fesm2022/koalarx-ui-shared-components-input-field-fieldset.mjs +3 -3
  37. package/fesm2022/koalarx-ui-shared-components-input-field-input-checkbox.mjs +6 -6
  38. package/fesm2022/koalarx-ui-shared-components-input-field-input-checkbox.mjs.map +1 -1
  39. package/fesm2022/koalarx-ui-shared-components-input-field-input-cnpj.mjs +3 -3
  40. package/fesm2022/koalarx-ui-shared-components-input-field-input-cnpj.mjs.map +1 -1
  41. package/fesm2022/koalarx-ui-shared-components-input-field-input-cpf.mjs +3 -3
  42. package/fesm2022/koalarx-ui-shared-components-input-field-input-cpf.mjs.map +1 -1
  43. package/fesm2022/koalarx-ui-shared-components-input-field-input-currency.mjs +5 -5
  44. package/fesm2022/koalarx-ui-shared-components-input-field-input-currency.mjs.map +1 -1
  45. package/fesm2022/koalarx-ui-shared-components-input-field-input-date.mjs +5 -5
  46. package/fesm2022/koalarx-ui-shared-components-input-field-input-date.mjs.map +1 -1
  47. package/fesm2022/koalarx-ui-shared-components-input-field-input-datetime.mjs +5 -5
  48. package/fesm2022/koalarx-ui-shared-components-input-field-input-datetime.mjs.map +1 -1
  49. package/fesm2022/koalarx-ui-shared-components-input-field-input-email.mjs +3 -3
  50. package/fesm2022/koalarx-ui-shared-components-input-field-input-email.mjs.map +1 -1
  51. package/fesm2022/koalarx-ui-shared-components-input-field-input-month.mjs +5 -5
  52. package/fesm2022/koalarx-ui-shared-components-input-field-input-month.mjs.map +1 -1
  53. package/fesm2022/koalarx-ui-shared-components-input-field-input-number.mjs +3 -3
  54. package/fesm2022/koalarx-ui-shared-components-input-field-input-password.mjs +5 -5
  55. package/fesm2022/koalarx-ui-shared-components-input-field-input-password.mjs.map +1 -1
  56. package/fesm2022/koalarx-ui-shared-components-input-field-input-radio.mjs +9 -9
  57. package/fesm2022/koalarx-ui-shared-components-input-field-input-radio.mjs.map +1 -1
  58. package/fesm2022/koalarx-ui-shared-components-input-field-input-text.mjs +4 -4
  59. package/fesm2022/koalarx-ui-shared-components-input-field-input-text.mjs.map +1 -1
  60. package/fesm2022/koalarx-ui-shared-components-input-field-input-time.mjs +5 -5
  61. package/fesm2022/koalarx-ui-shared-components-input-field-input-time.mjs.map +1 -1
  62. package/fesm2022/koalarx-ui-shared-components-input-field-input-url.mjs +3 -3
  63. package/fesm2022/koalarx-ui-shared-components-input-field-input-url.mjs.map +1 -1
  64. package/fesm2022/koalarx-ui-shared-components-input-field-range.mjs +14 -14
  65. package/fesm2022/koalarx-ui-shared-components-input-field-range.mjs.map +1 -1
  66. package/fesm2022/koalarx-ui-shared-components-input-field-select.mjs +22 -22
  67. package/fesm2022/koalarx-ui-shared-components-input-field-select.mjs.map +1 -1
  68. package/fesm2022/koalarx-ui-shared-components-input-field-switcher.mjs +6 -6
  69. package/fesm2022/koalarx-ui-shared-components-input-field-switcher.mjs.map +1 -1
  70. package/fesm2022/koalarx-ui-shared-components-input-field-textarea.mjs +6 -6
  71. package/fesm2022/koalarx-ui-shared-components-input-field-textarea.mjs.map +1 -1
  72. package/fesm2022/koalarx-ui-shared-components-input-field.mjs +18 -18
  73. package/fesm2022/koalarx-ui-shared-components-input-field.mjs.map +1 -1
  74. package/fesm2022/koalarx-ui-shared-components-on-this-page.mjs +6 -6
  75. package/fesm2022/koalarx-ui-shared-components-on-this-page.mjs.map +1 -1
  76. package/fesm2022/koalarx-ui-shared-components-side-window.mjs +9 -9
  77. package/fesm2022/koalarx-ui-shared-components-side-window.mjs.map +1 -1
  78. package/fesm2022/koalarx-ui-shared-components-snackbar.mjs +15 -15
  79. package/fesm2022/koalarx-ui-shared-components-snackbar.mjs.map +1 -1
  80. package/fesm2022/koalarx-ui-shared-components-stepper.mjs +13 -13
  81. package/fesm2022/koalarx-ui-shared-components-stepper.mjs.map +1 -1
  82. package/fesm2022/koalarx-ui-shared-components-vertical-menu.mjs +7 -7
  83. package/fesm2022/koalarx-ui-shared-components-vertical-menu.mjs.map +1 -1
  84. package/fesm2022/koalarx-ui-shared-directives.mjs +28 -28
  85. package/fesm2022/koalarx-ui-shared-directives.mjs.map +1 -1
  86. package/fesm2022/koalarx-ui-shared-services.mjs +12 -8
  87. package/fesm2022/koalarx-ui-shared-services.mjs.map +1 -1
  88. package/fesm2022/koalarx-ui-shared-utils.mjs +3 -3
  89. package/fesm2022/koalarx-ui-shared-utils.mjs.map +1 -1
  90. package/fesm2022/koalarx-ui-shared-validators.mjs.map +1 -1
  91. package/fesm2022/koalarx-ui.mjs +7 -7
  92. package/fesm2022/koalarx-ui.mjs.map +1 -1
  93. package/package.json +23 -23
  94. package/types/koalarx-ui-core-models.d.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"koalarx-ui-shared-components-code-viewer.mjs","sources":["../../projects/koala-ui/shared/components/code-viewer/code-viewer.ts","../../projects/koala-ui/shared/components/code-viewer/code-viewer.html","../../projects/koala-ui/shared/components/code-viewer/koalarx-ui-shared-components-code-viewer.ts"],"sourcesContent":["import 'prismjs/prism';\n\nimport 'prismjs/components/prism-bash';\nimport 'prismjs/components/prism-css';\nimport 'prismjs/components/prism-json';\nimport 'prismjs/components/prism-markup';\nimport 'prismjs/components/prism-typescript';\nimport 'prismjs/plugins/line-highlight/prism-line-highlight';\nimport 'prismjs/plugins/line-numbers/prism-line-numbers';\n\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n linkedSignal,\n signal,\n} from '@angular/core';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { Tooltip } from '@koalarx/ui/shared/directives';\nimport { MarkdownModule } from 'ngx-markdown';\n\nexport type CodeViewerLanguage =\n | 'bash'\n | 'typescript'\n | 'html'\n | 'css'\n | 'json'\n | 'other';\n\nexport interface CodeViewerConfig {\n label: string;\n code?: string;\n language?: CodeViewerLanguage;\n src?: string;\n checked?: boolean;\n lineHighlight?: string;\n}\n\n@Component({\n selector: 'kl-code-viewer',\n templateUrl: './code-viewer.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MarkdownModule, Tooltip],\n})\nexport class CodeViewer {\n readonly translations = inject(AppConfig).translation.codeViewer;\n\n copied = signal(false);\n content = signal<string>('');\n\n name = input.required<string>();\n src = input.required<string>();\n language = input<CodeViewerLanguage>('other');\n lineHighlight = input<string>();\n lineNumbers = input(false, { transform: booleanAttribute });\n\n icon = linkedSignal(() => {\n const language = this.language();\n\n if (language) {\n switch (language) {\n case 'bash':\n return 'fa-solid fa-terminal p-1 text-[0.5rem]';\n case 'typescript':\n return 'fa-brands fa-angular py-0 px-[0.2rem] text-[1rem]';\n case 'html':\n return 'fa-brands fa-html5 py-[0.1rem] px-[0.2rem] text-[1rem]';\n case 'css':\n return 'fa-brands fa-css3 py-[0.1rem] px-[0.2rem] text-[1rem]';\n case 'json':\n return 'fa-regular fa-file-code py-[0.1rem] px-[0.2rem] text-[1rem]';\n }\n }\n\n return 'fa-solid fa-code';\n });\n\n clipboard(event: any) {\n this.content.set(event.replace(/^[^\\n]*\\n?/, '').replace(/`/g, ''));\n }\n\n copyCode() {\n const code = this.content();\n\n if (code) {\n navigator.clipboard.writeText(code).then(() => {\n this.copied.set(true);\n setTimeout(() => this.copied.set(false), 2000);\n });\n }\n }\n}\n","<div class=\"relative rounded-xl bg-neutral-900 border border-base-300 mt-5 overflow-hidden\">\n <div class=\"flex items-center justify-between p-3\">\n <span class=\"flex items-center gap-2\">\n <i class=\"bg-neutral-400 text-neutral-950 rounded-sm\"\n [class]=\"icon()\">\n </i>\n <span class=\"text-neutral-500\">{{ name() }}</span>\n </span>\n\n <button class=\"hover:cursor-pointer px-2 text-md text-neutral-500 hover:text-neutral-300 hover:bg-neutral-800 rounded-sm\"\n type=\"button\"\n [tooltip]=\"copied()\n ? translations.copiedToClipboard\n : translations.copyToClipboard\"\n tooltipPosition=\"left\"\n (click)=\"copyCode()\">\n\n @if (copied()) {\n <i class=\"fa-solid fa-check\"></i>\n } @else {\n <i class=\"fa-regular fa-clipboard\"></i>\n }\n </button>\n </div>\n\n <markdown\n [src]=\"src()\"\n [disableSanitizer]=\"true\"\n [lineNumbers]=\"lineNumbers()\"\n lineHighlight\n [line]=\"lineHighlight()\"\n (load)=\"clipboard($event)\"\n />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;MA8Ca,UAAU,CAAA;IACZ,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,UAAU;AAEhE,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,kDAAC;AACtB,IAAA,OAAO,GAAG,MAAM,CAAS,EAAE,mDAAC;AAE5B,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAU;AAC/B,IAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,8CAAU;AAC9B,IAAA,QAAQ,GAAG,KAAK,CAAqB,OAAO,oDAAC;IAC7C,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IAC/B,WAAW,GAAG,KAAK,CAAC,KAAK,wDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE3D,IAAA,IAAI,GAAG,YAAY,CAAC,MAAK;AACvB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAEhC,IAAI,QAAQ,EAAE;YACZ,QAAQ,QAAQ;AACd,gBAAA,KAAK,MAAM;AACT,oBAAA,OAAO,wCAAwC;AACjD,gBAAA,KAAK,YAAY;AACf,oBAAA,OAAO,mDAAmD;AAC5D,gBAAA,KAAK,MAAM;AACT,oBAAA,OAAO,wDAAwD;AACjE,gBAAA,KAAK,KAAK;AACR,oBAAA,OAAO,uDAAuD;AAChE,gBAAA,KAAK,MAAM;AACT,oBAAA,OAAO,6DAA6D;;;AAI1E,QAAA,OAAO,kBAAkB;AAC3B,KAAC,gDAAC;AAEF,IAAA,SAAS,CAAC,KAAU,EAAA;QAClB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;;IAGrE,QAAQ,GAAA;AACN,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;QAE3B,IAAI,IAAI,EAAE;YACR,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAK;AAC5C,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,gBAAA,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;AAChD,aAAC,CAAC;;;uGA5CK,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9CvB,6jCAkCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDUY,cAAc,qdAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEtB,UAAU,EAAA,UAAA,EAAA,CAAA;kBANtB,SAAS;+BACE,gBAAgB,EAAA,eAAA,EAET,uBAAuB,CAAC,MAAM,WACtC,CAAC,cAAc,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,6jCAAA,EAAA;;;AE5CpC;;AAEG;;;;"}
1
+ {"version":3,"file":"koalarx-ui-shared-components-code-viewer.mjs","sources":["../../projects/koala-ui/shared/components/code-viewer/code-viewer.ts","../../projects/koala-ui/shared/components/code-viewer/code-viewer.html","../../projects/koala-ui/shared/components/code-viewer/koalarx-ui-shared-components-code-viewer.ts"],"sourcesContent":["import 'prismjs/prism';\n\nimport 'prismjs/components/prism-bash';\nimport 'prismjs/components/prism-css';\nimport 'prismjs/components/prism-json';\nimport 'prismjs/components/prism-markup';\nimport 'prismjs/components/prism-typescript';\nimport 'prismjs/plugins/line-highlight/prism-line-highlight';\nimport 'prismjs/plugins/line-numbers/prism-line-numbers';\n\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n linkedSignal,\n signal,\n} from '@angular/core';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { Tooltip } from '@koalarx/ui/shared/directives';\nimport { MarkdownModule } from 'ngx-markdown';\n\nexport type CodeViewerLanguage =\n | 'bash'\n | 'typescript'\n | 'html'\n | 'css'\n | 'json'\n | 'other';\n\nexport interface CodeViewerConfig {\n label: string;\n code?: string;\n language?: CodeViewerLanguage;\n src?: string;\n checked?: boolean;\n lineHighlight?: string;\n}\n\n@Component({\n selector: 'kl-code-viewer',\n templateUrl: './code-viewer.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MarkdownModule, Tooltip],\n})\nexport class CodeViewer {\n readonly translations = inject(AppConfig).translation.codeViewer;\n\n copied = signal(false);\n content = signal<string>('');\n\n name = input.required<string>();\n src = input.required<string>();\n language = input<CodeViewerLanguage>('other');\n lineHighlight = input<string>();\n lineNumbers = input(false, { transform: booleanAttribute });\n\n icon = linkedSignal(() => {\n const language = this.language();\n\n if (language) {\n switch (language) {\n case 'bash':\n return 'fa-solid fa-terminal p-1 text-[0.5rem]';\n case 'typescript':\n return 'fa-brands fa-angular py-0 px-[0.2rem] text-[1rem]';\n case 'html':\n return 'fa-brands fa-html5 py-[0.1rem] px-[0.2rem] text-[1rem]';\n case 'css':\n return 'fa-brands fa-css3 py-[0.1rem] px-[0.2rem] text-[1rem]';\n case 'json':\n return 'fa-regular fa-file-code py-[0.1rem] px-[0.2rem] text-[1rem]';\n }\n }\n\n return 'fa-solid fa-code';\n });\n\n clipboard(event: any) {\n this.content.set(event.replace(/^[^\\n]*\\n?/, '').replace(/`/g, ''));\n }\n\n copyCode() {\n const code = this.content();\n\n if (code) {\n navigator.clipboard.writeText(code).then(() => {\n this.copied.set(true);\n setTimeout(() => this.copied.set(false), 2000);\n });\n }\n }\n}\n","<div class=\"relative rounded-xl bg-neutral-900 border border-base-300 mt-5 overflow-hidden\">\n <div class=\"flex items-center justify-between p-3\">\n <span class=\"flex items-center gap-2\">\n <i class=\"bg-neutral-400 text-neutral-950 rounded-sm\"\n [class]=\"icon()\">\n </i>\n <span class=\"text-neutral-500\">{{ name() }}</span>\n </span>\n\n <button class=\"hover:cursor-pointer px-2 text-md text-neutral-500 hover:text-neutral-300 hover:bg-neutral-800 rounded-sm\"\n type=\"button\"\n [tooltip]=\"copied()\n ? translations.copiedToClipboard\n : translations.copyToClipboard\"\n tooltipPosition=\"left\"\n (click)=\"copyCode()\">\n\n @if (copied()) {\n <i class=\"fa-solid fa-check\"></i>\n } @else {\n <i class=\"fa-regular fa-clipboard\"></i>\n }\n </button>\n </div>\n\n <markdown\n [src]=\"src()\"\n [disableSanitizer]=\"true\"\n [lineNumbers]=\"lineNumbers()\"\n lineHighlight\n [line]=\"lineHighlight()\"\n (load)=\"clipboard($event)\"\n />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -2,10 +2,10 @@ import * as i0 from '@angular/core';
2
2
  import { ChangeDetectionStrategy, Component } from '@angular/core';
3
3
 
4
4
  class Collapse {
5
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: Collapse, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: Collapse, isStandalone: true, selector: "kl-collapse", ngImport: i0, template: "<div class=\"collapse bg-base-100 border border-neutral-500 dark:border-neutral-700\">\n <input type=\"checkbox\" />\n <div class=\"collapse-title font-semibold\">\n <ng-content select=\"[title]\" />\n </div>\n <div class=\"collapse-content text-sm\">\n <ng-content select=\"[content]\" />\n </div>\n</div>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: Collapse, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.8", type: Collapse, isStandalone: true, selector: "kl-collapse", ngImport: i0, template: "<div class=\"collapse bg-base-100 border border-neutral-500 dark:border-neutral-700\">\n <input type=\"checkbox\" />\n <div class=\"collapse-title font-semibold\">\n <ng-content select=\"[title]\" />\n </div>\n <div class=\"collapse-content text-sm\">\n <ng-content select=\"[content]\" />\n </div>\n</div>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
7
7
  }
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: Collapse, decorators: [{
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: Collapse, decorators: [{
9
9
  type: Component,
10
10
  args: [{ selector: 'kl-collapse', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"collapse bg-base-100 border border-neutral-500 dark:border-neutral-700\">\n <input type=\"checkbox\" />\n <div class=\"collapse-title font-semibold\">\n <ng-content select=\"[title]\" />\n </div>\n <div class=\"collapse-content text-sm\">\n <ng-content select=\"[content]\" />\n </div>\n</div>\n" }]
11
11
  }] });
@@ -11,10 +11,10 @@ class ConfirmContent {
11
11
  close(type) {
12
12
  this.dialogRef.dismiss({ type });
13
13
  }
14
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ConfirmContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: ConfirmContent, isStandalone: true, selector: "kl-confirm-content", ngImport: i0, template: "<kl-dialog-content>\n <div content>\n <p class=\"text-center\" [innerHTML]=\"message\"></p>\n <p class=\"text-center\">{{translations.askAreYouSureMessage}}</p>\n </div>\n\n <div class=\"flex items-center justify-center gap-2 w-full\" actions>\n <button klButton color=\"error\" (click)=\"close('no')\">\n {{translations.btnLabelNo}}\n </button>\n <button klButton color=\"accent\" outline (click)=\"close('yes')\">\n {{translations.btnLabelYes}}\n </button>\n </div>\n</kl-dialog-content>\n", dependencies: [{ kind: "component", type: DialogContent, selector: "kl-dialog-content" }, { kind: "directive", type: Button, selector: "button[klButton], a[klButton]", inputs: ["color", "type", "circle", "outline", "soft", "showLoader", "disabled", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: ConfirmContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.8", type: ConfirmContent, isStandalone: true, selector: "kl-confirm-content", ngImport: i0, template: "<kl-dialog-content>\n <div content>\n <p class=\"text-center\" [innerHTML]=\"message\"></p>\n <p class=\"text-center\">{{translations.askAreYouSureMessage}}</p>\n </div>\n\n <div class=\"flex items-center justify-center gap-2 w-full\" actions>\n <button klButton color=\"error\" (click)=\"close('no')\">\n {{translations.btnLabelNo}}\n </button>\n <button klButton color=\"accent\" outline (click)=\"close('yes')\">\n {{translations.btnLabelYes}}\n </button>\n </div>\n</kl-dialog-content>\n", dependencies: [{ kind: "component", type: DialogContent, selector: "kl-dialog-content" }, { kind: "directive", type: Button, selector: "button[klButton], a[klButton]", inputs: ["color", "type", "circle", "outline", "soft", "showLoader", "disabled", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16
16
  }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ConfirmContent, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: ConfirmContent, decorators: [{
18
18
  type: Component,
19
19
  args: [{ selector: 'kl-confirm-content', imports: [DialogContent, Button], changeDetection: ChangeDetectionStrategy.OnPush, template: "<kl-dialog-content>\n <div content>\n <p class=\"text-center\" [innerHTML]=\"message\"></p>\n <p class=\"text-center\">{{translations.askAreYouSureMessage}}</p>\n </div>\n\n <div class=\"flex items-center justify-center gap-2 w-full\" actions>\n <button klButton color=\"error\" (click)=\"close('no')\">\n {{translations.btnLabelNo}}\n </button>\n <button klButton color=\"accent\" outline (click)=\"close('yes')\">\n {{translations.btnLabelYes}}\n </button>\n </div>\n</kl-dialog-content>\n" }]
20
20
  }] });
@@ -37,10 +37,10 @@ class Confirm {
37
37
  },
38
38
  });
39
39
  }
40
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: Confirm, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
41
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: Confirm, providedIn: 'root' });
40
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: Confirm, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
41
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: Confirm, providedIn: 'root' });
42
42
  }
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: Confirm, decorators: [{
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: Confirm, decorators: [{
44
44
  type: Injectable,
45
45
  args: [{ providedIn: 'root' }]
46
46
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"koalarx-ui-shared-components-confirm.mjs","sources":["../../projects/koala-ui/shared/components/confirm/confirm-content.ts","../../projects/koala-ui/shared/components/confirm/confirm-content.html","../../projects/koala-ui/shared/components/confirm/confirm.ts","../../projects/koala-ui/shared/components/confirm/koalarx-ui-shared-components-confirm.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport {\n DIALOG_DATA,\n DialogContent,\n DialogRef,\n} from '@koalarx/ui/shared/components/dialog';\nimport { Button } from '@koalarx/ui/shared/directives';\n\n@Component({\n selector: 'kl-confirm-content',\n templateUrl: './confirm-content.html',\n imports: [DialogContent, Button],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ConfirmContent {\n readonly translations = inject(AppConfig).translation.confirm;\n private readonly dialogRef = inject(DialogRef);\n\n message = inject<string>(DIALOG_DATA);\n\n close(type: 'yes' | 'no') {\n this.dialogRef.dismiss({ type });\n }\n}\n","<kl-dialog-content>\n <div content>\n <p class=\"text-center\" [innerHTML]=\"message\"></p>\n <p class=\"text-center\">{{translations.askAreYouSureMessage}}</p>\n </div>\n\n <div class=\"flex items-center justify-center gap-2 w-full\" actions>\n <button klButton color=\"error\" (click)=\"close('no')\">\n {{translations.btnLabelNo}}\n </button>\n <button klButton color=\"accent\" outline (click)=\"close('yes')\">\n {{translations.btnLabelYes}}\n </button>\n </div>\n</kl-dialog-content>\n","import { inject, Injectable } from '@angular/core';\nimport { Dialog } from '@koalarx/ui/shared/components/dialog';\nimport { ConfirmContent } from './confirm-content';\n\nexport interface ConfirmConfig {\n message: string;\n yesCallback?: () => void;\n noCallback?: () => void;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class Confirm {\n private readonly dialog = inject(Dialog);\n\n open(config: ConfirmConfig) {\n this.dialog.open(ConfirmContent, {\n data: config.message,\n afterClosed: {\n trigger: {},\n callback: (confirm: { type: 'yes' | 'no' }) => {\n if (confirm.type === 'yes' && config.yesCallback) {\n config.yesCallback();\n } else if (confirm.type === 'no' && config.noCallback) {\n config.noCallback();\n }\n },\n },\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAea,cAAc,CAAA;IAChB,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,OAAO;AAC5C,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAE9C,IAAA,OAAO,GAAG,MAAM,CAAS,WAAW,CAAC;AAErC,IAAA,KAAK,CAAC,IAAkB,EAAA;QACtB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;;uGAPvB,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECf3B,6gBAeA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDHY,aAAa,8DAAE,MAAM,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGpB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;+BACE,oBAAoB,EAAA,OAAA,EAErB,CAAC,aAAa,EAAE,MAAM,CAAC,EAAA,eAAA,EACf,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6gBAAA,EAAA;;;MEFpC,OAAO,CAAA;AACD,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAExC,IAAA,IAAI,CAAC,MAAqB,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE;YAC/B,IAAI,EAAE,MAAM,CAAC,OAAO;AACpB,YAAA,WAAW,EAAE;AACX,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,QAAQ,EAAE,CAAC,OAA+B,KAAI;oBAC5C,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,WAAW,EAAE;wBAChD,MAAM,CAAC,WAAW,EAAE;;yBACf,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE;wBACrD,MAAM,CAAC,UAAU,EAAE;;iBAEtB;AACF,aAAA;AACF,SAAA,CAAC;;uGAhBO,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAP,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,OAAO,cADM,MAAM,EAAA,CAAA;;2FACnB,OAAO,EAAA,UAAA,EAAA,CAAA;kBADnB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACVlC;;AAEG;;;;"}
1
+ {"version":3,"file":"koalarx-ui-shared-components-confirm.mjs","sources":["../../projects/koala-ui/shared/components/confirm/confirm-content.ts","../../projects/koala-ui/shared/components/confirm/confirm-content.html","../../projects/koala-ui/shared/components/confirm/confirm.ts","../../projects/koala-ui/shared/components/confirm/koalarx-ui-shared-components-confirm.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport {\n DIALOG_DATA,\n DialogContent,\n DialogRef,\n} from '@koalarx/ui/shared/components/dialog';\nimport { Button } from '@koalarx/ui/shared/directives';\n\n@Component({\n selector: 'kl-confirm-content',\n templateUrl: './confirm-content.html',\n imports: [DialogContent, Button],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ConfirmContent {\n readonly translations = inject(AppConfig).translation.confirm;\n private readonly dialogRef = inject(DialogRef);\n\n message = inject<string>(DIALOG_DATA);\n\n close(type: 'yes' | 'no') {\n this.dialogRef.dismiss({ type });\n }\n}\n","<kl-dialog-content>\n <div content>\n <p class=\"text-center\" [innerHTML]=\"message\"></p>\n <p class=\"text-center\">{{translations.askAreYouSureMessage}}</p>\n </div>\n\n <div class=\"flex items-center justify-center gap-2 w-full\" actions>\n <button klButton color=\"error\" (click)=\"close('no')\">\n {{translations.btnLabelNo}}\n </button>\n <button klButton color=\"accent\" outline (click)=\"close('yes')\">\n {{translations.btnLabelYes}}\n </button>\n </div>\n</kl-dialog-content>\n","import { inject, Injectable } from '@angular/core';\nimport { Dialog } from '@koalarx/ui/shared/components/dialog';\nimport { ConfirmContent } from './confirm-content';\n\nexport interface ConfirmConfig {\n message: string;\n yesCallback?: () => void;\n noCallback?: () => void;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class Confirm {\n private readonly dialog = inject(Dialog);\n\n open(config: ConfirmConfig) {\n this.dialog.open(ConfirmContent, {\n data: config.message,\n afterClosed: {\n trigger: {},\n callback: (confirm: { type: 'yes' | 'no' }) => {\n if (confirm.type === 'yes' && config.yesCallback) {\n config.yesCallback();\n } else if (confirm.type === 'no' && config.noCallback) {\n config.noCallback();\n }\n },\n },\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAea,cAAc,CAAA;IAChB,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,OAAO;AAC5C,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAE9C,IAAA,OAAO,GAAG,MAAM,CAAS,WAAW,CAAC;AAErC,IAAA,KAAK,CAAC,IAAkB,EAAA;QACtB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;IAClC;uGARW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECf3B,6gBAeA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDHY,aAAa,8DAAE,MAAM,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGpB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;+BACE,oBAAoB,EAAA,OAAA,EAErB,CAAC,aAAa,EAAE,MAAM,CAAC,EAAA,eAAA,EACf,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6gBAAA,EAAA;;;MEFpC,OAAO,CAAA;AACD,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAExC,IAAA,IAAI,CAAC,MAAqB,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE;YAC/B,IAAI,EAAE,MAAM,CAAC,OAAO;AACpB,YAAA,WAAW,EAAE;AACX,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,QAAQ,EAAE,CAAC,OAA+B,KAAI;oBAC5C,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,WAAW,EAAE;wBAChD,MAAM,CAAC,WAAW,EAAE;oBACtB;yBAAO,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE;wBACrD,MAAM,CAAC,UAAU,EAAE;oBACrB;gBACF,CAAC;AACF,aAAA;AACF,SAAA,CAAC;IACJ;uGAjBW,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAP,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,OAAO,cADM,MAAM,EAAA,CAAA;;2FACnB,OAAO,EAAA,UAAA,EAAA,CAAA;kBADnB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACVlC;;AAEG;;;;"}
@@ -11,12 +11,12 @@ class OrderedColumnState {
11
11
  }
12
12
 
13
13
  class SortHeaderColumn {
14
- orderBy = input.required(...(ngDevMode ? [{ debugName: "orderBy" }] : []));
15
- style = input('', ...(ngDevMode ? [{ debugName: "style" }] : []));
16
- defaultDirection = input(...(ngDevMode ? [undefined, { debugName: "defaultDirection" }] : []));
14
+ orderBy = input.required(...(ngDevMode ? [{ debugName: "orderBy" }] : /* istanbul ignore next */ []));
15
+ style = input('', ...(ngDevMode ? [{ debugName: "style" }] : /* istanbul ignore next */ []));
16
+ defaultDirection = input(...(ngDevMode ? [undefined, { debugName: "defaultDirection" }] : /* istanbul ignore next */ []));
17
17
  sortable = output();
18
- elOrderedColumn = viewChild('orderedColumn', ...(ngDevMode ? [{ debugName: "elOrderedColumn" }] : []));
19
- direction = signal(null, ...(ngDevMode ? [{ debugName: "direction" }] : []));
18
+ elOrderedColumn = viewChild('orderedColumn', ...(ngDevMode ? [{ debugName: "elOrderedColumn" }] : /* istanbul ignore next */ []));
19
+ direction = signal(null, ...(ngDevMode ? [{ debugName: "direction" }] : /* istanbul ignore next */ []));
20
20
  constructor() {
21
21
  effect(() => {
22
22
  const defaultDirection = this.defaultDirection();
@@ -64,18 +64,18 @@ class SortHeaderColumn {
64
64
  columnElement.classList.remove('ordered-column');
65
65
  }
66
66
  }
67
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SortHeaderColumn, deps: [], target: i0.ɵɵFactoryTarget.Component });
68
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: SortHeaderColumn, isStandalone: true, selector: "kl-sort-header-column", inputs: { orderBy: { classPropertyName: "orderBy", publicName: "orderBy", isSignal: true, isRequired: true, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, defaultDirection: { classPropertyName: "defaultDirection", publicName: "defaultDirection", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sortable: "sortable" }, viewQueries: [{ propertyName: "elOrderedColumn", first: true, predicate: ["orderedColumn"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #orderedColumn [style]=\"style()\" class=\"flex items-center justify-start gap-1 py-2 px-3 cursor-pointer\"\n [class.not-ordered]=\"direction() === null\"\n [class.asc]=\"direction() === 'asc'\"\n [class.desc]=\"direction() === 'desc'\"\n (click)=\"sort()\">\n\n @switch (direction()) {\n @case ('asc') {\n <i class=\"fa-solid fa-arrow-down-short-wide\"></i>\n }\n @case ('desc') {\n <i class=\"fa-solid fa-arrow-down-wide-short\"></i>\n }\n @default {\n <i class=\"fa-solid fa-sort\"></i>\n }\n }\n\n <ng-content />\n</div>\n" });
67
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: SortHeaderColumn, deps: [], target: i0.ɵɵFactoryTarget.Component });
68
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: SortHeaderColumn, isStandalone: true, selector: "kl-sort-header-column", inputs: { orderBy: { classPropertyName: "orderBy", publicName: "orderBy", isSignal: true, isRequired: true, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, defaultDirection: { classPropertyName: "defaultDirection", publicName: "defaultDirection", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sortable: "sortable" }, viewQueries: [{ propertyName: "elOrderedColumn", first: true, predicate: ["orderedColumn"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #orderedColumn [style]=\"style()\" class=\"flex items-center justify-start gap-1 py-2 px-3 cursor-pointer\"\n [class.not-ordered]=\"direction() === null\"\n [class.asc]=\"direction() === 'asc'\"\n [class.desc]=\"direction() === 'desc'\"\n (click)=\"sort()\">\n\n @switch (direction()) {\n @case ('asc') {\n <i class=\"fa-solid fa-arrow-down-short-wide\"></i>\n }\n @case ('desc') {\n <i class=\"fa-solid fa-arrow-down-wide-short\"></i>\n }\n @default {\n <i class=\"fa-solid fa-sort\"></i>\n }\n }\n\n <ng-content />\n</div>\n" });
69
69
  }
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SortHeaderColumn, decorators: [{
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: SortHeaderColumn, decorators: [{
71
71
  type: Component,
72
72
  args: [{ selector: 'kl-sort-header-column', template: "<div #orderedColumn [style]=\"style()\" class=\"flex items-center justify-start gap-1 py-2 px-3 cursor-pointer\"\n [class.not-ordered]=\"direction() === null\"\n [class.asc]=\"direction() === 'asc'\"\n [class.desc]=\"direction() === 'desc'\"\n (click)=\"sort()\">\n\n @switch (direction()) {\n @case ('asc') {\n <i class=\"fa-solid fa-arrow-down-short-wide\"></i>\n }\n @case ('desc') {\n <i class=\"fa-solid fa-arrow-down-wide-short\"></i>\n }\n @default {\n <i class=\"fa-solid fa-sort\"></i>\n }\n }\n\n <ng-content />\n</div>\n" }]
73
73
  }], ctorParameters: () => [], propDecorators: { orderBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "orderBy", required: true }] }], style: [{ type: i0.Input, args: [{ isSignal: true, alias: "style", required: false }] }], defaultDirection: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultDirection", required: false }] }], sortable: [{ type: i0.Output, args: ["sortable"] }], elOrderedColumn: [{ type: i0.ViewChild, args: ['orderedColumn', { isSignal: true }] }] } });
74
74
 
75
75
  class SortedItem {
76
76
  elementRef = inject((ElementRef));
77
- klSortedItem = input.required(...(ngDevMode ? [{ debugName: "klSortedItem" }] : []));
78
- sortedPropName = input.required(...(ngDevMode ? [{ debugName: "sortedPropName" }] : []));
77
+ klSortedItem = input.required(...(ngDevMode ? [{ debugName: "klSortedItem" }] : /* istanbul ignore next */ []));
78
+ sortedPropName = input.required(...(ngDevMode ? [{ debugName: "sortedPropName" }] : /* istanbul ignore next */ []));
79
79
  constructor() {
80
80
  effect(() => {
81
81
  const isSorted = this.klSortedItem()?.orderBy === this.sortedPropName();
@@ -88,18 +88,18 @@ class SortedItem {
88
88
  }
89
89
  });
90
90
  }
91
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SortedItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
92
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.6", type: SortedItem, isStandalone: true, selector: "td[klSortedItem]", inputs: { klSortedItem: { classPropertyName: "klSortedItem", publicName: "klSortedItem", isSignal: true, isRequired: true, transformFunction: null }, sortedPropName: { classPropertyName: "sortedPropName", publicName: "sortedPropName", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
91
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: SortedItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
92
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.8", type: SortedItem, isStandalone: true, selector: "td[klSortedItem]", inputs: { klSortedItem: { classPropertyName: "klSortedItem", publicName: "klSortedItem", isSignal: true, isRequired: true, transformFunction: null }, sortedPropName: { classPropertyName: "sortedPropName", publicName: "sortedPropName", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
93
93
  }
94
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SortedItem, decorators: [{
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: SortedItem, decorators: [{
95
95
  type: Directive,
96
96
  args: [{ selector: 'td[klSortedItem]' }]
97
97
  }], ctorParameters: () => [], propDecorators: { klSortedItem: [{ type: i0.Input, args: [{ isSignal: true, alias: "klSortedItem", required: true }] }], sortedPropName: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortedPropName", required: true }] }] } });
98
98
 
99
99
  class DatatableFilter {
100
- _payload = signal({}, ...(ngDevMode ? [{ debugName: "_payload" }] : []));
101
- _filters = signal([], ...(ngDevMode ? [{ debugName: "_filters" }] : []));
102
- _clearFilter = signal(false, ...(ngDevMode ? [{ debugName: "_clearFilter" }] : []));
100
+ _payload = signal({}, ...(ngDevMode ? [{ debugName: "_payload" }] : /* istanbul ignore next */ []));
101
+ _filters = signal([], ...(ngDevMode ? [{ debugName: "_filters" }] : /* istanbul ignore next */ []));
102
+ _clearFilter = signal(false, ...(ngDevMode ? [{ debugName: "_clearFilter" }] : /* istanbul ignore next */ []));
103
103
  constructor() {
104
104
  effect(() => {
105
105
  const filters = this._filters();
@@ -142,10 +142,10 @@ class DatatableFilter {
142
142
  this._clearFilter.set(true);
143
143
  setTimeout(() => this._clearFilter.set(false));
144
144
  }
145
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: DatatableFilter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
146
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: DatatableFilter });
145
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: DatatableFilter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
146
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: DatatableFilter });
147
147
  }
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: DatatableFilter, decorators: [{
148
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: DatatableFilter, decorators: [{
149
149
  type: Injectable
150
150
  }], ctorParameters: () => [] });
151
151
 
@@ -175,17 +175,17 @@ class FilterFactory {
175
175
  return acc;
176
176
  }, {});
177
177
  }
178
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FilterFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
179
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FilterFactory });
178
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: FilterFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
179
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: FilterFactory });
180
180
  }
181
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FilterFactory, decorators: [{
181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: FilterFactory, decorators: [{
182
182
  type: Injectable
183
183
  }] });
184
184
 
185
185
  class Filter {
186
186
  translations = inject(AppConfig).translation.datatable;
187
187
  datatableFilter = inject(DatatableFilter);
188
- filter = input([], ...(ngDevMode ? [{ debugName: "filter" }] : []));
188
+ filter = input([], ...(ngDevMode ? [{ debugName: "filter" }] : /* istanbul ignore next */ []));
189
189
  payload = output();
190
190
  addFilter = output();
191
191
  clearFilter = output();
@@ -201,10 +201,10 @@ class Filter {
201
201
  add() {
202
202
  this.addFilter.emit(this.datatableFilter.filters());
203
203
  }
204
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: Filter, deps: [], target: i0.ɵɵFactoryTarget.Component });
205
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: Filter, isStandalone: true, selector: "kl-filter", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { payload: "payload", addFilter: "addFilter", clearFilter: "clearFilter" }, providers: [DatatableFilter], ngImport: i0, template: "@if (datatableFilter.filters().length > 0) {\n <div class=\"datatable-filter-container px-1 w-full flex items-center gap-3 text-neutral-500 dark:text-neutral-300\">\n\n <button class=\"hover:cursor-pointer\"\n [tooltip]=\"translations.clearFilterTooltip\"\n tooltipPosition=\"right\"\n (click)=\"datatableFilter.clearFilters()\">\n <i class=\"fa-solid fa-filter-circle-xmark text-sm\"></i>\n </button>\n\n <div class=\"flex items-center flex-wrap gap-1\">\n @for (item of datatableFilter.filters(); track $index) {\n <div class=\"badge badge-outline text-xs\">\n <span>{{item.templateValue}}</span>\n <button class=\"hover:cursor-pointer\" (click)=\"datatableFilter.removeFilter(item.propName)\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n }\n </div>\n\n <button class=\"hover:cursor-pointer\"\n [tooltip]=\"translations.addFilterTooltip\"\n tooltipPosition=\"right\"\n (click)=\"add()\">\n <i class=\"fa-solid fa-circle-plus text-sm\"></i>\n </button>\n </div>\n}\n", dependencies: [{ kind: "directive", type: Tooltip, selector: "[tooltip]", inputs: ["tooltip", "tooltipPosition"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
204
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: Filter, deps: [], target: i0.ɵɵFactoryTarget.Component });
205
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: Filter, isStandalone: true, selector: "kl-filter", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { payload: "payload", addFilter: "addFilter", clearFilter: "clearFilter" }, providers: [DatatableFilter], ngImport: i0, template: "@if (datatableFilter.filters().length > 0) {\n <div class=\"datatable-filter-container px-1 w-full flex items-center gap-3 text-neutral-500 dark:text-neutral-300\">\n\n <button class=\"hover:cursor-pointer\"\n [tooltip]=\"translations.clearFilterTooltip\"\n tooltipPosition=\"right\"\n (click)=\"datatableFilter.clearFilters()\">\n <i class=\"fa-solid fa-filter-circle-xmark text-sm\"></i>\n </button>\n\n <div class=\"flex items-center flex-wrap gap-1\">\n @for (item of datatableFilter.filters(); track $index) {\n <div class=\"badge badge-outline text-xs\">\n <span>{{item.templateValue}}</span>\n <button class=\"hover:cursor-pointer\" (click)=\"datatableFilter.removeFilter(item.propName)\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n }\n </div>\n\n <button class=\"hover:cursor-pointer\"\n [tooltip]=\"translations.addFilterTooltip\"\n tooltipPosition=\"right\"\n (click)=\"add()\">\n <i class=\"fa-solid fa-circle-plus text-sm\"></i>\n </button>\n </div>\n}\n", dependencies: [{ kind: "directive", type: Tooltip, selector: "[tooltip]", inputs: ["tooltip", "tooltipPosition"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
206
206
  }
207
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: Filter, decorators: [{
207
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: Filter, decorators: [{
208
208
  type: Component,
209
209
  args: [{ selector: 'kl-filter', changeDetection: ChangeDetectionStrategy.OnPush, providers: [DatatableFilter], imports: [Tooltip], template: "@if (datatableFilter.filters().length > 0) {\n <div class=\"datatable-filter-container px-1 w-full flex items-center gap-3 text-neutral-500 dark:text-neutral-300\">\n\n <button class=\"hover:cursor-pointer\"\n [tooltip]=\"translations.clearFilterTooltip\"\n tooltipPosition=\"right\"\n (click)=\"datatableFilter.clearFilters()\">\n <i class=\"fa-solid fa-filter-circle-xmark text-sm\"></i>\n </button>\n\n <div class=\"flex items-center flex-wrap gap-1\">\n @for (item of datatableFilter.filters(); track $index) {\n <div class=\"badge badge-outline text-xs\">\n <span>{{item.templateValue}}</span>\n <button class=\"hover:cursor-pointer\" (click)=\"datatableFilter.removeFilter(item.propName)\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n }\n </div>\n\n <button class=\"hover:cursor-pointer\"\n [tooltip]=\"translations.addFilterTooltip\"\n tooltipPosition=\"right\"\n (click)=\"add()\">\n <i class=\"fa-solid fa-circle-plus text-sm\"></i>\n </button>\n </div>\n}\n" }]
210
210
  }], ctorParameters: () => [], propDecorators: { filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], payload: [{ type: i0.Output, args: ["payload"] }], addFilter: [{ type: i0.Output, args: ["addFilter"] }], clearFilter: [{ type: i0.Output, args: ["clearFilter"] }] } });
@@ -212,35 +212,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
212
212
  class Datatable {
213
213
  sideWindow = inject(SideWindow);
214
214
  translations = inject(AppConfig).translation.datatable;
215
- config = input.required(...(ngDevMode ? [{ debugName: "config" }] : []));
216
- colspan = input.required(...(ngDevMode ? [{ debugName: "colspan" }] : []));
217
- loadMoreBtnColor = input('accent', ...(ngDevMode ? [{ debugName: "loadMoreBtnColor" }] : []));
218
- filterBtnColor = input('primary', ...(ngDevMode ? [{ debugName: "filterBtnColor" }] : []));
219
- componentFilter = input(...(ngDevMode ? [undefined, { debugName: "componentFilter" }] : []));
220
- withPaginator = input(false, { ...(ngDevMode ? { debugName: "withPaginator" } : {}), transform: booleanAttribute });
221
- currentPage = computed(() => this.config().currentPage, ...(ngDevMode ? [{ debugName: "currentPage" }] : []));
222
- totalItems = computed(() => this.config().totalItems, ...(ngDevMode ? [{ debugName: "totalItems" }] : []));
223
- totalItemsOnPage = computed(() => this.config().totalItemsOnPage, ...(ngDevMode ? [{ debugName: "totalItemsOnPage" }] : []));
224
- currentPageSize = computed(() => this.config().currentPageSize, ...(ngDevMode ? [{ debugName: "currentPageSize" }] : []));
225
- isLoading = computed(() => this.config().isLoading, ...(ngDevMode ? [{ debugName: "isLoading" }] : []));
226
- hasError = computed(() => this.config().hasError, ...(ngDevMode ? [{ debugName: "hasError" }] : []));
227
- filter = signal([], ...(ngDevMode ? [{ debugName: "filter" }] : []));
215
+ config = input.required(...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
216
+ colspan = input.required(...(ngDevMode ? [{ debugName: "colspan" }] : /* istanbul ignore next */ []));
217
+ loadMoreBtnColor = input('accent', ...(ngDevMode ? [{ debugName: "loadMoreBtnColor" }] : /* istanbul ignore next */ []));
218
+ filterBtnColor = input('primary', ...(ngDevMode ? [{ debugName: "filterBtnColor" }] : /* istanbul ignore next */ []));
219
+ componentFilter = input(...(ngDevMode ? [undefined, { debugName: "componentFilter" }] : /* istanbul ignore next */ []));
220
+ withPaginator = input(false, { ...(ngDevMode ? { debugName: "withPaginator" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
221
+ currentPage = computed(() => this.config().currentPage, ...(ngDevMode ? [{ debugName: "currentPage" }] : /* istanbul ignore next */ []));
222
+ totalItems = computed(() => this.config().totalItems, ...(ngDevMode ? [{ debugName: "totalItems" }] : /* istanbul ignore next */ []));
223
+ totalItemsOnPage = computed(() => this.config().totalItemsOnPage, ...(ngDevMode ? [{ debugName: "totalItemsOnPage" }] : /* istanbul ignore next */ []));
224
+ currentPageSize = computed(() => this.config().currentPageSize, ...(ngDevMode ? [{ debugName: "currentPageSize" }] : /* istanbul ignore next */ []));
225
+ isLoading = computed(() => this.config().isLoading, ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
226
+ hasError = computed(() => this.config().hasError, ...(ngDevMode ? [{ debugName: "hasError" }] : /* istanbul ignore next */ []));
227
+ filter = signal([], ...(ngDevMode ? [{ debugName: "filter" }] : /* istanbul ignore next */ []));
228
228
  hasFilter = computed(() => {
229
229
  return this.filter().length > 0;
230
- }, ...(ngDevMode ? [{ debugName: "hasFilter" }] : []));
231
- pageSize = model(0, ...(ngDevMode ? [{ debugName: "pageSize" }] : []));
230
+ }, ...(ngDevMode ? [{ debugName: "hasFilter" }] : /* istanbul ignore next */ []));
231
+ pageSize = model(0, ...(ngDevMode ? [{ debugName: "pageSize" }] : /* istanbul ignore next */ []));
232
232
  pageSizes = [10, 20, 30, 50, 100];
233
- skeletonRows = computed(() => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], ...(ngDevMode ? [{ debugName: "skeletonRows" }] : []));
233
+ skeletonRows = computed(() => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], ...(ngDevMode ? [{ debugName: "skeletonRows" }] : /* istanbul ignore next */ []));
234
234
  skeletonCols = computed(() => {
235
235
  return Array.from({ length: this.colspan() }, (_, i) => i);
236
- }, ...(ngDevMode ? [{ debugName: "skeletonCols" }] : []));
236
+ }, ...(ngDevMode ? [{ debugName: "skeletonCols" }] : /* istanbul ignore next */ []));
237
237
  lastPage = computed(() => {
238
238
  const isLoading = this.isLoading();
239
239
  if (!isLoading) {
240
240
  return Math.ceil(this.totalItems() / this.currentPageSize());
241
241
  }
242
242
  return 1;
243
- }, ...(ngDevMode ? [{ debugName: "lastPage" }] : []));
243
+ }, ...(ngDevMode ? [{ debugName: "lastPage" }] : /* istanbul ignore next */ []));
244
244
  pageChange = output();
245
245
  pageSizeChange = output();
246
246
  filterChange = output();
@@ -269,10 +269,10 @@ class Datatable {
269
269
  },
270
270
  });
271
271
  }
272
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: Datatable, deps: [], target: i0.ɵɵFactoryTarget.Component });
273
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: Datatable, isStandalone: true, selector: "kl-datatable", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, colspan: { classPropertyName: "colspan", publicName: "colspan", isSignal: true, isRequired: true, transformFunction: null }, loadMoreBtnColor: { classPropertyName: "loadMoreBtnColor", publicName: "loadMoreBtnColor", isSignal: true, isRequired: false, transformFunction: null }, filterBtnColor: { classPropertyName: "filterBtnColor", publicName: "filterBtnColor", isSignal: true, isRequired: false, transformFunction: null }, componentFilter: { classPropertyName: "componentFilter", publicName: "componentFilter", isSignal: true, isRequired: false, transformFunction: null }, withPaginator: { classPropertyName: "withPaginator", publicName: "withPaginator", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageSize: "pageSizeChange", pageChange: "pageChange", pageSizeChange: "pageSizeChange", filterChange: "filterChange", reloadList: "reloadList", loadMore: "loadMore" }, ngImport: i0, template: "<div class=\"flex flex-col h-full\">\n <div class=\"datatable-menu-container pl-2 pr-4 w-full flex items-center justify-between gap-2 z-10\">\n <div class=\"datatable-menu flex items-center py-2 px-0.5 opacity-80 gap-2\">\n <div class=\"addicional-options-menu flex items-center opacity-80\">\n <ng-content select=\"[menu]\" />\n </div>\n\n <span class=\"datatable-separator-menu relative top-[-0.10rem] opacity-20\">|</span>\n\n @if (componentFilter()) {\n @if (hasFilter()) {\n <kl-filter\n [filter]=\"filter()\"\n (addFilter)=\"openFilter($event)\"\n (payload)=\"filterChange.emit($event)\"\n (clearFilter)=\"filter.set([])\"\n />\n\n <span class=\"relative top-[-0.10rem] opacity-20\">|</span>\n } @else {\n <button klButton\n size=\"extraSmall\"\n class=\"text-sm font-light\"\n [color]=\"filterBtnColor()\"\n (click)=\"openFilter()\">\n <i class=\"fa-solid fa-filter text-xs\"></i>\n {{translations.btnFilterLabel}}\n </button>\n }\n }\n\n <button class=\"btn btn-outline border-neutral-300 hover:border-neutral-500 dark:border-neutral-700 btn-xs text-sm font-light\"\n (click)=\"reloadList.emit()\">\n <i class=\"fa-solid fa-rotate-right text-xs\"></i>\n {{translations.reloadListTooltip}}\n </button>\n </div>\n\n @if (!withPaginator()) {\n <div class=\"flex items-center justify-end gap-3 text-sm\">\n <span class=\"flex items-center justify-end gap-1 opacity-60\">\n <span class=\"whitespace-nowrap\">{{translations.labelItemsPerPage}}:</span>\n\n <select class=\"select select-md p-0 pl-2 pr-8 h-6 w-auto\" [(ngModel)]=\"pageSize\">\n @for (item of pageSizes; track $index) {\n <option [value]=\"item\">{{ item }}</option>\n }\n </select>\n </span>\n <span class=\"opacity-60\">|</span>\n <span class=\"opacity-60 whitespace-nowrap\">{{totalItemsOnPage()}} de {{totalItems()}}</span>\n </div>\n }\n </div>\n\n <div class=\"datatable-table overflow-x-auto h-auto bg-base-200\">\n <table class=\"table table-sm table-pin-rows\">\n <thead>\n <tr class=\"text-xs overflow-hidden bg-base-200\">\n <ng-content select=\"[head]\" />\n </tr>\n </thead>\n <tbody>\n @if (hasError()) {\n <tr>\n <td [attr.colspan]=\"colspan()\" class=\"text-center\">\n {{translations.errorLoadDataLabel}}\n </td>\n </tr>\n } @else {\n <ng-content select=\"[body]\" />\n\n @if (!withPaginator() && !isLoading() && totalItemsOnPage() < totalItems()) {\n <tr>\n <td [attr.colspan]=\"colspan()\">\n <button\n klButton\n outline\n [color]=\"loadMoreBtnColor()\"\n class=\"w-full\"\n (click)=\"loadMore.emit()\">\n {{translations.loadMoreBtnLabel}}\n </button>\n </td>\n </tr>\n }\n\n @if (isLoading()) {\n @for (row of skeletonRows(); track $index) {\n <tr>\n @for (col of skeletonCols(); track $index) {\n <td><span class=\"block skeleton w-full h-4\"></span></td>\n }\n </tr>\n }\n }\n }\n </tbody>\n </table>\n </div>\n\n @if (withPaginator()) {\n <div class=\"px-4 py-2 bg-base-200 border-t border-neutral-200 dark:border-neutral-700 w-full flex items-center justify-between\">\n <div class=\"flex items-center justify-end gap-3 text-xs\">\n <span class=\"flex items-center justify-end gap-1 opacity-60\">\n <span>{{translations.labelItemsPerPage}}:</span>\n\n <select class=\"select select-sm p-0 pl-2 pr-0 w-15 h-6\" [(ngModel)]=\"pageSize\">\n @for (item of pageSizes; track $index) {\n <option [value]=\"item\">{{ item }}</option>\n }\n </select>\n </span>\n <span class=\"opacity-60\">|</span>\n <span class=\"opacity-60\">{{totalItemsOnPage()}} de {{totalItems()}}</span>\n </div>\n\n <div class=\"flex items-center gap-8\">\n <span class=\"text-xs opacity-60\">{{translations.paginatorPagesFeedback(currentPage(), lastPage())}}</span>\n\n <div class=\"join flex items-center\">\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === 1\"\n (click)=\"pageChange.emit(1)\">\n <i class=\"fa-solid fa-angles-left text-[0.6rem]\"></i>\n </button>\n\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === 1\"\n (click)=\"pageChange.emit(currentPage() - 1)\">\n <i class=\"fa-solid fa-chevron-left text-[0.6rem]\"></i>\n </button>\n\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === lastPage()\"\n (click)=\"pageChange.emit(currentPage() + 1)\">\n <i class=\"fa-solid fa-angle-right text-[0.6rem]\"></i>\n </button>\n\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === lastPage()\"\n (click)=\"pageChange.emit(lastPage())\">\n <i class=\"fa-solid fa-angles-right text-[0.6rem]\"></i>\n </button>\n </div>\n </div>\n </div>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Filter, selector: "kl-filter", inputs: ["filter"], outputs: ["payload", "addFilter", "clearFilter"] }, { kind: "directive", type: Button, selector: "button[klButton], a[klButton]", inputs: ["color", "type", "circle", "outline", "soft", "showLoader", "disabled", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
272
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: Datatable, deps: [], target: i0.ɵɵFactoryTarget.Component });
273
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: Datatable, isStandalone: true, selector: "kl-datatable", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, colspan: { classPropertyName: "colspan", publicName: "colspan", isSignal: true, isRequired: true, transformFunction: null }, loadMoreBtnColor: { classPropertyName: "loadMoreBtnColor", publicName: "loadMoreBtnColor", isSignal: true, isRequired: false, transformFunction: null }, filterBtnColor: { classPropertyName: "filterBtnColor", publicName: "filterBtnColor", isSignal: true, isRequired: false, transformFunction: null }, componentFilter: { classPropertyName: "componentFilter", publicName: "componentFilter", isSignal: true, isRequired: false, transformFunction: null }, withPaginator: { classPropertyName: "withPaginator", publicName: "withPaginator", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageSize: "pageSizeChange", pageChange: "pageChange", pageSizeChange: "pageSizeChange", filterChange: "filterChange", reloadList: "reloadList", loadMore: "loadMore" }, ngImport: i0, template: "<div class=\"flex flex-col h-full\">\n <div class=\"datatable-menu-container pl-2 pr-4 w-full flex items-center justify-between gap-2 z-10\">\n <div class=\"datatable-menu flex items-center py-2 px-0.5 opacity-80 gap-2\">\n <div class=\"addicional-options-menu flex items-center opacity-80\">\n <ng-content select=\"[menu]\" />\n </div>\n\n <span class=\"datatable-separator-menu relative top-[-0.10rem] opacity-20\">|</span>\n\n @if (componentFilter()) {\n @if (hasFilter()) {\n <kl-filter\n [filter]=\"filter()\"\n (addFilter)=\"openFilter($event)\"\n (payload)=\"filterChange.emit($event)\"\n (clearFilter)=\"filter.set([])\"\n />\n\n <span class=\"relative top-[-0.10rem] opacity-20\">|</span>\n } @else {\n <button klButton\n size=\"extraSmall\"\n class=\"text-sm font-light\"\n [color]=\"filterBtnColor()\"\n (click)=\"openFilter()\">\n <i class=\"fa-solid fa-filter text-xs\"></i>\n {{translations.btnFilterLabel}}\n </button>\n }\n }\n\n <button class=\"btn btn-outline border-neutral-300 hover:border-neutral-500 dark:border-neutral-700 btn-xs text-sm font-light\"\n (click)=\"reloadList.emit()\">\n <i class=\"fa-solid fa-rotate-right text-xs\"></i>\n {{translations.reloadListTooltip}}\n </button>\n </div>\n\n @if (!withPaginator()) {\n <div class=\"flex items-center justify-end gap-3 text-sm\">\n <span class=\"flex items-center justify-end gap-1 opacity-60\">\n <span class=\"whitespace-nowrap\">{{translations.labelItemsPerPage}}:</span>\n\n <select class=\"select select-md p-0 pl-2 pr-8 h-6 w-auto\" [(ngModel)]=\"pageSize\">\n @for (item of pageSizes; track $index) {\n <option [value]=\"item\">{{ item }}</option>\n }\n </select>\n </span>\n <span class=\"opacity-60\">|</span>\n <span class=\"opacity-60 whitespace-nowrap\">{{totalItemsOnPage()}} de {{totalItems()}}</span>\n </div>\n }\n </div>\n\n <div class=\"datatable-table overflow-x-auto h-auto bg-base-200\">\n <table class=\"table table-sm table-pin-rows\">\n <thead>\n <tr class=\"text-xs overflow-hidden bg-base-200\">\n <ng-content select=\"[head]\" />\n </tr>\n </thead>\n <tbody>\n @if (hasError()) {\n <tr>\n <td [attr.colspan]=\"colspan()\" class=\"text-center\">\n {{translations.errorLoadDataLabel}}\n </td>\n </tr>\n } @else {\n <ng-content select=\"[body]\" />\n\n @if (!withPaginator() && !isLoading() && totalItemsOnPage() < totalItems()) {\n <tr>\n <td [attr.colspan]=\"colspan()\">\n <button\n klButton\n outline\n [color]=\"loadMoreBtnColor()\"\n class=\"w-full\"\n (click)=\"loadMore.emit()\">\n {{translations.loadMoreBtnLabel}}\n </button>\n </td>\n </tr>\n }\n\n @if (isLoading()) {\n @for (row of skeletonRows(); track $index) {\n <tr>\n @for (col of skeletonCols(); track $index) {\n <td><span class=\"block skeleton w-full h-4\"></span></td>\n }\n </tr>\n }\n }\n }\n </tbody>\n </table>\n </div>\n\n @if (withPaginator()) {\n <div class=\"px-4 py-2 bg-base-200 border-t border-neutral-200 dark:border-neutral-700 w-full flex items-center justify-between\">\n <div class=\"flex items-center justify-end gap-3 text-xs\">\n <span class=\"flex items-center justify-end gap-1 opacity-60\">\n <span>{{translations.labelItemsPerPage}}:</span>\n\n <select class=\"select select-sm p-0 pl-2 pr-0 w-15 h-6\" [(ngModel)]=\"pageSize\">\n @for (item of pageSizes; track $index) {\n <option [value]=\"item\">{{ item }}</option>\n }\n </select>\n </span>\n <span class=\"opacity-60\">|</span>\n <span class=\"opacity-60\">{{totalItemsOnPage()}} de {{totalItems()}}</span>\n </div>\n\n <div class=\"flex items-center gap-8\">\n <span class=\"text-xs opacity-60\">{{translations.paginatorPagesFeedback(currentPage(), lastPage())}}</span>\n\n <div class=\"join flex items-center\">\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === 1\"\n (click)=\"pageChange.emit(1)\">\n <i class=\"fa-solid fa-angles-left text-[0.6rem]\"></i>\n </button>\n\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === 1\"\n (click)=\"pageChange.emit(currentPage() - 1)\">\n <i class=\"fa-solid fa-chevron-left text-[0.6rem]\"></i>\n </button>\n\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === lastPage()\"\n (click)=\"pageChange.emit(currentPage() + 1)\">\n <i class=\"fa-solid fa-angle-right text-[0.6rem]\"></i>\n </button>\n\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === lastPage()\"\n (click)=\"pageChange.emit(lastPage())\">\n <i class=\"fa-solid fa-angles-right text-[0.6rem]\"></i>\n </button>\n </div>\n </div>\n </div>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Filter, selector: "kl-filter", inputs: ["filter"], outputs: ["payload", "addFilter", "clearFilter"] }, { kind: "directive", type: Button, selector: "button[klButton], a[klButton]", inputs: ["color", "type", "circle", "outline", "soft", "showLoader", "disabled", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
274
274
  }
275
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: Datatable, decorators: [{
275
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: Datatable, decorators: [{
276
276
  type: Component,
277
277
  args: [{ selector: 'kl-datatable', changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormsModule, Filter, Button], template: "<div class=\"flex flex-col h-full\">\n <div class=\"datatable-menu-container pl-2 pr-4 w-full flex items-center justify-between gap-2 z-10\">\n <div class=\"datatable-menu flex items-center py-2 px-0.5 opacity-80 gap-2\">\n <div class=\"addicional-options-menu flex items-center opacity-80\">\n <ng-content select=\"[menu]\" />\n </div>\n\n <span class=\"datatable-separator-menu relative top-[-0.10rem] opacity-20\">|</span>\n\n @if (componentFilter()) {\n @if (hasFilter()) {\n <kl-filter\n [filter]=\"filter()\"\n (addFilter)=\"openFilter($event)\"\n (payload)=\"filterChange.emit($event)\"\n (clearFilter)=\"filter.set([])\"\n />\n\n <span class=\"relative top-[-0.10rem] opacity-20\">|</span>\n } @else {\n <button klButton\n size=\"extraSmall\"\n class=\"text-sm font-light\"\n [color]=\"filterBtnColor()\"\n (click)=\"openFilter()\">\n <i class=\"fa-solid fa-filter text-xs\"></i>\n {{translations.btnFilterLabel}}\n </button>\n }\n }\n\n <button class=\"btn btn-outline border-neutral-300 hover:border-neutral-500 dark:border-neutral-700 btn-xs text-sm font-light\"\n (click)=\"reloadList.emit()\">\n <i class=\"fa-solid fa-rotate-right text-xs\"></i>\n {{translations.reloadListTooltip}}\n </button>\n </div>\n\n @if (!withPaginator()) {\n <div class=\"flex items-center justify-end gap-3 text-sm\">\n <span class=\"flex items-center justify-end gap-1 opacity-60\">\n <span class=\"whitespace-nowrap\">{{translations.labelItemsPerPage}}:</span>\n\n <select class=\"select select-md p-0 pl-2 pr-8 h-6 w-auto\" [(ngModel)]=\"pageSize\">\n @for (item of pageSizes; track $index) {\n <option [value]=\"item\">{{ item }}</option>\n }\n </select>\n </span>\n <span class=\"opacity-60\">|</span>\n <span class=\"opacity-60 whitespace-nowrap\">{{totalItemsOnPage()}} de {{totalItems()}}</span>\n </div>\n }\n </div>\n\n <div class=\"datatable-table overflow-x-auto h-auto bg-base-200\">\n <table class=\"table table-sm table-pin-rows\">\n <thead>\n <tr class=\"text-xs overflow-hidden bg-base-200\">\n <ng-content select=\"[head]\" />\n </tr>\n </thead>\n <tbody>\n @if (hasError()) {\n <tr>\n <td [attr.colspan]=\"colspan()\" class=\"text-center\">\n {{translations.errorLoadDataLabel}}\n </td>\n </tr>\n } @else {\n <ng-content select=\"[body]\" />\n\n @if (!withPaginator() && !isLoading() && totalItemsOnPage() < totalItems()) {\n <tr>\n <td [attr.colspan]=\"colspan()\">\n <button\n klButton\n outline\n [color]=\"loadMoreBtnColor()\"\n class=\"w-full\"\n (click)=\"loadMore.emit()\">\n {{translations.loadMoreBtnLabel}}\n </button>\n </td>\n </tr>\n }\n\n @if (isLoading()) {\n @for (row of skeletonRows(); track $index) {\n <tr>\n @for (col of skeletonCols(); track $index) {\n <td><span class=\"block skeleton w-full h-4\"></span></td>\n }\n </tr>\n }\n }\n }\n </tbody>\n </table>\n </div>\n\n @if (withPaginator()) {\n <div class=\"px-4 py-2 bg-base-200 border-t border-neutral-200 dark:border-neutral-700 w-full flex items-center justify-between\">\n <div class=\"flex items-center justify-end gap-3 text-xs\">\n <span class=\"flex items-center justify-end gap-1 opacity-60\">\n <span>{{translations.labelItemsPerPage}}:</span>\n\n <select class=\"select select-sm p-0 pl-2 pr-0 w-15 h-6\" [(ngModel)]=\"pageSize\">\n @for (item of pageSizes; track $index) {\n <option [value]=\"item\">{{ item }}</option>\n }\n </select>\n </span>\n <span class=\"opacity-60\">|</span>\n <span class=\"opacity-60\">{{totalItemsOnPage()}} de {{totalItems()}}</span>\n </div>\n\n <div class=\"flex items-center gap-8\">\n <span class=\"text-xs opacity-60\">{{translations.paginatorPagesFeedback(currentPage(), lastPage())}}</span>\n\n <div class=\"join flex items-center\">\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === 1\"\n (click)=\"pageChange.emit(1)\">\n <i class=\"fa-solid fa-angles-left text-[0.6rem]\"></i>\n </button>\n\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === 1\"\n (click)=\"pageChange.emit(currentPage() - 1)\">\n <i class=\"fa-solid fa-chevron-left text-[0.6rem]\"></i>\n </button>\n\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === lastPage()\"\n (click)=\"pageChange.emit(currentPage() + 1)\">\n <i class=\"fa-solid fa-angle-right text-[0.6rem]\"></i>\n </button>\n\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === lastPage()\"\n (click)=\"pageChange.emit(lastPage())\">\n <i class=\"fa-solid fa-angles-right text-[0.6rem]\"></i>\n </button>\n </div>\n </div>\n </div>\n }\n</div>\n" }]
278
278
  }], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], colspan: [{ type: i0.Input, args: [{ isSignal: true, alias: "colspan", required: true }] }], loadMoreBtnColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadMoreBtnColor", required: false }] }], filterBtnColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBtnColor", required: false }] }], componentFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "componentFilter", required: false }] }], withPaginator: [{ type: i0.Input, args: [{ isSignal: true, alias: "withPaginator", required: false }] }], pageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSize", required: false }] }, { type: i0.Output, args: ["pageSizeChange"] }], pageChange: [{ type: i0.Output, args: ["pageChange"] }], pageSizeChange: [{ type: i0.Output, args: ["pageSizeChange"] }], filterChange: [{ type: i0.Output, args: ["filterChange"] }], reloadList: [{ type: i0.Output, args: ["reloadList"] }], loadMore: [{ type: i0.Output, args: ["loadMore"] }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"koalarx-ui-shared-components-datatable.mjs","sources":["../../projects/koala-ui/shared/components/datatable/sort-column/ordered-column.state.ts","../../projects/koala-ui/shared/components/datatable/sort-column/sort-header-column.ts","../../projects/koala-ui/shared/components/datatable/sort-column/sort-header-column.html","../../projects/koala-ui/shared/components/datatable/sort-column/sorted-item.ts","../../projects/koala-ui/shared/components/datatable/filter/datatable-filter.ts","../../projects/koala-ui/shared/components/datatable/filter/filter-factory.ts","../../projects/koala-ui/shared/components/datatable/filter/filter.ts","../../projects/koala-ui/shared/components/datatable/filter/filter.html","../../projects/koala-ui/shared/components/datatable/datatable.ts","../../projects/koala-ui/shared/components/datatable/datatable.html","../../projects/koala-ui/shared/components/datatable/koalarx-ui-shared-components-datatable.ts"],"sourcesContent":["import { SortHeaderColumn } from './sort-header-column';\r\n\r\nexport class OrderedColumnState {\r\n static current?: SortHeaderColumn;\r\n}\r\n","import {\n Component,\n effect,\n ElementRef,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport {\n QueryPaginationDirection,\n SortFilterType,\n} from '@koalarx/ui/core/models';\nimport { OrderedColumnState } from './ordered-column.state';\n\n@Component({\n selector: 'kl-sort-header-column',\n templateUrl: './sort-header-column.html',\n})\nexport class SortHeaderColumn {\n orderBy = input.required<string>();\n style = input('');\n defaultDirection = input<QueryPaginationDirection>();\n sortable = output<SortFilterType>();\n elOrderedColumn =\n viewChild<ElementRef<HTMLTableCellElement>>('orderedColumn');\n direction = signal<QueryPaginationDirection | null>(null);\n\n constructor() {\n effect(() => {\n const defaultDirection = this.defaultDirection();\n\n if (defaultDirection) {\n this.direction.set(defaultDirection);\n OrderedColumnState.current = this;\n this.toogleColumnStateOrder('set');\n }\n });\n }\n\n sort() {\n this.direction.update((current) => {\n if (\n OrderedColumnState.current &&\n OrderedColumnState.current.orderBy !== this.orderBy\n ) {\n OrderedColumnState.current.direction.set(null);\n OrderedColumnState.current.toogleColumnStateOrder('unset');\n }\n\n OrderedColumnState.current = this;\n\n let direction: QueryPaginationDirection;\n\n switch (current) {\n case 'asc':\n direction = 'desc';\n break;\n case 'desc':\n default:\n direction = 'asc';\n }\n\n this.toogleColumnStateOrder('set');\n\n this.sortable.emit({\n orderBy: this.orderBy(),\n direction,\n });\n\n return direction;\n });\n }\n\n async toogleColumnStateOrder(state: 'set' | 'unset') {\n const columnElement = this.elOrderedColumn()?.nativeElement.parentElement;\n\n if (!columnElement) {\n return;\n }\n\n if (state === 'set') {\n columnElement.classList.add('ordered-column');\n } else {\n columnElement.classList.remove('ordered-column');\n }\n }\n}\n","<div #orderedColumn [style]=\"style()\" class=\"flex items-center justify-start gap-1 py-2 px-3 cursor-pointer\"\n [class.not-ordered]=\"direction() === null\"\n [class.asc]=\"direction() === 'asc'\"\n [class.desc]=\"direction() === 'desc'\"\n (click)=\"sort()\">\n\n @switch (direction()) {\n @case ('asc') {\n <i class=\"fa-solid fa-arrow-down-short-wide\"></i>\n }\n @case ('desc') {\n <i class=\"fa-solid fa-arrow-down-wide-short\"></i>\n }\n @default {\n <i class=\"fa-solid fa-sort\"></i>\n }\n }\n\n <ng-content />\n</div>\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\nimport { SortFilterType } from '@koalarx/ui/core/models';\n\n@Directive({ selector: 'td[klSortedItem]' })\nexport class SortedItem {\n private readonly elementRef = inject<ElementRef<HTMLTableCellElement>>(\n ElementRef<HTMLTableCellElement>\n );\n\n klSortedItem = input.required<SortFilterType | null>();\n sortedPropName = input.required<string>();\n\n constructor() {\n effect(() => {\n const isSorted = this.klSortedItem()?.orderBy === this.sortedPropName();\n\n this.elementRef.nativeElement.classList.toggle('sorted', isSorted);\n\n if (isSorted) {\n this.elementRef.nativeElement.setAttribute('aria-sort', 'ascending');\n } else {\n this.elementRef.nativeElement.setAttribute('aria-sort', 'descending');\n }\n });\n }\n}\n","import { effect, Injectable, signal } from '@angular/core';\n\nexport interface FilterData {\n templateValue: string;\n propName: string;\n value: any;\n}\n\n@Injectable()\nexport class DatatableFilter {\n private readonly _payload = signal<Record<string, any>>({});\n private readonly _filters = signal<FilterData[]>([]);\n private readonly _clearFilter = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n const filters = this._filters();\n const payload = this.payload();\n\n if (filters.length === 0 && Object.keys(payload).length > 0) {\n this._clearFilter.set(true);\n setTimeout(() => this._clearFilter.set(false));\n return;\n }\n });\n\n effect(() => {\n const filters = this._filters();\n\n this._payload.update(() => {\n const result: any = {};\n\n filters.forEach((filter) => {\n result[filter.propName] = filter.value;\n });\n\n return result;\n });\n });\n }\n\n get payload() {\n return this._payload.asReadonly();\n }\n\n get filters() {\n return this._filters.asReadonly();\n }\n\n get clearFilter() {\n return this._clearFilter.asReadonly();\n }\n\n setFilters(filters: FilterData[]) {\n this._filters.set(filters);\n }\n\n removeFilter(propName: string) {\n this._filters.update((current) =>\n current.filter((filter) => filter.propName !== propName),\n );\n }\n\n clearFilters() {\n this._filters.set([]);\n this._payload.set({});\n\n this._clearFilter.set(true);\n setTimeout(() => this._clearFilter.set(false));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FilterData } from './datatable-filter';\n\n@Injectable()\nexport class FilterFactory {\n private readonly _filter: FilterData[] = [];\n\n get filter() {\n return [...this._filter];\n }\n\n setFilters<T>(\n filter: T,\n templateNameFn: (propName: keyof typeof filter, value: any) => string\n ) {\n const filterData = filter as Record<string, any>;\n\n Object.keys(filterData).forEach((propName) => {\n const value = filterData[propName];\n\n if (value === null || value === undefined || value === '') {\n return;\n }\n\n const templateValue = templateNameFn(propName as any, value);\n this.addFilter({ templateValue, propName, value });\n });\n\n return this._filter;\n }\n\n addFilter(filter: FilterData) {\n this._filter.push(filter);\n }\n\n toPayload(data: FilterData[]): Record<string, any> {\n return data.reduce((acc, curr) => {\n acc[curr.propName] = curr.value;\n return acc;\n }, {} as Record<string, any>);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { Tooltip } from '@koalarx/ui/shared/directives';\nimport { DatatableFilter, FilterData } from './datatable-filter';\nimport { AppConfig } from '@koalarx/ui/core/config';\n\n@Component({\n selector: 'kl-filter',\n templateUrl: './filter.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DatatableFilter],\n imports: [Tooltip],\n})\nexport class Filter {\n readonly translations = inject(AppConfig).translation.datatable;\n\n datatableFilter = inject(DatatableFilter);\n filter = input<FilterData[]>([]);\n payload = output<Record<string, any>>();\n addFilter = output<FilterData[]>();\n clearFilter = output<void>();\n\n constructor() {\n effect(() => this.datatableFilter.setFilters(this.filter()));\n effect(() => this.payload.emit(this.datatableFilter.payload()));\n effect(() => {\n if (this.datatableFilter.clearFilter()) {\n this.clearFilter.emit();\n }\n });\n }\n\n add() {\n this.addFilter.emit(this.datatableFilter.filters());\n }\n}\n","@if (datatableFilter.filters().length > 0) {\n <div class=\"datatable-filter-container px-1 w-full flex items-center gap-3 text-neutral-500 dark:text-neutral-300\">\n\n <button class=\"hover:cursor-pointer\"\n [tooltip]=\"translations.clearFilterTooltip\"\n tooltipPosition=\"right\"\n (click)=\"datatableFilter.clearFilters()\">\n <i class=\"fa-solid fa-filter-circle-xmark text-sm\"></i>\n </button>\n\n <div class=\"flex items-center flex-wrap gap-1\">\n @for (item of datatableFilter.filters(); track $index) {\n <div class=\"badge badge-outline text-xs\">\n <span>{{item.templateValue}}</span>\n <button class=\"hover:cursor-pointer\" (click)=\"datatableFilter.removeFilter(item.propName)\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n }\n </div>\n\n <button class=\"hover:cursor-pointer\"\n [tooltip]=\"translations.addFilterTooltip\"\n tooltipPosition=\"right\"\n (click)=\"add()\">\n <i class=\"fa-solid fa-circle-plus text-sm\"></i>\n </button>\n </div>\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n Type,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { SideWindow } from '@koalarx/ui/shared/components/side-window';\nimport { Button, ButtonColor } from '@koalarx/ui/shared/directives';\nimport { DatatableConfig } from './datatable-config';\nimport { FilterData } from './filter/datatable-filter';\nimport { Filter } from './filter/filter';\n\n@Component({\n selector: 'kl-datatable',\n templateUrl: './datatable.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, Filter, Button],\n})\nexport class Datatable {\n private readonly sideWindow = inject(SideWindow);\n\n readonly translations = inject(AppConfig).translation.datatable;\n\n config = input.required<DatatableConfig>();\n colspan = input.required<number>();\n loadMoreBtnColor = input<ButtonColor>('accent');\n filterBtnColor = input<ButtonColor>('primary');\n componentFilter = input<Type<any>>();\n withPaginator = input(false, { transform: booleanAttribute });\n\n currentPage = computed(() => this.config().currentPage);\n totalItems = computed(() => this.config().totalItems);\n totalItemsOnPage = computed(() => this.config().totalItemsOnPage);\n currentPageSize = computed(() => this.config().currentPageSize);\n isLoading = computed(() => this.config().isLoading);\n hasError = computed(() => this.config().hasError);\n\n filter = signal<FilterData[]>([]);\n hasFilter = computed(() => {\n return this.filter().length > 0;\n });\n pageSize = model<number>(0);\n pageSizes = [10, 20, 30, 50, 100];\n\n skeletonRows = computed(() => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n skeletonCols = computed(() => {\n return Array.from({ length: this.colspan() }, (_, i) => i);\n });\n\n lastPage = computed(() => {\n const isLoading = this.isLoading();\n\n if (!isLoading) {\n return Math.ceil(this.totalItems() / this.currentPageSize());\n }\n\n return 1;\n });\n\n pageChange = output<number>();\n pageSizeChange = output<number>();\n filterChange = output<Record<string, any>>();\n reloadList = output<void>();\n loadMore = output<void>();\n\n constructor() {\n effect(() => this.pageSize.set(this.currentPageSize()));\n effect(() => this.pageSizeChange.emit(this.pageSize()));\n effect(() => this.pageChange.emit(this.currentPage()));\n }\n\n openFilter(data?: FilterData[]) {\n const component = this.componentFilter();\n\n if (!component) {\n return;\n }\n\n this.sideWindow.open(component, {\n data,\n afterClosed: {\n trigger: [],\n callback: (filters: FilterData[]) => {\n this.filter.set(filters);\n\n if (filters.length === 0) {\n this.filterChange.emit({});\n }\n },\n },\n });\n }\n}\n","<div class=\"flex flex-col h-full\">\n <div class=\"datatable-menu-container pl-2 pr-4 w-full flex items-center justify-between gap-2 z-10\">\n <div class=\"datatable-menu flex items-center py-2 px-0.5 opacity-80 gap-2\">\n <div class=\"addicional-options-menu flex items-center opacity-80\">\n <ng-content select=\"[menu]\" />\n </div>\n\n <span class=\"datatable-separator-menu relative top-[-0.10rem] opacity-20\">|</span>\n\n @if (componentFilter()) {\n @if (hasFilter()) {\n <kl-filter\n [filter]=\"filter()\"\n (addFilter)=\"openFilter($event)\"\n (payload)=\"filterChange.emit($event)\"\n (clearFilter)=\"filter.set([])\"\n />\n\n <span class=\"relative top-[-0.10rem] opacity-20\">|</span>\n } @else {\n <button klButton\n size=\"extraSmall\"\n class=\"text-sm font-light\"\n [color]=\"filterBtnColor()\"\n (click)=\"openFilter()\">\n <i class=\"fa-solid fa-filter text-xs\"></i>\n {{translations.btnFilterLabel}}\n </button>\n }\n }\n\n <button class=\"btn btn-outline border-neutral-300 hover:border-neutral-500 dark:border-neutral-700 btn-xs text-sm font-light\"\n (click)=\"reloadList.emit()\">\n <i class=\"fa-solid fa-rotate-right text-xs\"></i>\n {{translations.reloadListTooltip}}\n </button>\n </div>\n\n @if (!withPaginator()) {\n <div class=\"flex items-center justify-end gap-3 text-sm\">\n <span class=\"flex items-center justify-end gap-1 opacity-60\">\n <span class=\"whitespace-nowrap\">{{translations.labelItemsPerPage}}:</span>\n\n <select class=\"select select-md p-0 pl-2 pr-8 h-6 w-auto\" [(ngModel)]=\"pageSize\">\n @for (item of pageSizes; track $index) {\n <option [value]=\"item\">{{ item }}</option>\n }\n </select>\n </span>\n <span class=\"opacity-60\">|</span>\n <span class=\"opacity-60 whitespace-nowrap\">{{totalItemsOnPage()}} de {{totalItems()}}</span>\n </div>\n }\n </div>\n\n <div class=\"datatable-table overflow-x-auto h-auto bg-base-200\">\n <table class=\"table table-sm table-pin-rows\">\n <thead>\n <tr class=\"text-xs overflow-hidden bg-base-200\">\n <ng-content select=\"[head]\" />\n </tr>\n </thead>\n <tbody>\n @if (hasError()) {\n <tr>\n <td [attr.colspan]=\"colspan()\" class=\"text-center\">\n {{translations.errorLoadDataLabel}}\n </td>\n </tr>\n } @else {\n <ng-content select=\"[body]\" />\n\n @if (!withPaginator() && !isLoading() && totalItemsOnPage() < totalItems()) {\n <tr>\n <td [attr.colspan]=\"colspan()\">\n <button\n klButton\n outline\n [color]=\"loadMoreBtnColor()\"\n class=\"w-full\"\n (click)=\"loadMore.emit()\">\n {{translations.loadMoreBtnLabel}}\n </button>\n </td>\n </tr>\n }\n\n @if (isLoading()) {\n @for (row of skeletonRows(); track $index) {\n <tr>\n @for (col of skeletonCols(); track $index) {\n <td><span class=\"block skeleton w-full h-4\"></span></td>\n }\n </tr>\n }\n }\n }\n </tbody>\n </table>\n </div>\n\n @if (withPaginator()) {\n <div class=\"px-4 py-2 bg-base-200 border-t border-neutral-200 dark:border-neutral-700 w-full flex items-center justify-between\">\n <div class=\"flex items-center justify-end gap-3 text-xs\">\n <span class=\"flex items-center justify-end gap-1 opacity-60\">\n <span>{{translations.labelItemsPerPage}}:</span>\n\n <select class=\"select select-sm p-0 pl-2 pr-0 w-15 h-6\" [(ngModel)]=\"pageSize\">\n @for (item of pageSizes; track $index) {\n <option [value]=\"item\">{{ item }}</option>\n }\n </select>\n </span>\n <span class=\"opacity-60\">|</span>\n <span class=\"opacity-60\">{{totalItemsOnPage()}} de {{totalItems()}}</span>\n </div>\n\n <div class=\"flex items-center gap-8\">\n <span class=\"text-xs opacity-60\">{{translations.paginatorPagesFeedback(currentPage(), lastPage())}}</span>\n\n <div class=\"join flex items-center\">\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === 1\"\n (click)=\"pageChange.emit(1)\">\n <i class=\"fa-solid fa-angles-left text-[0.6rem]\"></i>\n </button>\n\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === 1\"\n (click)=\"pageChange.emit(currentPage() - 1)\">\n <i class=\"fa-solid fa-chevron-left text-[0.6rem]\"></i>\n </button>\n\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === lastPage()\"\n (click)=\"pageChange.emit(currentPage() + 1)\">\n <i class=\"fa-solid fa-angle-right text-[0.6rem]\"></i>\n </button>\n\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === lastPage()\"\n (click)=\"pageChange.emit(lastPage())\">\n <i class=\"fa-solid fa-angles-right text-[0.6rem]\"></i>\n </button>\n </div>\n </div>\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"koalarx-ui-shared-components-datatable.mjs","sources":["../../projects/koala-ui/shared/components/datatable/sort-column/ordered-column.state.ts","../../projects/koala-ui/shared/components/datatable/sort-column/sort-header-column.ts","../../projects/koala-ui/shared/components/datatable/sort-column/sort-header-column.html","../../projects/koala-ui/shared/components/datatable/sort-column/sorted-item.ts","../../projects/koala-ui/shared/components/datatable/filter/datatable-filter.ts","../../projects/koala-ui/shared/components/datatable/filter/filter-factory.ts","../../projects/koala-ui/shared/components/datatable/filter/filter.ts","../../projects/koala-ui/shared/components/datatable/filter/filter.html","../../projects/koala-ui/shared/components/datatable/datatable.ts","../../projects/koala-ui/shared/components/datatable/datatable.html","../../projects/koala-ui/shared/components/datatable/koalarx-ui-shared-components-datatable.ts"],"sourcesContent":["import { SortHeaderColumn } from './sort-header-column';\r\n\r\nexport class OrderedColumnState {\r\n static current?: SortHeaderColumn;\r\n}\r\n","import {\n Component,\n effect,\n ElementRef,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport {\n QueryPaginationDirection,\n SortFilterType,\n} from '@koalarx/ui/core/models';\nimport { OrderedColumnState } from './ordered-column.state';\n\n@Component({\n selector: 'kl-sort-header-column',\n templateUrl: './sort-header-column.html',\n})\nexport class SortHeaderColumn {\n orderBy = input.required<string>();\n style = input('');\n defaultDirection = input<QueryPaginationDirection>();\n sortable = output<SortFilterType>();\n elOrderedColumn =\n viewChild<ElementRef<HTMLTableCellElement>>('orderedColumn');\n direction = signal<QueryPaginationDirection | null>(null);\n\n constructor() {\n effect(() => {\n const defaultDirection = this.defaultDirection();\n\n if (defaultDirection) {\n this.direction.set(defaultDirection);\n OrderedColumnState.current = this;\n this.toogleColumnStateOrder('set');\n }\n });\n }\n\n sort() {\n this.direction.update((current) => {\n if (\n OrderedColumnState.current &&\n OrderedColumnState.current.orderBy !== this.orderBy\n ) {\n OrderedColumnState.current.direction.set(null);\n OrderedColumnState.current.toogleColumnStateOrder('unset');\n }\n\n OrderedColumnState.current = this;\n\n let direction: QueryPaginationDirection;\n\n switch (current) {\n case 'asc':\n direction = 'desc';\n break;\n case 'desc':\n default:\n direction = 'asc';\n }\n\n this.toogleColumnStateOrder('set');\n\n this.sortable.emit({\n orderBy: this.orderBy(),\n direction,\n });\n\n return direction;\n });\n }\n\n async toogleColumnStateOrder(state: 'set' | 'unset') {\n const columnElement = this.elOrderedColumn()?.nativeElement.parentElement;\n\n if (!columnElement) {\n return;\n }\n\n if (state === 'set') {\n columnElement.classList.add('ordered-column');\n } else {\n columnElement.classList.remove('ordered-column');\n }\n }\n}\n","<div #orderedColumn [style]=\"style()\" class=\"flex items-center justify-start gap-1 py-2 px-3 cursor-pointer\"\n [class.not-ordered]=\"direction() === null\"\n [class.asc]=\"direction() === 'asc'\"\n [class.desc]=\"direction() === 'desc'\"\n (click)=\"sort()\">\n\n @switch (direction()) {\n @case ('asc') {\n <i class=\"fa-solid fa-arrow-down-short-wide\"></i>\n }\n @case ('desc') {\n <i class=\"fa-solid fa-arrow-down-wide-short\"></i>\n }\n @default {\n <i class=\"fa-solid fa-sort\"></i>\n }\n }\n\n <ng-content />\n</div>\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\nimport { SortFilterType } from '@koalarx/ui/core/models';\n\n@Directive({ selector: 'td[klSortedItem]' })\nexport class SortedItem {\n private readonly elementRef = inject<ElementRef<HTMLTableCellElement>>(\n ElementRef<HTMLTableCellElement>\n );\n\n klSortedItem = input.required<SortFilterType | null>();\n sortedPropName = input.required<string>();\n\n constructor() {\n effect(() => {\n const isSorted = this.klSortedItem()?.orderBy === this.sortedPropName();\n\n this.elementRef.nativeElement.classList.toggle('sorted', isSorted);\n\n if (isSorted) {\n this.elementRef.nativeElement.setAttribute('aria-sort', 'ascending');\n } else {\n this.elementRef.nativeElement.setAttribute('aria-sort', 'descending');\n }\n });\n }\n}\n","import { effect, Injectable, signal } from '@angular/core';\n\nexport interface FilterData {\n templateValue: string;\n propName: string;\n value: any;\n}\n\n@Injectable()\nexport class DatatableFilter {\n private readonly _payload = signal<Record<string, any>>({});\n private readonly _filters = signal<FilterData[]>([]);\n private readonly _clearFilter = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n const filters = this._filters();\n const payload = this.payload();\n\n if (filters.length === 0 && Object.keys(payload).length > 0) {\n this._clearFilter.set(true);\n setTimeout(() => this._clearFilter.set(false));\n return;\n }\n });\n\n effect(() => {\n const filters = this._filters();\n\n this._payload.update(() => {\n const result: any = {};\n\n filters.forEach((filter) => {\n result[filter.propName] = filter.value;\n });\n\n return result;\n });\n });\n }\n\n get payload() {\n return this._payload.asReadonly();\n }\n\n get filters() {\n return this._filters.asReadonly();\n }\n\n get clearFilter() {\n return this._clearFilter.asReadonly();\n }\n\n setFilters(filters: FilterData[]) {\n this._filters.set(filters);\n }\n\n removeFilter(propName: string) {\n this._filters.update((current) =>\n current.filter((filter) => filter.propName !== propName),\n );\n }\n\n clearFilters() {\n this._filters.set([]);\n this._payload.set({});\n\n this._clearFilter.set(true);\n setTimeout(() => this._clearFilter.set(false));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FilterData } from './datatable-filter';\n\n@Injectable()\nexport class FilterFactory {\n private readonly _filter: FilterData[] = [];\n\n get filter() {\n return [...this._filter];\n }\n\n setFilters<T>(\n filter: T,\n templateNameFn: (propName: keyof typeof filter, value: any) => string\n ) {\n const filterData = filter as Record<string, any>;\n\n Object.keys(filterData).forEach((propName) => {\n const value = filterData[propName];\n\n if (value === null || value === undefined || value === '') {\n return;\n }\n\n const templateValue = templateNameFn(propName as any, value);\n this.addFilter({ templateValue, propName, value });\n });\n\n return this._filter;\n }\n\n addFilter(filter: FilterData) {\n this._filter.push(filter);\n }\n\n toPayload(data: FilterData[]): Record<string, any> {\n return data.reduce((acc, curr) => {\n acc[curr.propName] = curr.value;\n return acc;\n }, {} as Record<string, any>);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { Tooltip } from '@koalarx/ui/shared/directives';\nimport { DatatableFilter, FilterData } from './datatable-filter';\nimport { AppConfig } from '@koalarx/ui/core/config';\n\n@Component({\n selector: 'kl-filter',\n templateUrl: './filter.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DatatableFilter],\n imports: [Tooltip],\n})\nexport class Filter {\n readonly translations = inject(AppConfig).translation.datatable;\n\n datatableFilter = inject(DatatableFilter);\n filter = input<FilterData[]>([]);\n payload = output<Record<string, any>>();\n addFilter = output<FilterData[]>();\n clearFilter = output<void>();\n\n constructor() {\n effect(() => this.datatableFilter.setFilters(this.filter()));\n effect(() => this.payload.emit(this.datatableFilter.payload()));\n effect(() => {\n if (this.datatableFilter.clearFilter()) {\n this.clearFilter.emit();\n }\n });\n }\n\n add() {\n this.addFilter.emit(this.datatableFilter.filters());\n }\n}\n","@if (datatableFilter.filters().length > 0) {\n <div class=\"datatable-filter-container px-1 w-full flex items-center gap-3 text-neutral-500 dark:text-neutral-300\">\n\n <button class=\"hover:cursor-pointer\"\n [tooltip]=\"translations.clearFilterTooltip\"\n tooltipPosition=\"right\"\n (click)=\"datatableFilter.clearFilters()\">\n <i class=\"fa-solid fa-filter-circle-xmark text-sm\"></i>\n </button>\n\n <div class=\"flex items-center flex-wrap gap-1\">\n @for (item of datatableFilter.filters(); track $index) {\n <div class=\"badge badge-outline text-xs\">\n <span>{{item.templateValue}}</span>\n <button class=\"hover:cursor-pointer\" (click)=\"datatableFilter.removeFilter(item.propName)\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n }\n </div>\n\n <button class=\"hover:cursor-pointer\"\n [tooltip]=\"translations.addFilterTooltip\"\n tooltipPosition=\"right\"\n (click)=\"add()\">\n <i class=\"fa-solid fa-circle-plus text-sm\"></i>\n </button>\n </div>\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n Type,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { SideWindow } from '@koalarx/ui/shared/components/side-window';\nimport { Button, ButtonColor } from '@koalarx/ui/shared/directives';\nimport { DatatableConfig } from './datatable-config';\nimport { FilterData } from './filter/datatable-filter';\nimport { Filter } from './filter/filter';\n\n@Component({\n selector: 'kl-datatable',\n templateUrl: './datatable.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, Filter, Button],\n})\nexport class Datatable {\n private readonly sideWindow = inject(SideWindow);\n\n readonly translations = inject(AppConfig).translation.datatable;\n\n config = input.required<DatatableConfig>();\n colspan = input.required<number>();\n loadMoreBtnColor = input<ButtonColor>('accent');\n filterBtnColor = input<ButtonColor>('primary');\n componentFilter = input<Type<any>>();\n withPaginator = input(false, { transform: booleanAttribute });\n\n currentPage = computed(() => this.config().currentPage);\n totalItems = computed(() => this.config().totalItems);\n totalItemsOnPage = computed(() => this.config().totalItemsOnPage);\n currentPageSize = computed(() => this.config().currentPageSize);\n isLoading = computed(() => this.config().isLoading);\n hasError = computed(() => this.config().hasError);\n\n filter = signal<FilterData[]>([]);\n hasFilter = computed(() => {\n return this.filter().length > 0;\n });\n pageSize = model<number>(0);\n pageSizes = [10, 20, 30, 50, 100];\n\n skeletonRows = computed(() => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n skeletonCols = computed(() => {\n return Array.from({ length: this.colspan() }, (_, i) => i);\n });\n\n lastPage = computed(() => {\n const isLoading = this.isLoading();\n\n if (!isLoading) {\n return Math.ceil(this.totalItems() / this.currentPageSize());\n }\n\n return 1;\n });\n\n pageChange = output<number>();\n pageSizeChange = output<number>();\n filterChange = output<Record<string, any>>();\n reloadList = output<void>();\n loadMore = output<void>();\n\n constructor() {\n effect(() => this.pageSize.set(this.currentPageSize()));\n effect(() => this.pageSizeChange.emit(this.pageSize()));\n effect(() => this.pageChange.emit(this.currentPage()));\n }\n\n openFilter(data?: FilterData[]) {\n const component = this.componentFilter();\n\n if (!component) {\n return;\n }\n\n this.sideWindow.open(component, {\n data,\n afterClosed: {\n trigger: [],\n callback: (filters: FilterData[]) => {\n this.filter.set(filters);\n\n if (filters.length === 0) {\n this.filterChange.emit({});\n }\n },\n },\n });\n }\n}\n","<div class=\"flex flex-col h-full\">\n <div class=\"datatable-menu-container pl-2 pr-4 w-full flex items-center justify-between gap-2 z-10\">\n <div class=\"datatable-menu flex items-center py-2 px-0.5 opacity-80 gap-2\">\n <div class=\"addicional-options-menu flex items-center opacity-80\">\n <ng-content select=\"[menu]\" />\n </div>\n\n <span class=\"datatable-separator-menu relative top-[-0.10rem] opacity-20\">|</span>\n\n @if (componentFilter()) {\n @if (hasFilter()) {\n <kl-filter\n [filter]=\"filter()\"\n (addFilter)=\"openFilter($event)\"\n (payload)=\"filterChange.emit($event)\"\n (clearFilter)=\"filter.set([])\"\n />\n\n <span class=\"relative top-[-0.10rem] opacity-20\">|</span>\n } @else {\n <button klButton\n size=\"extraSmall\"\n class=\"text-sm font-light\"\n [color]=\"filterBtnColor()\"\n (click)=\"openFilter()\">\n <i class=\"fa-solid fa-filter text-xs\"></i>\n {{translations.btnFilterLabel}}\n </button>\n }\n }\n\n <button class=\"btn btn-outline border-neutral-300 hover:border-neutral-500 dark:border-neutral-700 btn-xs text-sm font-light\"\n (click)=\"reloadList.emit()\">\n <i class=\"fa-solid fa-rotate-right text-xs\"></i>\n {{translations.reloadListTooltip}}\n </button>\n </div>\n\n @if (!withPaginator()) {\n <div class=\"flex items-center justify-end gap-3 text-sm\">\n <span class=\"flex items-center justify-end gap-1 opacity-60\">\n <span class=\"whitespace-nowrap\">{{translations.labelItemsPerPage}}:</span>\n\n <select class=\"select select-md p-0 pl-2 pr-8 h-6 w-auto\" [(ngModel)]=\"pageSize\">\n @for (item of pageSizes; track $index) {\n <option [value]=\"item\">{{ item }}</option>\n }\n </select>\n </span>\n <span class=\"opacity-60\">|</span>\n <span class=\"opacity-60 whitespace-nowrap\">{{totalItemsOnPage()}} de {{totalItems()}}</span>\n </div>\n }\n </div>\n\n <div class=\"datatable-table overflow-x-auto h-auto bg-base-200\">\n <table class=\"table table-sm table-pin-rows\">\n <thead>\n <tr class=\"text-xs overflow-hidden bg-base-200\">\n <ng-content select=\"[head]\" />\n </tr>\n </thead>\n <tbody>\n @if (hasError()) {\n <tr>\n <td [attr.colspan]=\"colspan()\" class=\"text-center\">\n {{translations.errorLoadDataLabel}}\n </td>\n </tr>\n } @else {\n <ng-content select=\"[body]\" />\n\n @if (!withPaginator() && !isLoading() && totalItemsOnPage() < totalItems()) {\n <tr>\n <td [attr.colspan]=\"colspan()\">\n <button\n klButton\n outline\n [color]=\"loadMoreBtnColor()\"\n class=\"w-full\"\n (click)=\"loadMore.emit()\">\n {{translations.loadMoreBtnLabel}}\n </button>\n </td>\n </tr>\n }\n\n @if (isLoading()) {\n @for (row of skeletonRows(); track $index) {\n <tr>\n @for (col of skeletonCols(); track $index) {\n <td><span class=\"block skeleton w-full h-4\"></span></td>\n }\n </tr>\n }\n }\n }\n </tbody>\n </table>\n </div>\n\n @if (withPaginator()) {\n <div class=\"px-4 py-2 bg-base-200 border-t border-neutral-200 dark:border-neutral-700 w-full flex items-center justify-between\">\n <div class=\"flex items-center justify-end gap-3 text-xs\">\n <span class=\"flex items-center justify-end gap-1 opacity-60\">\n <span>{{translations.labelItemsPerPage}}:</span>\n\n <select class=\"select select-sm p-0 pl-2 pr-0 w-15 h-6\" [(ngModel)]=\"pageSize\">\n @for (item of pageSizes; track $index) {\n <option [value]=\"item\">{{ item }}</option>\n }\n </select>\n </span>\n <span class=\"opacity-60\">|</span>\n <span class=\"opacity-60\">{{totalItemsOnPage()}} de {{totalItems()}}</span>\n </div>\n\n <div class=\"flex items-center gap-8\">\n <span class=\"text-xs opacity-60\">{{translations.paginatorPagesFeedback(currentPage(), lastPage())}}</span>\n\n <div class=\"join flex items-center\">\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === 1\"\n (click)=\"pageChange.emit(1)\">\n <i class=\"fa-solid fa-angles-left text-[0.6rem]\"></i>\n </button>\n\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === 1\"\n (click)=\"pageChange.emit(currentPage() - 1)\">\n <i class=\"fa-solid fa-chevron-left text-[0.6rem]\"></i>\n </button>\n\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === lastPage()\"\n (click)=\"pageChange.emit(currentPage() + 1)\">\n <i class=\"fa-solid fa-angle-right text-[0.6rem]\"></i>\n </button>\n\n <button class=\"join-item btn btn-sm\"\n [disabled]=\"currentPage() === lastPage()\"\n (click)=\"pageChange.emit(lastPage())\">\n <i class=\"fa-solid fa-angles-right text-[0.6rem]\"></i>\n </button>\n </div>\n </div>\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}