@ng-vagabond-lab/ng-dsv 0.2.4 → 0.2.5

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.
@@ -2,8 +2,8 @@ import * as i0 from '@angular/core';
2
2
  import { Pipe } from '@angular/core';
3
3
 
4
4
  class DateFormatPipe {
5
- transform(value, showTime = false) {
6
- return formatDate(value, showTime);
5
+ transform(value, showTime = false, technical = false) {
6
+ return formatDate(value, showTime, technical);
7
7
  }
8
8
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: DateFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
9
9
  static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.13", ngImport: i0, type: DateFormatPipe, isStandalone: true, name: "formatDate" });
@@ -16,18 +16,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImpo
16
16
  }]
17
17
  }] });
18
18
 
19
- const formatDate = (value, showTime = false) => {
19
+ const formatDate = (value, showTime = false, technical = false) => {
20
20
  const date = new Date(value);
21
+ if (isNaN(date.getTime())) {
22
+ return '—';
23
+ }
24
+ if (technical) {
25
+ const pad = (n) => String(n).padStart(2, '0');
26
+ return `${pad(date.getDate())}/${pad(date.getMonth() + 1)}/${date.getFullYear()} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;
27
+ }
21
28
  const datePart = date.toLocaleDateString('fr-FR', {
22
29
  day: 'numeric',
23
30
  month: 'long',
24
31
  year: 'numeric',
25
32
  });
26
- if (datePart == 'Invalid Date') {
27
- return '—';
28
- }
29
33
  if (!showTime) {
30
- return `${datePart}`;
34
+ return datePart;
31
35
  }
32
36
  const timePart = date.toLocaleTimeString('fr-FR', {
33
37
  hour: '2-digit',
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-date.mjs","sources":["../../../projects/ng-dsv/date/pipe/date-format.pipe.ts","../../../projects/ng-dsv/date/utils/date.utils.ts","../../../projects/ng-dsv/date/ng-vagabond-lab-ng-dsv-date.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { formatDate } from '../public-api';\n\n@Pipe({\n name: 'formatDate',\n standalone: true,\n})\nexport class DateFormatPipe implements PipeTransform {\n transform(value: string, showTime: boolean = false): string {\n return formatDate(value, showTime);\n }\n}\n","export const formatDate = (value: string | Date, showTime: boolean = false): string => {\n const date = new Date(value);\n const datePart = date.toLocaleDateString('fr-FR', {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n });\n\n if (datePart == 'Invalid Date') {\n return '—';\n }\n\n if (!showTime) {\n return `${datePart}`;\n }\n\n const timePart = date.toLocaleTimeString('fr-FR', {\n hour: '2-digit',\n minute: '2-digit',\n });\n return `${datePart} à ${timePart}`;\n};\n\nexport function toDateInputValue(value: string | null | undefined): string {\n if (!value) return '';\n return value.includes('T') ? value.split('T')[0] : value;\n}\n\nexport function toBackendDate(value: string | null | undefined): string {\n if (!value) return '';\n return value.includes('T') ? value : `${value}T00:00:00Z`;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAOa,cAAc,CAAA;AACvB,IAAA,SAAS,CAAC,KAAa,EAAE,QAAA,GAAoB,KAAK,EAAA;AAC9C,QAAA,OAAO,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC;IACtC;wGAHS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;;;ACNM,MAAM,UAAU,GAAG,CAAC,KAAoB,EAAE,QAAA,GAAoB,KAAK,KAAY;AAClF,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AAC5B,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;AAC9C,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,IAAI,EAAE,SAAS;AAClB,KAAA,CAAC;AAEF,IAAA,IAAI,QAAQ,IAAI,cAAc,EAAE;AAC5B,QAAA,OAAO,GAAG;IACd;IAEA,IAAI,CAAC,QAAQ,EAAE;QACX,OAAO,CAAA,EAAG,QAAQ,CAAA,CAAE;IACxB;AAEA,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;AAC9C,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,MAAM,EAAE,SAAS;AACpB,KAAA,CAAC;AACF,IAAA,OAAO,CAAA,EAAG,QAAQ,CAAA,GAAA,EAAM,QAAQ,EAAE;AACtC;AAEM,SAAU,gBAAgB,CAAC,KAAgC,EAAA;AAC7D,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,EAAE;IACrB,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;AAC5D;AAEM,SAAU,aAAa,CAAC,KAAgC,EAAA;AAC1D,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,EAAE;AACrB,IAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAA,EAAG,KAAK,YAAY;AAC7D;;AC/BA;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-date.mjs","sources":["../../../projects/ng-dsv/date/pipe/date-format.pipe.ts","../../../projects/ng-dsv/date/utils/date.utils.ts","../../../projects/ng-dsv/date/ng-vagabond-lab-ng-dsv-date.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { formatDate } from '../public-api';\n\n@Pipe({\n name: 'formatDate',\n standalone: true,\n})\nexport class DateFormatPipe implements PipeTransform {\n transform(value: string, showTime: boolean = false, technical: boolean = false): string {\n return formatDate(value, showTime, technical);\n }\n}\n","export const formatDate = (\n value: string | Date,\n showTime: boolean = false,\n technical: boolean = false,\n): string => {\n const date = new Date(value);\n\n if (isNaN(date.getTime())) {\n return '—';\n }\n\n if (technical) {\n const pad = (n: number) => String(n).padStart(2, '0');\n return `${pad(date.getDate())}/${pad(date.getMonth() + 1)}/${date.getFullYear()} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;\n }\n\n const datePart = date.toLocaleDateString('fr-FR', {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n });\n\n if (!showTime) {\n return datePart;\n }\n\n const timePart = date.toLocaleTimeString('fr-FR', {\n hour: '2-digit',\n minute: '2-digit',\n });\n\n return `${datePart} à ${timePart}`;\n};\n\nexport function toDateInputValue(value: string | null | undefined): string {\n if (!value) return '';\n return value.includes('T') ? value.split('T')[0] : value;\n}\n\nexport function toBackendDate(value: string | null | undefined): string {\n if (!value) return '';\n return value.includes('T') ? value : `${value}T00:00:00Z`;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAOa,cAAc,CAAA;AACvB,IAAA,SAAS,CAAC,KAAa,EAAE,WAAoB,KAAK,EAAE,YAAqB,KAAK,EAAA;QAC1E,OAAO,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;IACjD;wGAHS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;;;ACNM,MAAM,UAAU,GAAG,CACtB,KAAoB,EACpB,QAAA,GAAoB,KAAK,EACzB,SAAA,GAAqB,KAAK,KAClB;AACR,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;IAE5B,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AACvB,QAAA,OAAO,GAAG;IACd;IAEA,IAAI,SAAS,EAAE;AACX,QAAA,MAAM,GAAG,GAAG,CAAC,CAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QACrD,OAAO,CAAA,EAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA,CAAA,EAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,EAAE,CAAA,CAAA,EAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA,CAAA,EAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA,CAAA,EAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA,CAAE;IACjK;AAEA,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;AAC9C,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,IAAI,EAAE,SAAS;AAClB,KAAA,CAAC;IAEF,IAAI,CAAC,QAAQ,EAAE;AACX,QAAA,OAAO,QAAQ;IACnB;AAEA,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;AAC9C,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,MAAM,EAAE,SAAS;AACpB,KAAA,CAAC;AAEF,IAAA,OAAO,CAAA,EAAG,QAAQ,CAAA,GAAA,EAAM,QAAQ,EAAE;AACtC;AAEM,SAAU,gBAAgB,CAAC,KAAgC,EAAA;AAC7D,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,EAAE;IACrB,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;AAC5D;AAEM,SAAU,aAAa,CAAC,KAAgC,EAAA;AAC1D,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,EAAE;AACrB,IAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAA,EAAG,KAAK,YAAY;AAC7D;;AC1CA;;AAEG;;;;"}
@@ -74,7 +74,7 @@ const getValue = (obj, key, isDate) => {
74
74
  value = recurse;
75
75
  }
76
76
  if (isDate && value) {
77
- value = formatDate(value);
77
+ value = formatDate(value, true, true);
78
78
  }
79
79
  return value;
80
80
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-table.mjs","sources":["../../../projects/ng-dsv/ds/table/component/table.component.ts","../../../projects/ng-dsv/ds/table/component/table.component.html","../../../projects/ng-dsv/ds/table/utils/table.utils.ts","../../../projects/ng-dsv/ds/table/ng-vagabond-lab-ng-dsv-ds-table.ts"],"sourcesContent":["import { Component, effect, input, signal } from '@angular/core';\n\nimport { RouterLink } from '@angular/router';\nimport { JSONObject } from '@ng-vagabond-lab/ng-dsv/api';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { TableDto } from '../dto/table.dto';\nimport { getValue, initTable } from '../public-api';\n\n@Component({\n selector: 'dsv-table',\n imports: [RouterLink, TranslatePipe],\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n})\nexport class DsvTableComponent {\n readonly url = input.required<string>();\n readonly cells = input.required<TableDto[]>();\n readonly datas = input.required<JSONObject[]>();\n readonly max = input<number>(10);\n\n readonly showDatas = signal<string[][]>([]);\n readonly links = signal<(string | null)[]>([]);\n\n constructor() {\n effect(() => {\n const { links, datas } = initTable(this.datas(), this.max());\n\n this.links.set(links);\n\n const showDatas: string[][] = [];\n datas.forEach((data) => {\n const showData: string[] = [];\n showData.push(getValue(data, 'id', false));\n this.cells()?.forEach((cell) => {\n showData.push(getValue(data, cell.name, cell.date ?? false));\n });\n showDatas.push(showData);\n });\n this.showDatas.set(showDatas);\n });\n }\n}\n","<table>\n <thead>\n <tr>\n @for (cell of cells(); track cell.name) {\n <th [style.maxWidth]=\"cell.width\">{{ cell.label | translate }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (data of showDatas(); track $index; let index = $index) {\n <tr>\n @for (cell of cells(); track cell.name; let indexData = $index) {\n <td\n [class.cursor]=\"links()[index]\"\n [routerLink]=\"links()[index]\"\n [style.maxWidth]=\"cell.width\"\n >\n {{ data[indexData + 1] }}\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ApiDto, JSONObject, JSONValue } from '@ng-vagabond-lab/ng-dsv/api';\nimport { formatDate } from '@ng-vagabond-lab/ng-dsv/date';\n\nexport const initTable = (\n datas: JSONObject[],\n max: number,\n): { links: null[]; datas: ({ [x: string]: JSONValue } | JSONObject[] | ApiDto)[] } => {\n const links = [];\n const newDatas = [];\n for (let i = 0, length = max > 0 ? max : datas.length; i < length; i++) {\n let data = datas?.[i];\n if (data) {\n links.push(data['id' as keyof JSONObject]);\n } else {\n data = { id: -1 * (i + 1) } as JSONObject;\n links.push(null);\n }\n newDatas.push(data);\n }\n\n return {\n links: links,\n datas: newDatas,\n };\n};\n\nexport const getValue = (obj: JSONObject, key: string, isDate: boolean): string => {\n let value: string = obj[key as keyof JSONObject];\n if (key.includes('.')) {\n const keys = key.split('.');\n let recurse: JSONObject = obj;\n keys.forEach((key2) => {\n if (recurse) {\n if (Array.isArray(recurse)) {\n recurse = (recurse as JSONObject[])\n .map((item) => item[key2 as keyof JSONObject])\n .join(',') as JSONObject;\n } else {\n recurse = recurse[key2 as keyof JSONObject];\n }\n }\n });\n value = recurse as string;\n }\n if (isDate && value) {\n value = formatDate(value);\n }\n return value;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-table.mjs","sources":["../../../projects/ng-dsv/ds/table/component/table.component.ts","../../../projects/ng-dsv/ds/table/component/table.component.html","../../../projects/ng-dsv/ds/table/utils/table.utils.ts","../../../projects/ng-dsv/ds/table/ng-vagabond-lab-ng-dsv-ds-table.ts"],"sourcesContent":["import { Component, effect, input, signal } from '@angular/core';\n\nimport { RouterLink } from '@angular/router';\nimport { JSONObject } from '@ng-vagabond-lab/ng-dsv/api';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { TableDto } from '../dto/table.dto';\nimport { getValue, initTable } from '../public-api';\n\n@Component({\n selector: 'dsv-table',\n imports: [RouterLink, TranslatePipe],\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n})\nexport class DsvTableComponent {\n readonly url = input.required<string>();\n readonly cells = input.required<TableDto[]>();\n readonly datas = input.required<JSONObject[]>();\n readonly max = input<number>(10);\n\n readonly showDatas = signal<string[][]>([]);\n readonly links = signal<(string | null)[]>([]);\n\n constructor() {\n effect(() => {\n const { links, datas } = initTable(this.datas(), this.max());\n\n this.links.set(links);\n\n const showDatas: string[][] = [];\n datas.forEach((data) => {\n const showData: string[] = [];\n showData.push(getValue(data, 'id', false));\n this.cells()?.forEach((cell) => {\n showData.push(getValue(data, cell.name, cell.date ?? false));\n });\n showDatas.push(showData);\n });\n this.showDatas.set(showDatas);\n });\n }\n}\n","<table>\n <thead>\n <tr>\n @for (cell of cells(); track cell.name) {\n <th [style.maxWidth]=\"cell.width\">{{ cell.label | translate }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (data of showDatas(); track $index; let index = $index) {\n <tr>\n @for (cell of cells(); track cell.name; let indexData = $index) {\n <td\n [class.cursor]=\"links()[index]\"\n [routerLink]=\"links()[index]\"\n [style.maxWidth]=\"cell.width\"\n >\n {{ data[indexData + 1] }}\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ApiDto, JSONObject, JSONValue } from '@ng-vagabond-lab/ng-dsv/api';\nimport { formatDate } from '@ng-vagabond-lab/ng-dsv/date';\n\nexport const initTable = (\n datas: JSONObject[],\n max: number,\n): { links: null[]; datas: ({ [x: string]: JSONValue } | JSONObject[] | ApiDto)[] } => {\n const links = [];\n const newDatas = [];\n for (let i = 0, length = max > 0 ? max : datas.length; i < length; i++) {\n let data = datas?.[i];\n if (data) {\n links.push(data['id' as keyof JSONObject]);\n } else {\n data = { id: -1 * (i + 1) } as JSONObject;\n links.push(null);\n }\n newDatas.push(data);\n }\n\n return {\n links: links,\n datas: newDatas,\n };\n};\n\nexport const getValue = (obj: JSONObject, key: string, isDate: boolean): string => {\n let value: string = obj[key as keyof JSONObject];\n if (key.includes('.')) {\n const keys = key.split('.');\n let recurse: JSONObject = obj;\n keys.forEach((key2) => {\n if (recurse) {\n if (Array.isArray(recurse)) {\n recurse = (recurse as JSONObject[])\n .map((item) => item[key2 as keyof JSONObject])\n .join(',') as JSONObject;\n } else {\n recurse = recurse[key2 as keyof JSONObject];\n }\n }\n });\n value = recurse as string;\n }\n if (isDate && value) {\n value = formatDate(value, true, true);\n }\n return value;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -224,9 +224,9 @@ class AdminSearchContainer extends BaseRouteContainer {
224
224
  this.tab.set(this.routeParams()?.['type']);
225
225
  const tab = this.adminService.tabs()?.tabs.find((tab) => tab.name === this.tab());
226
226
  this.tabConfig.set(tab);
227
- if (!this.load()[this.routeParams()?.['type']]) {
227
+ if (!this.adminService.datas()[this.tab()] && !this.load()[this.routeParams()?.['type']]) {
228
228
  this.load.update((s) => ({ ...s, [this.tabConfig()?.name]: true }));
229
- this.gotoPage(0);
229
+ this.gotoPage(0, this.adminService.search()[this.tabConfig()?.name]);
230
230
  }
231
231
  }
232
232
  });
@@ -253,7 +253,7 @@ class AdminSearchContainer extends BaseRouteContainer {
253
253
  this.adminService.get(this.tabConfig()?.name, this.tabConfig()?.findByChamps + '>>' + this.tabConfig()?.sortBy, search, page, this.adminService.tabs()?.max);
254
254
  }
255
255
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: AdminSearchContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
256
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.13", type: AdminSearchContainer, isStandalone: true, selector: "dsv-admin-search", usesInheritance: true, ngImport: i0, template: "<dsv-tabs-component\n [tabs]=\"tabs()\"\n [active]=\"tab()\"\n/>\n<dsv-card>\n <div class=\"admin-header\">\n <span>R\u00E9sulat : {{ adminService.datas()[tab()]?.totalElements }}</span>\n <dsv-button\n variant=\"contained\"\n color=\"primary\"\n icon=\"ri-add-line\"\n [routerLink]=\"'/admin/' + tab() + '/add'\"\n [prevent]=\"false\"\n ></dsv-button>\n </div>\n <dsv-form-signal-searchbar\n [search]=\"adminService.search()[tab()]\"\n (callbackSearch)=\"gotoPage(0, $event)\"\n />\n <dsv-table\n [cells]=\"tabConfig()?.cells!\"\n [datas]=\"adminService.datas()[tab()]?.content!\"\n [max]=\"adminService.tabs().max!\"\n [url]=\"'/admin/' + tab()\"\n ></dsv-table>\n <dsv-paginate\n [page]=\"adminService.page()[this.tabConfig()?.name!]\"\n [max]=\"adminService.datas()[tab()]?.totalPages!\"\n (callback)=\"gotoPage($event)\"\n />\n</dsv-card>\n", styles: [":host{display:flex;flex-direction:column;align-items:center;width:100%}:host .admin-header{padding:10px 0;display:flex;align-items:center;justify-content:space-between}:host dsv-form-reactive-searchbar{margin:0 0 10px}\n"], dependencies: [{ kind: "component", type: DsvCardComponent, selector: "dsv-card" }, { kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "routerLink", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }, { kind: "component", type: DsvTabsComponent, selector: "dsv-tabs-component", inputs: ["tabs", "active"], outputs: ["callback"] }, { kind: "component", type: DsvTableComponent, selector: "dsv-table", inputs: ["url", "cells", "datas", "max"] }, { kind: "component", type: DsvPaginateComponent, selector: "dsv-paginate", inputs: ["page", "max"], outputs: ["callback"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: DsvFormSignalSearchbarComponent, selector: "dsv-form-signal-searchbar", inputs: ["search"], outputs: ["callbackSearch"] }] });
256
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.13", type: AdminSearchContainer, isStandalone: true, selector: "dsv-admin-search", usesInheritance: true, ngImport: i0, template: "<dsv-tabs-component [tabs]=\"tabs()\" [active]=\"tab()\" />\n<dsv-card>\n <div class=\"admin-header\">\n <span>R\u00E9sulat : {{ adminService.datas()[tab()]?.totalElements }}</span>\n <dsv-button\n variant=\"contained\"\n color=\"primary\"\n icon=\"ri-add-line\"\n [routerLink]=\"'/admin/' + tab() + '/add'\"\n [prevent]=\"false\"\n ></dsv-button>\n </div>\n <dsv-form-signal-searchbar\n [search]=\"adminService.search()[tab()]\"\n (callbackSearch)=\"gotoPage(0, $event)\"\n />\n <dsv-table\n [cells]=\"tabConfig()?.cells!\"\n [datas]=\"adminService.datas()[tab()]?.content!\"\n [max]=\"adminService.tabs().max!\"\n [url]=\"'/admin/' + tab()\"\n ></dsv-table>\n <dsv-paginate\n [page]=\"adminService.page()[this.tabConfig()?.name!]\"\n [max]=\"adminService.datas()[tab()]?.totalPages!\"\n (callback)=\"gotoPage($event, this.adminService.search()[this.tabConfig()?.name!])\"\n />\n</dsv-card>\n", styles: [":host{display:flex;flex-direction:column;align-items:center;width:100%}:host .admin-header{padding:10px 0;display:flex;align-items:center;justify-content:space-between}:host dsv-form-reactive-searchbar{margin:0 0 10px}\n"], dependencies: [{ kind: "component", type: DsvCardComponent, selector: "dsv-card" }, { kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "routerLink", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }, { kind: "component", type: DsvTabsComponent, selector: "dsv-tabs-component", inputs: ["tabs", "active"], outputs: ["callback"] }, { kind: "component", type: DsvTableComponent, selector: "dsv-table", inputs: ["url", "cells", "datas", "max"] }, { kind: "component", type: DsvPaginateComponent, selector: "dsv-paginate", inputs: ["page", "max"], outputs: ["callback"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: DsvFormSignalSearchbarComponent, selector: "dsv-form-signal-searchbar", inputs: ["search"], outputs: ["callbackSearch"] }] });
257
257
  }
258
258
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImport: i0, type: AdminSearchContainer, decorators: [{
259
259
  type: Component,
@@ -265,7 +265,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.13", ngImpo
265
265
  DsvPaginateComponent,
266
266
  RouterLink,
267
267
  DsvFormSignalSearchbarComponent,
268
- ], template: "<dsv-tabs-component\n [tabs]=\"tabs()\"\n [active]=\"tab()\"\n/>\n<dsv-card>\n <div class=\"admin-header\">\n <span>R\u00E9sulat : {{ adminService.datas()[tab()]?.totalElements }}</span>\n <dsv-button\n variant=\"contained\"\n color=\"primary\"\n icon=\"ri-add-line\"\n [routerLink]=\"'/admin/' + tab() + '/add'\"\n [prevent]=\"false\"\n ></dsv-button>\n </div>\n <dsv-form-signal-searchbar\n [search]=\"adminService.search()[tab()]\"\n (callbackSearch)=\"gotoPage(0, $event)\"\n />\n <dsv-table\n [cells]=\"tabConfig()?.cells!\"\n [datas]=\"adminService.datas()[tab()]?.content!\"\n [max]=\"adminService.tabs().max!\"\n [url]=\"'/admin/' + tab()\"\n ></dsv-table>\n <dsv-paginate\n [page]=\"adminService.page()[this.tabConfig()?.name!]\"\n [max]=\"adminService.datas()[tab()]?.totalPages!\"\n (callback)=\"gotoPage($event)\"\n />\n</dsv-card>\n", styles: [":host{display:flex;flex-direction:column;align-items:center;width:100%}:host .admin-header{padding:10px 0;display:flex;align-items:center;justify-content:space-between}:host dsv-form-reactive-searchbar{margin:0 0 10px}\n"] }]
268
+ ], template: "<dsv-tabs-component [tabs]=\"tabs()\" [active]=\"tab()\" />\n<dsv-card>\n <div class=\"admin-header\">\n <span>R\u00E9sulat : {{ adminService.datas()[tab()]?.totalElements }}</span>\n <dsv-button\n variant=\"contained\"\n color=\"primary\"\n icon=\"ri-add-line\"\n [routerLink]=\"'/admin/' + tab() + '/add'\"\n [prevent]=\"false\"\n ></dsv-button>\n </div>\n <dsv-form-signal-searchbar\n [search]=\"adminService.search()[tab()]\"\n (callbackSearch)=\"gotoPage(0, $event)\"\n />\n <dsv-table\n [cells]=\"tabConfig()?.cells!\"\n [datas]=\"adminService.datas()[tab()]?.content!\"\n [max]=\"adminService.tabs().max!\"\n [url]=\"'/admin/' + tab()\"\n ></dsv-table>\n <dsv-paginate\n [page]=\"adminService.page()[this.tabConfig()?.name!]\"\n [max]=\"adminService.datas()[tab()]?.totalPages!\"\n (callback)=\"gotoPage($event, this.adminService.search()[this.tabConfig()?.name!])\"\n />\n</dsv-card>\n", styles: [":host{display:flex;flex-direction:column;align-items:center;width:100%}:host .admin-header{padding:10px 0;display:flex;align-items:center;justify-content:space-between}:host dsv-form-reactive-searchbar{margin:0 0 10px}\n"] }]
269
269
  }], ctorParameters: () => [] });
270
270
 
271
271
  const ADMIN_COL = [
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-module-admin.mjs","sources":["../../../projects/ng-dsv/module/admin/service/admin.service.ts","../../../projects/ng-dsv/module/admin/component/modal/admin-search-modal.component.ts","../../../projects/ng-dsv/module/admin/component/modal/admin-search-modal.component.html","../../../projects/ng-dsv/module/admin/component/form/admin-form.component.ts","../../../projects/ng-dsv/module/admin/component/form/admin-form.component.html","../../../projects/ng-dsv/module/admin/container/form/admin-form.container.ts","../../../projects/ng-dsv/module/admin/container/form/admin-form.container.html","../../../projects/ng-dsv/module/admin/container/search/admin-search.container.ts","../../../projects/ng-dsv/module/admin/container/search/admin-search.container.html","../../../projects/ng-dsv/module/admin/dto/admin-default.dto.ts","../../../projects/ng-dsv/module/admin/ng-vagabond-lab-ng-dsv-module-admin.ts"],"sourcesContent":["import { inject, Injectable, signal } from '@angular/core';\nimport { ApiDto, ApiService, PageableDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { AdminTabConfDto } from '../dto/admin.dto';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AdminService {\n readonly apiService = inject(ApiService);\n\n readonly tabs = signal<AdminTabConfDto>({} as AdminTabConfDto);\n\n readonly datas = signal<Record<string, PageableDto<ApiDto[]>>>({});\n readonly data = signal<ApiDto>({} as ApiDto);\n\n readonly page = signal<Record<string, number>>({});\n readonly search = signal<Record<string, string>>({});\n\n get(\n endpoint: string,\n fields: string,\n search: string,\n page: number = 0,\n max: number = 10,\n callback?: (data: PageableDto<ApiDto[]>) => void,\n ): void {\n const url =\n '/' +\n endpoint +\n '/findBy?fields=' +\n fields +\n '&values=' +\n search +\n '&first=' +\n page +\n '&max=' +\n max;\n\n const callbackResponse =\n callback ??\n ((data: PageableDto<ApiDto[]>) => {\n this.datas.update((s) => ({ ...s, [endpoint]: data }));\n });\n this.apiService.get<PageableDto<ApiDto[]>>(encodeURI(url), callbackResponse);\n }\n\n post(endpoint: string, data: ApiDto): void {\n const url = '/' + endpoint;\n this.apiService.post<ApiDto>(encodeURI(url), data, (response) => {\n this.data.set(response);\n });\n }\n\n put(endpoint: string, data: ApiDto): void {\n const url = '/' + endpoint;\n this.apiService.put<ApiDto>(encodeURI(url), data, (response) => {\n this.data.set(response);\n });\n }\n\n findById(endpoint: string, id: string): void {\n const url = '/' + endpoint + '/' + id;\n this.apiService.get<ApiDto>(encodeURI(url), (data) => {\n this.data.set(data);\n });\n }\n}\n","import { Component, effect, inject, input, output, signal } from '@angular/core';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { BaseContainer } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvFormReactiveSearchbarComponent } from '@ng-vagabond-lab/ng-dsv/ds/form/reactive';\nimport { DsvItemComponent } from '@ng-vagabond-lab/ng-dsv/ds/item';\nimport { DsvModalButtonComponent, DsvModalComponent, ModalService } from '@ng-vagabond-lab/ng-dsv/ds/modal';\nimport { ManyToManyDto } from '../../dto/admin.dto';\nimport { AdminService } from '../../service/admin.service';\n\n@Component({\n selector: 'dsv-admin-search-modal',\n imports: [\n DsvItemComponent,\n DsvModalButtonComponent,\n DsvModalComponent,\n DsvFormReactiveSearchbarComponent,\n ],\n templateUrl: './admin-search-modal.component.html',\n styleUrls: ['./admin-search-modal.component.scss'],\n})\nexport class AdminSearchModalContainer extends BaseContainer {\n readonly modalService = inject(ModalService);\n readonly adminService = inject(AdminService);\n\n readonly m2em = input.required<ManyToManyDto>();\n\n readonly search = signal<string>('');\n readonly datas = signal<ApiDto[]>([]);\n\n readonly callback = output<ApiDto>();\n\n constructor() {\n super();\n this.requiredRole.set('ADMIN');\n effect(() => {\n if (this.modalService.getSignal('m2m')) {\n this.adminService.get(\n this.m2em().endPoint,\n this.m2em().fields,\n this.search(),\n 0,\n 500,\n (data) => {\n this.datas.set(data.content);\n },\n );\n }\n });\n }\n\n getValue(data: ApiDto, name: string): string {\n return data[name as keyof ApiDto] as string;\n }\n\n doSearch(search: string): void {\n this.search.set(search);\n }\n\n clickItem = (data: ApiDto): void => {\n this.callback.emit(data);\n this.modalService.close('m2m');\n };\n}\n","<dsv-modal-button modalName=\"m2m\" icon=\"ri-add-line\" />\n<dsv-modal id=\"m2m\" titleText=\"Ajouter un élément\">\n <dsv-form-reactive-searchbar [search]=\"search()\" (callbackSearch)=\"doSearch($event)\" />\n <div>\n @for (data of datas(); track data.id) {\n <dsv-item [text]=\"getValue(data, m2em().name)\" (callback)=\"clickItem(data)\" />\n }\n </div>\n</dsv-modal>\n","import { Component, effect, input, output } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { ApiDto, ID } from '@ng-vagabond-lab/ng-dsv/api';\nimport { DsvChipComponent } from '@ng-vagabond-lab/ng-dsv/ds/chip';\nimport {\n DsvBaseFormReactiveComponent,\n DsvFormReactiveCheckboxComponent,\n DsvFormReactiveComponent,\n DsvFormReactiveInputComponent,\n} from '@ng-vagabond-lab/ng-dsv/ds/form/reactive';\nimport { FormDto } from '../../dto/admin.dto';\nimport { AdminSearchModalContainer } from '../modal/admin-search-modal.component';\n\n@Component({\n selector: 'dsv-admin-form',\n imports: [\n ReactiveFormsModule,\n DsvChipComponent,\n DsvFormReactiveComponent,\n DsvFormReactiveInputComponent,\n DsvFormReactiveCheckboxComponent,\n AdminSearchModalContainer,\n ],\n templateUrl: './admin-form.component.html',\n styleUrls: ['./admin-form.component.scss'],\n})\nexport class AdminFormComponent extends DsvBaseFormReactiveComponent {\n readonly urlBack = input<string>();\n readonly data = input.required<ApiDto>();\n readonly formConf = input.required<FormDto[]>();\n\n readonly callback = output<ApiDto>();\n\n constructor() {\n super();\n effect(() => {\n this.formBuilder.control('a');\n\n let formControl = {} as { [key: string]: FormControl };\n this.formConf()?.forEach((conf) => {\n let value = this.data()[conf.name as keyof ApiDto];\n if (conf.type === 'datetime-local' && value) {\n value = (value as string).substring(0, 19);\n }\n const required = conf.required || false;\n formControl[conf.name] = new FormControl(\n { value, disabled: conf.disabled ?? false },\n required ? Validators.required : null,\n );\n });\n this.form = this.formBuilder.group(formControl);\n });\n }\n\n sendForm(data: ApiDto): void {\n this.formConf()?.forEach((conf) => {\n let value = data[conf.name as keyof ApiDto];\n if (conf.type === 'datetime-local' && value && !value?.toString().endsWith('Z')) {\n value = value + 'Z';\n data = { ...data, [conf.name]: value };\n }\n });\n this.callback.emit(data);\n }\n\n removeValue = (name: string, id: ID) => (): void => {\n this.form.value[name] = this.form.value[name].filter((value: ApiDto) => value.id !== id);\n };\n\n addValue =\n (name: string) =>\n (data: ApiDto): void => {\n const find = this.form.value[name].find((value: ApiDto) => value.id === data.id);\n if (!find) {\n this.form.value[name].push(data);\n }\n };\n}\n","<dsv-form-reactive\n [form]=\"form\"\n [urlBack]=\"urlBack()!\"\n (callback)=\"sendForm($event)\"\n>\n @for (field of formConf(); track field.name) {\n <div [class]=\"'item ' + (field.className ?? '')\">\n @if (\n field.type === 'text' ||\n field.type === 'number' ||\n field.type === 'textarea' ||\n field.type === 'datetime-local'\n ) {\n <dsv-form-reactive-input\n [form]=\"form\"\n [field]=\"field.name\"\n [type]=\"field.type\"\n [required]=\"field.required ?? false\"\n />\n }\n @if (field.type === 'switch') {\n <dsv-form-reactive-checkbox\n [form]=\"form\"\n [field]=\"field.name\"\n />\n }\n @if (field.type === 'm2m') {\n <div class=\"m2m\">\n <div class=\"m2m-content\">\n @for (value of form.value[field.name]; track value.id) {\n <dsv-chip\n color=\"default\"\n [text]=\"value.name\"\n (delete)=\"removeValue(field.name, value.id)()\"\n />\n }\n <dsv-admin-search-modal\n [m2em]=\"field.m2m!\"\n (callback)=\"addValue(field.name)($event)\"\n />\n </div>\n </div>\n }\n </div>\n }\n</dsv-form-reactive>\n","import { Component, effect, inject, signal } from '@angular/core';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { BaseRouteContainer } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvCardComponent, DsvCardHeaderComponent } from '@ng-vagabond-lab/ng-dsv/ds/card';\nimport { TabDto } from '@ng-vagabond-lab/ng-dsv/ds/tab';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { AdminFormComponent } from '../../component/form/admin-form.component';\nimport { AdminTabDto } from '../../dto/admin.dto';\nimport { AdminService } from '../../service/admin.service';\n\n@Component({\n selector: 'dsv-admin-form-container',\n imports: [DsvCardComponent, DsvCardHeaderComponent, AdminFormComponent, DsvCardHeaderComponent],\n templateUrl: './admin-form.container.html',\n styleUrls: ['./admin-form.container.scss'],\n})\nexport class AdminFormContainer extends BaseRouteContainer {\n readonly adminService = inject(AdminService);\n readonly platformService = inject(PlatformService);\n\n readonly tabs = signal<TabDto[]>([]);\n readonly tab = signal<string>('user');\n readonly tabConfig = signal<AdminTabDto | undefined>(undefined);\n\n constructor() {\n super();\n effect(() => {\n if (this.platformService.isPlatformBrowser()) {\n const id = this.routeParams()?.['id'];\n this.tab.set(this.routeParams()?.['type']);\n const tab = this.adminService.tabs()?.tabs.find((tab) => tab.name === this.tab());\n this.tabConfig.set(tab);\n if (Number.isNaN(Number(id))) {\n this.adminService.data.set({} as ApiDto);\n } else {\n this.findById(this.routeParams()?.['id']);\n }\n }\n });\n }\n\n findById(id: string): void {\n this.adminService.findById(this.tabConfig()?.name!, id);\n }\n\n sendForm(data: ApiDto): void {\n const dataFusion = {\n ...this.adminService.data(),\n ...data,\n };\n if (dataFusion.id) {\n this.adminService.put(this.tabConfig()?.name!, dataFusion);\n } else {\n this.adminService.post(this.tabConfig()?.name!, dataFusion);\n }\n }\n}\n","<dsv-card>\n <dsv-card-header>\n <h2>\n {{ adminService.data().id ? 'Modification' : 'Ajout' }}\n </h2>\n </dsv-card-header>\n <dsv-admin-form\n [data]=\"adminService.data()\"\n [formConf]=\"tabConfig()?.form!\"\n [urlBack]=\"'/admin/' + tab()\"\n (callback)=\"sendForm($event)\"\n />\n</dsv-card>\n","import { Component, effect, inject, signal } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { BaseRouteContainer } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { DsvCardComponent } from '@ng-vagabond-lab/ng-dsv/ds/card';\nimport { DsvFormSignalSearchbarComponent } from '@ng-vagabond-lab/ng-dsv/ds/form/signal';\nimport { DsvPaginateComponent } from '@ng-vagabond-lab/ng-dsv/ds/paginate';\nimport { DsvTabsComponent, TabDto } from '@ng-vagabond-lab/ng-dsv/ds/tab';\nimport { DsvTableComponent } from '@ng-vagabond-lab/ng-dsv/ds/table';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { AdminTabDto } from '../../dto/admin.dto';\nimport { AdminService } from '../../service/admin.service';\n\n@Component({\n selector: 'dsv-admin-search',\n imports: [\n DsvCardComponent,\n DsvButtonComponent,\n DsvTabsComponent,\n DsvTableComponent,\n DsvPaginateComponent,\n RouterLink,\n DsvFormSignalSearchbarComponent,\n ],\n templateUrl: './admin-search.container.html',\n styleUrls: ['./admin-search.container.scss'],\n})\nexport class AdminSearchContainer extends BaseRouteContainer {\n readonly adminService = inject(AdminService);\n readonly platformService = inject(PlatformService);\n\n readonly tabs = signal<TabDto[]>([]);\n readonly tab = signal<string>('user');\n readonly tabConfig = signal<AdminTabDto | undefined>(undefined);\n\n readonly load = signal<Record<string, boolean>>({});\n\n constructor() {\n super();\n effect(() => {\n if (this.platformService.isPlatformBrowser()) {\n this.tab.set(this.routeParams()?.['type']);\n const tab = this.adminService.tabs()?.tabs.find((tab) => tab.name === this.tab());\n this.tabConfig.set(tab);\n if (!this.load()[this.routeParams()?.['type']]) {\n this.load.update((s) => ({ ...s, [this.tabConfig()?.name!]: true }));\n this.gotoPage(0);\n }\n }\n });\n effect(() => {\n if (this.platformService.isPlatformBrowser()) {\n const tabs = this.adminService.tabs()?.tabs;\n const tabsDtos: TabDto[] = [];\n if (tabs) {\n tabs.forEach((tab) => {\n const tabsDto = {} as TabDto;\n tabsDto.id = tab.name;\n tabsDto.title = tab.name;\n tabsDto.url = '/admin/' + tab.name;\n tabsDtos.push(tabsDto);\n });\n }\n this.tabs.set(tabsDtos);\n }\n });\n }\n\n gotoPage(page: number, search: string = ''): void {\n this.adminService.page.update((s) => ({ ...s, [this.tabConfig()?.name!]: page }));\n this.adminService.search.update((s) => ({ ...s, [this.tabConfig()?.name!]: search }));\n this.adminService.get(\n this.tabConfig()?.name!,\n this.tabConfig()?.findByChamps! + '>>' + this.tabConfig()?.sortBy,\n search,\n page,\n this.adminService.tabs()?.max,\n );\n }\n}\n","<dsv-tabs-component\n [tabs]=\"tabs()\"\n [active]=\"tab()\"\n/>\n<dsv-card>\n <div class=\"admin-header\">\n <span>Résulat : {{ adminService.datas()[tab()]?.totalElements }}</span>\n <dsv-button\n variant=\"contained\"\n color=\"primary\"\n icon=\"ri-add-line\"\n [routerLink]=\"'/admin/' + tab() + '/add'\"\n [prevent]=\"false\"\n ></dsv-button>\n </div>\n <dsv-form-signal-searchbar\n [search]=\"adminService.search()[tab()]\"\n (callbackSearch)=\"gotoPage(0, $event)\"\n />\n <dsv-table\n [cells]=\"tabConfig()?.cells!\"\n [datas]=\"adminService.datas()[tab()]?.content!\"\n [max]=\"adminService.tabs().max!\"\n [url]=\"'/admin/' + tab()\"\n ></dsv-table>\n <dsv-paginate\n [page]=\"adminService.page()[this.tabConfig()?.name!]\"\n [max]=\"adminService.datas()[tab()]?.totalPages!\"\n (callback)=\"gotoPage($event)\"\n />\n</dsv-card>\n","import { AdminTabDto } from './admin.dto';\n\nexport const ADMIN_COL = [\n { label: 'AUTH.FIELDS.CREATE_DATE', width: '145px', name: 'creationDate', date: true, order: true },\n { label: 'AUTH.FIELDS.ACTIVE', width: '70px', name: 'active', order: true },\n];\n\nexport const ADMIN_PROFILE_M2M = {\n name: 'name',\n endPoint: 'profile',\n fields: 'name%',\n order: 'name',\n orderBy: 'asc',\n};\n\nexport const ADMIN_INPUT = [\n {\n name: 'creationDate',\n label: 'AUTH.FIELDS.CREATE_DATE',\n type: 'datetime-local',\n className: 'width50',\n disabled: true,\n },\n {\n name: 'updatedDate',\n label: 'AUTH.FIELDS.UPDATE_DATE',\n type: 'datetime-local',\n className: 'width50',\n disabled: true,\n },\n {\n name: 'deletedDate',\n label: 'AUTH.FIELDS.DELETE_DATE',\n type: 'datetime-local',\n className: 'width50',\n disabled: true,\n },\n { name: 'active', label: 'AUTH.FIELDS.ACTIVE', type: 'switch', required: false, className: 'width50' },\n];\n\nexport const ADMIN_USER: AdminTabDto[] = [\n {\n name: 'user',\n label: 'AUTH.USER:TITLE',\n findByChamps: 'username%And|Email%',\n sortBy: 'creationDateDesc',\n sortByAsc: 'desc',\n cells: [\n { label: 'AUTH.FIELDS.LOGIN', name: 'username', order: true },\n { label: 'AUTH.FIELDS.EMAIL', width: '240px', name: 'email', order: true },\n { label: 'AUTH.FIELDS.PROFILES', name: 'profiles.name' },\n {\n label: 'AUTH.FIELDS.LAST_CONNEXION_DATE',\n width: '150px',\n name: 'lastConnexionDate',\n date: true,\n order: true,\n },\n ...ADMIN_COL,\n ],\n form: [\n { name: 'username', label: 'AUTH.FIELDS.LOGIN', type: 'text', required: true },\n { name: 'password', label: 'AUTH.FIELDS.PASSWORD', type: 'password', required: false },\n { name: 'email', label: 'AUTH.FIELDS.EMAIL', type: 'text', email: true, required: true },\n {\n name: 'profiles',\n label: 'AUTH.FIELDS.PFOFILES',\n type: 'm2m',\n required: false,\n m2m: ADMIN_PROFILE_M2M,\n array: true,\n },\n {\n name: 'lastConnexionDate',\n label: 'AUTH.FIELDS.LAST_CONNEXION_DATE',\n type: 'datetime-local',\n required: false,\n },\n {\n name: 'activationToken',\n label: 'AUTH.FIELDS.ACTIVATION_TOKEN',\n type: 'text',\n className: 'width50',\n },\n {\n name: 'emailActivation',\n label: 'AUTH.FIELDS.EMAIL_ACTIVIATION',\n type: 'switch',\n className: 'width50',\n },\n {\n name: 'identityToken',\n label: 'AUTH.FIELDS.IDENTITY_TOKEN',\n type: 'text',\n className: 'width50',\n },\n {\n name: 'identityTokenDateEnd',\n label: 'AUTH.FIELDS.IDENTITY_TOKEN_DATE',\n type: 'datetime-local',\n className: 'width50',\n },\n { name: 'googleId', label: 'AUTH.FIELDS.GOOGLE_ID', type: 'text', className: 'width50' },\n { name: 'facebookId', label: 'AUTH.FIELDS.FACEBOOK_ID', type: 'text', className: 'width50' },\n ...ADMIN_INPUT,\n ],\n },\n];\n\nexport const ADMIN_PROFILE: AdminTabDto[] = [\n {\n name: 'profile',\n label: 'AUTH.PROFILE:TITLE',\n findByChamps: 'name%',\n sortBy: 'name',\n cells: [\n { label: 'AUTH.FIELDS.NAME', name: 'name', order: true },\n { label: 'AUTH.FIELDS.ROLES', name: 'roles', order: true },\n ...ADMIN_COL,\n ],\n form: [\n { name: 'name', label: 'AUTH.FIELDS.NAME', type: 'text', required: true },\n { name: 'roles', label: 'AUTH.FIELDS.ROLES', type: 'text', required: true },\n ...ADMIN_INPUT,\n ],\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-module-admin.mjs","sources":["../../../projects/ng-dsv/module/admin/service/admin.service.ts","../../../projects/ng-dsv/module/admin/component/modal/admin-search-modal.component.ts","../../../projects/ng-dsv/module/admin/component/modal/admin-search-modal.component.html","../../../projects/ng-dsv/module/admin/component/form/admin-form.component.ts","../../../projects/ng-dsv/module/admin/component/form/admin-form.component.html","../../../projects/ng-dsv/module/admin/container/form/admin-form.container.ts","../../../projects/ng-dsv/module/admin/container/form/admin-form.container.html","../../../projects/ng-dsv/module/admin/container/search/admin-search.container.ts","../../../projects/ng-dsv/module/admin/container/search/admin-search.container.html","../../../projects/ng-dsv/module/admin/dto/admin-default.dto.ts","../../../projects/ng-dsv/module/admin/ng-vagabond-lab-ng-dsv-module-admin.ts"],"sourcesContent":["import { inject, Injectable, signal } from '@angular/core';\nimport { ApiDto, ApiService, PageableDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { AdminTabConfDto } from '../dto/admin.dto';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AdminService {\n readonly apiService = inject(ApiService);\n\n readonly tabs = signal<AdminTabConfDto>({} as AdminTabConfDto);\n\n readonly datas = signal<Record<string, PageableDto<ApiDto[]>>>({});\n readonly data = signal<ApiDto>({} as ApiDto);\n\n readonly page = signal<Record<string, number>>({});\n readonly search = signal<Record<string, string>>({});\n\n get(\n endpoint: string,\n fields: string,\n search: string,\n page: number = 0,\n max: number = 10,\n callback?: (data: PageableDto<ApiDto[]>) => void,\n ): void {\n const url =\n '/' +\n endpoint +\n '/findBy?fields=' +\n fields +\n '&values=' +\n search +\n '&first=' +\n page +\n '&max=' +\n max;\n\n const callbackResponse =\n callback ??\n ((data: PageableDto<ApiDto[]>) => {\n this.datas.update((s) => ({ ...s, [endpoint]: data }));\n });\n this.apiService.get<PageableDto<ApiDto[]>>(encodeURI(url), callbackResponse);\n }\n\n post(endpoint: string, data: ApiDto): void {\n const url = '/' + endpoint;\n this.apiService.post<ApiDto>(encodeURI(url), data, (response) => {\n this.data.set(response);\n });\n }\n\n put(endpoint: string, data: ApiDto): void {\n const url = '/' + endpoint;\n this.apiService.put<ApiDto>(encodeURI(url), data, (response) => {\n this.data.set(response);\n });\n }\n\n findById(endpoint: string, id: string): void {\n const url = '/' + endpoint + '/' + id;\n this.apiService.get<ApiDto>(encodeURI(url), (data) => {\n this.data.set(data);\n });\n }\n}\n","import { Component, effect, inject, input, output, signal } from '@angular/core';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { BaseContainer } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvFormReactiveSearchbarComponent } from '@ng-vagabond-lab/ng-dsv/ds/form/reactive';\nimport { DsvItemComponent } from '@ng-vagabond-lab/ng-dsv/ds/item';\nimport { DsvModalButtonComponent, DsvModalComponent, ModalService } from '@ng-vagabond-lab/ng-dsv/ds/modal';\nimport { ManyToManyDto } from '../../dto/admin.dto';\nimport { AdminService } from '../../service/admin.service';\n\n@Component({\n selector: 'dsv-admin-search-modal',\n imports: [\n DsvItemComponent,\n DsvModalButtonComponent,\n DsvModalComponent,\n DsvFormReactiveSearchbarComponent,\n ],\n templateUrl: './admin-search-modal.component.html',\n styleUrls: ['./admin-search-modal.component.scss'],\n})\nexport class AdminSearchModalContainer extends BaseContainer {\n readonly modalService = inject(ModalService);\n readonly adminService = inject(AdminService);\n\n readonly m2em = input.required<ManyToManyDto>();\n\n readonly search = signal<string>('');\n readonly datas = signal<ApiDto[]>([]);\n\n readonly callback = output<ApiDto>();\n\n constructor() {\n super();\n this.requiredRole.set('ADMIN');\n effect(() => {\n if (this.modalService.getSignal('m2m')) {\n this.adminService.get(\n this.m2em().endPoint,\n this.m2em().fields,\n this.search(),\n 0,\n 500,\n (data) => {\n this.datas.set(data.content);\n },\n );\n }\n });\n }\n\n getValue(data: ApiDto, name: string): string {\n return data[name as keyof ApiDto] as string;\n }\n\n doSearch(search: string): void {\n this.search.set(search);\n }\n\n clickItem = (data: ApiDto): void => {\n this.callback.emit(data);\n this.modalService.close('m2m');\n };\n}\n","<dsv-modal-button modalName=\"m2m\" icon=\"ri-add-line\" />\n<dsv-modal id=\"m2m\" titleText=\"Ajouter un élément\">\n <dsv-form-reactive-searchbar [search]=\"search()\" (callbackSearch)=\"doSearch($event)\" />\n <div>\n @for (data of datas(); track data.id) {\n <dsv-item [text]=\"getValue(data, m2em().name)\" (callback)=\"clickItem(data)\" />\n }\n </div>\n</dsv-modal>\n","import { Component, effect, input, output } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { ApiDto, ID } from '@ng-vagabond-lab/ng-dsv/api';\nimport { DsvChipComponent } from '@ng-vagabond-lab/ng-dsv/ds/chip';\nimport {\n DsvBaseFormReactiveComponent,\n DsvFormReactiveCheckboxComponent,\n DsvFormReactiveComponent,\n DsvFormReactiveInputComponent,\n} from '@ng-vagabond-lab/ng-dsv/ds/form/reactive';\nimport { FormDto } from '../../dto/admin.dto';\nimport { AdminSearchModalContainer } from '../modal/admin-search-modal.component';\n\n@Component({\n selector: 'dsv-admin-form',\n imports: [\n ReactiveFormsModule,\n DsvChipComponent,\n DsvFormReactiveComponent,\n DsvFormReactiveInputComponent,\n DsvFormReactiveCheckboxComponent,\n AdminSearchModalContainer,\n ],\n templateUrl: './admin-form.component.html',\n styleUrls: ['./admin-form.component.scss'],\n})\nexport class AdminFormComponent extends DsvBaseFormReactiveComponent {\n readonly urlBack = input<string>();\n readonly data = input.required<ApiDto>();\n readonly formConf = input.required<FormDto[]>();\n\n readonly callback = output<ApiDto>();\n\n constructor() {\n super();\n effect(() => {\n this.formBuilder.control('a');\n\n let formControl = {} as { [key: string]: FormControl };\n this.formConf()?.forEach((conf) => {\n let value = this.data()[conf.name as keyof ApiDto];\n if (conf.type === 'datetime-local' && value) {\n value = (value as string).substring(0, 19);\n }\n const required = conf.required || false;\n formControl[conf.name] = new FormControl(\n { value, disabled: conf.disabled ?? false },\n required ? Validators.required : null,\n );\n });\n this.form = this.formBuilder.group(formControl);\n });\n }\n\n sendForm(data: ApiDto): void {\n this.formConf()?.forEach((conf) => {\n let value = data[conf.name as keyof ApiDto];\n if (conf.type === 'datetime-local' && value && !value?.toString().endsWith('Z')) {\n value = value + 'Z';\n data = { ...data, [conf.name]: value };\n }\n });\n this.callback.emit(data);\n }\n\n removeValue = (name: string, id: ID) => (): void => {\n this.form.value[name] = this.form.value[name].filter((value: ApiDto) => value.id !== id);\n };\n\n addValue =\n (name: string) =>\n (data: ApiDto): void => {\n const find = this.form.value[name].find((value: ApiDto) => value.id === data.id);\n if (!find) {\n this.form.value[name].push(data);\n }\n };\n}\n","<dsv-form-reactive\n [form]=\"form\"\n [urlBack]=\"urlBack()!\"\n (callback)=\"sendForm($event)\"\n>\n @for (field of formConf(); track field.name) {\n <div [class]=\"'item ' + (field.className ?? '')\">\n @if (\n field.type === 'text' ||\n field.type === 'number' ||\n field.type === 'textarea' ||\n field.type === 'datetime-local'\n ) {\n <dsv-form-reactive-input\n [form]=\"form\"\n [field]=\"field.name\"\n [type]=\"field.type\"\n [required]=\"field.required ?? false\"\n />\n }\n @if (field.type === 'switch') {\n <dsv-form-reactive-checkbox\n [form]=\"form\"\n [field]=\"field.name\"\n />\n }\n @if (field.type === 'm2m') {\n <div class=\"m2m\">\n <div class=\"m2m-content\">\n @for (value of form.value[field.name]; track value.id) {\n <dsv-chip\n color=\"default\"\n [text]=\"value.name\"\n (delete)=\"removeValue(field.name, value.id)()\"\n />\n }\n <dsv-admin-search-modal\n [m2em]=\"field.m2m!\"\n (callback)=\"addValue(field.name)($event)\"\n />\n </div>\n </div>\n }\n </div>\n }\n</dsv-form-reactive>\n","import { Component, effect, inject, signal } from '@angular/core';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { BaseRouteContainer } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvCardComponent, DsvCardHeaderComponent } from '@ng-vagabond-lab/ng-dsv/ds/card';\nimport { TabDto } from '@ng-vagabond-lab/ng-dsv/ds/tab';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { AdminFormComponent } from '../../component/form/admin-form.component';\nimport { AdminTabDto } from '../../dto/admin.dto';\nimport { AdminService } from '../../service/admin.service';\n\n@Component({\n selector: 'dsv-admin-form-container',\n imports: [DsvCardComponent, DsvCardHeaderComponent, AdminFormComponent, DsvCardHeaderComponent],\n templateUrl: './admin-form.container.html',\n styleUrls: ['./admin-form.container.scss'],\n})\nexport class AdminFormContainer extends BaseRouteContainer {\n readonly adminService = inject(AdminService);\n readonly platformService = inject(PlatformService);\n\n readonly tabs = signal<TabDto[]>([]);\n readonly tab = signal<string>('user');\n readonly tabConfig = signal<AdminTabDto | undefined>(undefined);\n\n constructor() {\n super();\n effect(() => {\n if (this.platformService.isPlatformBrowser()) {\n const id = this.routeParams()?.['id'];\n this.tab.set(this.routeParams()?.['type']);\n const tab = this.adminService.tabs()?.tabs.find((tab) => tab.name === this.tab());\n this.tabConfig.set(tab);\n if (Number.isNaN(Number(id))) {\n this.adminService.data.set({} as ApiDto);\n } else {\n this.findById(this.routeParams()?.['id']);\n }\n }\n });\n }\n\n findById(id: string): void {\n this.adminService.findById(this.tabConfig()?.name!, id);\n }\n\n sendForm(data: ApiDto): void {\n const dataFusion = {\n ...this.adminService.data(),\n ...data,\n };\n if (dataFusion.id) {\n this.adminService.put(this.tabConfig()?.name!, dataFusion);\n } else {\n this.adminService.post(this.tabConfig()?.name!, dataFusion);\n }\n }\n}\n","<dsv-card>\n <dsv-card-header>\n <h2>\n {{ adminService.data().id ? 'Modification' : 'Ajout' }}\n </h2>\n </dsv-card-header>\n <dsv-admin-form\n [data]=\"adminService.data()\"\n [formConf]=\"tabConfig()?.form!\"\n [urlBack]=\"'/admin/' + tab()\"\n (callback)=\"sendForm($event)\"\n />\n</dsv-card>\n","import { Component, effect, inject, signal } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { BaseRouteContainer } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { DsvCardComponent } from '@ng-vagabond-lab/ng-dsv/ds/card';\nimport { DsvFormSignalSearchbarComponent } from '@ng-vagabond-lab/ng-dsv/ds/form/signal';\nimport { DsvPaginateComponent } from '@ng-vagabond-lab/ng-dsv/ds/paginate';\nimport { DsvTabsComponent, TabDto } from '@ng-vagabond-lab/ng-dsv/ds/tab';\nimport { DsvTableComponent } from '@ng-vagabond-lab/ng-dsv/ds/table';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { AdminTabDto } from '../../dto/admin.dto';\nimport { AdminService } from '../../service/admin.service';\n\n@Component({\n selector: 'dsv-admin-search',\n imports: [\n DsvCardComponent,\n DsvButtonComponent,\n DsvTabsComponent,\n DsvTableComponent,\n DsvPaginateComponent,\n RouterLink,\n DsvFormSignalSearchbarComponent,\n ],\n templateUrl: './admin-search.container.html',\n styleUrls: ['./admin-search.container.scss'],\n})\nexport class AdminSearchContainer extends BaseRouteContainer {\n readonly adminService = inject(AdminService);\n readonly platformService = inject(PlatformService);\n\n readonly tabs = signal<TabDto[]>([]);\n readonly tab = signal<string>('user');\n readonly tabConfig = signal<AdminTabDto | undefined>(undefined);\n\n readonly load = signal<Record<string, boolean>>({});\n\n constructor() {\n super();\n effect(() => {\n if (this.platformService.isPlatformBrowser()) {\n this.tab.set(this.routeParams()?.['type']);\n const tab = this.adminService.tabs()?.tabs.find((tab) => tab.name === this.tab());\n this.tabConfig.set(tab);\n if (!this.adminService.datas()[this.tab()] && !this.load()[this.routeParams()?.['type']]) {\n this.load.update((s) => ({ ...s, [this.tabConfig()?.name!]: true }));\n this.gotoPage(0, this.adminService.search()[this.tabConfig()?.name!]);\n }\n }\n });\n effect(() => {\n if (this.platformService.isPlatformBrowser()) {\n const tabs = this.adminService.tabs()?.tabs;\n const tabsDtos: TabDto[] = [];\n if (tabs) {\n tabs.forEach((tab) => {\n const tabsDto = {} as TabDto;\n tabsDto.id = tab.name;\n tabsDto.title = tab.name;\n tabsDto.url = '/admin/' + tab.name;\n tabsDtos.push(tabsDto);\n });\n }\n this.tabs.set(tabsDtos);\n }\n });\n }\n\n gotoPage(page: number, search: string = ''): void {\n this.adminService.page.update((s) => ({ ...s, [this.tabConfig()?.name!]: page }));\n this.adminService.search.update((s) => ({ ...s, [this.tabConfig()?.name!]: search }));\n this.adminService.get(\n this.tabConfig()?.name!,\n this.tabConfig()?.findByChamps! + '>>' + this.tabConfig()?.sortBy,\n search,\n page,\n this.adminService.tabs()?.max,\n );\n }\n}\n","<dsv-tabs-component [tabs]=\"tabs()\" [active]=\"tab()\" />\n<dsv-card>\n <div class=\"admin-header\">\n <span>Résulat : {{ adminService.datas()[tab()]?.totalElements }}</span>\n <dsv-button\n variant=\"contained\"\n color=\"primary\"\n icon=\"ri-add-line\"\n [routerLink]=\"'/admin/' + tab() + '/add'\"\n [prevent]=\"false\"\n ></dsv-button>\n </div>\n <dsv-form-signal-searchbar\n [search]=\"adminService.search()[tab()]\"\n (callbackSearch)=\"gotoPage(0, $event)\"\n />\n <dsv-table\n [cells]=\"tabConfig()?.cells!\"\n [datas]=\"adminService.datas()[tab()]?.content!\"\n [max]=\"adminService.tabs().max!\"\n [url]=\"'/admin/' + tab()\"\n ></dsv-table>\n <dsv-paginate\n [page]=\"adminService.page()[this.tabConfig()?.name!]\"\n [max]=\"adminService.datas()[tab()]?.totalPages!\"\n (callback)=\"gotoPage($event, this.adminService.search()[this.tabConfig()?.name!])\"\n />\n</dsv-card>\n","import { AdminTabDto } from './admin.dto';\n\nexport const ADMIN_COL = [\n { label: 'AUTH.FIELDS.CREATE_DATE', width: '145px', name: 'creationDate', date: true, order: true },\n { label: 'AUTH.FIELDS.ACTIVE', width: '70px', name: 'active', order: true },\n];\n\nexport const ADMIN_PROFILE_M2M = {\n name: 'name',\n endPoint: 'profile',\n fields: 'name%',\n order: 'name',\n orderBy: 'asc',\n};\n\nexport const ADMIN_INPUT = [\n {\n name: 'creationDate',\n label: 'AUTH.FIELDS.CREATE_DATE',\n type: 'datetime-local',\n className: 'width50',\n disabled: true,\n },\n {\n name: 'updatedDate',\n label: 'AUTH.FIELDS.UPDATE_DATE',\n type: 'datetime-local',\n className: 'width50',\n disabled: true,\n },\n {\n name: 'deletedDate',\n label: 'AUTH.FIELDS.DELETE_DATE',\n type: 'datetime-local',\n className: 'width50',\n disabled: true,\n },\n { name: 'active', label: 'AUTH.FIELDS.ACTIVE', type: 'switch', required: false, className: 'width50' },\n];\n\nexport const ADMIN_USER: AdminTabDto[] = [\n {\n name: 'user',\n label: 'AUTH.USER:TITLE',\n findByChamps: 'username%And|Email%',\n sortBy: 'creationDateDesc',\n sortByAsc: 'desc',\n cells: [\n { label: 'AUTH.FIELDS.LOGIN', name: 'username', order: true },\n { label: 'AUTH.FIELDS.EMAIL', width: '240px', name: 'email', order: true },\n { label: 'AUTH.FIELDS.PROFILES', name: 'profiles.name' },\n {\n label: 'AUTH.FIELDS.LAST_CONNEXION_DATE',\n width: '150px',\n name: 'lastConnexionDate',\n date: true,\n order: true,\n },\n ...ADMIN_COL,\n ],\n form: [\n { name: 'username', label: 'AUTH.FIELDS.LOGIN', type: 'text', required: true },\n { name: 'password', label: 'AUTH.FIELDS.PASSWORD', type: 'password', required: false },\n { name: 'email', label: 'AUTH.FIELDS.EMAIL', type: 'text', email: true, required: true },\n {\n name: 'profiles',\n label: 'AUTH.FIELDS.PFOFILES',\n type: 'm2m',\n required: false,\n m2m: ADMIN_PROFILE_M2M,\n array: true,\n },\n {\n name: 'lastConnexionDate',\n label: 'AUTH.FIELDS.LAST_CONNEXION_DATE',\n type: 'datetime-local',\n required: false,\n },\n {\n name: 'activationToken',\n label: 'AUTH.FIELDS.ACTIVATION_TOKEN',\n type: 'text',\n className: 'width50',\n },\n {\n name: 'emailActivation',\n label: 'AUTH.FIELDS.EMAIL_ACTIVIATION',\n type: 'switch',\n className: 'width50',\n },\n {\n name: 'identityToken',\n label: 'AUTH.FIELDS.IDENTITY_TOKEN',\n type: 'text',\n className: 'width50',\n },\n {\n name: 'identityTokenDateEnd',\n label: 'AUTH.FIELDS.IDENTITY_TOKEN_DATE',\n type: 'datetime-local',\n className: 'width50',\n },\n { name: 'googleId', label: 'AUTH.FIELDS.GOOGLE_ID', type: 'text', className: 'width50' },\n { name: 'facebookId', label: 'AUTH.FIELDS.FACEBOOK_ID', type: 'text', className: 'width50' },\n ...ADMIN_INPUT,\n ],\n },\n];\n\nexport const ADMIN_PROFILE: AdminTabDto[] = [\n {\n name: 'profile',\n label: 'AUTH.PROFILE:TITLE',\n findByChamps: 'name%',\n sortBy: 'name',\n cells: [\n { label: 'AUTH.FIELDS.NAME', name: 'name', order: true },\n { label: 'AUTH.FIELDS.ROLES', name: 'roles', order: true },\n ...ADMIN_COL,\n ],\n form: [\n { name: 'name', label: 'AUTH.FIELDS.NAME', type: 'text', required: true },\n { name: 'roles', label: 'AUTH.FIELDS.ROLES', type: 'text', required: true },\n ...ADMIN_INPUT,\n ],\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-vagabond-lab/ng-dsv",
3
- "version": "0.2.4",
3
+ "version": "0.2.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.0.0",
6
6
  "@angular/core": "^20.0.0"
@@ -2,12 +2,12 @@ import * as i0 from '@angular/core';
2
2
  import { PipeTransform } from '@angular/core';
3
3
 
4
4
  declare class DateFormatPipe implements PipeTransform {
5
- transform(value: string, showTime?: boolean): string;
5
+ transform(value: string, showTime?: boolean, technical?: boolean): string;
6
6
  static ɵfac: i0.ɵɵFactoryDeclaration<DateFormatPipe, never>;
7
7
  static ɵpipe: i0.ɵɵPipeDeclaration<DateFormatPipe, "formatDate", true>;
8
8
  }
9
9
 
10
- declare const formatDate: (value: string | Date, showTime?: boolean) => string;
10
+ declare const formatDate: (value: string | Date, showTime?: boolean, technical?: boolean) => string;
11
11
  declare function toDateInputValue(value: string | null | undefined): string;
12
12
  declare function toBackendDate(value: string | null | undefined): string;
13
13