@bootkit/ng0 0.0.0-alpha.16 → 0.0.0-alpha.18

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 (73) hide show
  1. package/README.md +2 -2
  2. package/common/index.d.ts +60 -4
  3. package/components/list/index.d.ts +127 -0
  4. package/components/select/index.d.ts +120 -0
  5. package/components/table/index.d.ts +68 -12
  6. package/data/index.d.ts +171 -51
  7. package/fesm2022/bootkit-ng0-common.mjs +51 -1
  8. package/fesm2022/bootkit-ng0-common.mjs.map +1 -1
  9. package/fesm2022/bootkit-ng0-components-accordion.mjs +14 -14
  10. package/fesm2022/bootkit-ng0-components-accordion.mjs.map +1 -1
  11. package/fesm2022/bootkit-ng0-components-backdrop.mjs +4 -4
  12. package/fesm2022/bootkit-ng0-components-backdrop.mjs.map +1 -1
  13. package/fesm2022/bootkit-ng0-components-button.mjs +11 -11
  14. package/fesm2022/bootkit-ng0-components-button.mjs.map +1 -1
  15. package/fesm2022/bootkit-ng0-components-card.mjs +12 -12
  16. package/fesm2022/bootkit-ng0-components-card.mjs.map +1 -1
  17. package/fesm2022/bootkit-ng0-components-code.mjs +9 -9
  18. package/fesm2022/bootkit-ng0-components-code.mjs.map +1 -1
  19. package/fesm2022/bootkit-ng0-components-collapse.mjs +14 -14
  20. package/fesm2022/bootkit-ng0-components-collapse.mjs.map +1 -1
  21. package/fesm2022/bootkit-ng0-components-confirmation.mjs +14 -14
  22. package/fesm2022/bootkit-ng0-components-confirmation.mjs.map +1 -1
  23. package/fesm2022/bootkit-ng0-components-form-field.mjs +14 -14
  24. package/fesm2022/bootkit-ng0-components-form-field.mjs.map +1 -1
  25. package/fesm2022/bootkit-ng0-components-list.mjs +331 -0
  26. package/fesm2022/bootkit-ng0-components-list.mjs.map +1 -0
  27. package/fesm2022/bootkit-ng0-components-modal.mjs +13 -13
  28. package/fesm2022/bootkit-ng0-components-modal.mjs.map +1 -1
  29. package/fesm2022/bootkit-ng0-components-nav.mjs +27 -27
  30. package/fesm2022/bootkit-ng0-components-nav.mjs.map +1 -1
  31. package/fesm2022/bootkit-ng0-components-offcanvas.mjs +9 -9
  32. package/fesm2022/bootkit-ng0-components-offcanvas.mjs.map +1 -1
  33. package/fesm2022/bootkit-ng0-components-overlay.mjs.map +1 -1
  34. package/fesm2022/bootkit-ng0-components-pagination.mjs +15 -15
  35. package/fesm2022/bootkit-ng0-components-pagination.mjs.map +1 -1
  36. package/fesm2022/bootkit-ng0-components-popover.mjs +11 -11
  37. package/fesm2022/bootkit-ng0-components-popover.mjs.map +1 -1
  38. package/fesm2022/bootkit-ng0-components-select.mjs +394 -0
  39. package/fesm2022/bootkit-ng0-components-select.mjs.map +1 -0
  40. package/fesm2022/bootkit-ng0-components-sidenav.mjs +21 -21
  41. package/fesm2022/bootkit-ng0-components-sidenav.mjs.map +1 -1
  42. package/fesm2022/bootkit-ng0-components-stepper.mjs +13 -13
  43. package/fesm2022/bootkit-ng0-components-stepper.mjs.map +1 -1
  44. package/fesm2022/bootkit-ng0-components-table.mjs +170 -72
  45. package/fesm2022/bootkit-ng0-components-table.mjs.map +1 -1
  46. package/fesm2022/bootkit-ng0-components-toast.mjs +7 -7
  47. package/fesm2022/bootkit-ng0-components-toast.mjs.map +1 -1
  48. package/fesm2022/bootkit-ng0-components-tooltip.mjs +9 -9
  49. package/fesm2022/bootkit-ng0-components-tooltip.mjs.map +1 -1
  50. package/fesm2022/bootkit-ng0-components-vertical-menu.mjs +26 -26
  51. package/fesm2022/bootkit-ng0-components-vertical-menu.mjs.map +1 -1
  52. package/fesm2022/bootkit-ng0-data.mjs +177 -60
  53. package/fesm2022/bootkit-ng0-data.mjs.map +1 -1
  54. package/fesm2022/bootkit-ng0-date.mjs.map +1 -1
  55. package/fesm2022/bootkit-ng0-file.mjs.map +1 -1
  56. package/fesm2022/bootkit-ng0-form.mjs +220 -150
  57. package/fesm2022/bootkit-ng0-form.mjs.map +1 -1
  58. package/fesm2022/bootkit-ng0-http.mjs +3 -3
  59. package/fesm2022/bootkit-ng0-http.mjs.map +1 -1
  60. package/fesm2022/bootkit-ng0-localization-locales.mjs +20 -0
  61. package/fesm2022/bootkit-ng0-localization-locales.mjs.map +1 -1
  62. package/fesm2022/bootkit-ng0-localization.mjs +100 -35
  63. package/fesm2022/bootkit-ng0-localization.mjs.map +1 -1
  64. package/fesm2022/bootkit-ng0-platform-browser.mjs +7 -7
  65. package/fesm2022/bootkit-ng0-platform-browser.mjs.map +1 -1
  66. package/fesm2022/bootkit-ng0-script.mjs +3 -3
  67. package/fesm2022/bootkit-ng0-script.mjs.map +1 -1
  68. package/fesm2022/bootkit-ng0-security.mjs +15 -15
  69. package/fesm2022/bootkit-ng0-security.mjs.map +1 -1
  70. package/fesm2022/bootkit-ng0.mjs.map +1 -1
  71. package/form/index.d.ts +53 -37
  72. package/localization/index.d.ts +63 -28
  73. package/package.json +13 -5
@@ -10,10 +10,10 @@ class ClipboardService {
10
10
  window.navigator.clipboard.writeText(text);
11
11
  this._writeSubject.next(text);
12
12
  }
13
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ClipboardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
14
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ClipboardService, providedIn: 'root' });
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: ClipboardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
14
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: ClipboardService, providedIn: 'root' });
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ClipboardService, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: ClipboardService, decorators: [{
17
17
  type: Injectable,
18
18
  args: [{
19
19
  providedIn: 'root'
@@ -22,17 +22,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
22
22
 
23
23
  class ClipboardCopyDirective {
24
24
  clipboardService;
25
- value = input(undefined, { alias: 'ng0-clipboard-copy' });
25
+ value = input(undefined, ...(ngDevMode ? [{ debugName: "value", alias: 'ng0-clipboard-copy' }] : [{ alias: 'ng0-clipboard-copy' }]));
26
26
  constructor(clipboardService) {
27
27
  this.clipboardService = clipboardService;
28
28
  }
29
29
  _onHostClick() {
30
30
  this.clipboardService.writeText(this.value());
31
31
  }
32
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ClipboardCopyDirective, deps: [{ token: ClipboardService }], target: i0.ɵɵFactoryTarget.Directive });
33
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: ClipboardCopyDirective, isStandalone: true, selector: "[ng0-clipboard-copy]", inputs: { value: { classPropertyName: "value", publicName: "ng0-clipboard-copy", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "_onHostClick()" } }, ngImport: i0 });
32
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: ClipboardCopyDirective, deps: [{ token: ClipboardService }], target: i0.ɵɵFactoryTarget.Directive });
33
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.1", type: ClipboardCopyDirective, isStandalone: true, selector: "[ng0-clipboard-copy]", inputs: { value: { classPropertyName: "value", publicName: "ng0-clipboard-copy", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "_onHostClick()" } }, ngImport: i0 });
34
34
  }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ClipboardCopyDirective, decorators: [{
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: ClipboardCopyDirective, decorators: [{
36
36
  type: Directive,
37
37
  args: [{
38
38
  selector: '[ng0-clipboard-copy]',
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-platform-browser.mjs","sources":["../../../projects/ng0/platform/browser/clipboard/clipboard.service.ts","../../../projects/ng0/platform/browser/clipboard/clipboard-copy.directive.ts","../../../projects/ng0/platform/browser/bootkit-ng0-platform-browser.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClipboardService {\n private _writeSubject = new Subject<any>;\n public readonly write = this._writeSubject.asObservable();\n\n constructor() { }\n\n public writeText(text: string) {\n window.navigator.clipboard.writeText(text);\n this._writeSubject.next(text);\n }\n}\n","import { Directive, HostListener, input } from '@angular/core';\nimport { ClipboardService } from './clipboard.service';\n\n@Directive({\n selector: '[ng0-clipboard-copy]',\n standalone: true\n})\nexport class ClipboardCopyDirective {\n public value = input<string>(undefined, {alias: 'ng0-clipboard-copy'})\n\n constructor(private clipboardService: ClipboardService) {\n }\n\n \n\n @HostListener('click') private _onHostClick() {\n this.clipboardService.writeText(this.value()!);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ClipboardService"],"mappings":";;;;MAMa,gBAAgB,CAAA;IACnB,aAAa,GAAG,IAAI,OAAY;AACxB,IAAA,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;AAEzD,IAAA,WAAA,GAAA;AAEO,IAAA,SAAS,CAAC,IAAY,EAAA;QAC3B,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;uGARpB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA;;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCEY,sBAAsB,CAAA;AAGb,IAAA,gBAAA;IAFb,KAAK,GAAG,KAAK,CAAS,SAAS,EAAE,EAAC,KAAK,EAAE,oBAAoB,EAAC,CAAC;AAEtE,IAAA,WAAA,CAAoB,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;;IAKL,YAAY,GAAA;QACzC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAG,CAAC;;uGATrC,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE;AACb,iBAAA;kFASgC,YAAY,EAAA,CAAA;sBAA1C,YAAY;uBAAC,OAAO;;;ACfvB;;AAEG;;;;"}
1
+ {"version":3,"file":"bootkit-ng0-platform-browser.mjs","sources":["../../../projects/ng0/platform/browser/clipboard/clipboard.service.ts","../../../projects/ng0/platform/browser/clipboard/clipboard-copy.directive.ts","../../../projects/ng0/platform/browser/bootkit-ng0-platform-browser.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ClipboardService {\r\n private _writeSubject = new Subject<any>;\r\n public readonly write = this._writeSubject.asObservable();\r\n\r\n constructor() { }\r\n\r\n public writeText(text: string) {\r\n window.navigator.clipboard.writeText(text);\r\n this._writeSubject.next(text);\r\n }\r\n}\r\n","import { Directive, HostListener, input } from '@angular/core';\r\nimport { ClipboardService } from './clipboard.service';\r\n\r\n@Directive({\r\n selector: '[ng0-clipboard-copy]',\r\n standalone: true\r\n})\r\nexport class ClipboardCopyDirective {\r\n public value = input<string>(undefined, {alias: 'ng0-clipboard-copy'})\r\n\r\n constructor(private clipboardService: ClipboardService) {\r\n }\r\n\r\n \r\n\r\n @HostListener('click') private _onHostClick() {\r\n this.clipboardService.writeText(this.value()!);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ClipboardService"],"mappings":";;;;MAMa,gBAAgB,CAAA;IACnB,aAAa,GAAG,IAAI,OAAY;AACxB,IAAA,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;AAEzD,IAAA,WAAA,GAAA,EAAgB;AAET,IAAA,SAAS,CAAC,IAAY,EAAA;QAC3B,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/B;uGATW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA;;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCEY,sBAAsB,CAAA;AAGb,IAAA,gBAAA;AAFb,IAAA,KAAK,GAAG,KAAK,CAAS,SAAS,yCAAG,KAAK,EAAE,oBAAoB,EAAA,CAAA,GAAA,CAA5B,EAAC,KAAK,EAAE,oBAAoB,EAAC,GAAC;AAEtE,IAAA,WAAA,CAAoB,gBAAkC,EAAA;QAAlC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IACpC;IAI+B,YAAY,GAAA;QACzC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAG,CAAC;IAChD;uGAVW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE;AACb,iBAAA;kFASgC,YAAY,EAAA,CAAA;sBAA1C,YAAY;uBAAC,OAAO;;;ACfvB;;AAEG;;;;"}
@@ -38,10 +38,10 @@ class ScriptLoader {
38
38
  this._renderer.appendChild(this._document.body, elm);
39
39
  });
40
40
  }
41
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ScriptLoader, deps: [{ token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
42
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ScriptLoader, providedIn: 'root' });
41
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: ScriptLoader, deps: [{ token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
42
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: ScriptLoader, providedIn: 'root' });
43
43
  }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ScriptLoader, decorators: [{
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: ScriptLoader, decorators: [{
45
45
  type: Injectable,
46
46
  args: [{
47
47
  providedIn: 'root'
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-script.mjs","sources":["../../../projects/ng0/script/script-locader.ts","../../../projects/ng0/script/bootkit-ng0-script.ts"],"sourcesContent":["import { Renderer2, Inject, Injectable, RendererFactory2 } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ScriptDefinition, ScriptDefinitionObject } from './types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ScriptLoader {\n private _renderer: Renderer2;\n private _loadedScripts = new Map<string, any>();\n\n constructor(\n _rendererFactory: RendererFactory2,\n @Inject(DOCUMENT) private _document: Document,\n ) {\n this._renderer = _rendererFactory.createRenderer(null, null);\n }\n\n public async loadAll(...scripts: ScriptDefinition[]) {\n let r: { script: ScriptDefinition, element: any }[] = [];\n for (let s of scripts) {\n r.push({ script: s, element: await this.load(s) })\n }\n\n return r;\n }\n\n public load(script: ScriptDefinition): Promise<any> {\n return new Promise<string>((resolve, reject) => {\n\n let d: ScriptDefinitionObject = typeof script == 'string' ? { src: script } : script;\n\n if (this._loadedScripts.has(d.src)) {\n return resolve(this._loadedScripts.get(d.src));\n }\n\n const elm = this._renderer.createElement('script');\n elm.type = 'text/javascript';\n elm.src = d.src;\n\n // if (Array.isArray(d.attrs)) {\n // d.attrs.forEach(attr => {\n // this._renderer.setAttribute(elm, attr, d.attrs[attr]);\n // });\n // }\n\n elm.onload = (res: any) => {\n this._loadedScripts.set(d.src, elm);\n return resolve(elm);\n }\n\n this._renderer.appendChild(this._document.body, elm);\n });\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAOa,YAAY,CAAA;AAMK,IAAA,SAAA;AALpB,IAAA,SAAS;AACT,IAAA,cAAc,GAAG,IAAI,GAAG,EAAe;IAE/C,WACE,CAAA,gBAAkC,EACR,SAAmB,EAAA;QAAnB,IAAS,CAAA,SAAA,GAAT,SAAS;QAEnC,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;;AAGvD,IAAA,MAAM,OAAO,CAAC,GAAG,OAA2B,EAAA;QACjD,IAAI,CAAC,GAAiD,EAAE;AACxD,QAAA,KAAK,IAAI,CAAC,IAAI,OAAO,EAAE;AACrB,YAAA,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;;AAGpD,QAAA,OAAO,CAAC;;AAGH,IAAA,IAAI,CAAC,MAAwB,EAAA;QAClC,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,KAAI;AAE7C,YAAA,IAAI,CAAC,GAA2B,OAAO,MAAM,IAAI,QAAQ,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM;YAEpF,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAClC,gBAAA,OAAO,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;;YAGhD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC;AAClD,YAAA,GAAG,CAAC,IAAI,GAAG,iBAAiB;AAC5B,YAAA,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG;;;;;;AAQf,YAAA,GAAG,CAAC,MAAM,GAAG,CAAC,GAAQ,KAAI;gBACxB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,gBAAA,OAAO,OAAO,CAAC,GAAG,CAAC;AACrB,aAAC;AAED,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC;AACtD,SAAC,CAAC;;AA7CO,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,kDAMb,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AANP,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAOI,MAAM;2BAAC,QAAQ;;;ACbpB;;AAEG;;;;"}
1
+ {"version":3,"file":"bootkit-ng0-script.mjs","sources":["../../../projects/ng0/script/script-locader.ts","../../../projects/ng0/script/bootkit-ng0-script.ts"],"sourcesContent":["import { Renderer2, Inject, Injectable, RendererFactory2 } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { ScriptDefinition, ScriptDefinitionObject } from './types';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ScriptLoader {\r\n private _renderer: Renderer2;\r\n private _loadedScripts = new Map<string, any>();\r\n\r\n constructor(\r\n _rendererFactory: RendererFactory2,\r\n @Inject(DOCUMENT) private _document: Document,\r\n ) {\r\n this._renderer = _rendererFactory.createRenderer(null, null);\r\n }\r\n\r\n public async loadAll(...scripts: ScriptDefinition[]) {\r\n let r: { script: ScriptDefinition, element: any }[] = [];\r\n for (let s of scripts) {\r\n r.push({ script: s, element: await this.load(s) })\r\n }\r\n\r\n return r;\r\n }\r\n\r\n public load(script: ScriptDefinition): Promise<any> {\r\n return new Promise<string>((resolve, reject) => {\r\n\r\n let d: ScriptDefinitionObject = typeof script == 'string' ? { src: script } : script;\r\n\r\n if (this._loadedScripts.has(d.src)) {\r\n return resolve(this._loadedScripts.get(d.src));\r\n }\r\n\r\n const elm = this._renderer.createElement('script');\r\n elm.type = 'text/javascript';\r\n elm.src = d.src;\r\n\r\n // if (Array.isArray(d.attrs)) {\r\n // d.attrs.forEach(attr => {\r\n // this._renderer.setAttribute(elm, attr, d.attrs[attr]);\r\n // });\r\n // }\r\n\r\n elm.onload = (res: any) => {\r\n this._loadedScripts.set(d.src, elm);\r\n return resolve(elm);\r\n }\r\n\r\n this._renderer.appendChild(this._document.body, elm);\r\n });\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAOa,YAAY,CAAA;AAMK,IAAA,SAAA;AALpB,IAAA,SAAS;AACT,IAAA,cAAc,GAAG,IAAI,GAAG,EAAe;IAE/C,WAAA,CACE,gBAAkC,EACR,SAAmB,EAAA;QAAnB,IAAA,CAAA,SAAS,GAAT,SAAS;QAEnC,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;IAC9D;AAEO,IAAA,MAAM,OAAO,CAAC,GAAG,OAA2B,EAAA;QACjD,IAAI,CAAC,GAAiD,EAAE;AACxD,QAAA,KAAK,IAAI,CAAC,IAAI,OAAO,EAAE;AACrB,YAAA,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD;AAEA,QAAA,OAAO,CAAC;IACV;AAEO,IAAA,IAAI,CAAC,MAAwB,EAAA;QAClC,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,KAAI;AAE7C,YAAA,IAAI,CAAC,GAA2B,OAAO,MAAM,IAAI,QAAQ,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM;YAEpF,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAClC,gBAAA,OAAO,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChD;YAEA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC;AAClD,YAAA,GAAG,CAAC,IAAI,GAAG,iBAAiB;AAC5B,YAAA,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG;;;;;;AAQf,YAAA,GAAG,CAAC,MAAM,GAAG,CAAC,GAAQ,KAAI;gBACxB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,gBAAA,OAAO,OAAO,CAAC,GAAG,CAAC;AACrB,YAAA,CAAC;AAED,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC;AACtD,QAAA,CAAC,CAAC;IACJ;AA9CW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,kDAMb,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AANP,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAOI,MAAM;2BAAC,QAAQ;;;ACbpB;;AAEG;;;;"}
@@ -35,19 +35,19 @@ class User {
35
35
  }
36
36
 
37
37
  class UserStore {
38
- user = signal(undefined);
38
+ user = signal(undefined, ...(ngDevMode ? [{ debugName: "user" }] : []));
39
39
  constructor() {
40
40
  }
41
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: UserStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
42
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: UserStore, providedIn: 'root' });
41
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: UserStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
42
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: UserStore, providedIn: 'root' });
43
43
  }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: UserStore, decorators: [{
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: UserStore, decorators: [{
45
45
  type: Injectable,
46
46
  args: [{ providedIn: 'root' }]
47
47
  }], ctorParameters: () => [] });
48
48
 
49
49
  class UserDirective {
50
- claim = input(undefined, { alias: 'ng0Claim' });
50
+ claim = input(undefined, ...(ngDevMode ? [{ debugName: "claim", alias: 'ng0Claim' }] : [{ alias: 'ng0Claim' }]));
51
51
  _viewCreated = false;
52
52
  constructor(templateRef, viewContainer, userStore) {
53
53
  effect(() => {
@@ -64,10 +64,10 @@ class UserDirective {
64
64
  }
65
65
  });
66
66
  }
67
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: UserDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: UserStore }], target: i0.ɵɵFactoryTarget.Directive });
68
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: UserDirective, isStandalone: true, selector: "[ng0Claim]", inputs: { claim: { classPropertyName: "claim", publicName: "ng0Claim", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["ng0Claim"], ngImport: i0 });
67
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: UserDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: UserStore }], target: i0.ɵɵFactoryTarget.Directive });
68
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.1", type: UserDirective, isStandalone: true, selector: "[ng0Claim]", inputs: { claim: { classPropertyName: "claim", publicName: "ng0Claim", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["ng0Claim"], ngImport: i0 });
69
69
  }
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: UserDirective, decorators: [{
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: UserDirective, decorators: [{
71
71
  type: Directive,
72
72
  args: [{
73
73
  selector: '[ng0Claim]',
@@ -91,10 +91,10 @@ class GuestUserDirective {
91
91
  }
92
92
  });
93
93
  }
94
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: GuestUserDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: UserStore }], target: i0.ɵɵFactoryTarget.Directive });
95
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.6", type: GuestUserDirective, isStandalone: true, selector: "[ng0GuestUser]", exportAs: ["ng0GuestUser"], ngImport: i0 });
94
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: GuestUserDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: UserStore }], target: i0.ɵɵFactoryTarget.Directive });
95
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.1", type: GuestUserDirective, isStandalone: true, selector: "[ng0GuestUser]", exportAs: ["ng0GuestUser"], ngImport: i0 });
96
96
  }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: GuestUserDirective, decorators: [{
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: GuestUserDirective, decorators: [{
98
98
  type: Directive,
99
99
  args: [{
100
100
  selector: '[ng0GuestUser]',
@@ -108,13 +108,13 @@ const items = [
108
108
  GuestUserDirective
109
109
  ];
110
110
  class SecurityModule {
111
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SecurityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
112
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: SecurityModule, imports: [UserDirective,
111
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: SecurityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
112
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.1", ngImport: i0, type: SecurityModule, imports: [UserDirective,
113
113
  GuestUserDirective], exports: [UserDirective,
114
114
  GuestUserDirective] });
115
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SecurityModule });
115
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: SecurityModule });
116
116
  }
117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SecurityModule, decorators: [{
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: SecurityModule, decorators: [{
118
118
  type: NgModule,
119
119
  args: [{
120
120
  imports: items,
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-security.mjs","sources":["../../../projects/ng0/security/user.ts","../../../projects/ng0/security/user-store.ts","../../../projects/ng0/security/claim.directive.ts","../../../projects/ng0/security/guest-user.directive.ts","../../../projects/ng0/security/security.module.ts","../../../projects/ng0/security/public-api.ts","../../../projects/ng0/security/bootkit-ng0-security.ts"],"sourcesContent":["import { ClaimLike, ClaimObject } from '@bootkit/ng0/common';\n\n/** User */\nexport class User {\n constructor(public readonly claims: string[]) {\n }\n\n public hasClaims(claims: string[]): boolean {\n return claims.every(x => this.claims.some(y => x === y));\n }\n\n public hasAnyClaim(claims: string[]): boolean {\n return claims.length == 0 || claims.some(x => this.claims.some(y => x === y));\n }\n\n public hasClaim(claim: ClaimLike): boolean {\n var type = typeof claim;\n if (type === 'string') {\n return this.claims.some(x => x === claim);\n }\n\n if (type === 'object') {\n const co = claim as ClaimObject;\n if (co?.any && co?.all) {\n throw Error('Setting \"any\" and \"all\" at the same time is not valid.');\n }\n\n if (Array.isArray(co?.any)) {\n return this.hasAnyClaim(co.any);\n }\n if (Array.isArray(co?.all)) {\n return this.hasClaims(co.all);\n }\n }\n\n throw Error('Invalid claim');\n }\n}\n","import { User } from './user';\nimport { Injectable, signal } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class UserStore<U extends User = User> {\n public readonly user = signal<U | null | undefined>(undefined);\n\n constructor() {\n }\n}","import { Directive, TemplateRef, ViewContainerRef, input, effect } from '@angular/core';\n\nimport { UserStore } from './user-store';\nimport { ClaimLike } from '@bootkit/ng0/common';\n\n@Directive({\n selector: '[ng0Claim]',\n exportAs: 'ng0Claim',\n standalone: true\n})\nexport class UserDirective {\n public claim = input<ClaimLike | null | undefined>(undefined, { alias: 'ng0Claim' });\n private _viewCreated = false;\n\n constructor(\n templateRef: TemplateRef<any>,\n viewContainer: ViewContainerRef,\n userStore: UserStore,\n ) {\n effect(() => {\n let claim = this.claim();\n let user = userStore.user();\n let show = !user ? false : (claim == undefined ? true : user.hasClaim(claim))\n\n if (show && !this._viewCreated) {\n viewContainer.createEmbeddedView(templateRef);\n this._viewCreated = true;\n } else if (!show && this._viewCreated) {\n viewContainer.clear();\n this._viewCreated = false;\n }\n })\n }\n}\n","import { Directive, TemplateRef, ViewContainerRef, effect } from '@angular/core';\nimport { UserStore } from './user-store';\n\n@Directive({\n selector: '[ng0GuestUser]',\n exportAs: 'ng0GuestUser',\n standalone: true\n})\nexport class GuestUserDirective {\n private _created = false;\n\n constructor(\n templateRef: TemplateRef<any>,\n viewContainer: ViewContainerRef,\n userStore: UserStore,\n ) {\n effect(() => {\n let show = userStore.user() == undefined\n\n if (show && !this._created) {\n viewContainer.createEmbeddedView(templateRef);\n this._created = true;\n } else if (!show && this._created) {\n viewContainer.clear();\n this._created = false;\n }\n })\n }\n}\n","import { NgModule } from '@angular/core';\nimport { UserDirective } from './claim.directive';\nimport { GuestUserDirective } from './guest-user.directive';\n\nconst items = [\n UserDirective,\n GuestUserDirective\n]\n\n@NgModule({\n imports: items,\n exports: items\n})\nexport class SecurityModule { }\n","// export * from './types';\nexport * from './user';\nexport * from './user-store';\nexport * from './claim.directive';\nexport * from './guest-user.directive';\nexport * from './security.module';\n ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.UserStore"],"mappings":"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"}
1
+ {"version":3,"file":"bootkit-ng0-security.mjs","sources":["../../../projects/ng0/security/user.ts","../../../projects/ng0/security/user-store.ts","../../../projects/ng0/security/claim.directive.ts","../../../projects/ng0/security/guest-user.directive.ts","../../../projects/ng0/security/security.module.ts","../../../projects/ng0/security/public-api.ts","../../../projects/ng0/security/bootkit-ng0-security.ts"],"sourcesContent":["import { ClaimLike, ClaimObject } from '@bootkit/ng0/common';\r\n\r\n/** User */\r\nexport class User {\r\n constructor(public readonly claims: string[]) {\r\n }\r\n\r\n public hasClaims(claims: string[]): boolean {\r\n return claims.every(x => this.claims.some(y => x === y));\r\n }\r\n\r\n public hasAnyClaim(claims: string[]): boolean {\r\n return claims.length == 0 || claims.some(x => this.claims.some(y => x === y));\r\n }\r\n\r\n public hasClaim(claim: ClaimLike): boolean {\r\n var type = typeof claim;\r\n if (type === 'string') {\r\n return this.claims.some(x => x === claim);\r\n }\r\n\r\n if (type === 'object') {\r\n const co = claim as ClaimObject;\r\n if (co?.any && co?.all) {\r\n throw Error('Setting \"any\" and \"all\" at the same time is not valid.');\r\n }\r\n\r\n if (Array.isArray(co?.any)) {\r\n return this.hasAnyClaim(co.any);\r\n }\r\n if (Array.isArray(co?.all)) {\r\n return this.hasClaims(co.all);\r\n }\r\n }\r\n\r\n throw Error('Invalid claim');\r\n }\r\n}\r\n","import { User } from './user';\r\nimport { Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class UserStore<U extends User = User> {\r\n public readonly user = signal<U | null | undefined>(undefined);\r\n\r\n constructor() {\r\n }\r\n}","import { Directive, TemplateRef, ViewContainerRef, input, effect } from '@angular/core';\r\n\r\nimport { UserStore } from './user-store';\r\nimport { ClaimLike } from '@bootkit/ng0/common';\r\n\r\n@Directive({\r\n selector: '[ng0Claim]',\r\n exportAs: 'ng0Claim',\r\n standalone: true\r\n})\r\nexport class UserDirective {\r\n public claim = input<ClaimLike | null | undefined>(undefined, { alias: 'ng0Claim' });\r\n private _viewCreated = false;\r\n\r\n constructor(\r\n templateRef: TemplateRef<any>,\r\n viewContainer: ViewContainerRef,\r\n userStore: UserStore,\r\n ) {\r\n effect(() => {\r\n let claim = this.claim();\r\n let user = userStore.user();\r\n let show = !user ? false : (claim == undefined ? true : user.hasClaim(claim))\r\n\r\n if (show && !this._viewCreated) {\r\n viewContainer.createEmbeddedView(templateRef);\r\n this._viewCreated = true;\r\n } else if (!show && this._viewCreated) {\r\n viewContainer.clear();\r\n this._viewCreated = false;\r\n }\r\n })\r\n }\r\n}\r\n","import { Directive, TemplateRef, ViewContainerRef, effect } from '@angular/core';\r\nimport { UserStore } from './user-store';\r\n\r\n@Directive({\r\n selector: '[ng0GuestUser]',\r\n exportAs: 'ng0GuestUser',\r\n standalone: true\r\n})\r\nexport class GuestUserDirective {\r\n private _created = false;\r\n\r\n constructor(\r\n templateRef: TemplateRef<any>,\r\n viewContainer: ViewContainerRef,\r\n userStore: UserStore,\r\n ) {\r\n effect(() => {\r\n let show = userStore.user() == undefined\r\n\r\n if (show && !this._created) {\r\n viewContainer.createEmbeddedView(templateRef);\r\n this._created = true;\r\n } else if (!show && this._created) {\r\n viewContainer.clear();\r\n this._created = false;\r\n }\r\n })\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { UserDirective } from './claim.directive';\r\nimport { GuestUserDirective } from './guest-user.directive';\r\n\r\nconst items = [\r\n UserDirective,\r\n GuestUserDirective\r\n]\r\n\r\n@NgModule({\r\n imports: items,\r\n exports: items\r\n})\r\nexport class SecurityModule { }\r\n","// export * from './types';\r\nexport * from './user';\r\nexport * from './user-store';\r\nexport * from './claim.directive';\r\nexport * from './guest-user.directive';\r\nexport * from './security.module';\r\n ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.UserStore"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0.mjs","sources":["../../../projects/ng0/src/lib/index.ts","../../../projects/ng0/src/public-api.ts","../../../projects/ng0/src/bootkit-ng0.ts"],"sourcesContent":["export * from './types';\n \nexport const LibName = 'bootkit/angular-pro';","/*\n * Public API Surface of bootkit\n */\n\nexport * from './lib';\n \n \n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAEO,MAAM,OAAO,GAAG;;ACFvB;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"bootkit-ng0.mjs","sources":["../../../projects/ng0/src/lib/index.ts","../../../projects/ng0/src/public-api.ts","../../../projects/ng0/src/bootkit-ng0.ts"],"sourcesContent":["export * from './types';\r\n \r\nexport const LibName = 'bootkit/angular-pro';","/*\r\n * Public API Surface of bootkit\r\n */\r\n\r\nexport * from './lib';\r\n \r\n \r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAEO,MAAM,OAAO,GAAG;;ACFvB;;AAEG;;ACFH;;AAEG;;;;"}
package/form/index.d.ts CHANGED
@@ -1,41 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { OnInit, OnChanges, ElementRef, SimpleChanges, Renderer2 } from '@angular/core';
3
- import { Validator, AbstractControl, FormControl, ValidationErrors, ValidatorFn, ControlValueAccessor } from '@angular/forms';
4
-
5
- declare class EqualWithValidatorDirective implements Validator {
6
- targetValue?: string;
7
- inequalityMessage?: string;
8
- constructor();
9
- validate(control: AbstractControl): {
10
- [key: string]: any;
11
- } | null;
12
- static ɵfac: i0.ɵɵFactoryDeclaration<EqualWithValidatorDirective, never>;
13
- static ɵdir: i0.ɵɵDirectiveDeclaration<EqualWithValidatorDirective, "[ng0EqualWith]", ["ng0EqualWith"], { "targetValue": { "alias": "ng0EqualWith"; "required": false; }; "inequalityMessage": { "alias": "inequalityMessage"; "required": false; }; }, {}, never, never, true, never>;
14
- }
15
-
16
- declare class UrlValidatorDirective implements Validator {
17
- /** Directive is enabled or disabled */
18
- iscUrl?: boolean | string;
19
- validate(control: FormControl): ValidationErrors | null;
20
- static ɵfac: i0.ɵɵFactoryDeclaration<UrlValidatorDirective, never>;
21
- static ɵdir: i0.ɵɵDirectiveDeclaration<UrlValidatorDirective, "input[ng0Url]", ["ng0Url"], { "iscUrl": { "alias": "iscUrl"; "required": false; }; }, {}, never, never, true, never>;
22
- }
23
-
24
- declare class CustomValidatorDirective implements Validator {
25
- validator: i0.InputSignal<(value: any) => ValidationErrors | null>;
26
- constructor();
27
- validate(control: AbstractControl): ValidationErrors | null;
28
- static ɵfac: i0.ɵɵFactoryDeclaration<CustomValidatorDirective, never>;
29
- static ɵdir: i0.ɵɵDirectiveDeclaration<CustomValidatorDirective, "[ng0CustomValidator]", ["ng0CustomValidator"], { "validator": { "alias": "ng0CustomValidator"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
30
- }
31
-
32
- declare class ValidationModule {
33
- static ɵfac: i0.ɵɵFactoryDeclaration<ValidationModule, never>;
34
- static ɵmod: i0.ɵɵNgModuleDeclaration<ValidationModule, never, [typeof EqualWithValidatorDirective, typeof UrlValidatorDirective, typeof CustomValidatorDirective], [typeof EqualWithValidatorDirective, typeof UrlValidatorDirective, typeof CustomValidatorDirective]>;
35
- static ɵinj: i0.ɵɵInjectorDeclaration<ValidationModule>;
36
- }
37
-
38
- declare function equalWithValidator(targetValue?: string, inequalityMessage?: string): ValidatorFn;
3
+ import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors, FormControl, ValidatorFn } from '@angular/forms';
39
4
 
40
5
  declare class FocusDirective implements OnInit, OnChanges {
41
6
  private elementRef;
@@ -88,4 +53,55 @@ declare class NumberDirective implements ControlValueAccessor {
88
53
  static ɵdir: i0.ɵɵDirectiveDeclaration<NumberDirective, "[ng0Number]", never, { "minFractionDigits": { "alias": "minFractionDigits"; "required": false; "isSignal": true; }; "maxFractionDigits": { "alias": "maxFractionDigits"; "required": false; "isSignal": true; }; "useGrouping": { "alias": "useGrouping"; "required": false; "isSignal": true; }; "numberType": { "alias": "numberType"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
89
54
  }
90
55
 
91
- export { CustomValidatorDirective, EqualWithValidatorDirective, FocusDirective, NumberDirective, UrlValidatorDirective, ValidationModule, equalWithValidator };
56
+ /** Min validator */
57
+ declare class MinValidatorDirective implements Validator {
58
+ min: i0.InputSignalWithTransform<number, string | number | null | undefined>;
59
+ validate(control: AbstractControl): ValidationErrors | null;
60
+ static ɵfac: i0.ɵɵFactoryDeclaration<MinValidatorDirective, never>;
61
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MinValidatorDirective, "input[type=text][ng0Number][min]", ["ng0Min"], { "min": { "alias": "min"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
62
+ }
63
+
64
+ /** Max validator */
65
+ declare class MaxValidatorDirective implements Validator {
66
+ max: i0.InputSignalWithTransform<number, string | number | null | undefined>;
67
+ validate(control: AbstractControl): ValidationErrors | null;
68
+ static ɵfac: i0.ɵɵFactoryDeclaration<MaxValidatorDirective, never>;
69
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MaxValidatorDirective, "input[type=text][ng0Number][max]", ["ng0Max"], { "max": { "alias": "max"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
70
+ }
71
+
72
+ declare class EqualWithValidatorDirective implements Validator {
73
+ targetValue?: string;
74
+ inequalityMessage?: string;
75
+ constructor();
76
+ validate(control: AbstractControl): {
77
+ [key: string]: any;
78
+ } | null;
79
+ static ɵfac: i0.ɵɵFactoryDeclaration<EqualWithValidatorDirective, never>;
80
+ static ɵdir: i0.ɵɵDirectiveDeclaration<EqualWithValidatorDirective, "[ng0EqualWith]", ["ng0EqualWith"], { "targetValue": { "alias": "ng0EqualWith"; "required": false; }; "inequalityMessage": { "alias": "inequalityMessage"; "required": false; }; }, {}, never, never, true, never>;
81
+ }
82
+
83
+ declare class UrlValidatorDirective implements Validator {
84
+ /** Directive is enabled or disabled */
85
+ iscUrl?: boolean | string;
86
+ validate(control: FormControl): ValidationErrors | null;
87
+ static ɵfac: i0.ɵɵFactoryDeclaration<UrlValidatorDirective, never>;
88
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UrlValidatorDirective, "input[ng0Url]", ["ng0Url"], { "iscUrl": { "alias": "iscUrl"; "required": false; }; }, {}, never, never, true, never>;
89
+ }
90
+
91
+ declare class CustomValidatorDirective implements Validator {
92
+ validator: i0.InputSignal<(value: any) => ValidationErrors | null>;
93
+ constructor();
94
+ validate(control: AbstractControl): ValidationErrors | null;
95
+ static ɵfac: i0.ɵɵFactoryDeclaration<CustomValidatorDirective, never>;
96
+ static ɵdir: i0.ɵɵDirectiveDeclaration<CustomValidatorDirective, "[ng0CustomValidator]", ["ng0CustomValidator"], { "validator": { "alias": "ng0CustomValidator"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
97
+ }
98
+
99
+ declare class FormModule {
100
+ static ɵfac: i0.ɵɵFactoryDeclaration<FormModule, never>;
101
+ static ɵmod: i0.ɵɵNgModuleDeclaration<FormModule, never, [typeof NumberDirective, typeof MinValidatorDirective, typeof MaxValidatorDirective, typeof EqualWithValidatorDirective, typeof UrlValidatorDirective, typeof CustomValidatorDirective], [typeof NumberDirective, typeof MinValidatorDirective, typeof MaxValidatorDirective, typeof EqualWithValidatorDirective, typeof UrlValidatorDirective, typeof CustomValidatorDirective]>;
102
+ static ɵinj: i0.ɵɵInjectorDeclaration<FormModule>;
103
+ }
104
+
105
+ declare function equalWithValidator(targetValue?: string, inequalityMessage?: string): ValidatorFn;
106
+
107
+ export { CustomValidatorDirective, EqualWithValidatorDirective, FocusDirective, FormModule, MaxValidatorDirective, MinValidatorDirective, NumberDirective, UrlValidatorDirective, equalWithValidator };
@@ -2,6 +2,21 @@ import * as i0 from '@angular/core';
2
2
  import { InjectionToken, PipeTransform } from '@angular/core';
3
3
  import * as rxjs from 'rxjs';
4
4
 
5
+ /**
6
+ * Format function type.
7
+ * @param item The item to format.
8
+ * @returns The formatted string.
9
+ */
10
+ type ValueFormatterFunction = (value: any, ...options: any[]) => string;
11
+ type ValueFormatterLike = ValueFormatterFunction | string;
12
+ /**
13
+ * Default format function.
14
+ * @param value The item to format.
15
+ * @returns The formatted string.
16
+ */
17
+ declare function defaultValueFormatter(value: any): string;
18
+ declare function ValueFormatterAttribute(locale?: Locale): ((v: ValueFormatterLike) => ValueFormatterFunction);
19
+
5
20
  /** Locale dictionary */
6
21
  type LocaleDictionary = {
7
22
  [key: string]: string;
@@ -17,6 +32,28 @@ type LocaleValidationErrorTranslator = (error: any) => string;
17
32
  type LocaleValidationErrorTranslators = {
18
33
  [key: string]: LocaleValidationErrorTranslator;
19
34
  };
35
+ /**
36
+ * A function to format the paging info of a table.
37
+ *
38
+ */
39
+ type TableComponentPagingFormatter = (info: {
40
+ /**
41
+ * The first record in the current page.
42
+ */
43
+ firstRecord: number;
44
+ /**
45
+ * The last record in the current page.
46
+ */
47
+ lastRecord: number;
48
+ /**
49
+ * The total number of records.
50
+ */
51
+ totalRecords?: number;
52
+ /**
53
+ * The current page index.
54
+ */
55
+ currentPage: number;
56
+ }) => string;
20
57
  /**
21
58
  * Locale definition
22
59
  */
@@ -54,30 +91,24 @@ interface LocaleDefinition {
54
91
  */
55
92
  pagingInfo?: TableComponentPagingFormatter;
56
93
  };
94
+ select?: {
95
+ placeholder?: string;
96
+ };
97
+ };
98
+ formatters?: {
99
+ boolean?: {
100
+ [booleanKind: string]: string[];
101
+ };
102
+ enum?: {
103
+ [enumName: string]: {
104
+ [enumValue: string]: string;
105
+ };
106
+ };
107
+ custom?: {
108
+ [formatterName: string]: ValueFormatterFunction;
109
+ };
57
110
  };
58
111
  }
59
- /**
60
- * A function to format the paging info of a table.
61
- *
62
- */
63
- type TableComponentPagingFormatter = (info: {
64
- /**
65
- * The first record in the current page.
66
- */
67
- firstRecord: number;
68
- /**
69
- * The last record in the current page.
70
- */
71
- lastRecord: number;
72
- /**
73
- * The total number of records.
74
- */
75
- totalRecords?: number;
76
- /**
77
- * The current page index.
78
- */
79
- currentPage: number;
80
- }) => string;
81
112
 
82
113
  declare class LocalizationService {
83
114
  private _locales;
@@ -99,7 +130,7 @@ declare class LocalizationService {
99
130
  static ɵprov: i0.ɵɵInjectableDeclaration<LocalizationService>;
100
131
  }
101
132
 
102
- declare const LOCALE: InjectionToken<LocalizationService | Locale>;
133
+ declare const LOCALE: InjectionToken<Locale | LocalizationService>;
103
134
  interface TranslatedValidationError {
104
135
  /** Error key */
105
136
  key: string;
@@ -133,9 +164,7 @@ declare class Locale {
133
164
  * Translates an enum value
134
165
  * @param enumName The name of the enum
135
166
  * @param enumValue The value of the enum to translate
136
- * @param nullValueKey
137
- * @param returnEnumAsFallback
138
- * @param fallbackKey
167
+ * @param fallback
139
168
  * @returns The translated string or the enum value itself if not found
140
169
  */
141
170
  translateEnum(enumName: string, enumValue: string | number | null | undefined, fallback?: string): string | undefined;
@@ -167,6 +196,12 @@ declare class Locale {
167
196
  * @returns Formatted date string based on the locale
168
197
  */
169
198
  formatDate(date: Date | string | number, format?: string): string;
199
+ /**
200
+ * Returns a formatter function by its name and parameters.
201
+ * @param format The format string in the form of "formatterName:param1:param2:..."
202
+ * @returns A FormatFunction
203
+ */
204
+ getFormatter(format: string): ValueFormatterFunction;
170
205
  }
171
206
 
172
207
  /**
@@ -266,5 +301,5 @@ declare class LocalizationModule {
266
301
  static ɵinj: i0.ɵɵInjectorDeclaration<LocalizationModule>;
267
302
  }
268
303
 
269
- export { DatePipe, LOCALE, Locale, LocalizationModule, LocalizationService, LocalizeBooleanPipe, LocalizeDatePipe, LocalizeEnumPipe, LocalizePipe, TranslateBooleanPipe, TranslateEnumPipe, TranslatePipe };
270
- export type { LocaleChangeEvent, LocaleDefinition, LocaleDictionary, LocaleEnums, LocaleValidationErrorTranslator, LocaleValidationErrorTranslators, TableComponentPagingFormatter, TranslatedValidationError };
304
+ export { DatePipe, LOCALE, Locale, LocalizationModule, LocalizationService, LocalizeBooleanPipe, LocalizeDatePipe, LocalizeEnumPipe, LocalizePipe, TranslateBooleanPipe, TranslateEnumPipe, TranslatePipe, ValueFormatterAttribute, defaultValueFormatter };
305
+ export type { LocaleChangeEvent, LocaleDefinition, LocaleDictionary, LocaleEnums, LocaleValidationErrorTranslator, LocaleValidationErrorTranslators, TableComponentPagingFormatter, TranslatedValidationError, ValueFormatterFunction, ValueFormatterLike };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bootkit/ng0",
3
- "version": "0.0.0-alpha.16",
3
+ "version": "0.0.0-alpha.18",
4
4
  "description": "Angular+Bootstrap Component Library",
5
5
  "homepage": "https://bootkitlib.github.io/",
6
6
  "author": "BootKit",
@@ -35,6 +35,10 @@
35
35
  "types": "./index.d.ts",
36
36
  "default": "./fesm2022/bootkit-ng0.mjs"
37
37
  },
38
+ "./common": {
39
+ "types": "./common/index.d.ts",
40
+ "default": "./fesm2022/bootkit-ng0-common.mjs"
41
+ },
38
42
  "./data": {
39
43
  "types": "./data/index.d.ts",
40
44
  "default": "./fesm2022/bootkit-ng0-data.mjs"
@@ -47,10 +51,6 @@
47
51
  "types": "./file/index.d.ts",
48
52
  "default": "./fesm2022/bootkit-ng0-file.mjs"
49
53
  },
50
- "./common": {
51
- "types": "./common/index.d.ts",
52
- "default": "./fesm2022/bootkit-ng0-common.mjs"
53
- },
54
54
  "./form": {
55
55
  "types": "./form/index.d.ts",
56
56
  "default": "./fesm2022/bootkit-ng0-form.mjs"
@@ -99,6 +99,10 @@
99
99
  "types": "./components/confirmation/index.d.ts",
100
100
  "default": "./fesm2022/bootkit-ng0-components-confirmation.mjs"
101
101
  },
102
+ "./components/list": {
103
+ "types": "./components/list/index.d.ts",
104
+ "default": "./fesm2022/bootkit-ng0-components-list.mjs"
105
+ },
102
106
  "./components/form-field": {
103
107
  "types": "./components/form-field/index.d.ts",
104
108
  "default": "./fesm2022/bootkit-ng0-components-form-field.mjs"
@@ -127,6 +131,10 @@
127
131
  "types": "./components/popover/index.d.ts",
128
132
  "default": "./fesm2022/bootkit-ng0-components-popover.mjs"
129
133
  },
134
+ "./components/select": {
135
+ "types": "./components/select/index.d.ts",
136
+ "default": "./fesm2022/bootkit-ng0-components-select.mjs"
137
+ },
130
138
  "./components/sidenav": {
131
139
  "types": "./components/sidenav/index.d.ts",
132
140
  "default": "./fesm2022/bootkit-ng0-components-sidenav.mjs"