@arsedizioni/ars-utils 20.0.34 → 20.0.35

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.
package/core/index.d.ts CHANGED
@@ -174,20 +174,20 @@ declare class SystemUtils {
174
174
  * @param b : string b
175
175
  * @returns : 0 if equals, 1 if bigger, -1 if lower
176
176
  */
177
- static compareString(a: string, b: string): number;
177
+ static compareString(a?: string, b?: string): number;
178
178
  /**
179
179
  * Capitalize a string
180
180
  * @param s : the string to capitalize
181
181
  * @returns : the capitalized string
182
182
  */
183
- static capitalize(s: string): string | undefined;
183
+ static capitalize(s?: string): string | undefined;
184
184
  /**
185
185
  * Truncate a string
186
186
  * @param s : the string to truncate
187
187
  * @param max : the max number of chars
188
188
  * @returns : the truncated string
189
189
  */
190
- static truncate(s: string, max?: number): string | undefined;
190
+ static truncate(s?: string, max?: number): string | undefined;
191
191
  /**
192
192
  * Join a list of strings
193
193
  * @param items : the list of strings
@@ -195,26 +195,26 @@ declare class SystemUtils {
195
195
  * @param max : the maximum resulting string
196
196
  * @returns : the joined string
197
197
  */
198
- static join(items: string[], sep?: string, max?: number): string | undefined;
198
+ static join(items?: string[], sep?: string, max?: number): string | undefined;
199
199
  /**
200
200
  * Replace stuff in text html
201
201
  * @param s : the string to process
202
202
  * @returns : the replaced string
203
203
  */
204
- static replaceAsHtml(s: string): string;
204
+ static replaceAsHtml(s?: string): string;
205
205
  /**
206
206
  * Convert a markdown string to html
207
207
  * @param markdown : the markdown string
208
208
  * @returns
209
209
  */
210
- static markdownToHtml(markdown: string): string;
210
+ static markdownToHtml(markdown?: string): string | undefined;
211
211
  /**
212
212
  * Compare two names
213
213
  * @param a : name a
214
214
  * @param b : name b
215
215
  * @returns : true if a equals b
216
216
  */
217
- static compareNames(a: string, b: string): boolean;
217
+ static compareNames(a?: string, b?: string): boolean;
218
218
  /**
219
219
  * Cipher a text
220
220
  * @param text : the text
@@ -222,7 +222,7 @@ declare class SystemUtils {
222
222
  * @param reverse : true to decode, false to encode
223
223
  * @returns :the ciphered text
224
224
  */
225
- static cipher(text: string, key: string, reverse?: boolean): string;
225
+ static cipher(text: string, key: string, reverse?: boolean): string | undefined;
226
226
  /**
227
227
  * Clone an object using JSON
228
228
  * @param obj : the oblect to clone
@@ -240,13 +240,13 @@ declare class SystemUtils {
240
240
  * @param value : the value to parse
241
241
  * @returns : true if is a valid UUID
242
242
  */
243
- static parseUUID(value: string): boolean;
243
+ static parseUUID(value?: string): boolean;
244
244
  /**
245
245
  * Parse and ensure that UUID is not empty
246
246
  * @param value : the value to parse
247
247
  * @returns : true if valid and not empty
248
248
  */
249
- static parseUUIDNotEmpty(value: string): boolean;
249
+ static parseUUIDNotEmpty(value?: string): boolean;
250
250
  /**
251
251
  * Return an empty UUID
252
252
  * @returns : the empty UUID
@@ -262,26 +262,26 @@ declare class SystemUtils {
262
262
  * @param value : email
263
263
  * @returns : true if the email is valid or empty
264
264
  */
265
- static parseEmail(value: string): boolean;
265
+ static parseEmail(value?: string): boolean;
266
266
  /**
267
267
  * Parse a text and return true if is a valid url or null
268
268
  * @param value : the url to parse
269
269
  * @returns : true if the url is valid or empty
270
270
  */
271
- static parseUrl(value: string): boolean;
271
+ static parseUrl(value?: string): boolean;
272
272
  /**
273
273
  * Get date parts from a string value
274
274
  * @param value : the string to parse
275
275
  * @returns : an array of numbers with year, month, day
276
276
  */
277
- static getDateParts(value: string): number[] | undefined;
277
+ static getDateParts(value?: string): number[] | undefined;
278
278
  /**
279
279
  * Parse a date
280
280
  * @param value : the value to check
281
281
  * @param locale : the locale to use
282
282
  * @returns : a valid Date object or null
283
283
  */
284
- static parseDate(value: string | Date, locale?: any): Date | undefined;
284
+ static parseDate(value?: string | Date, locale?: any): Date | undefined;
285
285
  /**
286
286
  * Format a date
287
287
  * @param value : the date or string to format
@@ -289,13 +289,13 @@ declare class SystemUtils {
289
289
  * @param locale : the locale to use (default is IT)
290
290
  * @returns : the formatted string
291
291
  */
292
- static formatDate(value: Date | string, fmt?: DateFormat | string, locale?: any): string;
292
+ static formatDate(value?: Date | string, fmt?: DateFormat | string, locale?: any): string;
293
293
  /**
294
294
  * Return an italian local date
295
295
  * @param value : the date
296
296
  * @returns : the new date
297
297
  */
298
- static toLocalDate(value: Date | string): Date;
298
+ static toLocalDate(value?: Date | string): Date;
299
299
  /**
300
300
  * Update a DateInterval object according to a string
301
301
  * @param value : string value
@@ -309,13 +309,13 @@ declare class SystemUtils {
309
309
  * @param value : the value to encode
310
310
  * @returns : the url encoded string
311
311
  */
312
- static urlEncode(value: string): string;
312
+ static urlEncode(value: string): string | undefined;
313
313
  /**
314
314
  * Decode url
315
315
  * @param value : the url to decode
316
316
  * @returns : the decode url string
317
317
  */
318
- static urlDecode(value: string): string;
318
+ static urlDecode(value?: string): string | undefined;
319
319
  /**
320
320
  * Get a querystring parameter value
321
321
  * @param name : the parameter name
@@ -332,7 +332,7 @@ declare class SystemUtils {
332
332
  * @param password: the password to evaluate
333
333
  * @returns the password strength info
334
334
  */
335
- static calculatePasswordStrength(password: string): PasswordStrength;
335
+ static calculatePasswordStrength(password?: string): PasswordStrength;
336
336
  /**
337
337
  * Check if current browser supports touch
338
338
  * @returns : true if the display is touchable
@@ -307,6 +307,8 @@ class SystemUtils {
307
307
  * @returns : the replaced string
308
308
  */
309
309
  static replaceAsHtml(s) {
310
+ if (!s)
311
+ return undefined;
310
312
  const regex = /https?:\/\/.*[^\s]/ig;
311
313
  const m = regex.exec(s);
312
314
  if (m && m.length > 0) {
@@ -324,6 +326,8 @@ class SystemUtils {
324
326
  * @returns
325
327
  */
326
328
  static markdownToHtml(markdown) {
329
+ if (!markdown)
330
+ return undefined;
327
331
  let html = markdown;
328
332
  // Headers
329
333
  html = html.replace(/^### (.*$)/gim, '<h3>$1</h3>');
@@ -490,7 +494,7 @@ class SystemUtils {
490
494
  */
491
495
  static parseUUID(value) {
492
496
  const regex = /^({|()?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}(}|))?$/;
493
- return regex.test(value);
497
+ return value?.length > 0 && regex.test(value);
494
498
  }
495
499
  /**
496
500
  * Parse and ensure that UUID is not empty
@@ -699,7 +703,9 @@ class SystemUtils {
699
703
  * @returns : the url encoded string
700
704
  */
701
705
  static urlEncode(value) {
702
- return encodeURIComponent(value);
706
+ return value?.length > 0
707
+ ? encodeURIComponent(value)
708
+ : undefined;
703
709
  }
704
710
  /**
705
711
  * Decode url
@@ -708,7 +714,9 @@ class SystemUtils {
708
714
  */
709
715
  static urlDecode(value) {
710
716
  const regex = /\+/g;
711
- return decodeURIComponent((value + "").replace(regex, "%20"));
717
+ return value?.length > 0
718
+ ? decodeURIComponent((value + "").replace(regex, "%20"))
719
+ : undefined;
712
720
  }
713
721
  /**
714
722
  * Get a querystring parameter value
@@ -1 +1 @@
1
- {"version":3,"file":"arsedizioni-ars-utils-core.mjs","sources":["../../../projects/ars-utils/core/directives/autoFocusDirective.ts","../../../projects/ars-utils/core/definitions.ts","../../../projects/ars-utils/core/system.ts","../../../projects/ars-utils/core/directives/changeDateIntervalDirective.ts","../../../projects/ars-utils/core/directives/copyClipboardDirective.ts","../../../projects/ars-utils/core/directives/validators.ts","../../../projects/ars-utils/core/pipes/format.pipe.ts","../../../projects/ars-utils/core/pipes/replace.pipe.ts","../../../projects/ars-utils/core/pipes/safe-html.pipe.ts","../../../projects/ars-utils/core/pipes/safe-url.pipe.ts","../../../projects/ars-utils/core/pipes/search-callback.pipe.ts","../../../projects/ars-utils/core/pipes/search-filter.pipe.ts","../../../projects/ars-utils/core/pipes/format-html.pipe.ts","../../../projects/ars-utils/core/messages.ts","../../../projects/ars-utils/core/selectable.ts","../../../projects/ars-utils/core/services/broadcast.service.ts","../../../projects/ars-utils/core/services/environment.service.ts","../../../projects/ars-utils/core/services/screen.service.ts","../../../projects/ars-utils/core/services/broadcastChannelManager.ts","../../../projects/ars-utils/core/services/theme.service.ts","../../../projects/ars-utils/core/core.module.ts","../../../projects/ars-utils/core/dateFnsAdapter.module.ts","../../../projects/ars-utils/core/directives/removeFocusDirective.ts","../../../projects/ars-utils/core/public_api.ts","../../../projects/ars-utils/core/arsedizioni-ars-utils-core.ts"],"sourcesContent":["import { AfterContentInit, Directive, ElementRef, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: \"[autoFocus]\",\r\n standalone: true\r\n })\r\nexport class AutoFocusDirective implements AfterContentInit {\r\n\r\n private elementRef = inject(ElementRef);\r\n\r\n public ngAfterContentInit() {\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.focus();\r\n }, 500);\r\n }\r\n }","import { INode } from './system';\r\n\r\nexport interface DoneResult<T> {\r\n isNew?: boolean;\r\n data?: T;\r\n}\r\n\r\nexport interface ApiResponse {\r\n success: boolean;\r\n message: string;\r\n}\r\n\r\nexport interface ApiResult<T> extends ApiResponse {\r\n value: T;\r\n}\r\n\r\nexport interface Folder extends INode {\r\n teamId?: string;\r\n parentId?: string;\r\n position?: number;\r\n isPrivate?: boolean;\r\n itemsCount?: number;\r\n subItemsCount?: number;\r\n\r\n}\r\n\r\nexport interface FolderTree extends Folder {\r\n children?: Folder[];\r\n path?: string;\r\n}\r\n\r\nexport interface File<T> {\r\n ownerId?: T;\r\n id?: number;\r\n fileName: string;\r\n fileData: any;\r\n}\r\n\r\nexport interface Validated {\r\n isValid(): boolean;\r\n}\r\n\r\nexport class FileInfo implements Validated {\r\n file: any;\r\n valid: boolean;\r\n\r\n isValid(): boolean {\r\n return this.valid;\r\n }\r\n}\r\n\r\nexport interface ErrorInfo {\r\n invalidateSession?: boolean;\r\n title?: string;\r\n message?: string;\r\n errorStatus?: number;\r\n service?: string;\r\n}\r\n\r\nexport interface NameValueItem<T> {\r\n name: string;\r\n value: T;\r\n shortName?: string;\r\n parentName?: string;\r\n parentValue?: T;\r\n header?: string;\r\n bag?: any;\r\n bagInfo?: string;\r\n disabled?: boolean;\r\n selected?: boolean;\r\n}\r\n\r\nexport interface Checkable {\r\n checked?: boolean;\r\n bag: any;\r\n getId(): any;\r\n}\r\n\r\n\r\nexport class ValueModel<T> {\r\n value: T;\r\n}\r\nexport class IDModel<T> {\r\n id: T;\r\n}\r\nexport class GroupModel<T> {\r\n ids: T[];\r\n}\r\n\r\nexport class DeleteModel<T> extends GroupModel<T> {\r\n mode: number;\r\n}\r\nexport interface DeleteResultModel<T> {\r\n items?: T[],\r\n deleted: number;\r\n total: number;\r\n log?: string;\r\n}\r\n\r\nexport class RelationModel<T> {\r\n id: T;\r\n parentId: T;\r\n}\r\n\r\nexport class UpdateRelationsModel<T> {\r\n id: T;\r\n relatedIds: T[];\r\n}\r\n\r\nexport class QueryModel {\r\n any?: string;\r\n sortBy?: string;\r\n sortDescending?: boolean;\r\n first?: number;\r\n count?: number;\r\n}\r\n\r\nexport interface QueryResultModel<T> {\r\n interval?: string;\r\n items: T[];\r\n total: number;\r\n}\r\n\r\nexport interface UpdateModel<T> {\r\n parentId?: T;\r\n ids: T[];\r\n}\r\n\r\nexport interface UpdateResultModel<T> {\r\n items?: T[];\r\n updated: number;\r\n total: number;\r\n log?: string;\r\n}\r\n\r\nexport interface AddModel<T> extends UpdateModel<T> {\r\n\r\n}\r\n\r\nexport interface AddResultModel<T> {\r\n items?: T[];\r\n added: number;\r\n total: number;\r\n log?: string;\r\n}\r\n\r\nexport class ImportModel {\r\n origin: string;\r\n dataFile: FileInfo;\r\n jumpFirstLine?: boolean;\r\n map?: any;\r\n}\r\n\r\nexport interface EnableDisableModel {\r\n value: boolean;\r\n}\r\n\r\nexport interface SendToModel {\r\n sendToRecipients?: string;\r\n sendToSubject?: string;\r\n sendToText?: string;\r\n}\r\n\r\nexport interface SearchBag {\r\n name: string;\r\n}\r\n\r\nexport interface Searchable {\r\n searchBag: SearchBag;\r\n}\r\n\r\nexport interface SearchFilterMetadata {\r\n total: number; // totale elementi\r\n count: number; // conteggio filtrati\r\n}\r\n\r\nexport class DateInterval {\r\n from?: Date;\r\n to?: Date;\r\n get fromAsDate() {\r\n return this.from\r\n ? new Date(\r\n this.from.getFullYear(),\r\n this.from.getMonth(),\r\n this.from.getDate(),\r\n 2,\r\n 0,\r\n 0\r\n )\r\n : null;\r\n }\r\n get toAsDate() {\r\n return this.to\r\n ? new Date(this.to.getFullYear(), this.to.getMonth(), this.to.getDate(), 2, 0, 0)\r\n : null;\r\n }\r\n\r\n constructor(from?: Date, to?: Date) {\r\n this.from = from;\r\n this.to = to;\r\n }\r\n\r\n /**\r\n * Clear interval\r\n */\r\n clear() {\r\n this.from = undefined;\r\n this.to = undefined;\r\n }\r\n}\r\n\r\nexport interface LoginResult<T> extends ApiResult<boolean> {\r\n context: T;\r\n token: string;\r\n refreshToken?: string;\r\n}\r\n","import { HttpParams } from \"@angular/common/http\";\r\nimport { DateInterval } from './definitions';\r\nimport { format, parse, parseISO } from 'date-fns';\r\nimport { it } from 'date-fns/locale';\r\nimport { TZDate } from '@date-fns/tz';\r\n\r\nexport interface INode {\r\n id: string;\r\n name?: string;\r\n count?: number;\r\n children?: INode[];\r\n subFolders?: INode[];\r\n parent?: INode;\r\n bag?: any\r\n}\r\n\r\n\r\nexport enum DateFormat {\r\n Short = 1, // dd/mm/yyyy\r\n Long = 2, // d mmmm yyyy\r\n LongWithShortMonth = 3, // d mmm yyyy\r\n LongWithWeekDay = 4, // wwww, d mmmm yyyy\r\n LongWithShortWeekDay = 5, // www, d mmmm yyyy\r\n MonthAndYear = 6, // mmm yyyy\r\n LongMonthAndYear = 7, // mmmm yyyy\r\n WeekDay = 8, // www d\r\n LongWeekDay = 9, // wwww d\r\n DayAndMonth = 10, // d mmmm\r\n ShortUS = 11, // mm/dd/yyyy\r\n ShortISO8601 = 12 // yyyy-mm-dd\r\n}\r\n\r\nexport interface PasswordStrength {\r\n score: number;\r\n label?: string;\r\n color?: string;\r\n suggestions?: string[];\r\n isValid: boolean;\r\n}\r\n\r\nexport class SystemUtils {\r\n /**\r\n * Array find by key\r\n * @param array : the array to scan\r\n * @param key : key name\r\n * @param value : the value to search for\r\n * @returns : the property value or null\r\n */\r\n static arrayFindByKey<T>(array: T[] | undefined, key: string, value: any): T | undefined {\r\n if (!array) return undefined;\r\n for (const item of array) {\r\n if ((item as any)[key] === value) {\r\n return item;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Array find index by key\r\n * @param array : the array to scan\r\n * @param key : the key name\r\n * @param value : the value to search for\r\n * @returns : the array index or -1 if not found\r\n */\r\n static arrayFindIndexByKey<T>(array: T[] | undefined, key: string, value: any): number {\r\n if (!array) return -1;\r\n for (let i = 0; i < array.length; i++) {\r\n if ((array[i] as any)[key] === value) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n /**\r\n * Get a value from and array made of name|value items\r\n * @param array : the array to scan\r\n * @param value : the value to search for\r\n * @returns : the property value or null if not found\r\n */\r\n static arrayGetValue<T>(array: T[] | undefined, value: any): any {\r\n if (!array) return undefined;\r\n for (var i = 0; i < array.length; i++) {\r\n const item = (array[i] as any);\r\n if (item.value === value) {\r\n return item.name || item.id;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Convert items to nodes into a tree structure\r\n * @param items : list of nodes\r\n * @param parent : parent node\r\n * @returns : an array of INode objects\r\n */\r\n static arrayToNodes(items: INode[], parent?: INode): INode[] {\r\n const nodes: INode[] = [];\r\n items.forEach(n => {\r\n const node: INode = {\r\n id: n.id.toString(),\r\n name: n.name,\r\n count: n.count ? n.count : 0,\r\n children: undefined,\r\n parent,\r\n bag: n,\r\n };\r\n nodes.push(node);\r\n node.children =\r\n n.children && n.children.length > 0\r\n ? this.arrayToNodes(n.children, node)\r\n : [];\r\n });\r\n return nodes;\r\n }\r\n\r\n /**\r\n * Used to copare items during an array of objects sorting\r\n * @param key : the property name to sort for\r\n * @param order : the order 'asc' or 'desc'\r\n * @returns : 0 if equals, 1 if bigger, -1 if lower\r\n */\r\n static arraySortCompare(key: string, order: string = \"asc\") {\r\n const result = function innerSort(a: any, b: any) {\r\n if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {\r\n // property doesn't exist on either object\r\n return 0;\r\n }\r\n const varA = typeof a[key] === \"string\" ? a[key].toUpperCase() : a[key];\r\n const varB = typeof b[key] === \"string\" ? b[key].toUpperCase() : b[key];\r\n let comparison = 0;\r\n if (varA > varB) comparison = 1;\r\n else if (varA < varB) comparison = -1;\r\n return order === \"desc\" ? comparison * -1 : comparison;\r\n };\r\n return result;\r\n }\r\n\r\n /**\r\n * Format weight\r\n * @param gr : grams\r\n * @returns : the formatted string\r\n */\r\n static formatWeight(gr: number): string {\r\n if (gr > 1000000) return (gr / 1000000).toFixed(2) + \" t\";\r\n else if (gr > 100000) return (gr / 100000).toFixed(2) + \" q\";\r\n else if (gr > 1000) return (gr / 1000).toFixed(2) + \" kg\";\r\n else return gr + \" gr\";\r\n }\r\n\r\n /**\r\n * Format file size\r\n * @param bytes : number of bytes\r\n * @returns : the formatted string\r\n */\r\n static formatFileSize(bytes: number): string {\r\n if (bytes > 1024000) return (bytes / 1024000).toFixed(1) + \" MB\";\r\n if (bytes > 1024) return (bytes / 1024).toFixed(1) + \" Kb\";\r\n return bytes + \" byte\";\r\n }\r\n\r\n /**\r\n * Compare two string\r\n * @param a : string a\r\n * @param b : string b\r\n * @returns : 0 if equals, 1 if bigger, -1 if lower\r\n */\r\n static compareString(a: string, b: string): number {\r\n if ((a ?? \"\").toLowerCase() > (b ?? \"\").toLowerCase()) return 1;\r\n if ((a ?? \"\").toLowerCase() < (b ?? \"\").toLowerCase()) return -1;\r\n return 0;\r\n }\r\n\r\n /**\r\n * Capitalize a string\r\n * @param s : the string to capitalize\r\n * @returns : the capitalized string \r\n */\r\n static capitalize(s: string): string | undefined {\r\n if (!s) return undefined;\r\n let b = \"\";\r\n let cap = true;\r\n for (const char of s) {\r\n if (char === \" \") {\r\n b += char;\r\n cap = true;\r\n } else if (cap) {\r\n b += char.toUpperCase();\r\n cap = false;\r\n } else {\r\n b += char.toLowerCase();\r\n }\r\n }\r\n return b;\r\n }\r\n\r\n /**\r\n * Truncate a string\r\n * @param s : the string to truncate\r\n * @param max : the max number of chars\r\n * @returns : the truncated string\r\n */\r\n static truncate(s: string, max: number = 500): string | undefined {\r\n if (!s) return undefined;\r\n if (s.length < max) return s;\r\n let i = max - 1;\r\n while (i > 0) {\r\n if (s[i] === ' ') return s.slice(0, i);\r\n i--;\r\n }\r\n return s;\r\n }\r\n\r\n /**\r\n * Join a list of strings\r\n * @param items : the list of strings\r\n * @param sep : the separator string\r\n * @param max : the maximum resulting string\r\n * @returns : the joined string\r\n */\r\n static join(items: string[], sep: string = \" \", max: number = 350): string | undefined {\r\n if (!items || items.length === 0) return undefined;\r\n if (items.length > 1) {\r\n let l = 0;\r\n let s = \"\"\r\n while (s.length < max && items.length > l) {\r\n if (l > 0) {\r\n s += sep;\r\n }\r\n s += items[l++];\r\n }\r\n if (items.length > l) {\r\n s += \"...\";\r\n }\r\n return s;\r\n }\r\n return items[0];\r\n }\r\n\r\n /**\r\n * Replace stuff in text html\r\n * @param s : the string to process\r\n * @returns : the replaced string \r\n */\r\n static replaceAsHtml(s: string): string {\r\n const regex = /https?:\\/\\/.*[^\\s]/ig\r\n const m = regex.exec(s);\r\n if (m && m.length > 0) {\r\n let v = undefined;\r\n for (let i = 0; i < m.length; i++) {\r\n v = m[i];\r\n s = s.replace(v, '<a href=\"' + v + '\" target=\"_blank\">' + v + '</a>');\r\n }\r\n }\r\n return s;\r\n }\r\n\r\n /**\r\n * Convert a markdown string to html\r\n * @param markdown : the markdown string\r\n * @returns \r\n */\r\n static markdownToHtml(markdown: string): string {\r\n let html = markdown;\r\n\r\n // Headers\r\n html = html.replace(/^### (.*$)/gim, '<h3>$1</h3>');\r\n html = html.replace(/^## (.*$)/gim, '<h2>$1</h2>');\r\n html = html.replace(/^# (.*$)/gim, '<h1>$1</h1>');\r\n\r\n // Bold\r\n html = html.replace(/\\*\\*(.*)\\*\\*/gim, '<strong>$1</strong>');\r\n html = html.replace(/__(.*?)__/gim, '<strong>$1</strong>');\r\n\r\n // Italic\r\n html = html.replace(/\\*(.*?)\\*/gim, '<em>$1</em>');\r\n html = html.replace(/_(.*?)_/gim, '<em>$1</em>');\r\n\r\n // Code blocks\r\n html = html.replace(/```([\\s\\S]*?)```/gim, '<pre><code>$1</code></pre>');\r\n\r\n // Inline code\r\n html = html.replace(/`(.*?)`/gim, '<code>$1</code>');\r\n\r\n // Links\r\n html = html.replace(/\\[([^\\]]*)\\]\\(([^)]*)\\)/gim, '<a href=\"$2\">$1</a>');\r\n\r\n // Images\r\n html = html.replace(/!\\[([^\\]]*)\\]\\(([^)]*)\\)/gim, '<img alt=\"$1\" src=\"$2\" />');\r\n\r\n // Blockquotes\r\n html = html.replace(/^\\> (.*$)/gim, '<blockquote>$1</blockquote>');\r\n\r\n // Unordered lists\r\n html = html.replace(/^\\* (.*$)/gim, '<li>$1</li>');\r\n html = html.replace(/^- (.*$)/gim, '<li>$1</li>');\r\n\r\n // Ordered lists\r\n html = html.replace(/^\\d+\\. (.*$)/gim, '<li>$1</li>');\r\n\r\n // Wrap list items in ul/ol tags\r\n html = html.replace(/(<li>.*<\\/li>)/gims, function (match) {\r\n return '<ul>' + match + '</ul>';\r\n });\r\n\r\n // Tables\r\n html = html.replace(/\\|(.+)\\|/g, function (_match, content) {\r\n const cells = content.split('|').map((cell: any) => cell.trim());\r\n return '<tr>' + cells.map((cell: any) => {\r\n // Check if this is a header separator row\r\n if (cell.match(/^[\\s\\-\\:]+$/)) {\r\n return null;\r\n }\r\n return '<td>' + cell + '</td>';\r\n }).filter((cell: any) => cell !== null).join('') + '</tr>';\r\n });\r\n\r\n // Convert table rows to proper table structure\r\n html = html.replace(/(<tr>.*?<\\/tr>)\\s*\\n*(<tr>.*?<\\/tr>)/gs, function (match, firstRow, rest) {\r\n // Check if the second row is a separator (contains only dashes, colons, spaces)\r\n const secondRowContent = rest.replace(/<\\/?t[rd]>/g, '');\r\n if (secondRowContent.match(/^[\\s\\-\\:\\|]+$/)) {\r\n // This is a header separator, make first row a header\r\n const headerRow = firstRow.replace(/<td>/g, '<th>').replace(/<\\/td>/g, '</th>');\r\n return headerRow;\r\n }\r\n return match;\r\n });\r\n\r\n // Wrap table rows in table tags\r\n html = html.replace(/(<tr>.*?<\\/tr>(?:\\s*<tr>.*?<\\/tr>)*)/gs, '<table>$1</table>');\r\n\r\n // Horizontal rules\r\n html = html.replace(/^\\-\\-\\-$/gim, '<hr>');\r\n html = html.replace(/^\\*\\*\\*$/gim, '<hr>');\r\n\r\n // Line breaks\r\n html = html.replace(/\\n\\n/gim, '</p><p>');\r\n html = html.replace(/\\n/gim, '<br>');\r\n\r\n // Wrap in paragraphs\r\n html = '<p>' + html + '</p>';\r\n\r\n // Clean up empty paragraphs\r\n html = html.replace(/<p><\\/p>/gim, '');\r\n html = html.replace(/<p>(<h[1-6]>)/gim, '$1');\r\n html = html.replace(/(<\\/h[1-6]>)<\\/p>/gim, '$1');\r\n html = html.replace(/<p>(<ul>)/gim, '$1');\r\n html = html.replace(/(<\\/ul>)<\\/p>/gim, '$1');\r\n html = html.replace(/<p>(<blockquote>)/gim, '$1');\r\n html = html.replace(/(<\\/blockquote>)<\\/p>/gim, '$1');\r\n html = html.replace(/<p>(<pre>)/gim, '$1');\r\n html = html.replace(/(<\\/pre>)<\\/p>/gim, '$1');\r\n html = html.replace(/<p>(<table>)/gim, '$1');\r\n html = html.replace(/(<\\/table>)<\\/p>/gim, '$1');\r\n html = html.replace(/<p>(<hr>)<\\/p>/gim, '$1');\r\n\r\n return html;\r\n }\r\n\r\n\r\n /**\r\n * Compare two names\r\n * @param a : name a\r\n * @param b : name b\r\n * @returns : true if a equals b\r\n */\r\n static compareNames(a: string, b: string): boolean {\r\n if (a) a = a.trim();\r\n if (b) b = b.trim();\r\n if (a && b && a.length !== b.length) return false;\r\n if (this.compareString(a, b) === 0) return true;\r\n const p1 = a.split(\" \");\r\n const p2 = b.split(\" \");\r\n if (p1.length !== p2.length) return false;\r\n let matches = p1.length;\r\n for (const s1 of p1) {\r\n for (const s2 of p2) {\r\n if (this.compareString(s1, s2) === 0) {\r\n matches--;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return matches === 0;\r\n }\r\n\r\n /**\r\n * Cipher a text\r\n * @param text : the text\r\n * @param key : the key\r\n * @param reverse : true to decode, false to encode\r\n * @returns :the ciphered text\r\n */\r\n static cipher(text: string, key: string, reverse: boolean = false): string {\r\n // Surrogate pair limit\r\n var bound = 0x10000;\r\n\r\n // Create string from character codes\r\n return String.fromCharCode.apply(\r\n null,\r\n // Turn string to character codes\r\n text.split(\"\").map(function (v: any, i: number) {\r\n // Get rotation from key\r\n var rotation = key.charCodeAt(i % key.length);\r\n\r\n // Are we decrypting?\r\n if (reverse) rotation = -rotation;\r\n\r\n // Return current character code + rotation\r\n return (v.charCodeAt() + rotation + bound) % bound;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Clone an object using JSON\r\n * @param obj : the oblect to clone\r\n * @returns : a new object\r\n */\r\n static clone(obj: any): any | undefined {\r\n if (!obj) return undefined;\r\n return JSON.parse(JSON.stringify(obj));\r\n }\r\n\r\n /**\r\n * Clone an object using deep cloning\r\n * @param obj : the oblect to clone\r\n * @returns : a new object\r\n */\r\n static deepClone<T>(obj: any, dest?: T): T {\r\n const cloneObj = dest ? dest : (obj.constructor() as any);\r\n const attributes = Object.keys(obj);\r\n for (const attribute of attributes) {\r\n const property = obj[attribute];\r\n if (typeof property === \"object\" && property != null) {\r\n cloneObj[attribute] = this.deepClone(property);\r\n } else {\r\n cloneObj[attribute] = property;\r\n }\r\n }\r\n return cloneObj;\r\n }\r\n\r\n\r\n /**\r\n * Check if a string is a valid UUID\r\n * @param value : the value to parse\r\n * @returns : true if is a valid UUID\r\n */\r\n static parseUUID(value: string): boolean {\r\n const regex = /^({|()?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}(}|))?$/;\r\n return regex.test(value);\r\n }\r\n\r\n /**\r\n * Parse and ensure that UUID is not empty\r\n * @param value : the value to parse\r\n * @returns : true if valid and not empty\r\n */\r\n static parseUUIDNotEmpty(value: string): boolean {\r\n const regex = /^({|()?0{8}-(0{4}-){3}0{12}(}|))?$/;\r\n return this.parseUUID(value) && !regex.test(value);\r\n }\r\n\r\n /**\r\n * Return an empty UUID\r\n * @returns : the empty UUID\r\n */\r\n static emptyUUID(): string { return \"00000000-0000-0000-0000-000000000000\" };\r\n\r\n /**\r\n * Create a new UUID\r\n * @returns : the string UUID\r\n */\r\n static generateUUID(): string {\r\n const regex = /[xy]/g;\r\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(regex, function (c) {\r\n var r = (Math.random() * 16) | 0,\r\n v = c === \"x\" ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n }\r\n\r\n /**\r\n * Parse a text and return true if is a valid email or null\r\n * @param value : email\r\n * @returns : true if the email is valid or empty\r\n */\r\n static parseEmail(value: string): boolean {\r\n if (!value) return true;\r\n const regex = /(?:[a-z0-9+!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/gi\r\n return regex.test(value.trim().toLowerCase());\r\n }\r\n\r\n /**\r\n * Parse a text and return true if is a valid url or null\r\n * @param value : the url to parse\r\n * @returns : true if the url is valid or empty\r\n */\r\n static parseUrl(value: string): boolean {\r\n if (!value) return true;\r\n const regex = new RegExp(\r\n \"(https?://)?([\\\\da-z.-]+)\\\\.([a-z.]{2,6})[/\\\\w .-]*/?\"\r\n );\r\n return regex.test(value.trim().toLowerCase());\r\n }\r\n\r\n /**\r\n * Get date parts from a string value\r\n * @param value : the string to parse\r\n * @returns : an array of numbers with year, month, day\r\n */\r\n static getDateParts(value: string): number[] | undefined {\r\n if (!value) return undefined;\r\n let parts: number[] = [];\r\n if (value.indexOf(\"-\") !== -1) {\r\n const p = value.split(\"-\");\r\n if (p.length !== 3) return undefined;\r\n parts = [parseInt(p[0]), parseInt(p[1]) - 1, parseInt(p[2])];\r\n } else if (value.indexOf(\"/\") !== -1) {\r\n const p = value.split(\"/\");\r\n if (p.length !== 3) return undefined;\r\n parts = [parseInt(p[2]), parseInt(p[1]) - 1, parseInt(p[0])];\r\n }\r\n return parts;\r\n }\r\n\r\n /**\r\n * Parse a date\r\n * @param value : the value to check\r\n * @param locale : the locale to use\r\n * @returns : a valid Date object or null\r\n */\r\n static parseDate(value: string | Date, locale: any = it): Date | undefined {\r\n // No value at all\r\n if (!value) return undefined;\r\n // A Date value\r\n if (value instanceof Date && value.getTime()) return value;\r\n // Parse known formats using date-fns\r\n let d = parseISO(value as string);\r\n if (d && d.getTime() && d.getFullYear() > 1750) return d;\r\n d = parse(value as string, 'dd/MM/yyyy', new Date(), { locale: locale });\r\n if (d && d.getTime() && d.getFullYear() > 1750) return d;\r\n d = parse(value as string, 'yyyy-MM-dd', new Date(), { locale: locale });\r\n if (d && d.getTime() && d.getFullYear() > 1750) return d;\r\n // Parse values manually\r\n let parts = this.getDateParts(value as string);\r\n if (!parts) return undefined;\r\n if (parts[0] < 100) parts[0] += 2000;\r\n if (isNaN(parts[0]) || parts[0] < 0 || parts[0] < 1750) return undefined;\r\n if (isNaN(parts[1]) || parts[1] < 0) return undefined;\r\n if (isNaN(parts[2]) || parts[2] < 0) return undefined;\r\n if (parts[1] > 11) return undefined;\r\n if (parts[1] === 1 && parts[2] > 29) return undefined;\r\n else if (parts[1] !== 1 && parts[2] > 31) return undefined;\r\n return new TZDate(parts[0], parts[1], parts[2], 12);\r\n }\r\n\r\n /**\r\n * Format a date\r\n * @param value : the date or string to format\r\n * @param fmt : the DateFormat to use or the string pattern\r\n * @param locale : the locale to use (default is IT)\r\n * @returns : the formatted string\r\n */\r\n static formatDate(\r\n value: Date | string,\r\n fmt: DateFormat | string = DateFormat.Short,\r\n locale: any = it): string {\r\n // No value at all\r\n if (!value) return undefined;\r\n // A string\r\n if (typeof value === 'string' || value instanceof String)\r\n value = this.parseDate(value as string);\r\n // Not a date \r\n if (!(value instanceof Date && value.getTime()))\r\n return undefined;\r\n // Format\r\n switch (fmt) {\r\n case DateFormat.Short: return format(value, \"dd/MM/yyyy\", { locale: locale });\r\n case DateFormat.Long: return format(value, \"d MMMM yyyy\", { locale: locale });\r\n case DateFormat.LongWithShortMonth: return format(value, \"d MMM yyyy\", { locale: locale });\r\n case DateFormat.LongWithWeekDay: return format(value, \"EEEE, d MMMM yyyy\", { locale: locale });\r\n case DateFormat.LongWithShortWeekDay: return format(value, \"EEE, d MMMM yyyy\", { locale: locale });\r\n case DateFormat.MonthAndYear: return format(value, \"MMM yyyy\", { locale: locale });\r\n case DateFormat.LongMonthAndYear: return format(value, \"MMMM yyyy\", { locale: locale });\r\n case DateFormat.WeekDay: return format(value, \"EEE, d\", { locale: locale });\r\n case DateFormat.LongWeekDay: return format(value, \"EEEE, d\", { locale: locale });\r\n case DateFormat.DayAndMonth: return format(value, \"d MMMM\", { locale: locale });\r\n case DateFormat.ShortUS: return format(value, \"MM/dd/yyyy\", { locale: locale });\r\n case DateFormat.ShortISO8601: return format(value, \"yyyy-MM-dd\", { locale: locale });\r\n default:\r\n return format(value, fmt, { locale: locale });\r\n }\r\n }\r\n\r\n /**\r\n * Return an italian local date\r\n * @param value : the date\r\n * @returns : the new date\r\n */\r\n static toLocalDate(value: Date | string): Date {\r\n // No value at all\r\n if (!value) return undefined;\r\n // A string\r\n if (typeof value === 'string' || value instanceof String)\r\n value = this.parseDate(value as string);\r\n // Not a date\r\n if (!(value instanceof Date && value.getTime())) return undefined;\r\n // Update date\r\n return new TZDate(value, \"Europe/Rome\");\r\n }\r\n\r\n /**\r\n * Update a DateInterval object according to a string\r\n * @param value : string value\r\n * @param interval : DateInterval value to update\r\n * @param end : true if must be updated the first or the end value \r\n * @param copy : copy the same value (works only if not end element)\r\n */\r\n static changeDateInterval(value: string, interval: DateInterval, end: boolean = false, copy: boolean = false) {\r\n if (value) {\r\n let year = -1;\r\n if (value.length === 4 && (year = parseInt(value)) > 1750) {\r\n if (!end) {\r\n interval.from = new TZDate(new Date(year, 0, 1), 'Europe/Rome');\r\n interval.to = new TZDate(new Date(year, 11, 31), 'Europe/Rome');\r\n } else\r\n interval.to = new Date(year, 11, 31);\r\n } else {\r\n let parts = this.getDateParts(value);\r\n if (!parts || isNaN(parts[0]) || parts[0] < 0 || parts[0] < 1750) return;\r\n const d = new TZDate(new Date(parts[0], parts[1], parts[2]), 'Europe/Rome');\r\n if (end)\r\n interval.to = d;\r\n else if (copy) {\r\n interval.from = d;\r\n interval.to = d;\r\n } else\r\n interval.from = d;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Encode url\r\n * @param value : the value to encode\r\n * @returns : the url encoded string\r\n */\r\n static urlEncode(value: string): string {\r\n return encodeURIComponent(value);\r\n }\r\n\r\n /**\r\n * Decode url\r\n * @param value : the url to decode\r\n * @returns : the decode url string\r\n */\r\n static urlDecode(value: string): string {\r\n const regex = /\\+/g;\r\n return decodeURIComponent((value + \"\").replace(regex, \"%20\"));\r\n }\r\n\r\n /**\r\n * Get a querystring parameter value\r\n * @param name : the parameter name\r\n * @returns : the string value\r\n */\r\n static getQueryStringValueByName(name: string): string {\r\n if (!this.isBrowser()) return undefined;\r\n const url = window.location.href;\r\n if (url.includes(\"?\")) {\r\n const httpParams = new HttpParams({ fromString: url.split(\"?\")[1] });\r\n const v = decodeURIComponent(httpParams.get(name));\r\n if (v && v !== \"null\") return v;\r\n else return undefined;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Generate a password\r\n * @returns : the password string\r\n */\r\n static generatePassword(): string {\r\n const random = \"$\" + Math.random().toString(36).slice(-11);\r\n let password = \"\";\r\n let hasUpperCase = false;\r\n for (const rnd of random) {\r\n if (!hasUpperCase && \"abcdefghjilmnopqrstuvywxz\".includes(rnd)) {\r\n password += rnd.toUpperCase();\r\n hasUpperCase = true;\r\n } else {\r\n password += rnd;\r\n }\r\n }\r\n if (!hasUpperCase)\r\n password = password.substring(0, 11) + \"M\";\r\n return password;\r\n }\r\n\r\n /**\r\n * Calculate password strength\r\n * @param password: the password to evaluate\r\n * @returns the password strength info\r\n */\r\n static calculatePasswordStrength(password: string): PasswordStrength {\r\n if (password?.length > 0) {\r\n let score = 0;\r\n const suggestions: string[] = [];\r\n\r\n // Length\r\n if (password.length >= 10) score++;\r\n else suggestions.push('Usa almeno 10 caratteri.');\r\n if (password.length >= 12) score++;\r\n else if (password.length >= 10) suggestions.push('Considera di usare più di 12 caratteri.');\r\n\r\n // Lowercase letters\r\n if (/[a-z]/.test(password)) score++;\r\n else suggestions.push('Aggiungi lettere minuscole.');\r\n\r\n // Uppercase letters\r\n if (/[A-Z]/.test(password)) score++;\r\n else suggestions.push('Aggiungi lettere maiuscole.');\r\n\r\n // Numbers\r\n if (/\\d/.test(password)) score++;\r\n else suggestions.push('Aggiungi numeri.');\r\n\r\n // Special characters\r\n if (/[!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]/.test(password)) score++;\r\n else suggestions.push('Aggiungi caratteri speciali (!@#$%^&*).');\r\n\r\n // Common patterns\r\n if (/(.)\\1{2,}/.test(password)) {\r\n score = Math.max(0, score - 1);\r\n suggestions.push('Evita di ripetere lo stesso carattere.');\r\n }\r\n if (/123|abc|qwe/i.test(password)) {\r\n score = Math.max(0, score - 1);\r\n suggestions.push('Evita sequenze comuni (123, abc, qwe).');\r\n }\r\n\r\n // Label and color\r\n let label: string;\r\n let color: string;\r\n let isValid: boolean;\r\n if (score <= 2) {\r\n label = 'Molto debole';\r\n color = '#f44336';\r\n isValid = false;\r\n } else if (score <= 3) {\r\n label = 'Debole';\r\n color = '#ff9800';\r\n isValid = false;\r\n } else if (score <= 4) {\r\n label = 'Media';\r\n color = '#ffc107';\r\n isValid = true;\r\n } else if (score <= 5) {\r\n label = 'Forte';\r\n color = '#8bc34a';\r\n isValid = true;\r\n } else {\r\n label = 'Molto forte';\r\n color = '#4caf50';\r\n isValid = true;\r\n }\r\n\r\n return {\r\n score: score,\r\n label: label,\r\n color: color,\r\n suggestions: suggestions,\r\n isValid: isValid\r\n };\r\n } else\r\n return {\r\n score: 0,\r\n isValid: false,\r\n suggestions: []\r\n };\r\n\r\n }\r\n\r\n\r\n /**\r\n * Check if current browser supports touch\r\n * @returns : true if the display is touchable\r\n */\r\n static isTouchable(): boolean {\r\n return (\r\n this.isBrowser() && (\r\n \"ontouchstart\" in window ||\r\n navigator.maxTouchPoints > 0)\r\n );\r\n }\r\n\r\n /**\r\n * This check will prevent 'window' logic to be executed\r\n * while executing the server rendering\r\n * @returns : true if using the browser\r\n */\r\n static isBrowser(): boolean {\r\n return typeof (window) !== 'undefined';\r\n }\r\n\r\n /**\r\n * Convert folders in a tree of Node object.\r\n * @param folders : the subfolders group or null to root\r\n * @returns : a node list\r\n */\r\n static toNodes(folders: INode[]): INode[] {\r\n return this._toNodes(folders, undefined);\r\n }\r\n\r\n /**\r\n * Convert folders in a tree of Node object.\r\n * @param folders : the children group or null to root\r\n * @param parent : the parent node\r\n * @returns : a node list \r\n */\r\n private static _toNodes(folders: INode[], parent?: INode): INode[] {\r\n const nodes: INode[] = [];\r\n folders.forEach((n: INode) => {\r\n const node: INode = {\r\n id: n.id,\r\n name: n.name,\r\n count: n.count,\r\n parent: parent,\r\n children: undefined,\r\n bag: n,\r\n };\r\n const children = n.children ?? n.subFolders ?? [];\r\n if (children.length > 0) {\r\n node.children = this._toNodes(n.children ?? n.subFolders, node);\r\n }\r\n nodes.push(node);\r\n });\r\n return nodes;\r\n }\r\n\r\n /**\r\n * Return the flags array to be used in selections\r\n * @param value : the new value\r\n * @param max: the max number of flags\r\n */\r\n static getFlags(value: number, max: number = 30): number[] {\r\n if (value) {\r\n let items: number[] = [];\r\n let v = 1;\r\n let m = 1 << max;\r\n while (v < m) {\r\n if ((value & v) === v) items.push(v);\r\n v = v << 1;\r\n }\r\n return items;\r\n } else return [];\r\n }\r\n\r\n /**\r\n * Check if a color is light or dark\r\n * @param color : the color\r\n * @param minimumLuminance : the lumimance to consider\r\n * @returns true if the color is light\r\n */\r\n static isColorLight(color: string, minimumLuminance: number = 186): boolean {\r\n const tempDiv = document.createElement('div');\r\n tempDiv.style.color = color;\r\n document.body.appendChild(tempDiv);\r\n const rgb = getComputedStyle(tempDiv).color;\r\n document.body.removeChild(tempDiv);\r\n const result = rgb.match(/\\d+/g);\r\n if (!result || result.length < 3) return true; // fallback\r\n const r = parseInt(result[0], 10);\r\n const g = parseInt(result[1], 10);\r\n const b = parseInt(result[2], 10);\r\n const luminance = 0.299 * r + 0.587 * g + 0.114 * b;\r\n return luminance > minimumLuminance;\r\n }\r\n}\r\n","import { Directive, HostListener, OnDestroy, OnInit, input } from '@angular/core';\r\nimport { DateInterval } from '../definitions';\r\nimport { SystemUtils } from '../system';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { Subject, Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[dateIntervalChange]',\r\n standalone: true,\r\n})\r\nexport class DateIntervalChangeDirective implements OnInit, OnDestroy {\r\n readonly dateIntervalChange = input<DateInterval>(new DateInterval(null, null));\r\n readonly end = input<boolean>(false);\r\n private subject = new Subject();\r\n private subscription: Subscription;\r\n\r\n ngOnInit() {\r\n this.subscription = this.subject\r\n .pipe(debounceTime(100))\r\n .subscribe((e: any) => { \r\n const value = (e.target as HTMLInputElement).value;\r\n SystemUtils.changeDateInterval(value, this.dateIntervalChange(), this.end(), e.key === ' ');\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n @HostListener('keyup', ['$event']) public onKeyup(e: KeyboardEvent): void {\r\n if (e.key === ' ') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n this.subject.next(event);\r\n\r\n }\r\n}","import {\r\n Directive,\r\n HostListener,\r\n Injectable,\r\n input,\r\n output\r\n} from '@angular/core';\r\nimport { SystemUtils } from '../system';\r\n\r\n\r\n@Injectable()\r\n@Directive({\r\n selector: '[copyClipboard]',\r\n standalone: true\r\n})\r\nexport class CopyClipboardDirective {\r\n readonly payload = input<string>(undefined, { alias: \"copyClipboard\" });\r\n\r\n readonly copied = output<string>({ alias: 'copied' });\r\n\r\n @HostListener('click', ['$event'])\r\n public onClick(e: MouseEvent): void {\r\n e.preventDefault();\r\n if (!this.payload()) return;\r\n\r\n if (SystemUtils.isBrowser()) {\r\n let listener = (e: ClipboardEvent) => {\r\n let clipboard = e.clipboardData;\r\n const payload = this.payload();\r\n clipboard.setData('text/html', payload.toString());\r\n e.preventDefault();\r\n\r\n this.copied.emit(payload);\r\n };\r\n\r\n document.addEventListener('copy', listener, false);\r\n document.execCommand('copy');\r\n document.removeEventListener('copy', listener, false);\r\n }\r\n }\r\n}\r\n","import { Directive, forwardRef, input } from \"@angular/core\";\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n ValidationErrors,\r\n Validator,\r\n} from \"@angular/forms\";\r\nimport { endOfDay } from 'date-fns';\r\nimport { Validated } from '../definitions';\r\nimport { SystemUtils } from \"../system\";\r\n\r\n\r\n@Directive({\r\n selector: '[validator]',\r\n providers: [{ provide: NG_VALIDATORS, useExisting: ValidatorDirective, multi: true }],\r\n standalone: true, \r\n})\r\nexport class ValidatorDirective implements Validator {\r\n readonly validator = input<(control: AbstractControl) => ValidationErrors | undefined>(undefined);\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n return this.validator()(control);\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[validIf]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => ValidIfDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class ValidIfDirective implements Validator {\r\n readonly validIf = input<boolean>(false);\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n let isValid = false;\r\n let c = control.value ? (control.value as Validated) : null;\r\n if (!c) isValid = this.validIf() === true;\r\n else {\r\n try {\r\n isValid = c.isValid();\r\n } catch { }\r\n }\r\n if (isValid) {\r\n return undefined;\r\n } else {\r\n return { validIf: \"Non valido.\" };\r\n }\r\n }\r\n}\r\n\r\n\r\n@Directive({\r\n selector: \"[equals]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => EqualsValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class EqualsValidatorDirective implements Validator {\r\n readonly equals = input<AbstractControl>(null);\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const isValid = this.equals().value === control.value;\r\n if (isValid) {\r\n return undefined;\r\n } else {\r\n return { equals: \"Non valido.\" };\r\n }\r\n }\r\n}\r\n\r\n\r\n@Directive({\r\n selector: \"[notEqual]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NotEqualValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class NotEqualValidatorDirective implements Validator {\r\n\r\n readonly notEqual = input<AbstractControl>(undefined);\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n\r\n const notEqual = this.notEqual();\r\n const isValid = (!notEqual.value && !control.value) || (notEqual.value !== control.value);\r\n const errors: ValidationErrors | undefined = isValid ? null : { 'notequal': true };\r\n\r\n // immediate show up\r\n const notEqualValue = this.notEqual();\r\n if (errors) {\r\n control.markAsTouched();\r\n } else if (notEqualValue.hasError('notequal')) {\r\n notEqualValue.setErrors({ 'notequal': null });\r\n notEqualValue.updateValueAndValidity({ onlySelf: true, emitEvent: false });\r\n notEqualValue.markAsTouched();\r\n notEqualValue.markAsDirty();\r\n }\r\n return errors;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[emails]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => EmailsValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class EmailsValidatorDirective implements Validator {\r\n \r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n let isValid = true;\r\n const input = control.value;\r\n if (!input || input.length === 0) return undefined;\r\n var parts = input.replaceAll(/\\r\\n/g, \"\").split(\";\");\r\n for (var i = 0; i < parts.length; i++) {\r\n if (parts[i].length > 0) {\r\n if (!SystemUtils.parseEmail(parts[i])) {\r\n isValid = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (!isValid) {\r\n return { emails: \"Elenco non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[guid]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => GuidValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class GuidValidatorDirective implements Validator {\r\n \r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n if (!input || input.length === 0) return undefined;\r\n const isValid = SystemUtils.parseUUID(input);\r\n if (!isValid) {\r\n return { guid: \"Non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[sqlDate]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => SqlDateValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class SqlDateValidatorDirective implements Validator {\r\n \r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n if (!input || input.length === 0) return undefined;\r\n const d = endOfDay(SystemUtils.parseDate(input));\r\n const isValid = d.getFullYear() > 1750;\r\n if (!isValid) {\r\n return { notFuture: \"Non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[notFuture]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NotFutureValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class NotFutureValidatorDirective implements Validator {\r\n \r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n if (!input || input.length === 0) return undefined;\r\n const today = endOfDay(new Date());\r\n const d = endOfDay(SystemUtils.parseDate(input));\r\n const isValid = d <= today;\r\n if (!isValid) {\r\n return { notFuture: \"Non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[url]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UrlValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class UrlValidatorDirective implements Validator {\r\n \r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n const isValid = SystemUtils.parseUrl(input);\r\n if (!isValid) {\r\n return { url: \"Non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n\r\n@Directive({\r\n selector: \"[fileSize]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => FileSizeValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class FileSizeValidatorDirective implements Validator {\r\n readonly maxSizeMb = input<number>(5);\r\n readonly minSizeMb = input<number>(0);\r\n readonly size = input<number>(undefined);\r\n\r\n \r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n const size = this.size();\r\n let s = size ? size : 0;\r\n if (!input) return undefined;\r\n const isValid = s <= this.maxSizeMb() && s >= this.minSizeMb();\r\n if (isValid) {\r\n return undefined;\r\n } else {\r\n return { fileSize: \"Non valido.\" };\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[maxTerms]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => MaxTermsValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\n\r\nexport class MaxTermsValidatorDirective implements Validator {\r\n readonly maxTerms = input<number>(0);\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n if (!input) return undefined;\r\n const terms = input?.match(/\\S+/g)?.length ?? 0;\r\n const isValid = terms <= this.maxTerms();\r\n if (isValid) {\r\n return undefined;\r\n } else {\r\n return { maxTerms: \"Non valido.\" };\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[password]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => PasswordValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class PasswordValidatorDirective implements Validator {\r\n \r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value ?? '';\r\n const strength = SystemUtils.calculatePasswordStrength(input);\r\n if (!strength.isValid) {\r\n return { password: \"Non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n@Directive({\r\n selector: \"[time]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => TimeValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\n\r\nexport class TimeValidatorDirective implements Validator {\r\n readonly slots = input<string>(undefined);\r\n \r\n\r\n /**\r\n * Retrieve hours as a number from a time string (e: 12:00)\r\n * @param value : the time string\r\n * @returns the hours as a number or -1\r\n */\r\n private getTime(value: string): number | undefined {\r\n const p = value.split(':');\r\n if (p.length !== 2) return -1;\r\n const hh = parseInt(p[0]);\r\n if (hh < 0 || hh > 23) return -1;\r\n const mm = parseInt(p[1]);\r\n if (mm < 0 || hh > 59) return -1;\r\n return parseInt(p[0] + p[1]);\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n if (!input || input.length === 0) return undefined;\r\n let isValid: boolean = false;\r\n const t = this.getTime(input);\r\n if (t !== -1) {\r\n const slotsValue = this.slots();\r\n if (slotsValue) {\r\n const slots = slotsValue.split('|');\r\n slots.forEach(s => {\r\n const t1 = this.getTime(s.substring(0, 5));\r\n const t2 = this.getTime(s.substring(6));\r\n if (t1 !== -1 && t2 !== -1 && t1 <= t && t2 >= t) {\r\n // Good\r\n isValid = true;\r\n return;\r\n }\r\n });\r\n }\r\n }\r\n if (!isValid) {\r\n return { time: \"Non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\r\nimport { format } from 'date-fns';\r\nimport { it } from 'date-fns/locale';\r\nimport { SystemUtils } from '../system';\r\n\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'format',\r\n standalone: true\r\n})\r\nexport class FormatPipe implements PipeTransform {\r\n\r\n\r\n transform(\r\n value?: any | undefined,\r\n type: string = 'date',\r\n pattern: string = \"dd/MM/yyyy\"): string | undefined {\r\n if (value === undefined || value === null) return undefined;\r\n switch (type) {\r\n case 'D':\r\n case 'date':\r\n const d = SystemUtils.parseDate(value, it);\r\n if (d) return format(d, pattern, { locale: it });\r\n break;\r\n case 'C':\r\n case 'currency':\r\n return new Intl.NumberFormat('it-IT', { style: 'currency', currency: 'EUR' }).format(value ?? 0);\r\n case 'N':\r\n case 'number':\r\n return new Intl.NumberFormat('it-IT', { style: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 2 }).format(value ?? 0);\r\n case 'N0':\r\n case 'number0':\r\n return new Intl.NumberFormat('it-IT', { style: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 }).format(value ?? 0);\r\n case 'P':\r\n case 'percentage':\r\n return new Intl.NumberFormat('it-IT', { style: 'percent', minimumFractionDigits: 0, maximumFractionDigits: 0 }).format(value ?? 0); \r\n }\r\n return undefined;\r\n }\r\n}\r\n","import { Injectable, Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'replace',\r\n standalone: true\r\n})\r\nexport class ReplacePipe implements PipeTransform {\r\n\r\n private sanitizer = inject(DomSanitizer);\r\n \r\n transform(value: string | undefined, regexValue: string, replaceValue: string): SafeHtml {\r\n if (!value) return undefined;\r\n if (regexValue === '\\n' && !replaceValue) {\r\n replaceValue = '<br>';\r\n }\r\n return this.sanitizer.bypassSecurityTrustHtml(value.replace(new RegExp(regexValue, 'g'), replaceValue));\r\n }\r\n}\r\n","import { Pipe, Injectable, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'safeHtml',\r\n standalone: true\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n transform(value?: string ): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(value ?? '');\r\n }\r\n}\r\n","import { Pipe, Injectable, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'safeUrl',\r\n standalone: true\r\n})\r\nexport class SafeUrlPipe implements PipeTransform {\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n transform(value?: string): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(value ?? '');\r\n }\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'callback',\r\n pure: false,\r\n standalone: true\r\n})\r\nexport class SearchCallbackPipe implements PipeTransform {\r\n transform(items: any[] | undefined, callback: (item: any) => boolean): any {\r\n if (!items || !callback) {\r\n return items;\r\n }\r\n return items.filter(item => callback(item));\r\n }\r\n}\r\n","import { Pipe, PipeTransform, Injectable } from '@angular/core';\r\nimport { SearchFilterMetadata } from '../definitions';\r\n\r\n// ---------------------------------------------------------------------------------\r\n// 2023.0921 aggiunto un campo opzionale di tipo SearchFilterMetadata per i conteggi\r\n//\r\n// - nel chiamante:\r\n// let items: Searchable[] = [...];\r\n// let myFilterText: string = 'testo del filtro';\r\n// const myFilterMetadata: SearchFilterMetadata = { total: 0, count: 0 };\r\n// \r\n// <div *ngFor=\"let item of items | search:myFilterText:myFilterMetadata\">\r\n// <div>Totale: {{ myFilterMetadata.total }}, Filtrati: {{ myFilterMetadata.count }}</div>\r\n// ---------------------------------------------------------------------------------\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'search',\r\n standalone: true\r\n})\r\nexport class SearchFilterPipe implements PipeTransform {\r\n transform(items?: any[], value?: string, metadata?: SearchFilterMetadata): any {\r\n\r\n // se non vengono passati i metadati ne crea una copia locale per evitare gli if\r\n metadata = metadata || { total: 0, count: 0 };\r\n\r\n if (!items || !value) {\r\n return items;\r\n }\r\n let result = items.filter(item => {\r\n if (item) {\r\n if (item.searchBag)\r\n return item.searchBag.name\r\n .toLowerCase()\r\n .indexOf(value.toLowerCase()) !== -1;\r\n else return item.toLowerCase().indexOf(value.toLowerCase()) !== -1;\r\n }\r\n return null;\r\n });\r\n\r\n // aggiorna i conteggi\r\n metadata.total = items.length;\r\n metadata.count = result.length;\r\n\r\n return result;\r\n }\r\n}\r\n","import { Pipe, Injectable, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'formatHtml',\r\n standalone: true\r\n})\r\nexport class FormatHtmlPipe implements PipeTransform {\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n transform(value?: string ): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(value.replaceAll(/(?:\\r\\n|\\r|\\n)/g, '<br>') ?? '');\r\n }\r\n}\r\n","export const UtilsMessages = {\r\n /**\r\n * Messages\r\n */\r\n\r\n\r\n // Select dialog\r\n UTILS_DIALOGS_SELECT_OPTIONS_CHANGED: '§utils-dialogs-select-options-changed'\r\n};\r\n","import { SelectionModel } from \"@angular/cdk/collections\";\r\nimport { SystemUtils } from \"./system\";\r\nimport { EventEmitter } from '@angular/core';\r\n\r\nexport class SelectableModel<T, V> {\r\n\r\n changed: EventEmitter<T> = new EventEmitter<T>();\r\n\r\n private _all: T[] = [];\r\n get all(): T[] {\r\n return this._all;\r\n }\r\n private _current: SelectionModel<T>;\r\n get current(): SelectionModel<T> {\r\n return this._current;\r\n }\r\n private _lookupFieldName: string;\r\n\r\n constructor(\r\n allowMultiSelect: boolean = true,\r\n lookupFieldName: string = \"id\"\r\n ) {\r\n this._current = new SelectionModel<T>(allowMultiSelect, []);\r\n this._all = [];\r\n this._lookupFieldName = lookupFieldName;\r\n }\r\n\r\n /**\r\n * Update the view of an item\r\n * @param item : the item to update\r\n * @param lookupValue : the value\r\n */\r\n updateCurrent(item: T, lookupValue: V) {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n );\r\n if (p != -1) {\r\n this._current.toggle(item);\r\n this.changed.emit(item);\r\n }\r\n }\r\n\r\n /**\r\n * Select an item\r\n * @param item : the item to update\r\n * @param lookupValue : the value\r\n */\r\n toggle(item: T, lookupValue?: V) {\r\n if (lookupValue) {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n );\r\n if (p == -1) {\r\n this._all.push(item);\r\n } else {\r\n this._all.splice(p, 1);\r\n }\r\n this._current.toggle(item);\r\n this.changed.emit(item);\r\n }\r\n }\r\n\r\n /**\r\n * Select an item\r\n * @param item : the item to update\r\n * @param lookupValue : the value\r\n */\r\n select(item: T, lookupValue?: V) {\r\n if (lookupValue) {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n );\r\n if (p == -1) {\r\n this._all.push(item);\r\n } \r\n this._current.select(item);\r\n this.changed.emit(item);\r\n }\r\n }\r\n\r\n /**\r\n * Deselect an item\r\n * @param item : the item to update\r\n * @param lookupValue : the value\r\n */\r\n deselect(item: T, lookupValue?: V) {\r\n if (lookupValue) {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n );\r\n if (p != -1) {\r\n this._all.splice(p, 1);\r\n this._current.deselect(item);\r\n this.changed.emit(item);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Deselect all specified item lookup values\r\n * @param lookupValues : the values\r\n */\r\n deselectByValues(lookupValues: V[]) {\r\n if (!lookupValues || lookupValues.length === 0) return;\r\n lookupValues.forEach(n => {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n n\r\n );\r\n if (p != -1) {\r\n let item = this._all[p];\r\n this._all.splice(p, 1);\r\n this._current.deselect(item);\r\n this.changed.emit(item);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Clear current view\r\n * @param clearFunc : the function used to clear\r\n */\r\n clearCurrent(clearFunc: any) {\r\n this._current.selected.forEach(n => {\r\n clearFunc(n);\r\n });\r\n this._current.clear();\r\n this.changed.emit();\r\n }\r\n\r\n /**\r\n * Deselect all items\r\n */\r\n clear() {\r\n this._all = [];\r\n this._current.clear();\r\n this.changed.emit();\r\n }\r\n\r\n /**\r\n * Checks if an item is selected using its lookup value\r\n * @param lookupValue : the value\r\n * @returns : true if the value is selected\r\n */\r\n isSelected(lookupValue?: V): boolean {\r\n return (lookupValue &&\r\n SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n ) != -1\r\n );\r\n }\r\n\r\n /**\r\n * Checks if a selection exists\r\n * @returns : true if at least one selection exists\r\n */\r\n hasValue(): boolean {\r\n return this._all.length > 0;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nexport interface BroadcastMessageInfo {\r\n id: string;\r\n data?: any;\r\n}\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BroadcastService {\r\n private subject = new Subject<BroadcastMessageInfo>();\r\n\r\n /**\r\n * Send a message\r\n * @param id : the message id\r\n * @param data : the data to send\r\n * @param delay : the number of milliseconds to wait before sending the message\r\n */\r\n sendMessage(id: string, data: any = null, delay: number = 0) {\r\n setTimeout(() => {\r\n this.subject.next({ id: id, data: data } as BroadcastMessageInfo);\r\n }, delay);\r\n }\r\n\r\n /**\r\n * Get the next message as observable\r\n * @returns : the observable object\r\n */\r\n getMessage(): Observable<BroadcastMessageInfo> {\r\n return this.subject.asObservable();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnvironmentService {\r\n \r\n private _appUri: string = '';\r\n get appUri() {\r\n return this._appUri;\r\n }\r\n set appUri(value: string) {\r\n this._appUri = value;\r\n }\r\n\r\n private _appServiceUri: string = '';\r\n get appServiceUri() {\r\n return this._appServiceUri;\r\n }\r\n set appServiceUri(value: string) {\r\n this._appServiceUri = value;\r\n }\r\n\r\n private _appLoginRedirectUri: string = '';\r\n get appLoginRedirectUri() {\r\n return this._appLoginRedirectUri ?? this._appUri;\r\n }\r\n set appLoginRedirectUri(value: string) {\r\n this._appLoginRedirectUri = value;\r\n }\r\n\r\n private _appServiceLoginUri: string = '';\r\n get appServiceLoginUri() {\r\n return this._appServiceLoginUri ?? this._appServiceUri;\r\n }\r\n set appServiceLoginUri(value: string) {\r\n this._appServiceLoginUri = value;\r\n }\r\n}\r\n","import { Injectable, signal } from '@angular/core';\r\nimport { SystemUtils } from '../system';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ScreenService {\r\n public mq = signal<string>(\"\");\r\n \r\n get isTouchable(): boolean {\r\n return SystemUtils.isTouchable();\r\n }\r\n get isIEOrEdge(): boolean {\r\n return /msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent);\r\n }\r\n\r\n}\r\n","/**\r\n * Standard Broadcast Messages Manager\r\n * https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel\r\n */\r\n\r\n/**\r\n * The message bag sent as a message\r\n */\r\nexport interface BroadcastChannelMessageBag<T> {\r\n messageId: string;\r\n sender: string;\r\n data?: T;\r\n}\r\n\r\n/**\r\n * Message subscription params\r\n */\r\nexport interface BroadcastChannelSubscriberInfo<T> {\r\n messageId: string;\r\n action: (bag: BroadcastChannelMessageBag<T>) => void;\r\n}\r\n\r\n/**\r\n * Web Standard Broadcast Messages Manager\r\n * https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel\r\n */\r\nexport class BroadcastChannelManager {\r\n private channel?: BroadcastChannel;\r\n private subscriptions: BroadcastChannelSubscriberInfo<any>[] = [];\r\n\r\n /**\r\n * Get the current channel registration\r\n */\r\n public get currentBus(): string | undefined {\r\n return this.channel?.name;\r\n }\r\n\r\n constructor(bus: string) {\r\n this.channel = new BroadcastChannel(bus);\r\n\r\n this.channel.onmessageerror = (e: any) => {\r\n console.error('[BroadcastChannelManager] Errore di ricezione del messaggio', e);\r\n };\r\n\r\n this.channel.onmessage = (e: MessageEvent) => {\r\n const bag: BroadcastChannelMessageBag<any> | undefined = e.data as BroadcastChannelMessageBag<any>;\r\n if (bag) {\r\n const bagInfo: BroadcastChannelSubscriberInfo<any> | undefined = this.subscriptions.find(m => m.messageId === bag.messageId);\r\n bagInfo?.action(bag);\r\n }\r\n }\r\n }\r\n\r\n dispose(): void {\r\n this.subscriptions = [];\r\n this.channel?.close();\r\n this.channel = undefined;\r\n }\r\n\r\n /**\r\n * Send a message\r\n * @param bag The message, see also {@link BroadcastChannelMessageBag}\r\n *\r\n * @example\r\n * channel.sendMessage({ messageId: 'my-broadcast-message', sender: 'the-sender', data: value });\r\n */\r\n sendMessage<T>(bag: BroadcastChannelMessageBag<T>): void;\r\n /**\r\n * Send a message\r\n * @param bag The message, see also {@link BroadcastChannelMessageBag}\r\n * @param delay The number of milliseconds to wait before sending the message, see also {@link setTimeout}\r\n *\r\n * @example\r\n * channel.sendMessage({ messageId: 'my-broadcast-message', sender: 'the-sender', data: value }, 250);\r\n */\r\n sendMessage<T>(bag: BroadcastChannelMessageBag<T>, delay?: number): void;\r\n /**\r\n * Send a message\r\n * @param messageId The message id\r\n * @param data The data to send\r\n *\r\n * @example\r\n * channel.sendMessage('my-broadcast-message', value);\r\n */\r\n sendMessage<T>(messageId: string, data?: T): void;\r\n /**\r\n * Send a message\r\n * @param messageId The message id\r\n * @param data The data to send\r\n * @param delay The number of milliseconds to wait before sending the message\r\n *\r\n * @example\r\n * channel.sendMessage('my-broadcast-message', value, 250);\r\n */\r\n sendMessage<T>(messageId: string, data?: T, delay?: number): void;\r\n\r\n /**\r\n * overloads\r\n */\r\n sendMessage<T>(messageIdorBag: string | BroadcastChannelMessageBag<T>, dataOrDelay?: T | number, delay?: number) {\r\n setTimeout(() => {\r\n if (typeof messageIdorBag === 'string') {\r\n this.channel?.postMessage({ messageId: messageIdorBag, data: dataOrDelay } as BroadcastChannelMessageBag<T>);\r\n } else {\r\n this.channel?.postMessage(messageIdorBag as BroadcastChannelMessageBag<T>);\r\n }\r\n }, (typeof dataOrDelay === 'number' ? dataOrDelay : delay) ?? 0);\r\n }\r\n\r\n /**\r\n * Subscribe to a message\r\n * @param args The subscription info, see also {@link BroadcastChannelSubscriberInfo}\r\n */\r\n subscribe<T>(args: BroadcastChannelSubscriberInfo<T>) {\r\n const i: number = this.subscriptions.findIndex(m => m.messageId === args.messageId);\r\n if (i === -1) {\r\n this.subscriptions.push(args);\r\n } else {\r\n this.subscriptions[i].action = args.action;\r\n }\r\n }\r\n\r\n /**\r\n * Remove a message subscription\r\n * @param messageId The message id\r\n */\r\n unsubscribe(messageId: string) {\r\n const i: number = this.subscriptions.findIndex(m => m.messageId === messageId);\r\n if (i !== -1) {\r\n this.subscriptions.splice(i, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Remove all the current subscriptions\r\n */\r\n unsubscribeAll() {\r\n this.subscriptions = [];\r\n }\r\n}\r\n","import { computed, inject, Injectable, OnDestroy, RendererFactory2, Signal, signal } from \"@angular/core\";\r\nimport { BroadcastChannelManager, BroadcastChannelMessageBag } from './broadcastChannelManager';\r\nimport { BehaviorSubject, Observable } from \"rxjs\";\r\n\r\n\r\n/**\r\n * Kind of themes: system default, light or dark\r\n */\r\nexport type ThemeType = 'auto' | 'light' | 'dark';\r\n\r\n/**\r\n * Available themes' schema\r\n */\r\ninterface ThemeInfoRecord {\r\n icon: string;\r\n name: string;\r\n next: ThemeType;\r\n tooltip: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class ThemeService implements OnDestroy {\r\n\r\n // messaggi broadcast\r\n private readonly broadcastChannel = new BroadcastChannelManager('THEME-SERVICE');\r\n private readonly broadcastMessage: string = '$theme-changed';\r\n\r\n // per intercettare il cambio di tema a livello di sistema\r\n private readonly prefersColorSchemeMediaQueryList = window.matchMedia('(prefers-color-scheme: dark)');\r\n\r\n /**\r\n * Theme changed e.\r\n * Notify the consuming component about the incoming theme change.\r\n * @example \r\n * // React to theme changes\r\n * this.themeService.themeChanged\r\n * .pipe(takeUntil(this.unsubscribe))\r\n * .subscribe((value: ThemeType) => {\r\n * // do the job done....\r\n * });\r\n */\r\n private themeChanged = new BehaviorSubject<ThemeType>('auto');\r\n // espone al consumatore un'observable\r\n public changed: Observable<ThemeType> = this.themeChanged.asObservable();\r\n\r\n private renderFactory2 = inject(RendererFactory2);\r\n private renderer = this.renderFactory2.createRenderer(null, null);\r\n\r\n /**\r\n * Current theme\r\n */\r\n private readonly theme = signal<ThemeType>(\"light\");\r\n /**\r\n * The current theme is \"System default\"\r\n */\r\n private readonly auto: Signal<boolean> = computed(() => this.theme() === 'auto');\r\n\r\n /**\r\n * Configuration schema about the icon, the text and the toggle() sequence\r\n */\r\n private readonly themeInfo: Record<ThemeType, ThemeInfoRecord> = {\r\n ['auto']: { icon: 'routine', name: 'Tema di sistema', next: 'light', tooltip: 'Passa a tema chiaro', },\r\n ['light']: { icon: 'light_mode', name: 'Tema chiaro', next: 'dark', tooltip: 'Passa a tema scuro', },\r\n ['dark']: { icon: 'dark_mode', name: 'Tema scuro', next: 'auto', tooltip: 'Passa a tema di sistema', },\r\n };\r\n\r\n /**\r\n * Icon of the current theme (mat-icon code)\r\n */\r\n public readonly themeIcon: Signal<string> = computed(() => this.themeInfo[this.theme()].icon);\r\n /**\r\n * Current theme name\r\n */\r\n public readonly themeName: Signal<string> = computed(() => this.themeInfo[this.theme()].name);\r\n /**\r\n * Tooltip text on toggle \r\n */\r\n public readonly toggleTooltip: Signal<string> = computed(() => this.themeInfo[this.theme()].tooltip);\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize(theme: ThemeType = this.getPreferredTheme()) {\r\n // React to current theme\r\n this.prefersColorSchemeMediaQueryList.onchange = (_: MediaQueryListEvent) => this.auto() ? this.setTheme(theme) : null;\r\n\r\n // Support boradcast channel messaging\r\n this.broadcastChannel.subscribe<ThemeType>({\r\n messageId: this.broadcastMessage,\r\n action: (bag: BroadcastChannelMessageBag<ThemeType>) => {\r\n if (this.theme() !== bag.data) {\r\n this.setTheme(bag.data);\r\n }\r\n }\r\n });\r\n\r\n // Load theme\r\n this.setTheme(theme);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.broadcastChannel.dispose();\r\n }\r\n\r\n /**\r\n * Get the current preferred theme\r\n */\r\n private getPreferredTheme(): ThemeType {\r\n let theme: ThemeType = localStorage.getItem(\"preferred-theme\") as ThemeType;\r\n if (!this.isTheme(theme)) {\r\n theme = 'auto';\r\n }\r\n return theme;\r\n }\r\n\r\n /**\r\n * Check if a value string is a theme type\r\n * @param value : th string value\r\n * @returns true if the the value is a valid theme type\r\n */\r\n private isTheme(value: string): value is ThemeType {\r\n return ['auto', 'light', 'dark'].includes(value);\r\n }\r\n\r\n\r\n /**\r\n * Set the new theme\r\n * @param theme the new theme\r\n */\r\n private setTheme(theme: ThemeType = 'auto') {\r\n this.renderer.removeClass(document.body, 'light');\r\n this.renderer.removeClass(document.body, 'dark');\r\n this.theme.set(theme);\r\n localStorage.setItem(\"preferred-theme\", this.theme());\r\n this.renderer.addClass(document.body, this.auto() ? (window.matchMedia && window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\") : theme);\r\n // Notify that current theme has changed\r\n this.themeChanged.next(this.getTheme());\r\n this.broadcastChannel.sendMessage(this.broadcastMessage, this.theme());\r\n }\r\n\r\n /**\r\n * Toggle theme\r\n */\r\n public toggleTheme(): void {\r\n this.setTheme(this.themeInfo[this.theme()].next);\r\n }\r\n\r\n /**\r\n * Get current real theme: light or dark\r\n */\r\n public getTheme(): ThemeType {\r\n return (\r\n this.auto()\r\n ? (window.matchMedia && window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\")\r\n : this.getPreferredTheme());\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { AutoFocusDirective } from './directives/autoFocusDirective';\r\nimport { DateIntervalChangeDirective } from './directives/changeDateIntervalDirective';\r\nimport { CopyClipboardDirective } from './directives/copyClipboardDirective';\r\nimport { EmailsValidatorDirective, EqualsValidatorDirective, FileSizeValidatorDirective, GuidValidatorDirective, MaxTermsValidatorDirective, NotFutureValidatorDirective, PasswordValidatorDirective, SqlDateValidatorDirective, UrlValidatorDirective, ValidIfDirective, ValidatorDirective } from './directives/validators';\r\nimport { FormatPipe } from './pipes/format.pipe';\r\nimport { ReplacePipe } from './pipes/replace.pipe';\r\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\r\nimport { SafeUrlPipe } from './pipes/safe-url.pipe';\r\nimport { SearchCallbackPipe } from './pipes/search-callback.pipe';\r\nimport { SearchFilterPipe } from './pipes/search-filter.pipe';\r\nimport { FormatHtmlPipe } from './pipes/format-html.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n FileSizeValidatorDirective,\r\n ValidIfDirective,\r\n ValidatorDirective,\r\n EqualsValidatorDirective,\r\n GuidValidatorDirective,\r\n EmailsValidatorDirective,\r\n UrlValidatorDirective,\r\n NotFutureValidatorDirective,\r\n PasswordValidatorDirective,\r\n DateIntervalChangeDirective,\r\n SqlDateValidatorDirective,\r\n SearchFilterPipe,\r\n SearchCallbackPipe,\r\n SafeHtmlPipe,\r\n SafeUrlPipe,\r\n ReplacePipe,\r\n FormatPipe,\r\n FormatHtmlPipe,\r\n CopyClipboardDirective,\r\n AutoFocusDirective,\r\n MaxTermsValidatorDirective\r\n ],\r\n exports: [\r\n FileSizeValidatorDirective,\r\n ValidIfDirective,\r\n ValidatorDirective,\r\n EqualsValidatorDirective,\r\n GuidValidatorDirective,\r\n EmailsValidatorDirective,\r\n UrlValidatorDirective,\r\n NotFutureValidatorDirective,\r\n PasswordValidatorDirective,\r\n DateIntervalChangeDirective,\r\n SqlDateValidatorDirective,\r\n SearchFilterPipe,\r\n SearchCallbackPipe,\r\n SafeHtmlPipe,\r\n SafeUrlPipe,\r\n ReplacePipe,\r\n FormatPipe,\r\n FormatHtmlPipe,\r\n CopyClipboardDirective,\r\n AutoFocusDirective,\r\n MaxTermsValidatorDirective\r\n ],\r\n providers: [\r\n SearchFilterPipe,\r\n SearchCallbackPipe,\r\n SafeHtmlPipe,\r\n SafeUrlPipe,\r\n ReplacePipe,\r\n FormatPipe,\r\n FormatHtmlPipe\r\n ]\r\n})\r\nexport class ArsCoreModule { }\r\n\r\nexport * from './definitions';\r\nexport * from './messages';\r\nexport * from './selectable';\r\nexport * from './services/broadcast.service';\r\nexport * from './services/environment.service';\r\nexport * from './services/screen.service';\r\nexport * from './services/theme.service';\r\nexport * from './system';\r\n\r\n","import { inject, Injectable, NgModule } from '@angular/core';\r\nimport { DateAdapter, MatDateFormats, MAT_DATE_LOCALE, MAT_DATE_FORMATS } from '@angular/material/core';\r\nimport { TZDate } from '@date-fns/tz';\r\nimport {\r\n Locale,\r\n getMonth,\r\n getYear,\r\n getDate,\r\n getDay,\r\n getDaysInMonth,\r\n formatISO,\r\n addYears,\r\n addMonths,\r\n addDays,\r\n isValid,\r\n isDate,\r\n format,\r\n parseISO,\r\n parse,\r\n} from 'date-fns';\r\n\r\n\r\n/** Creates an array and fills it with values. */\r\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\r\n const valuesArray = Array(length);\r\n for (let i = 0; i < length; i++) {\r\n valuesArray[i] = valueFunction(i);\r\n }\r\n return valuesArray;\r\n}\r\n\r\n// date-fns doesn't have a way to read/print month names or days of the week directly,\r\n// so we get them by formatting a date with a format that produces the desired month/day.\r\nconst MONTH_FORMATS = {\r\n long: 'LLLL',\r\n short: 'LLL',\r\n narrow: 'LLLLL',\r\n};\r\n\r\nconst DAY_OF_WEEK_FORMATS = {\r\n long: 'EEEE',\r\n short: 'EEE',\r\n narrow: 'EEEEE',\r\n};\r\n\r\nexport const MAT_DATE_FNS_FORMATS: MatDateFormats = {\r\n parse: {\r\n dateInput: 'P',\r\n },\r\n display: {\r\n dateInput: 'P',\r\n monthYearLabel: 'LLL uuuu',\r\n dateA11yLabel: 'PP',\r\n monthYearA11yLabel: 'LLLL uuuu',\r\n },\r\n};\r\n\r\n\r\n\r\n/** Adds date-fns support to Angular Material. */\r\n@Injectable()\r\nexport class DateFnsAdapter extends DateAdapter<Date, Locale> {\r\n constructor(...args: unknown[]);\r\n constructor() {\r\n super();\r\n const matDateLocale = inject(MAT_DATE_LOCALE, { optional: true });\r\n this.setLocale(matDateLocale as Locale);\r\n }\r\n\r\n getYear(date: Date): number {\r\n return getYear(date);\r\n }\r\n\r\n getMonth(date: Date): number {\r\n return getMonth(date);\r\n }\r\n\r\n getDate(date: Date): number {\r\n return getDate(date);\r\n }\r\n\r\n getDayOfWeek(date: Date): number {\r\n return getDay(date);\r\n }\r\n\r\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\r\n const pattern = MONTH_FORMATS[style];\r\n return range(12, i => this.format(new Date(2017, i, 1), pattern));\r\n }\r\n\r\n getDateNames(): string[] {\r\n const dtf =\r\n typeof Intl !== 'undefined'\r\n ? new Intl.DateTimeFormat(this.locale.code, {\r\n day: 'numeric',\r\n timeZone: 'utc',\r\n })\r\n : null;\r\n\r\n return range(31, i => {\r\n if (dtf) {\r\n // date-fns doesn't appear to support this functionality.\r\n // Fall back to `Intl` on supported browsers.\r\n const date = new Date();\r\n date.setUTCFullYear(2017, 0, i + 1);\r\n date.setUTCHours(0, 0, 0, 0);\r\n return dtf.format(date).replace(/[\\u200e\\u200f]/g, '');\r\n }\r\n\r\n return i + '';\r\n });\r\n }\r\n\r\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\r\n const pattern = DAY_OF_WEEK_FORMATS[style];\r\n return range(7, i => this.format(new Date(2017, 0, i + 1), pattern));\r\n }\r\n\r\n getYearName(date: Date): string {\r\n return this.format(date, 'y');\r\n }\r\n\r\n getFirstDayOfWeek(): number {\r\n return this.locale.options?.weekStartsOn ?? 0;\r\n }\r\n\r\n getNumDaysInMonth(date: Date): number {\r\n return getDaysInMonth(date);\r\n }\r\n\r\n clone(date: Date): Date {\r\n return new Date(date.getTime());\r\n }\r\n\r\n createDate(year: number, month: number, date: number): Date {\r\n\r\n // Check for invalid month and date (except upper bound on date which we have to check after\r\n // creating the Date).\r\n if (month < 0 || month > 11) {\r\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\r\n }\r\n\r\n if (date < 1) {\r\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\r\n }\r\n\r\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\r\n // To work around this we use `setFullYear` and `setHours` instead.\r\n const result = new Date();\r\n result.setFullYear(year, month, date);\r\n result.setHours(0, 0, 0, 0);\r\n const result2 = new TZDate(result, \"Europe/Rome\");\r\n \r\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\r\n if (result2.getMonth() != month) {\r\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\r\n }\r\n\r\n return result2;\r\n }\r\n\r\n today(): Date {\r\n return new Date();\r\n }\r\n\r\n parse(value: any, parseFormat: string | string[]): Date | undefined {\r\n if (typeof value == 'string' && value.length > 0) {\r\n let iso8601Date = parseISO(value);\r\n if (this.isValid(iso8601Date)) {\r\n iso8601Date = new TZDate(iso8601Date, \"Europe/Rome\");\r\n return iso8601Date;\r\n }\r\n\r\n const formats = Array.isArray(parseFormat) ? parseFormat : [parseFormat];\r\n\r\n if (!parseFormat.length) {\r\n throw Error('Formats array must not be empty.');\r\n }\r\n\r\n for (const currentFormat of formats) {\r\n let fromFormat = parse(value, currentFormat, new Date(), { locale: this.locale });\r\n if (this.isValid(fromFormat)) {\r\n fromFormat = new TZDate(fromFormat, \"Europe/Rome\");\r\n return fromFormat;\r\n }\r\n }\r\n\r\n return this.invalid();\r\n } else if (typeof value === 'number') {\r\n return new Date(value);\r\n } else if (value instanceof Date) {\r\n return this.clone(value);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n\r\n format(date: Date, displayFormat: string): string {\r\n if (!this.isValid(date)) {\r\n throw Error('DateFnsAdapter: Cannot format invalid date.');\r\n }\r\n\r\n return format(date, displayFormat, { locale: this.locale });\r\n }\r\n\r\n addCalendarYears(date: Date, years: number): Date {\r\n return addYears(date, years);\r\n }\r\n\r\n addCalendarMonths(date: Date, months: number): Date {\r\n return addMonths(date, months);\r\n }\r\n\r\n addCalendarDays(date: Date, days: number): Date {\r\n return addDays(date, days);\r\n }\r\n\r\n toIso8601(date: Date): string {\r\n return formatISO(date, { representation: 'date' });\r\n }\r\n\r\n /**\r\n * Returns the given value if given a valid Date or undefined. Deserializes valid ISO 8601 strings\r\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into undefined. Returns an\r\n * invalid date for all other values.\r\n */\r\n override deserialize(value: any): Date | undefined {\r\n if (typeof value === 'string') {\r\n if (!value) {\r\n return undefined;\r\n }\r\n const date = parseISO(value);\r\n if (this.isValid(date)) {\r\n return date;\r\n }\r\n }\r\n return super.deserialize(value);\r\n }\r\n\r\n isDateInstance(obj: any): boolean {\r\n return isDate(obj);\r\n }\r\n\r\n isValid(date: Date): boolean {\r\n return isValid(date);\r\n }\r\n\r\n invalid(): Date {\r\n return new Date(NaN);\r\n }\r\n}\r\n\r\n@NgModule({\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: DateFnsAdapter,\r\n deps: [MAT_DATE_LOCALE],\r\n },\r\n { provide: MAT_DATE_FORMATS, useValue: MAT_DATE_FNS_FORMATS }\r\n ],\r\n})\r\nexport class ArsDateFnsModule { }","import { Directive, ElementRef, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[removeFocus]'\r\n})\r\nexport class RemoveFocusDirective {\r\n constructor(private elementRef: ElementRef) {}\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(_event: Event): void {\r\n // Controllo null safety\r\n if (this.elementRef?.nativeElement && typeof this.elementRef.nativeElement.blur === 'function') {\r\n // Piccolo delay per permettere al click di completarsi\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.blur();\r\n }, 0);\r\n }\r\n }\r\n}","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './core.module';\r\nexport * from './dateFnsAdapter.module';\r\nexport * from './directives/changeDateIntervalDirective';\r\nexport * from './directives/copyClipboardDirective';\r\nexport * from './directives/autoFocusDirective';\r\nexport * from './directives/removeFocusDirective';\r\nexport * from './directives/validators';\r\nexport * from './pipes/search-filter.pipe';\r\nexport * from './pipes/search-callback.pipe';\r\nexport * from './pipes/safe-url.pipe';\r\nexport * from './pipes/safe-html.pipe';\r\nexport * from './pipes/replace.pipe';\r\nexport * from './pipes/format.pipe';\r\nexport * from './pipes/format-html.pipe';\r\nexport * from './system';\r\nexport * from './definitions';\r\nexport * from './selectable';\r\nexport * from './services/broadcast.service';\r\nexport * from './services/broadcastChannelManager';\r\nexport * from './services/environment.service';\r\nexport * from './services/screen.service';\r\n\r\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":"arsedizioni-ars-utils-core.mjs","sources":["../../../projects/ars-utils/core/directives/autoFocusDirective.ts","../../../projects/ars-utils/core/definitions.ts","../../../projects/ars-utils/core/system.ts","../../../projects/ars-utils/core/directives/changeDateIntervalDirective.ts","../../../projects/ars-utils/core/directives/copyClipboardDirective.ts","../../../projects/ars-utils/core/directives/validators.ts","../../../projects/ars-utils/core/pipes/format.pipe.ts","../../../projects/ars-utils/core/pipes/replace.pipe.ts","../../../projects/ars-utils/core/pipes/safe-html.pipe.ts","../../../projects/ars-utils/core/pipes/safe-url.pipe.ts","../../../projects/ars-utils/core/pipes/search-callback.pipe.ts","../../../projects/ars-utils/core/pipes/search-filter.pipe.ts","../../../projects/ars-utils/core/pipes/format-html.pipe.ts","../../../projects/ars-utils/core/messages.ts","../../../projects/ars-utils/core/selectable.ts","../../../projects/ars-utils/core/services/broadcast.service.ts","../../../projects/ars-utils/core/services/environment.service.ts","../../../projects/ars-utils/core/services/screen.service.ts","../../../projects/ars-utils/core/services/broadcastChannelManager.ts","../../../projects/ars-utils/core/services/theme.service.ts","../../../projects/ars-utils/core/core.module.ts","../../../projects/ars-utils/core/dateFnsAdapter.module.ts","../../../projects/ars-utils/core/directives/removeFocusDirective.ts","../../../projects/ars-utils/core/public_api.ts","../../../projects/ars-utils/core/arsedizioni-ars-utils-core.ts"],"sourcesContent":["import { AfterContentInit, Directive, ElementRef, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: \"[autoFocus]\",\r\n standalone: true\r\n })\r\nexport class AutoFocusDirective implements AfterContentInit {\r\n\r\n private elementRef = inject(ElementRef);\r\n\r\n public ngAfterContentInit() {\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.focus();\r\n }, 500);\r\n }\r\n }","import { INode } from './system';\r\n\r\nexport interface DoneResult<T> {\r\n isNew?: boolean;\r\n data?: T;\r\n}\r\n\r\nexport interface ApiResponse {\r\n success: boolean;\r\n message: string;\r\n}\r\n\r\nexport interface ApiResult<T> extends ApiResponse {\r\n value: T;\r\n}\r\n\r\nexport interface Folder extends INode {\r\n teamId?: string;\r\n parentId?: string;\r\n position?: number;\r\n isPrivate?: boolean;\r\n itemsCount?: number;\r\n subItemsCount?: number;\r\n\r\n}\r\n\r\nexport interface FolderTree extends Folder {\r\n children?: Folder[];\r\n path?: string;\r\n}\r\n\r\nexport interface File<T> {\r\n ownerId?: T;\r\n id?: number;\r\n fileName: string;\r\n fileData: any;\r\n}\r\n\r\nexport interface Validated {\r\n isValid(): boolean;\r\n}\r\n\r\nexport class FileInfo implements Validated {\r\n file: any;\r\n valid: boolean;\r\n\r\n isValid(): boolean {\r\n return this.valid;\r\n }\r\n}\r\n\r\nexport interface ErrorInfo {\r\n invalidateSession?: boolean;\r\n title?: string;\r\n message?: string;\r\n errorStatus?: number;\r\n service?: string;\r\n}\r\n\r\nexport interface NameValueItem<T> {\r\n name: string;\r\n value: T;\r\n shortName?: string;\r\n parentName?: string;\r\n parentValue?: T;\r\n header?: string;\r\n bag?: any;\r\n bagInfo?: string;\r\n disabled?: boolean;\r\n selected?: boolean;\r\n}\r\n\r\nexport interface Checkable {\r\n checked?: boolean;\r\n bag: any;\r\n getId(): any;\r\n}\r\n\r\n\r\nexport class ValueModel<T> {\r\n value: T;\r\n}\r\nexport class IDModel<T> {\r\n id: T;\r\n}\r\nexport class GroupModel<T> {\r\n ids: T[];\r\n}\r\n\r\nexport class DeleteModel<T> extends GroupModel<T> {\r\n mode: number;\r\n}\r\nexport interface DeleteResultModel<T> {\r\n items?: T[],\r\n deleted: number;\r\n total: number;\r\n log?: string;\r\n}\r\n\r\nexport class RelationModel<T> {\r\n id: T;\r\n parentId: T;\r\n}\r\n\r\nexport class UpdateRelationsModel<T> {\r\n id: T;\r\n relatedIds: T[];\r\n}\r\n\r\nexport class QueryModel {\r\n any?: string;\r\n sortBy?: string;\r\n sortDescending?: boolean;\r\n first?: number;\r\n count?: number;\r\n}\r\n\r\nexport interface QueryResultModel<T> {\r\n interval?: string;\r\n items: T[];\r\n total: number;\r\n}\r\n\r\nexport interface UpdateModel<T> {\r\n parentId?: T;\r\n ids: T[];\r\n}\r\n\r\nexport interface UpdateResultModel<T> {\r\n items?: T[];\r\n updated: number;\r\n total: number;\r\n log?: string;\r\n}\r\n\r\nexport interface AddModel<T> extends UpdateModel<T> {\r\n\r\n}\r\n\r\nexport interface AddResultModel<T> {\r\n items?: T[];\r\n added: number;\r\n total: number;\r\n log?: string;\r\n}\r\n\r\nexport class ImportModel {\r\n origin: string;\r\n dataFile: FileInfo;\r\n jumpFirstLine?: boolean;\r\n map?: any;\r\n}\r\n\r\nexport interface EnableDisableModel {\r\n value: boolean;\r\n}\r\n\r\nexport interface SendToModel {\r\n sendToRecipients?: string;\r\n sendToSubject?: string;\r\n sendToText?: string;\r\n}\r\n\r\nexport interface SearchBag {\r\n name: string;\r\n}\r\n\r\nexport interface Searchable {\r\n searchBag: SearchBag;\r\n}\r\n\r\nexport interface SearchFilterMetadata {\r\n total: number; // totale elementi\r\n count: number; // conteggio filtrati\r\n}\r\n\r\nexport class DateInterval {\r\n from?: Date;\r\n to?: Date;\r\n get fromAsDate() {\r\n return this.from\r\n ? new Date(\r\n this.from.getFullYear(),\r\n this.from.getMonth(),\r\n this.from.getDate(),\r\n 2,\r\n 0,\r\n 0\r\n )\r\n : null;\r\n }\r\n get toAsDate() {\r\n return this.to\r\n ? new Date(this.to.getFullYear(), this.to.getMonth(), this.to.getDate(), 2, 0, 0)\r\n : null;\r\n }\r\n\r\n constructor(from?: Date, to?: Date) {\r\n this.from = from;\r\n this.to = to;\r\n }\r\n\r\n /**\r\n * Clear interval\r\n */\r\n clear() {\r\n this.from = undefined;\r\n this.to = undefined;\r\n }\r\n}\r\n\r\nexport interface LoginResult<T> extends ApiResult<boolean> {\r\n context: T;\r\n token: string;\r\n refreshToken?: string;\r\n}\r\n","import { HttpParams } from \"@angular/common/http\";\r\nimport { DateInterval } from './definitions';\r\nimport { format, parse, parseISO } from 'date-fns';\r\nimport { it } from 'date-fns/locale';\r\nimport { TZDate } from '@date-fns/tz';\r\n\r\nexport interface INode {\r\n id: string;\r\n name?: string;\r\n count?: number;\r\n children?: INode[];\r\n subFolders?: INode[];\r\n parent?: INode;\r\n bag?: any\r\n}\r\n\r\n\r\nexport enum DateFormat {\r\n Short = 1, // dd/mm/yyyy\r\n Long = 2, // d mmmm yyyy\r\n LongWithShortMonth = 3, // d mmm yyyy\r\n LongWithWeekDay = 4, // wwww, d mmmm yyyy\r\n LongWithShortWeekDay = 5, // www, d mmmm yyyy\r\n MonthAndYear = 6, // mmm yyyy\r\n LongMonthAndYear = 7, // mmmm yyyy\r\n WeekDay = 8, // www d\r\n LongWeekDay = 9, // wwww d\r\n DayAndMonth = 10, // d mmmm\r\n ShortUS = 11, // mm/dd/yyyy\r\n ShortISO8601 = 12 // yyyy-mm-dd\r\n}\r\n\r\nexport interface PasswordStrength {\r\n score: number;\r\n label?: string;\r\n color?: string;\r\n suggestions?: string[];\r\n isValid: boolean;\r\n}\r\n\r\nexport class SystemUtils {\r\n /**\r\n * Array find by key\r\n * @param array : the array to scan\r\n * @param key : key name\r\n * @param value : the value to search for\r\n * @returns : the property value or null\r\n */\r\n static arrayFindByKey<T>(array: T[] | undefined, key: string, value: any): T | undefined {\r\n if (!array) return undefined;\r\n for (const item of array) {\r\n if ((item as any)[key] === value) {\r\n return item;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Array find index by key\r\n * @param array : the array to scan\r\n * @param key : the key name\r\n * @param value : the value to search for\r\n * @returns : the array index or -1 if not found\r\n */\r\n static arrayFindIndexByKey<T>(array: T[] | undefined, key: string, value: any): number {\r\n if (!array) return -1;\r\n for (let i = 0; i < array.length; i++) {\r\n if ((array[i] as any)[key] === value) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n /**\r\n * Get a value from and array made of name|value items\r\n * @param array : the array to scan\r\n * @param value : the value to search for\r\n * @returns : the property value or null if not found\r\n */\r\n static arrayGetValue<T>(array: T[] | undefined, value: any): any {\r\n if (!array) return undefined;\r\n for (var i = 0; i < array.length; i++) {\r\n const item = (array[i] as any);\r\n if (item.value === value) {\r\n return item.name || item.id;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Convert items to nodes into a tree structure\r\n * @param items : list of nodes\r\n * @param parent : parent node\r\n * @returns : an array of INode objects\r\n */\r\n static arrayToNodes(items: INode[], parent?: INode): INode[] {\r\n const nodes: INode[] = [];\r\n items.forEach(n => {\r\n const node: INode = {\r\n id: n.id.toString(),\r\n name: n.name,\r\n count: n.count ? n.count : 0,\r\n children: undefined,\r\n parent,\r\n bag: n,\r\n };\r\n nodes.push(node);\r\n node.children =\r\n n.children && n.children.length > 0\r\n ? this.arrayToNodes(n.children, node)\r\n : [];\r\n });\r\n return nodes;\r\n }\r\n\r\n /**\r\n * Used to copare items during an array of objects sorting\r\n * @param key : the property name to sort for\r\n * @param order : the order 'asc' or 'desc'\r\n * @returns : 0 if equals, 1 if bigger, -1 if lower\r\n */\r\n static arraySortCompare(key: string, order: string = \"asc\") {\r\n const result = function innerSort(a: any, b: any) {\r\n if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {\r\n // property doesn't exist on either object\r\n return 0;\r\n }\r\n const varA = typeof a[key] === \"string\" ? a[key].toUpperCase() : a[key];\r\n const varB = typeof b[key] === \"string\" ? b[key].toUpperCase() : b[key];\r\n let comparison = 0;\r\n if (varA > varB) comparison = 1;\r\n else if (varA < varB) comparison = -1;\r\n return order === \"desc\" ? comparison * -1 : comparison;\r\n };\r\n return result;\r\n }\r\n\r\n /**\r\n * Format weight\r\n * @param gr : grams\r\n * @returns : the formatted string\r\n */\r\n static formatWeight(gr: number): string {\r\n if (gr > 1000000) return (gr / 1000000).toFixed(2) + \" t\";\r\n else if (gr > 100000) return (gr / 100000).toFixed(2) + \" q\";\r\n else if (gr > 1000) return (gr / 1000).toFixed(2) + \" kg\";\r\n else return gr + \" gr\";\r\n }\r\n\r\n /**\r\n * Format file size\r\n * @param bytes : number of bytes\r\n * @returns : the formatted string\r\n */\r\n static formatFileSize(bytes: number): string {\r\n if (bytes > 1024000) return (bytes / 1024000).toFixed(1) + \" MB\";\r\n if (bytes > 1024) return (bytes / 1024).toFixed(1) + \" Kb\";\r\n return bytes + \" byte\";\r\n }\r\n\r\n /**\r\n * Compare two string\r\n * @param a : string a\r\n * @param b : string b\r\n * @returns : 0 if equals, 1 if bigger, -1 if lower\r\n */\r\n static compareString(a?: string, b?: string): number {\r\n if ((a ?? \"\").toLowerCase() > (b ?? \"\").toLowerCase()) return 1;\r\n if ((a ?? \"\").toLowerCase() < (b ?? \"\").toLowerCase()) return -1;\r\n return 0;\r\n }\r\n\r\n /**\r\n * Capitalize a string\r\n * @param s : the string to capitalize\r\n * @returns : the capitalized string \r\n */\r\n static capitalize(s?: string): string | undefined {\r\n if (!s) return undefined;\r\n let b = \"\";\r\n let cap = true;\r\n for (const char of s) {\r\n if (char === \" \") {\r\n b += char;\r\n cap = true;\r\n } else if (cap) {\r\n b += char.toUpperCase();\r\n cap = false;\r\n } else {\r\n b += char.toLowerCase();\r\n }\r\n }\r\n return b;\r\n }\r\n\r\n /**\r\n * Truncate a string\r\n * @param s : the string to truncate\r\n * @param max : the max number of chars\r\n * @returns : the truncated string\r\n */\r\n static truncate(s?: string, max: number = 500): string | undefined {\r\n if (!s) return undefined;\r\n if (s.length < max) return s;\r\n let i = max - 1;\r\n while (i > 0) {\r\n if (s[i] === ' ') return s.slice(0, i);\r\n i--;\r\n }\r\n return s;\r\n }\r\n\r\n /**\r\n * Join a list of strings\r\n * @param items : the list of strings\r\n * @param sep : the separator string\r\n * @param max : the maximum resulting string\r\n * @returns : the joined string\r\n */\r\n static join(items?: string[], sep: string = \" \", max: number = 350): string | undefined {\r\n if (!items || items.length === 0) return undefined;\r\n if (items.length > 1) {\r\n let l = 0;\r\n let s = \"\"\r\n while (s.length < max && items.length > l) {\r\n if (l > 0) {\r\n s += sep;\r\n }\r\n s += items[l++];\r\n }\r\n if (items.length > l) {\r\n s += \"...\";\r\n }\r\n return s;\r\n }\r\n return items[0];\r\n }\r\n\r\n /**\r\n * Replace stuff in text html\r\n * @param s : the string to process\r\n * @returns : the replaced string \r\n */\r\n static replaceAsHtml(s?: string): string {\r\n if (!s) return undefined;\r\n const regex = /https?:\\/\\/.*[^\\s]/ig\r\n const m = regex.exec(s);\r\n if (m && m.length > 0) {\r\n let v = undefined;\r\n for (let i = 0; i < m.length; i++) {\r\n v = m[i];\r\n s = s.replace(v, '<a href=\"' + v + '\" target=\"_blank\">' + v + '</a>');\r\n }\r\n }\r\n return s;\r\n }\r\n\r\n /**\r\n * Convert a markdown string to html\r\n * @param markdown : the markdown string\r\n * @returns \r\n */\r\n static markdownToHtml(markdown?: string): string | undefined {\r\n if (!markdown) return undefined;\r\n let html = markdown;\r\n // Headers\r\n html = html.replace(/^### (.*$)/gim, '<h3>$1</h3>');\r\n html = html.replace(/^## (.*$)/gim, '<h2>$1</h2>');\r\n html = html.replace(/^# (.*$)/gim, '<h1>$1</h1>');\r\n // Bold\r\n html = html.replace(/\\*\\*(.*)\\*\\*/gim, '<strong>$1</strong>');\r\n html = html.replace(/__(.*?)__/gim, '<strong>$1</strong>');\r\n // Italic\r\n html = html.replace(/\\*(.*?)\\*/gim, '<em>$1</em>');\r\n html = html.replace(/_(.*?)_/gim, '<em>$1</em>');\r\n // Code blocks\r\n html = html.replace(/```([\\s\\S]*?)```/gim, '<pre><code>$1</code></pre>');\r\n // Inline code\r\n html = html.replace(/`(.*?)`/gim, '<code>$1</code>');\r\n // Links\r\n html = html.replace(/\\[([^\\]]*)\\]\\(([^)]*)\\)/gim, '<a href=\"$2\">$1</a>');\r\n // Images\r\n html = html.replace(/!\\[([^\\]]*)\\]\\(([^)]*)\\)/gim, '<img alt=\"$1\" src=\"$2\" />');\r\n // Blockquotes\r\n html = html.replace(/^\\> (.*$)/gim, '<blockquote>$1</blockquote>');\r\n // Unordered lists\r\n html = html.replace(/^\\* (.*$)/gim, '<li>$1</li>');\r\n html = html.replace(/^- (.*$)/gim, '<li>$1</li>');\r\n // Ordered lists\r\n html = html.replace(/^\\d+\\. (.*$)/gim, '<li>$1</li>');\r\n // Wrap list items in ul/ol tags\r\n html = html.replace(/(<li>.*<\\/li>)/gims, function (match) {\r\n return '<ul>' + match + '</ul>';\r\n });\r\n // Tables\r\n html = html.replace(/\\|(.+)\\|/g, function (_match, content) {\r\n const cells = content.split('|').map((cell: any) => cell.trim());\r\n return '<tr>' + cells.map((cell: any) => {\r\n // Check if this is a header separator row\r\n if (cell.match(/^[\\s\\-\\:]+$/)) {\r\n return null;\r\n }\r\n return '<td>' + cell + '</td>';\r\n }).filter((cell: any) => cell !== null).join('') + '</tr>';\r\n });\r\n // Convert table rows to proper table structure\r\n html = html.replace(/(<tr>.*?<\\/tr>)\\s*\\n*(<tr>.*?<\\/tr>)/gs, function (match, firstRow, rest) {\r\n // Check if the second row is a separator (contains only dashes, colons, spaces)\r\n const secondRowContent = rest.replace(/<\\/?t[rd]>/g, '');\r\n if (secondRowContent.match(/^[\\s\\-\\:\\|]+$/)) {\r\n // This is a header separator, make first row a header\r\n const headerRow = firstRow.replace(/<td>/g, '<th>').replace(/<\\/td>/g, '</th>');\r\n return headerRow;\r\n }\r\n return match;\r\n });\r\n // Wrap table rows in table tags\r\n html = html.replace(/(<tr>.*?<\\/tr>(?:\\s*<tr>.*?<\\/tr>)*)/gs, '<table>$1</table>');\r\n // Horizontal rules\r\n html = html.replace(/^\\-\\-\\-$/gim, '<hr>');\r\n html = html.replace(/^\\*\\*\\*$/gim, '<hr>');\r\n // Line breaks\r\n html = html.replace(/\\n\\n/gim, '</p><p>');\r\n html = html.replace(/\\n/gim, '<br>');\r\n // Wrap in paragraphs\r\n html = '<p>' + html + '</p>';\r\n // Clean up empty paragraphs\r\n html = html.replace(/<p><\\/p>/gim, '');\r\n html = html.replace(/<p>(<h[1-6]>)/gim, '$1');\r\n html = html.replace(/(<\\/h[1-6]>)<\\/p>/gim, '$1');\r\n html = html.replace(/<p>(<ul>)/gim, '$1');\r\n html = html.replace(/(<\\/ul>)<\\/p>/gim, '$1');\r\n html = html.replace(/<p>(<blockquote>)/gim, '$1');\r\n html = html.replace(/(<\\/blockquote>)<\\/p>/gim, '$1');\r\n html = html.replace(/<p>(<pre>)/gim, '$1');\r\n html = html.replace(/(<\\/pre>)<\\/p>/gim, '$1');\r\n html = html.replace(/<p>(<table>)/gim, '$1');\r\n html = html.replace(/(<\\/table>)<\\/p>/gim, '$1');\r\n html = html.replace(/<p>(<hr>)<\\/p>/gim, '$1');\r\n return html;\r\n }\r\n\r\n\r\n /**\r\n * Compare two names\r\n * @param a : name a\r\n * @param b : name b\r\n * @returns : true if a equals b\r\n */\r\n static compareNames(a?: string, b?: string): boolean {\r\n if (a) a = a.trim();\r\n if (b) b = b.trim();\r\n if (a && b && a.length !== b.length) return false;\r\n if (this.compareString(a, b) === 0) return true;\r\n const p1 = a.split(\" \");\r\n const p2 = b.split(\" \");\r\n if (p1.length !== p2.length) return false;\r\n let matches = p1.length;\r\n for (const s1 of p1) {\r\n for (const s2 of p2) {\r\n if (this.compareString(s1, s2) === 0) {\r\n matches--;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return matches === 0;\r\n }\r\n\r\n /**\r\n * Cipher a text\r\n * @param text : the text\r\n * @param key : the key\r\n * @param reverse : true to decode, false to encode\r\n * @returns :the ciphered text\r\n */\r\n static cipher(text: string, key: string, reverse: boolean = false): string | undefined {\r\n // Surrogate pair limit\r\n var bound = 0x10000;\r\n\r\n // Create string from character codes\r\n return String.fromCharCode.apply(\r\n null,\r\n // Turn string to character codes\r\n text.split(\"\").map(function (v: any, i: number) {\r\n // Get rotation from key\r\n var rotation = key.charCodeAt(i % key.length);\r\n\r\n // Are we decrypting?\r\n if (reverse) rotation = -rotation;\r\n\r\n // Return current character code + rotation\r\n return (v.charCodeAt() + rotation + bound) % bound;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Clone an object using JSON\r\n * @param obj : the oblect to clone\r\n * @returns : a new object\r\n */\r\n static clone(obj: any): any | undefined {\r\n if (!obj) return undefined;\r\n return JSON.parse(JSON.stringify(obj));\r\n }\r\n\r\n /**\r\n * Clone an object using deep cloning\r\n * @param obj : the oblect to clone\r\n * @returns : a new object\r\n */\r\n static deepClone<T>(obj: any, dest?: T): T {\r\n const cloneObj = dest ? dest : (obj.constructor() as any);\r\n const attributes = Object.keys(obj);\r\n for (const attribute of attributes) {\r\n const property = obj[attribute];\r\n if (typeof property === \"object\" && property != null) {\r\n cloneObj[attribute] = this.deepClone(property);\r\n } else {\r\n cloneObj[attribute] = property;\r\n }\r\n }\r\n return cloneObj;\r\n }\r\n\r\n\r\n /**\r\n * Check if a string is a valid UUID\r\n * @param value : the value to parse\r\n * @returns : true if is a valid UUID\r\n */\r\n static parseUUID(value?: string): boolean {\r\n const regex = /^({|()?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}(}|))?$/;\r\n return value?.length > 0 && regex.test(value);\r\n }\r\n\r\n /**\r\n * Parse and ensure that UUID is not empty\r\n * @param value : the value to parse\r\n * @returns : true if valid and not empty\r\n */\r\n static parseUUIDNotEmpty(value?: string): boolean {\r\n const regex = /^({|()?0{8}-(0{4}-){3}0{12}(}|))?$/;\r\n return this.parseUUID(value) && !regex.test(value);\r\n }\r\n\r\n /**\r\n * Return an empty UUID\r\n * @returns : the empty UUID\r\n */\r\n static emptyUUID(): string { return \"00000000-0000-0000-0000-000000000000\" };\r\n\r\n /**\r\n * Create a new UUID\r\n * @returns : the string UUID\r\n */\r\n static generateUUID(): string {\r\n const regex = /[xy]/g;\r\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(regex, function (c) {\r\n var r = (Math.random() * 16) | 0,\r\n v = c === \"x\" ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n }\r\n\r\n /**\r\n * Parse a text and return true if is a valid email or null\r\n * @param value : email\r\n * @returns : true if the email is valid or empty\r\n */\r\n static parseEmail(value?: string): boolean {\r\n if (!value) return true;\r\n const regex = /(?:[a-z0-9+!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/gi\r\n return regex.test(value.trim().toLowerCase());\r\n }\r\n\r\n /**\r\n * Parse a text and return true if is a valid url or null\r\n * @param value : the url to parse\r\n * @returns : true if the url is valid or empty\r\n */\r\n static parseUrl(value?: string): boolean {\r\n if (!value) return true;\r\n const regex = new RegExp(\r\n \"(https?://)?([\\\\da-z.-]+)\\\\.([a-z.]{2,6})[/\\\\w .-]*/?\"\r\n );\r\n return regex.test(value.trim().toLowerCase());\r\n }\r\n\r\n /**\r\n * Get date parts from a string value\r\n * @param value : the string to parse\r\n * @returns : an array of numbers with year, month, day\r\n */\r\n static getDateParts(value?: string): number[] | undefined {\r\n if (!value) return undefined;\r\n let parts: number[] = [];\r\n if (value.indexOf(\"-\") !== -1) {\r\n const p = value.split(\"-\");\r\n if (p.length !== 3) return undefined;\r\n parts = [parseInt(p[0]), parseInt(p[1]) - 1, parseInt(p[2])];\r\n } else if (value.indexOf(\"/\") !== -1) {\r\n const p = value.split(\"/\");\r\n if (p.length !== 3) return undefined;\r\n parts = [parseInt(p[2]), parseInt(p[1]) - 1, parseInt(p[0])];\r\n }\r\n return parts;\r\n }\r\n\r\n /**\r\n * Parse a date\r\n * @param value : the value to check\r\n * @param locale : the locale to use\r\n * @returns : a valid Date object or null\r\n */\r\n static parseDate(value?: string | Date, locale: any = it): Date | undefined {\r\n // No value at all\r\n if (!value) return undefined;\r\n // A Date value\r\n if (value instanceof Date && value.getTime()) return value;\r\n // Parse known formats using date-fns\r\n let d = parseISO(value as string);\r\n if (d && d.getTime() && d.getFullYear() > 1750) return d;\r\n d = parse(value as string, 'dd/MM/yyyy', new Date(), { locale: locale });\r\n if (d && d.getTime() && d.getFullYear() > 1750) return d;\r\n d = parse(value as string, 'yyyy-MM-dd', new Date(), { locale: locale });\r\n if (d && d.getTime() && d.getFullYear() > 1750) return d;\r\n // Parse values manually\r\n let parts = this.getDateParts(value as string);\r\n if (!parts) return undefined;\r\n if (parts[0] < 100) parts[0] += 2000;\r\n if (isNaN(parts[0]) || parts[0] < 0 || parts[0] < 1750) return undefined;\r\n if (isNaN(parts[1]) || parts[1] < 0) return undefined;\r\n if (isNaN(parts[2]) || parts[2] < 0) return undefined;\r\n if (parts[1] > 11) return undefined;\r\n if (parts[1] === 1 && parts[2] > 29) return undefined;\r\n else if (parts[1] !== 1 && parts[2] > 31) return undefined;\r\n return new TZDate(parts[0], parts[1], parts[2], 12);\r\n }\r\n\r\n /**\r\n * Format a date\r\n * @param value : the date or string to format\r\n * @param fmt : the DateFormat to use or the string pattern\r\n * @param locale : the locale to use (default is IT)\r\n * @returns : the formatted string\r\n */\r\n static formatDate(\r\n value?: Date | string,\r\n fmt: DateFormat | string = DateFormat.Short,\r\n locale: any = it): string {\r\n // No value at all\r\n if (!value) return undefined;\r\n // A string\r\n if (typeof value === 'string' || value instanceof String)\r\n value = this.parseDate(value as string);\r\n // Not a date \r\n if (!(value instanceof Date && value.getTime()))\r\n return undefined;\r\n // Format\r\n switch (fmt) {\r\n case DateFormat.Short: return format(value, \"dd/MM/yyyy\", { locale: locale });\r\n case DateFormat.Long: return format(value, \"d MMMM yyyy\", { locale: locale });\r\n case DateFormat.LongWithShortMonth: return format(value, \"d MMM yyyy\", { locale: locale });\r\n case DateFormat.LongWithWeekDay: return format(value, \"EEEE, d MMMM yyyy\", { locale: locale });\r\n case DateFormat.LongWithShortWeekDay: return format(value, \"EEE, d MMMM yyyy\", { locale: locale });\r\n case DateFormat.MonthAndYear: return format(value, \"MMM yyyy\", { locale: locale });\r\n case DateFormat.LongMonthAndYear: return format(value, \"MMMM yyyy\", { locale: locale });\r\n case DateFormat.WeekDay: return format(value, \"EEE, d\", { locale: locale });\r\n case DateFormat.LongWeekDay: return format(value, \"EEEE, d\", { locale: locale });\r\n case DateFormat.DayAndMonth: return format(value, \"d MMMM\", { locale: locale });\r\n case DateFormat.ShortUS: return format(value, \"MM/dd/yyyy\", { locale: locale });\r\n case DateFormat.ShortISO8601: return format(value, \"yyyy-MM-dd\", { locale: locale });\r\n default:\r\n return format(value, fmt, { locale: locale });\r\n }\r\n }\r\n\r\n /**\r\n * Return an italian local date\r\n * @param value : the date\r\n * @returns : the new date\r\n */\r\n static toLocalDate(value?: Date | string): Date {\r\n // No value at all\r\n if (!value) return undefined;\r\n // A string\r\n if (typeof value === 'string' || value instanceof String)\r\n value = this.parseDate(value as string);\r\n // Not a date\r\n if (!(value instanceof Date && value.getTime())) return undefined;\r\n // Update date\r\n return new TZDate(value, \"Europe/Rome\");\r\n }\r\n\r\n /**\r\n * Update a DateInterval object according to a string\r\n * @param value : string value\r\n * @param interval : DateInterval value to update\r\n * @param end : true if must be updated the first or the end value \r\n * @param copy : copy the same value (works only if not end element)\r\n */\r\n static changeDateInterval(value: string, interval: DateInterval, end: boolean = false, copy: boolean = false) {\r\n if (value) {\r\n let year = -1;\r\n if (value.length === 4 && (year = parseInt(value)) > 1750) {\r\n if (!end) {\r\n interval.from = new TZDate(new Date(year, 0, 1), 'Europe/Rome');\r\n interval.to = new TZDate(new Date(year, 11, 31), 'Europe/Rome');\r\n } else\r\n interval.to = new Date(year, 11, 31);\r\n } else {\r\n let parts = this.getDateParts(value);\r\n if (!parts || isNaN(parts[0]) || parts[0] < 0 || parts[0] < 1750) return;\r\n const d = new TZDate(new Date(parts[0], parts[1], parts[2]), 'Europe/Rome');\r\n if (end)\r\n interval.to = d;\r\n else if (copy) {\r\n interval.from = d;\r\n interval.to = d;\r\n } else\r\n interval.from = d;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Encode url\r\n * @param value : the value to encode\r\n * @returns : the url encoded string\r\n */\r\n static urlEncode(value: string): string | undefined {\r\n return value?.length > 0\r\n ? encodeURIComponent(value)\r\n : undefined;\r\n }\r\n\r\n /**\r\n * Decode url\r\n * @param value : the url to decode\r\n * @returns : the decode url string\r\n */\r\n static urlDecode(value?: string): string | undefined {\r\n const regex = /\\+/g;\r\n return value?.length > 0\r\n ? decodeURIComponent((value + \"\").replace(regex, \"%20\"))\r\n : undefined;\r\n }\r\n\r\n /**\r\n * Get a querystring parameter value\r\n * @param name : the parameter name\r\n * @returns : the string value\r\n */\r\n static getQueryStringValueByName(name: string): string {\r\n if (!this.isBrowser()) return undefined;\r\n const url = window.location.href;\r\n if (url.includes(\"?\")) {\r\n const httpParams = new HttpParams({ fromString: url.split(\"?\")[1] });\r\n const v = decodeURIComponent(httpParams.get(name));\r\n if (v && v !== \"null\") return v;\r\n else return undefined;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Generate a password\r\n * @returns : the password string\r\n */\r\n static generatePassword(): string {\r\n const random = \"$\" + Math.random().toString(36).slice(-11);\r\n let password = \"\";\r\n let hasUpperCase = false;\r\n for (const rnd of random) {\r\n if (!hasUpperCase && \"abcdefghjilmnopqrstuvywxz\".includes(rnd)) {\r\n password += rnd.toUpperCase();\r\n hasUpperCase = true;\r\n } else {\r\n password += rnd;\r\n }\r\n }\r\n if (!hasUpperCase)\r\n password = password.substring(0, 11) + \"M\";\r\n return password;\r\n }\r\n\r\n /**\r\n * Calculate password strength\r\n * @param password: the password to evaluate\r\n * @returns the password strength info\r\n */\r\n static calculatePasswordStrength(password?: string): PasswordStrength {\r\n if (password?.length > 0) {\r\n let score = 0;\r\n const suggestions: string[] = [];\r\n\r\n // Length\r\n if (password.length >= 10) score++;\r\n else suggestions.push('Usa almeno 10 caratteri.');\r\n if (password.length >= 12) score++;\r\n else if (password.length >= 10) suggestions.push('Considera di usare più di 12 caratteri.');\r\n\r\n // Lowercase letters\r\n if (/[a-z]/.test(password)) score++;\r\n else suggestions.push('Aggiungi lettere minuscole.');\r\n\r\n // Uppercase letters\r\n if (/[A-Z]/.test(password)) score++;\r\n else suggestions.push('Aggiungi lettere maiuscole.');\r\n\r\n // Numbers\r\n if (/\\d/.test(password)) score++;\r\n else suggestions.push('Aggiungi numeri.');\r\n\r\n // Special characters\r\n if (/[!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]/.test(password)) score++;\r\n else suggestions.push('Aggiungi caratteri speciali (!@#$%^&*).');\r\n\r\n // Common patterns\r\n if (/(.)\\1{2,}/.test(password)) {\r\n score = Math.max(0, score - 1);\r\n suggestions.push('Evita di ripetere lo stesso carattere.');\r\n }\r\n if (/123|abc|qwe/i.test(password)) {\r\n score = Math.max(0, score - 1);\r\n suggestions.push('Evita sequenze comuni (123, abc, qwe).');\r\n }\r\n\r\n // Label and color\r\n let label: string;\r\n let color: string;\r\n let isValid: boolean;\r\n if (score <= 2) {\r\n label = 'Molto debole';\r\n color = '#f44336';\r\n isValid = false;\r\n } else if (score <= 3) {\r\n label = 'Debole';\r\n color = '#ff9800';\r\n isValid = false;\r\n } else if (score <= 4) {\r\n label = 'Media';\r\n color = '#ffc107';\r\n isValid = true;\r\n } else if (score <= 5) {\r\n label = 'Forte';\r\n color = '#8bc34a';\r\n isValid = true;\r\n } else {\r\n label = 'Molto forte';\r\n color = '#4caf50';\r\n isValid = true;\r\n }\r\n\r\n return {\r\n score: score,\r\n label: label,\r\n color: color,\r\n suggestions: suggestions,\r\n isValid: isValid\r\n };\r\n } else\r\n return {\r\n score: 0,\r\n isValid: false,\r\n suggestions: []\r\n };\r\n\r\n }\r\n\r\n\r\n /**\r\n * Check if current browser supports touch\r\n * @returns : true if the display is touchable\r\n */\r\n static isTouchable(): boolean {\r\n return (\r\n this.isBrowser() && (\r\n \"ontouchstart\" in window ||\r\n navigator.maxTouchPoints > 0)\r\n );\r\n }\r\n\r\n /**\r\n * This check will prevent 'window' logic to be executed\r\n * while executing the server rendering\r\n * @returns : true if using the browser\r\n */\r\n static isBrowser(): boolean {\r\n return typeof (window) !== 'undefined';\r\n }\r\n\r\n /**\r\n * Convert folders in a tree of Node object.\r\n * @param folders : the subfolders group or null to root\r\n * @returns : a node list\r\n */\r\n static toNodes(folders: INode[]): INode[] {\r\n return this._toNodes(folders, undefined);\r\n }\r\n\r\n /**\r\n * Convert folders in a tree of Node object.\r\n * @param folders : the children group or null to root\r\n * @param parent : the parent node\r\n * @returns : a node list \r\n */\r\n private static _toNodes(folders: INode[], parent?: INode): INode[] {\r\n const nodes: INode[] = [];\r\n folders.forEach((n: INode) => {\r\n const node: INode = {\r\n id: n.id,\r\n name: n.name,\r\n count: n.count,\r\n parent: parent,\r\n children: undefined,\r\n bag: n,\r\n };\r\n const children = n.children ?? n.subFolders ?? [];\r\n if (children.length > 0) {\r\n node.children = this._toNodes(n.children ?? n.subFolders, node);\r\n }\r\n nodes.push(node);\r\n });\r\n return nodes;\r\n }\r\n\r\n /**\r\n * Return the flags array to be used in selections\r\n * @param value : the new value\r\n * @param max: the max number of flags\r\n */\r\n static getFlags(value: number, max: number = 30): number[] {\r\n if (value) {\r\n let items: number[] = [];\r\n let v = 1;\r\n let m = 1 << max;\r\n while (v < m) {\r\n if ((value & v) === v) items.push(v);\r\n v = v << 1;\r\n }\r\n return items;\r\n } else return [];\r\n }\r\n\r\n /**\r\n * Check if a color is light or dark\r\n * @param color : the color\r\n * @param minimumLuminance : the lumimance to consider\r\n * @returns true if the color is light\r\n */\r\n static isColorLight(color: string, minimumLuminance: number = 186): boolean {\r\n const tempDiv = document.createElement('div');\r\n tempDiv.style.color = color;\r\n document.body.appendChild(tempDiv);\r\n const rgb = getComputedStyle(tempDiv).color;\r\n document.body.removeChild(tempDiv);\r\n const result = rgb.match(/\\d+/g);\r\n if (!result || result.length < 3) return true; // fallback\r\n const r = parseInt(result[0], 10);\r\n const g = parseInt(result[1], 10);\r\n const b = parseInt(result[2], 10);\r\n const luminance = 0.299 * r + 0.587 * g + 0.114 * b;\r\n return luminance > minimumLuminance;\r\n }\r\n}\r\n","import { Directive, HostListener, OnDestroy, OnInit, input } from '@angular/core';\r\nimport { DateInterval } from '../definitions';\r\nimport { SystemUtils } from '../system';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { Subject, Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[dateIntervalChange]',\r\n standalone: true,\r\n})\r\nexport class DateIntervalChangeDirective implements OnInit, OnDestroy {\r\n readonly dateIntervalChange = input<DateInterval>(new DateInterval(null, null));\r\n readonly end = input<boolean>(false);\r\n private subject = new Subject();\r\n private subscription: Subscription;\r\n\r\n ngOnInit() {\r\n this.subscription = this.subject\r\n .pipe(debounceTime(100))\r\n .subscribe((e: any) => { \r\n const value = (e.target as HTMLInputElement).value;\r\n SystemUtils.changeDateInterval(value, this.dateIntervalChange(), this.end(), e.key === ' ');\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n @HostListener('keyup', ['$event']) public onKeyup(e: KeyboardEvent): void {\r\n if (e.key === ' ') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n this.subject.next(event);\r\n\r\n }\r\n}","import {\r\n Directive,\r\n HostListener,\r\n Injectable,\r\n input,\r\n output\r\n} from '@angular/core';\r\nimport { SystemUtils } from '../system';\r\n\r\n\r\n@Injectable()\r\n@Directive({\r\n selector: '[copyClipboard]',\r\n standalone: true\r\n})\r\nexport class CopyClipboardDirective {\r\n readonly payload = input<string>(undefined, { alias: \"copyClipboard\" });\r\n\r\n readonly copied = output<string>({ alias: 'copied' });\r\n\r\n @HostListener('click', ['$event'])\r\n public onClick(e: MouseEvent): void {\r\n e.preventDefault();\r\n if (!this.payload()) return;\r\n\r\n if (SystemUtils.isBrowser()) {\r\n let listener = (e: ClipboardEvent) => {\r\n let clipboard = e.clipboardData;\r\n const payload = this.payload();\r\n clipboard.setData('text/html', payload.toString());\r\n e.preventDefault();\r\n\r\n this.copied.emit(payload);\r\n };\r\n\r\n document.addEventListener('copy', listener, false);\r\n document.execCommand('copy');\r\n document.removeEventListener('copy', listener, false);\r\n }\r\n }\r\n}\r\n","import { Directive, forwardRef, input } from \"@angular/core\";\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n ValidationErrors,\r\n Validator,\r\n} from \"@angular/forms\";\r\nimport { endOfDay } from 'date-fns';\r\nimport { Validated } from '../definitions';\r\nimport { SystemUtils } from \"../system\";\r\n\r\n\r\n@Directive({\r\n selector: '[validator]',\r\n providers: [{ provide: NG_VALIDATORS, useExisting: ValidatorDirective, multi: true }],\r\n standalone: true, \r\n})\r\nexport class ValidatorDirective implements Validator {\r\n readonly validator = input<(control: AbstractControl) => ValidationErrors | undefined>(undefined);\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n return this.validator()(control);\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[validIf]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => ValidIfDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class ValidIfDirective implements Validator {\r\n readonly validIf = input<boolean>(false);\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n let isValid = false;\r\n let c = control.value ? (control.value as Validated) : null;\r\n if (!c) isValid = this.validIf() === true;\r\n else {\r\n try {\r\n isValid = c.isValid();\r\n } catch { }\r\n }\r\n if (isValid) {\r\n return undefined;\r\n } else {\r\n return { validIf: \"Non valido.\" };\r\n }\r\n }\r\n}\r\n\r\n\r\n@Directive({\r\n selector: \"[equals]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => EqualsValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class EqualsValidatorDirective implements Validator {\r\n readonly equals = input<AbstractControl>(null);\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const isValid = this.equals().value === control.value;\r\n if (isValid) {\r\n return undefined;\r\n } else {\r\n return { equals: \"Non valido.\" };\r\n }\r\n }\r\n}\r\n\r\n\r\n@Directive({\r\n selector: \"[notEqual]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NotEqualValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class NotEqualValidatorDirective implements Validator {\r\n\r\n readonly notEqual = input<AbstractControl>(undefined);\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n\r\n const notEqual = this.notEqual();\r\n const isValid = (!notEqual.value && !control.value) || (notEqual.value !== control.value);\r\n const errors: ValidationErrors | undefined = isValid ? null : { 'notequal': true };\r\n\r\n // immediate show up\r\n const notEqualValue = this.notEqual();\r\n if (errors) {\r\n control.markAsTouched();\r\n } else if (notEqualValue.hasError('notequal')) {\r\n notEqualValue.setErrors({ 'notequal': null });\r\n notEqualValue.updateValueAndValidity({ onlySelf: true, emitEvent: false });\r\n notEqualValue.markAsTouched();\r\n notEqualValue.markAsDirty();\r\n }\r\n return errors;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[emails]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => EmailsValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class EmailsValidatorDirective implements Validator {\r\n \r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n let isValid = true;\r\n const input = control.value;\r\n if (!input || input.length === 0) return undefined;\r\n var parts = input.replaceAll(/\\r\\n/g, \"\").split(\";\");\r\n for (var i = 0; i < parts.length; i++) {\r\n if (parts[i].length > 0) {\r\n if (!SystemUtils.parseEmail(parts[i])) {\r\n isValid = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (!isValid) {\r\n return { emails: \"Elenco non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[guid]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => GuidValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class GuidValidatorDirective implements Validator {\r\n \r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n if (!input || input.length === 0) return undefined;\r\n const isValid = SystemUtils.parseUUID(input);\r\n if (!isValid) {\r\n return { guid: \"Non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[sqlDate]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => SqlDateValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class SqlDateValidatorDirective implements Validator {\r\n \r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n if (!input || input.length === 0) return undefined;\r\n const d = endOfDay(SystemUtils.parseDate(input));\r\n const isValid = d.getFullYear() > 1750;\r\n if (!isValid) {\r\n return { notFuture: \"Non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[notFuture]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NotFutureValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class NotFutureValidatorDirective implements Validator {\r\n \r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n if (!input || input.length === 0) return undefined;\r\n const today = endOfDay(new Date());\r\n const d = endOfDay(SystemUtils.parseDate(input));\r\n const isValid = d <= today;\r\n if (!isValid) {\r\n return { notFuture: \"Non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[url]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UrlValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class UrlValidatorDirective implements Validator {\r\n \r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n const isValid = SystemUtils.parseUrl(input);\r\n if (!isValid) {\r\n return { url: \"Non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n\r\n@Directive({\r\n selector: \"[fileSize]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => FileSizeValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class FileSizeValidatorDirective implements Validator {\r\n readonly maxSizeMb = input<number>(5);\r\n readonly minSizeMb = input<number>(0);\r\n readonly size = input<number>(undefined);\r\n\r\n \r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n const size = this.size();\r\n let s = size ? size : 0;\r\n if (!input) return undefined;\r\n const isValid = s <= this.maxSizeMb() && s >= this.minSizeMb();\r\n if (isValid) {\r\n return undefined;\r\n } else {\r\n return { fileSize: \"Non valido.\" };\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[maxTerms]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => MaxTermsValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\n\r\nexport class MaxTermsValidatorDirective implements Validator {\r\n readonly maxTerms = input<number>(0);\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n if (!input) return undefined;\r\n const terms = input?.match(/\\S+/g)?.length ?? 0;\r\n const isValid = terms <= this.maxTerms();\r\n if (isValid) {\r\n return undefined;\r\n } else {\r\n return { maxTerms: \"Non valido.\" };\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[password]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => PasswordValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class PasswordValidatorDirective implements Validator {\r\n \r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value ?? '';\r\n const strength = SystemUtils.calculatePasswordStrength(input);\r\n if (!strength.isValid) {\r\n return { password: \"Non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n@Directive({\r\n selector: \"[time]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => TimeValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\n\r\nexport class TimeValidatorDirective implements Validator {\r\n readonly slots = input<string>(undefined);\r\n \r\n\r\n /**\r\n * Retrieve hours as a number from a time string (e: 12:00)\r\n * @param value : the time string\r\n * @returns the hours as a number or -1\r\n */\r\n private getTime(value: string): number | undefined {\r\n const p = value.split(':');\r\n if (p.length !== 2) return -1;\r\n const hh = parseInt(p[0]);\r\n if (hh < 0 || hh > 23) return -1;\r\n const mm = parseInt(p[1]);\r\n if (mm < 0 || hh > 59) return -1;\r\n return parseInt(p[0] + p[1]);\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n if (!input || input.length === 0) return undefined;\r\n let isValid: boolean = false;\r\n const t = this.getTime(input);\r\n if (t !== -1) {\r\n const slotsValue = this.slots();\r\n if (slotsValue) {\r\n const slots = slotsValue.split('|');\r\n slots.forEach(s => {\r\n const t1 = this.getTime(s.substring(0, 5));\r\n const t2 = this.getTime(s.substring(6));\r\n if (t1 !== -1 && t2 !== -1 && t1 <= t && t2 >= t) {\r\n // Good\r\n isValid = true;\r\n return;\r\n }\r\n });\r\n }\r\n }\r\n if (!isValid) {\r\n return { time: \"Non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\r\nimport { format } from 'date-fns';\r\nimport { it } from 'date-fns/locale';\r\nimport { SystemUtils } from '../system';\r\n\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'format',\r\n standalone: true\r\n})\r\nexport class FormatPipe implements PipeTransform {\r\n\r\n\r\n transform(\r\n value?: any | undefined,\r\n type: string = 'date',\r\n pattern: string = \"dd/MM/yyyy\"): string | undefined {\r\n if (value === undefined || value === null) return undefined;\r\n switch (type) {\r\n case 'D':\r\n case 'date':\r\n const d = SystemUtils.parseDate(value, it);\r\n if (d) return format(d, pattern, { locale: it });\r\n break;\r\n case 'C':\r\n case 'currency':\r\n return new Intl.NumberFormat('it-IT', { style: 'currency', currency: 'EUR' }).format(value ?? 0);\r\n case 'N':\r\n case 'number':\r\n return new Intl.NumberFormat('it-IT', { style: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 2 }).format(value ?? 0);\r\n case 'N0':\r\n case 'number0':\r\n return new Intl.NumberFormat('it-IT', { style: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 }).format(value ?? 0);\r\n case 'P':\r\n case 'percentage':\r\n return new Intl.NumberFormat('it-IT', { style: 'percent', minimumFractionDigits: 0, maximumFractionDigits: 0 }).format(value ?? 0); \r\n }\r\n return undefined;\r\n }\r\n}\r\n","import { Injectable, Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'replace',\r\n standalone: true\r\n})\r\nexport class ReplacePipe implements PipeTransform {\r\n\r\n private sanitizer = inject(DomSanitizer);\r\n \r\n transform(value: string | undefined, regexValue: string, replaceValue: string): SafeHtml {\r\n if (!value) return undefined;\r\n if (regexValue === '\\n' && !replaceValue) {\r\n replaceValue = '<br>';\r\n }\r\n return this.sanitizer.bypassSecurityTrustHtml(value.replace(new RegExp(regexValue, 'g'), replaceValue));\r\n }\r\n}\r\n","import { Pipe, Injectable, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'safeHtml',\r\n standalone: true\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n transform(value?: string ): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(value ?? '');\r\n }\r\n}\r\n","import { Pipe, Injectable, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'safeUrl',\r\n standalone: true\r\n})\r\nexport class SafeUrlPipe implements PipeTransform {\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n transform(value?: string): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(value ?? '');\r\n }\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'callback',\r\n pure: false,\r\n standalone: true\r\n})\r\nexport class SearchCallbackPipe implements PipeTransform {\r\n transform(items: any[] | undefined, callback: (item: any) => boolean): any {\r\n if (!items || !callback) {\r\n return items;\r\n }\r\n return items.filter(item => callback(item));\r\n }\r\n}\r\n","import { Pipe, PipeTransform, Injectable } from '@angular/core';\r\nimport { SearchFilterMetadata } from '../definitions';\r\n\r\n// ---------------------------------------------------------------------------------\r\n// 2023.0921 aggiunto un campo opzionale di tipo SearchFilterMetadata per i conteggi\r\n//\r\n// - nel chiamante:\r\n// let items: Searchable[] = [...];\r\n// let myFilterText: string = 'testo del filtro';\r\n// const myFilterMetadata: SearchFilterMetadata = { total: 0, count: 0 };\r\n// \r\n// <div *ngFor=\"let item of items | search:myFilterText:myFilterMetadata\">\r\n// <div>Totale: {{ myFilterMetadata.total }}, Filtrati: {{ myFilterMetadata.count }}</div>\r\n// ---------------------------------------------------------------------------------\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'search',\r\n standalone: true\r\n})\r\nexport class SearchFilterPipe implements PipeTransform {\r\n transform(items?: any[], value?: string, metadata?: SearchFilterMetadata): any {\r\n\r\n // se non vengono passati i metadati ne crea una copia locale per evitare gli if\r\n metadata = metadata || { total: 0, count: 0 };\r\n\r\n if (!items || !value) {\r\n return items;\r\n }\r\n let result = items.filter(item => {\r\n if (item) {\r\n if (item.searchBag)\r\n return item.searchBag.name\r\n .toLowerCase()\r\n .indexOf(value.toLowerCase()) !== -1;\r\n else return item.toLowerCase().indexOf(value.toLowerCase()) !== -1;\r\n }\r\n return null;\r\n });\r\n\r\n // aggiorna i conteggi\r\n metadata.total = items.length;\r\n metadata.count = result.length;\r\n\r\n return result;\r\n }\r\n}\r\n","import { Pipe, Injectable, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'formatHtml',\r\n standalone: true\r\n})\r\nexport class FormatHtmlPipe implements PipeTransform {\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n transform(value?: string ): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(value.replaceAll(/(?:\\r\\n|\\r|\\n)/g, '<br>') ?? '');\r\n }\r\n}\r\n","export const UtilsMessages = {\r\n /**\r\n * Messages\r\n */\r\n\r\n\r\n // Select dialog\r\n UTILS_DIALOGS_SELECT_OPTIONS_CHANGED: '§utils-dialogs-select-options-changed'\r\n};\r\n","import { SelectionModel } from \"@angular/cdk/collections\";\r\nimport { SystemUtils } from \"./system\";\r\nimport { EventEmitter } from '@angular/core';\r\n\r\nexport class SelectableModel<T, V> {\r\n\r\n changed: EventEmitter<T> = new EventEmitter<T>();\r\n\r\n private _all: T[] = [];\r\n get all(): T[] {\r\n return this._all;\r\n }\r\n private _current: SelectionModel<T>;\r\n get current(): SelectionModel<T> {\r\n return this._current;\r\n }\r\n private _lookupFieldName: string;\r\n\r\n constructor(\r\n allowMultiSelect: boolean = true,\r\n lookupFieldName: string = \"id\"\r\n ) {\r\n this._current = new SelectionModel<T>(allowMultiSelect, []);\r\n this._all = [];\r\n this._lookupFieldName = lookupFieldName;\r\n }\r\n\r\n /**\r\n * Update the view of an item\r\n * @param item : the item to update\r\n * @param lookupValue : the value\r\n */\r\n updateCurrent(item: T, lookupValue: V) {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n );\r\n if (p != -1) {\r\n this._current.toggle(item);\r\n this.changed.emit(item);\r\n }\r\n }\r\n\r\n /**\r\n * Select an item\r\n * @param item : the item to update\r\n * @param lookupValue : the value\r\n */\r\n toggle(item: T, lookupValue?: V) {\r\n if (lookupValue) {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n );\r\n if (p == -1) {\r\n this._all.push(item);\r\n } else {\r\n this._all.splice(p, 1);\r\n }\r\n this._current.toggle(item);\r\n this.changed.emit(item);\r\n }\r\n }\r\n\r\n /**\r\n * Select an item\r\n * @param item : the item to update\r\n * @param lookupValue : the value\r\n */\r\n select(item: T, lookupValue?: V) {\r\n if (lookupValue) {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n );\r\n if (p == -1) {\r\n this._all.push(item);\r\n } \r\n this._current.select(item);\r\n this.changed.emit(item);\r\n }\r\n }\r\n\r\n /**\r\n * Deselect an item\r\n * @param item : the item to update\r\n * @param lookupValue : the value\r\n */\r\n deselect(item: T, lookupValue?: V) {\r\n if (lookupValue) {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n );\r\n if (p != -1) {\r\n this._all.splice(p, 1);\r\n this._current.deselect(item);\r\n this.changed.emit(item);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Deselect all specified item lookup values\r\n * @param lookupValues : the values\r\n */\r\n deselectByValues(lookupValues: V[]) {\r\n if (!lookupValues || lookupValues.length === 0) return;\r\n lookupValues.forEach(n => {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n n\r\n );\r\n if (p != -1) {\r\n let item = this._all[p];\r\n this._all.splice(p, 1);\r\n this._current.deselect(item);\r\n this.changed.emit(item);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Clear current view\r\n * @param clearFunc : the function used to clear\r\n */\r\n clearCurrent(clearFunc: any) {\r\n this._current.selected.forEach(n => {\r\n clearFunc(n);\r\n });\r\n this._current.clear();\r\n this.changed.emit();\r\n }\r\n\r\n /**\r\n * Deselect all items\r\n */\r\n clear() {\r\n this._all = [];\r\n this._current.clear();\r\n this.changed.emit();\r\n }\r\n\r\n /**\r\n * Checks if an item is selected using its lookup value\r\n * @param lookupValue : the value\r\n * @returns : true if the value is selected\r\n */\r\n isSelected(lookupValue?: V): boolean {\r\n return (lookupValue &&\r\n SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n ) != -1\r\n );\r\n }\r\n\r\n /**\r\n * Checks if a selection exists\r\n * @returns : true if at least one selection exists\r\n */\r\n hasValue(): boolean {\r\n return this._all.length > 0;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nexport interface BroadcastMessageInfo {\r\n id: string;\r\n data?: any;\r\n}\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BroadcastService {\r\n private subject = new Subject<BroadcastMessageInfo>();\r\n\r\n /**\r\n * Send a message\r\n * @param id : the message id\r\n * @param data : the data to send\r\n * @param delay : the number of milliseconds to wait before sending the message\r\n */\r\n sendMessage(id: string, data: any = null, delay: number = 0) {\r\n setTimeout(() => {\r\n this.subject.next({ id: id, data: data } as BroadcastMessageInfo);\r\n }, delay);\r\n }\r\n\r\n /**\r\n * Get the next message as observable\r\n * @returns : the observable object\r\n */\r\n getMessage(): Observable<BroadcastMessageInfo> {\r\n return this.subject.asObservable();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnvironmentService {\r\n \r\n private _appUri: string = '';\r\n get appUri() {\r\n return this._appUri;\r\n }\r\n set appUri(value: string) {\r\n this._appUri = value;\r\n }\r\n\r\n private _appServiceUri: string = '';\r\n get appServiceUri() {\r\n return this._appServiceUri;\r\n }\r\n set appServiceUri(value: string) {\r\n this._appServiceUri = value;\r\n }\r\n\r\n private _appLoginRedirectUri: string = '';\r\n get appLoginRedirectUri() {\r\n return this._appLoginRedirectUri ?? this._appUri;\r\n }\r\n set appLoginRedirectUri(value: string) {\r\n this._appLoginRedirectUri = value;\r\n }\r\n\r\n private _appServiceLoginUri: string = '';\r\n get appServiceLoginUri() {\r\n return this._appServiceLoginUri ?? this._appServiceUri;\r\n }\r\n set appServiceLoginUri(value: string) {\r\n this._appServiceLoginUri = value;\r\n }\r\n}\r\n","import { Injectable, signal } from '@angular/core';\r\nimport { SystemUtils } from '../system';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ScreenService {\r\n public mq = signal<string>(\"\");\r\n \r\n get isTouchable(): boolean {\r\n return SystemUtils.isTouchable();\r\n }\r\n get isIEOrEdge(): boolean {\r\n return /msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent);\r\n }\r\n\r\n}\r\n","/**\r\n * Standard Broadcast Messages Manager\r\n * https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel\r\n */\r\n\r\n/**\r\n * The message bag sent as a message\r\n */\r\nexport interface BroadcastChannelMessageBag<T> {\r\n messageId: string;\r\n sender: string;\r\n data?: T;\r\n}\r\n\r\n/**\r\n * Message subscription params\r\n */\r\nexport interface BroadcastChannelSubscriberInfo<T> {\r\n messageId: string;\r\n action: (bag: BroadcastChannelMessageBag<T>) => void;\r\n}\r\n\r\n/**\r\n * Web Standard Broadcast Messages Manager\r\n * https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel\r\n */\r\nexport class BroadcastChannelManager {\r\n private channel?: BroadcastChannel;\r\n private subscriptions: BroadcastChannelSubscriberInfo<any>[] = [];\r\n\r\n /**\r\n * Get the current channel registration\r\n */\r\n public get currentBus(): string | undefined {\r\n return this.channel?.name;\r\n }\r\n\r\n constructor(bus: string) {\r\n this.channel = new BroadcastChannel(bus);\r\n\r\n this.channel.onmessageerror = (e: any) => {\r\n console.error('[BroadcastChannelManager] Errore di ricezione del messaggio', e);\r\n };\r\n\r\n this.channel.onmessage = (e: MessageEvent) => {\r\n const bag: BroadcastChannelMessageBag<any> | undefined = e.data as BroadcastChannelMessageBag<any>;\r\n if (bag) {\r\n const bagInfo: BroadcastChannelSubscriberInfo<any> | undefined = this.subscriptions.find(m => m.messageId === bag.messageId);\r\n bagInfo?.action(bag);\r\n }\r\n }\r\n }\r\n\r\n dispose(): void {\r\n this.subscriptions = [];\r\n this.channel?.close();\r\n this.channel = undefined;\r\n }\r\n\r\n /**\r\n * Send a message\r\n * @param bag The message, see also {@link BroadcastChannelMessageBag}\r\n *\r\n * @example\r\n * channel.sendMessage({ messageId: 'my-broadcast-message', sender: 'the-sender', data: value });\r\n */\r\n sendMessage<T>(bag: BroadcastChannelMessageBag<T>): void;\r\n /**\r\n * Send a message\r\n * @param bag The message, see also {@link BroadcastChannelMessageBag}\r\n * @param delay The number of milliseconds to wait before sending the message, see also {@link setTimeout}\r\n *\r\n * @example\r\n * channel.sendMessage({ messageId: 'my-broadcast-message', sender: 'the-sender', data: value }, 250);\r\n */\r\n sendMessage<T>(bag: BroadcastChannelMessageBag<T>, delay?: number): void;\r\n /**\r\n * Send a message\r\n * @param messageId The message id\r\n * @param data The data to send\r\n *\r\n * @example\r\n * channel.sendMessage('my-broadcast-message', value);\r\n */\r\n sendMessage<T>(messageId: string, data?: T): void;\r\n /**\r\n * Send a message\r\n * @param messageId The message id\r\n * @param data The data to send\r\n * @param delay The number of milliseconds to wait before sending the message\r\n *\r\n * @example\r\n * channel.sendMessage('my-broadcast-message', value, 250);\r\n */\r\n sendMessage<T>(messageId: string, data?: T, delay?: number): void;\r\n\r\n /**\r\n * overloads\r\n */\r\n sendMessage<T>(messageIdorBag: string | BroadcastChannelMessageBag<T>, dataOrDelay?: T | number, delay?: number) {\r\n setTimeout(() => {\r\n if (typeof messageIdorBag === 'string') {\r\n this.channel?.postMessage({ messageId: messageIdorBag, data: dataOrDelay } as BroadcastChannelMessageBag<T>);\r\n } else {\r\n this.channel?.postMessage(messageIdorBag as BroadcastChannelMessageBag<T>);\r\n }\r\n }, (typeof dataOrDelay === 'number' ? dataOrDelay : delay) ?? 0);\r\n }\r\n\r\n /**\r\n * Subscribe to a message\r\n * @param args The subscription info, see also {@link BroadcastChannelSubscriberInfo}\r\n */\r\n subscribe<T>(args: BroadcastChannelSubscriberInfo<T>) {\r\n const i: number = this.subscriptions.findIndex(m => m.messageId === args.messageId);\r\n if (i === -1) {\r\n this.subscriptions.push(args);\r\n } else {\r\n this.subscriptions[i].action = args.action;\r\n }\r\n }\r\n\r\n /**\r\n * Remove a message subscription\r\n * @param messageId The message id\r\n */\r\n unsubscribe(messageId: string) {\r\n const i: number = this.subscriptions.findIndex(m => m.messageId === messageId);\r\n if (i !== -1) {\r\n this.subscriptions.splice(i, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Remove all the current subscriptions\r\n */\r\n unsubscribeAll() {\r\n this.subscriptions = [];\r\n }\r\n}\r\n","import { computed, inject, Injectable, OnDestroy, RendererFactory2, Signal, signal } from \"@angular/core\";\r\nimport { BroadcastChannelManager, BroadcastChannelMessageBag } from './broadcastChannelManager';\r\nimport { BehaviorSubject, Observable } from \"rxjs\";\r\n\r\n\r\n/**\r\n * Kind of themes: system default, light or dark\r\n */\r\nexport type ThemeType = 'auto' | 'light' | 'dark';\r\n\r\n/**\r\n * Available themes' schema\r\n */\r\ninterface ThemeInfoRecord {\r\n icon: string;\r\n name: string;\r\n next: ThemeType;\r\n tooltip: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class ThemeService implements OnDestroy {\r\n\r\n // messaggi broadcast\r\n private readonly broadcastChannel = new BroadcastChannelManager('THEME-SERVICE');\r\n private readonly broadcastMessage: string = '$theme-changed';\r\n\r\n // per intercettare il cambio di tema a livello di sistema\r\n private readonly prefersColorSchemeMediaQueryList = window.matchMedia('(prefers-color-scheme: dark)');\r\n\r\n /**\r\n * Theme changed e.\r\n * Notify the consuming component about the incoming theme change.\r\n * @example \r\n * // React to theme changes\r\n * this.themeService.themeChanged\r\n * .pipe(takeUntil(this.unsubscribe))\r\n * .subscribe((value: ThemeType) => {\r\n * // do the job done....\r\n * });\r\n */\r\n private themeChanged = new BehaviorSubject<ThemeType>('auto');\r\n // espone al consumatore un'observable\r\n public changed: Observable<ThemeType> = this.themeChanged.asObservable();\r\n\r\n private renderFactory2 = inject(RendererFactory2);\r\n private renderer = this.renderFactory2.createRenderer(null, null);\r\n\r\n /**\r\n * Current theme\r\n */\r\n private readonly theme = signal<ThemeType>(\"light\");\r\n /**\r\n * The current theme is \"System default\"\r\n */\r\n private readonly auto: Signal<boolean> = computed(() => this.theme() === 'auto');\r\n\r\n /**\r\n * Configuration schema about the icon, the text and the toggle() sequence\r\n */\r\n private readonly themeInfo: Record<ThemeType, ThemeInfoRecord> = {\r\n ['auto']: { icon: 'routine', name: 'Tema di sistema', next: 'light', tooltip: 'Passa a tema chiaro', },\r\n ['light']: { icon: 'light_mode', name: 'Tema chiaro', next: 'dark', tooltip: 'Passa a tema scuro', },\r\n ['dark']: { icon: 'dark_mode', name: 'Tema scuro', next: 'auto', tooltip: 'Passa a tema di sistema', },\r\n };\r\n\r\n /**\r\n * Icon of the current theme (mat-icon code)\r\n */\r\n public readonly themeIcon: Signal<string> = computed(() => this.themeInfo[this.theme()].icon);\r\n /**\r\n * Current theme name\r\n */\r\n public readonly themeName: Signal<string> = computed(() => this.themeInfo[this.theme()].name);\r\n /**\r\n * Tooltip text on toggle \r\n */\r\n public readonly toggleTooltip: Signal<string> = computed(() => this.themeInfo[this.theme()].tooltip);\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize(theme: ThemeType = this.getPreferredTheme()) {\r\n // React to current theme\r\n this.prefersColorSchemeMediaQueryList.onchange = (_: MediaQueryListEvent) => this.auto() ? this.setTheme(theme) : null;\r\n\r\n // Support boradcast channel messaging\r\n this.broadcastChannel.subscribe<ThemeType>({\r\n messageId: this.broadcastMessage,\r\n action: (bag: BroadcastChannelMessageBag<ThemeType>) => {\r\n if (this.theme() !== bag.data) {\r\n this.setTheme(bag.data);\r\n }\r\n }\r\n });\r\n\r\n // Load theme\r\n this.setTheme(theme);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.broadcastChannel.dispose();\r\n }\r\n\r\n /**\r\n * Get the current preferred theme\r\n */\r\n private getPreferredTheme(): ThemeType {\r\n let theme: ThemeType = localStorage.getItem(\"preferred-theme\") as ThemeType;\r\n if (!this.isTheme(theme)) {\r\n theme = 'auto';\r\n }\r\n return theme;\r\n }\r\n\r\n /**\r\n * Check if a value string is a theme type\r\n * @param value : th string value\r\n * @returns true if the the value is a valid theme type\r\n */\r\n private isTheme(value: string): value is ThemeType {\r\n return ['auto', 'light', 'dark'].includes(value);\r\n }\r\n\r\n\r\n /**\r\n * Set the new theme\r\n * @param theme the new theme\r\n */\r\n private setTheme(theme: ThemeType = 'auto') {\r\n this.renderer.removeClass(document.body, 'light');\r\n this.renderer.removeClass(document.body, 'dark');\r\n this.theme.set(theme);\r\n localStorage.setItem(\"preferred-theme\", this.theme());\r\n this.renderer.addClass(document.body, this.auto() ? (window.matchMedia && window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\") : theme);\r\n // Notify that current theme has changed\r\n this.themeChanged.next(this.getTheme());\r\n this.broadcastChannel.sendMessage(this.broadcastMessage, this.theme());\r\n }\r\n\r\n /**\r\n * Toggle theme\r\n */\r\n public toggleTheme(): void {\r\n this.setTheme(this.themeInfo[this.theme()].next);\r\n }\r\n\r\n /**\r\n * Get current real theme: light or dark\r\n */\r\n public getTheme(): ThemeType {\r\n return (\r\n this.auto()\r\n ? (window.matchMedia && window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\")\r\n : this.getPreferredTheme());\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { AutoFocusDirective } from './directives/autoFocusDirective';\r\nimport { DateIntervalChangeDirective } from './directives/changeDateIntervalDirective';\r\nimport { CopyClipboardDirective } from './directives/copyClipboardDirective';\r\nimport { EmailsValidatorDirective, EqualsValidatorDirective, FileSizeValidatorDirective, GuidValidatorDirective, MaxTermsValidatorDirective, NotFutureValidatorDirective, PasswordValidatorDirective, SqlDateValidatorDirective, UrlValidatorDirective, ValidIfDirective, ValidatorDirective } from './directives/validators';\r\nimport { FormatPipe } from './pipes/format.pipe';\r\nimport { ReplacePipe } from './pipes/replace.pipe';\r\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\r\nimport { SafeUrlPipe } from './pipes/safe-url.pipe';\r\nimport { SearchCallbackPipe } from './pipes/search-callback.pipe';\r\nimport { SearchFilterPipe } from './pipes/search-filter.pipe';\r\nimport { FormatHtmlPipe } from './pipes/format-html.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n FileSizeValidatorDirective,\r\n ValidIfDirective,\r\n ValidatorDirective,\r\n EqualsValidatorDirective,\r\n GuidValidatorDirective,\r\n EmailsValidatorDirective,\r\n UrlValidatorDirective,\r\n NotFutureValidatorDirective,\r\n PasswordValidatorDirective,\r\n DateIntervalChangeDirective,\r\n SqlDateValidatorDirective,\r\n SearchFilterPipe,\r\n SearchCallbackPipe,\r\n SafeHtmlPipe,\r\n SafeUrlPipe,\r\n ReplacePipe,\r\n FormatPipe,\r\n FormatHtmlPipe,\r\n CopyClipboardDirective,\r\n AutoFocusDirective,\r\n MaxTermsValidatorDirective\r\n ],\r\n exports: [\r\n FileSizeValidatorDirective,\r\n ValidIfDirective,\r\n ValidatorDirective,\r\n EqualsValidatorDirective,\r\n GuidValidatorDirective,\r\n EmailsValidatorDirective,\r\n UrlValidatorDirective,\r\n NotFutureValidatorDirective,\r\n PasswordValidatorDirective,\r\n DateIntervalChangeDirective,\r\n SqlDateValidatorDirective,\r\n SearchFilterPipe,\r\n SearchCallbackPipe,\r\n SafeHtmlPipe,\r\n SafeUrlPipe,\r\n ReplacePipe,\r\n FormatPipe,\r\n FormatHtmlPipe,\r\n CopyClipboardDirective,\r\n AutoFocusDirective,\r\n MaxTermsValidatorDirective\r\n ],\r\n providers: [\r\n SearchFilterPipe,\r\n SearchCallbackPipe,\r\n SafeHtmlPipe,\r\n SafeUrlPipe,\r\n ReplacePipe,\r\n FormatPipe,\r\n FormatHtmlPipe\r\n ]\r\n})\r\nexport class ArsCoreModule { }\r\n\r\nexport * from './definitions';\r\nexport * from './messages';\r\nexport * from './selectable';\r\nexport * from './services/broadcast.service';\r\nexport * from './services/environment.service';\r\nexport * from './services/screen.service';\r\nexport * from './services/theme.service';\r\nexport * from './system';\r\n\r\n","import { inject, Injectable, NgModule } from '@angular/core';\r\nimport { DateAdapter, MatDateFormats, MAT_DATE_LOCALE, MAT_DATE_FORMATS } from '@angular/material/core';\r\nimport { TZDate } from '@date-fns/tz';\r\nimport {\r\n Locale,\r\n getMonth,\r\n getYear,\r\n getDate,\r\n getDay,\r\n getDaysInMonth,\r\n formatISO,\r\n addYears,\r\n addMonths,\r\n addDays,\r\n isValid,\r\n isDate,\r\n format,\r\n parseISO,\r\n parse,\r\n} from 'date-fns';\r\n\r\n\r\n/** Creates an array and fills it with values. */\r\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\r\n const valuesArray = Array(length);\r\n for (let i = 0; i < length; i++) {\r\n valuesArray[i] = valueFunction(i);\r\n }\r\n return valuesArray;\r\n}\r\n\r\n// date-fns doesn't have a way to read/print month names or days of the week directly,\r\n// so we get them by formatting a date with a format that produces the desired month/day.\r\nconst MONTH_FORMATS = {\r\n long: 'LLLL',\r\n short: 'LLL',\r\n narrow: 'LLLLL',\r\n};\r\n\r\nconst DAY_OF_WEEK_FORMATS = {\r\n long: 'EEEE',\r\n short: 'EEE',\r\n narrow: 'EEEEE',\r\n};\r\n\r\nexport const MAT_DATE_FNS_FORMATS: MatDateFormats = {\r\n parse: {\r\n dateInput: 'P',\r\n },\r\n display: {\r\n dateInput: 'P',\r\n monthYearLabel: 'LLL uuuu',\r\n dateA11yLabel: 'PP',\r\n monthYearA11yLabel: 'LLLL uuuu',\r\n },\r\n};\r\n\r\n\r\n\r\n/** Adds date-fns support to Angular Material. */\r\n@Injectable()\r\nexport class DateFnsAdapter extends DateAdapter<Date, Locale> {\r\n constructor(...args: unknown[]);\r\n constructor() {\r\n super();\r\n const matDateLocale = inject(MAT_DATE_LOCALE, { optional: true });\r\n this.setLocale(matDateLocale as Locale);\r\n }\r\n\r\n getYear(date: Date): number {\r\n return getYear(date);\r\n }\r\n\r\n getMonth(date: Date): number {\r\n return getMonth(date);\r\n }\r\n\r\n getDate(date: Date): number {\r\n return getDate(date);\r\n }\r\n\r\n getDayOfWeek(date: Date): number {\r\n return getDay(date);\r\n }\r\n\r\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\r\n const pattern = MONTH_FORMATS[style];\r\n return range(12, i => this.format(new Date(2017, i, 1), pattern));\r\n }\r\n\r\n getDateNames(): string[] {\r\n const dtf =\r\n typeof Intl !== 'undefined'\r\n ? new Intl.DateTimeFormat(this.locale.code, {\r\n day: 'numeric',\r\n timeZone: 'utc',\r\n })\r\n : null;\r\n\r\n return range(31, i => {\r\n if (dtf) {\r\n // date-fns doesn't appear to support this functionality.\r\n // Fall back to `Intl` on supported browsers.\r\n const date = new Date();\r\n date.setUTCFullYear(2017, 0, i + 1);\r\n date.setUTCHours(0, 0, 0, 0);\r\n return dtf.format(date).replace(/[\\u200e\\u200f]/g, '');\r\n }\r\n\r\n return i + '';\r\n });\r\n }\r\n\r\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\r\n const pattern = DAY_OF_WEEK_FORMATS[style];\r\n return range(7, i => this.format(new Date(2017, 0, i + 1), pattern));\r\n }\r\n\r\n getYearName(date: Date): string {\r\n return this.format(date, 'y');\r\n }\r\n\r\n getFirstDayOfWeek(): number {\r\n return this.locale.options?.weekStartsOn ?? 0;\r\n }\r\n\r\n getNumDaysInMonth(date: Date): number {\r\n return getDaysInMonth(date);\r\n }\r\n\r\n clone(date: Date): Date {\r\n return new Date(date.getTime());\r\n }\r\n\r\n createDate(year: number, month: number, date: number): Date {\r\n\r\n // Check for invalid month and date (except upper bound on date which we have to check after\r\n // creating the Date).\r\n if (month < 0 || month > 11) {\r\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\r\n }\r\n\r\n if (date < 1) {\r\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\r\n }\r\n\r\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\r\n // To work around this we use `setFullYear` and `setHours` instead.\r\n const result = new Date();\r\n result.setFullYear(year, month, date);\r\n result.setHours(0, 0, 0, 0);\r\n const result2 = new TZDate(result, \"Europe/Rome\");\r\n \r\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\r\n if (result2.getMonth() != month) {\r\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\r\n }\r\n\r\n return result2;\r\n }\r\n\r\n today(): Date {\r\n return new Date();\r\n }\r\n\r\n parse(value: any, parseFormat: string | string[]): Date | undefined {\r\n if (typeof value == 'string' && value.length > 0) {\r\n let iso8601Date = parseISO(value);\r\n if (this.isValid(iso8601Date)) {\r\n iso8601Date = new TZDate(iso8601Date, \"Europe/Rome\");\r\n return iso8601Date;\r\n }\r\n\r\n const formats = Array.isArray(parseFormat) ? parseFormat : [parseFormat];\r\n\r\n if (!parseFormat.length) {\r\n throw Error('Formats array must not be empty.');\r\n }\r\n\r\n for (const currentFormat of formats) {\r\n let fromFormat = parse(value, currentFormat, new Date(), { locale: this.locale });\r\n if (this.isValid(fromFormat)) {\r\n fromFormat = new TZDate(fromFormat, \"Europe/Rome\");\r\n return fromFormat;\r\n }\r\n }\r\n\r\n return this.invalid();\r\n } else if (typeof value === 'number') {\r\n return new Date(value);\r\n } else if (value instanceof Date) {\r\n return this.clone(value);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n\r\n format(date: Date, displayFormat: string): string {\r\n if (!this.isValid(date)) {\r\n throw Error('DateFnsAdapter: Cannot format invalid date.');\r\n }\r\n\r\n return format(date, displayFormat, { locale: this.locale });\r\n }\r\n\r\n addCalendarYears(date: Date, years: number): Date {\r\n return addYears(date, years);\r\n }\r\n\r\n addCalendarMonths(date: Date, months: number): Date {\r\n return addMonths(date, months);\r\n }\r\n\r\n addCalendarDays(date: Date, days: number): Date {\r\n return addDays(date, days);\r\n }\r\n\r\n toIso8601(date: Date): string {\r\n return formatISO(date, { representation: 'date' });\r\n }\r\n\r\n /**\r\n * Returns the given value if given a valid Date or undefined. Deserializes valid ISO 8601 strings\r\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into undefined. Returns an\r\n * invalid date for all other values.\r\n */\r\n override deserialize(value: any): Date | undefined {\r\n if (typeof value === 'string') {\r\n if (!value) {\r\n return undefined;\r\n }\r\n const date = parseISO(value);\r\n if (this.isValid(date)) {\r\n return date;\r\n }\r\n }\r\n return super.deserialize(value);\r\n }\r\n\r\n isDateInstance(obj: any): boolean {\r\n return isDate(obj);\r\n }\r\n\r\n isValid(date: Date): boolean {\r\n return isValid(date);\r\n }\r\n\r\n invalid(): Date {\r\n return new Date(NaN);\r\n }\r\n}\r\n\r\n@NgModule({\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: DateFnsAdapter,\r\n deps: [MAT_DATE_LOCALE],\r\n },\r\n { provide: MAT_DATE_FORMATS, useValue: MAT_DATE_FNS_FORMATS }\r\n ],\r\n})\r\nexport class ArsDateFnsModule { }","import { Directive, ElementRef, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[removeFocus]'\r\n})\r\nexport class RemoveFocusDirective {\r\n constructor(private elementRef: ElementRef) {}\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(_event: Event): void {\r\n // Controllo null safety\r\n if (this.elementRef?.nativeElement && typeof this.elementRef.nativeElement.blur === 'function') {\r\n // Piccolo delay per permettere al click di completarsi\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.blur();\r\n }, 0);\r\n }\r\n }\r\n}","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './core.module';\r\nexport * from './dateFnsAdapter.module';\r\nexport * from './directives/changeDateIntervalDirective';\r\nexport * from './directives/copyClipboardDirective';\r\nexport * from './directives/autoFocusDirective';\r\nexport * from './directives/removeFocusDirective';\r\nexport * from './directives/validators';\r\nexport * from './pipes/search-filter.pipe';\r\nexport * from './pipes/search-callback.pipe';\r\nexport * from './pipes/safe-url.pipe';\r\nexport * from './pipes/safe-html.pipe';\r\nexport * from './pipes/replace.pipe';\r\nexport * from './pipes/format.pipe';\r\nexport * from './pipes/format-html.pipe';\r\nexport * from './system';\r\nexport * from './definitions';\r\nexport * from './selectable';\r\nexport * from './services/broadcast.service';\r\nexport * from './services/broadcastChannelManager';\r\nexport * from './services/environment.service';\r\nexport * from './services/screen.service';\r\n\r\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": "@arsedizioni/ars-utils",
3
- "version": "20.0.34",
3
+ "version": "20.0.35",
4
4
  "author": {
5
5
  "email": "software@arsedizioni.it",
6
6
  "name": "Fabio Buscaroli, Alberto Doria"
@@ -44,14 +44,14 @@
44
44
  "types": "./core/index.d.ts",
45
45
  "default": "./fesm2022/arsedizioni-ars-utils-core.mjs"
46
46
  },
47
- "./evolution.common": {
48
- "types": "./evolution.common/index.d.ts",
49
- "default": "./fesm2022/arsedizioni-ars-utils-evolution.common.mjs"
50
- },
51
47
  "./help": {
52
48
  "types": "./help/index.d.ts",
53
49
  "default": "./fesm2022/arsedizioni-ars-utils-help.mjs"
54
50
  },
51
+ "./evolution.common": {
52
+ "types": "./evolution.common/index.d.ts",
53
+ "default": "./fesm2022/arsedizioni-ars-utils-evolution.common.mjs"
54
+ },
55
55
  "./support.common": {
56
56
  "types": "./support.common/index.d.ts",
57
57
  "default": "./fesm2022/arsedizioni-ars-utils-support.common.mjs"