{"version":3,"file":"camatsoft-components-angular.mjs","sources":["../../../projects/cscomponents/src/lib/cscomponents.environment.ts","../../../projects/cscomponents/src/lib/date-time.ts","../../../projects/cscomponents/src/lib/console.ts","../../../projects/cscomponents/src/lib/components/component-base/component-base.component.ts","../../../projects/cscomponents/src/lib/components/component-base/component-base.component.html","../../../projects/cscomponents/src/lib/components/datagrid/consts/datagrid-environment-const.ts","../../../projects/cscomponents/src/lib/components/datagrid/dtos/datagrid-column-dto.ts","../../../projects/cscomponents/src/lib/components/datagrid/dtos/datagrid-row-dto.ts","../../../projects/cscomponents/src/lib/components/datagrid/datagrid-item-panel-columns/datagrid-item-panel-columns.component.ts","../../../projects/cscomponents/src/lib/components/datagrid/datagrid-item-panel-columns/datagrid-item-panel-columns.component.html","../../../projects/cscomponents/src/lib/components/datagrid/datagrid-item-panel-options/datagrid-item-panel-options.component.ts","../../../projects/cscomponents/src/lib/components/datagrid/datagrid-item-panel-options/datagrid-item-panel-options.component.html","../../../projects/cscomponents/src/lib/components/loader/loader.component.ts","../../../projects/cscomponents/src/lib/components/loader/loader.component.html","../../../projects/cscomponents/src/lib/form-components/form-base/form-base.component.ts","../../../projects/cscomponents/src/lib/components/icon/icon.component.ts","../../../projects/cscomponents/src/lib/components/icon/icon.component.html","../../../projects/cscomponents/src/lib/components/notification/enums/notification-result.ts","../../../projects/cscomponents/src/lib/components/notification/consts/notification-environment-const.ts","../../../projects/cscomponents/src/lib/components/notification/notification-item/notification-item.component.ts","../../../projects/cscomponents/src/lib/components/notification/notification-item/notification-item.component.html","../../../projects/cscomponents/src/lib/components/modal/enums/modal-result.ts","../../../projects/cscomponents/src/lib/components/modal/consts/modal-environment-const.ts","../../../projects/cscomponents/src/lib/components/modal/modal.component.ts","../../../projects/cscomponents/src/lib/components/modal/modal.component.html","../../../projects/cscomponents/src/lib/managers/cscomponents-manager.service.ts","../../../projects/cscomponents/src/lib/components/popup-container/popup-container.component.ts","../../../projects/cscomponents/src/lib/components/popup-container/popup-container.component.html","../../../projects/cscomponents/src/lib/managers/popup-manager/popup-manager.service.ts","../../../projects/cscomponents/src/lib/form-components/dropdown-button/dropdown-button.component.ts","../../../projects/cscomponents/src/lib/form-components/dropdown-button/dropdown-button.component.html","../../../projects/cscomponents/src/lib/components/datagrid/datagrid-toggle-button/datagrid-toggle-button.component.ts","../../../projects/cscomponents/src/lib/components/datagrid/datagrid-toggle-button/datagrid-toggle-button.component.html","../../../projects/cscomponents/src/lib/form-components/datetime-picker/datetime-picker.component.ts","../../../projects/cscomponents/src/lib/form-components/datetime-picker/datetime-picker.component.html","../../../projects/cscomponents/src/lib/components/datagrid/datagrid-filter-group-item/datagrid-filter-group-item.component.ts","../../../projects/cscomponents/src/lib/components/datagrid/datagrid-filter-group-item/datagrid-filter-group-item.component.html","../../../projects/cscomponents/src/lib/components/datagrid/datagrid-item-panel-filter/datagrid-item-panel-filter.component.ts","../../../projects/cscomponents/src/lib/components/datagrid/datagrid-item-panel-filter/datagrid-item-panel-filter.component.html","../../../projects/cscomponents/src/lib/components/datagrid/datagrid-item-panels/datagrid-item-panels.component.ts","../../../projects/cscomponents/src/lib/components/datagrid/datagrid-item-panels/datagrid-item-panels.component.html","../../../projects/cscomponents/src/lib/components/datagrid/dtos/datagrid-pagination-dto.ts","../../../projects/cscomponents/src/lib/components/datagrid/datagrid-pagination/datagrid-pagination.component.ts","../../../projects/cscomponents/src/lib/components/datagrid/datagrid-pagination/datagrid-pagination.component.html","../../../projects/cscomponents/src/lib/components/datagrid/datagrid-row/datagrid-row.component.ts","../../../projects/cscomponents/src/lib/components/datagrid/datagrid-row/datagrid-row.component.html","../../../projects/cscomponents/src/lib/services/module-registry/module-registry.service.ts","../../../projects/cscomponents/src/lib/components/datagrid/datagrid/datagrid.component.ts","../../../projects/cscomponents/src/lib/components/datagrid/datagrid/datagrid.component.html","../../../projects/cscomponents/src/lib/components/datagrid/dtos/datagrid-cell-dto.ts","../../../projects/cscomponents/src/lib/components/datagrid/dtos/datagrid-cell-event.ts","../../../projects/cscomponents/src/lib/components/datagrid/dtos/datagrid-column-filter-dto.ts","../../../projects/cscomponents/src/lib/components/pagination/dtos/pagination-dto.ts","../../../projects/cscomponents/src/lib/components/pagination/pagination.component.ts","../../../projects/cscomponents/src/lib/components/pagination/pagination.component.html","../../../projects/cscomponents/src/lib/components/pdfviewer/pdfviewer.component.ts","../../../projects/cscomponents/src/lib/components/pdfviewer/pdfviewer.component.html","../../../projects/cscomponents/src/lib/components/progress/progress.component.ts","../../../projects/cscomponents/src/lib/components/progress/progress.component.html","../../../projects/cscomponents/src/lib/components/tabpage/tabitem/tabitem.component.ts","../../../projects/cscomponents/src/lib/components/tabpage/tabitem/tabitem.component.html","../../../projects/cscomponents/src/lib/components/tabpage/tabpageitem/tabpageitem.component.ts","../../../projects/cscomponents/src/lib/components/tabpage/tabpageitem/tabpageitem.component.html","../../../projects/cscomponents/src/lib/components/tabpage/tabpage/tabpage.component.ts","../../../projects/cscomponents/src/lib/components/tabpage/tabpage/tabpage.component.html","../../../projects/cscomponents/src/lib/components/widget/widget.component.ts","../../../projects/cscomponents/src/lib/components/widget/widget.component.html","../../../projects/cscomponents/src/lib/form-components/textarea/textarea.component.ts","../../../projects/cscomponents/src/lib/form-components/textarea/textarea.component.html","../../../projects/cscomponents/src/lib/form-components/textbox/textbox.component.ts","../../../projects/cscomponents/src/lib/form-components/textbox/textbox.component.html","../../../projects/cscomponents/src/lib/managers/csform-components-manager.service.ts","../../../projects/cscomponents/src/public-api.ts","../../../projects/cscomponents/src/camatsoft-components-angular.ts"],"sourcesContent":["import { I18N } from \"./interfaces/i18n\";\r\n\r\nexport const CSCEnvironment = {\r\n    cultureInfo: 'en-gb'\r\n    , i18N: {\r\n        digitsSeparator: '.'\r\n        , currencyCode: 'GBP'\r\n        , currencySymbol: '£'\r\n        , components: {\r\n            textarea: {\r\n                isTooLong: 'Your text is too long',\r\n                isRequired: 'The field is required'\r\n            },\r\n            textbox: {\r\n                isTooLong: 'Your text is too long',\r\n                isRequired: 'The field is required',\r\n                emailIncorrect: 'This email is incorrect',\r\n                nan: 'Your test is nan'\r\n            }\r\n        }\r\n    } as I18N\r\n    , defaulti18N: {\r\n        digitsSeparator: '.'\r\n        , currencyCode: 'GBP'\r\n        , currencySymbol: '£'\r\n        , components: {\r\n            textarea: {\r\n                isTooLong: 'Your text is too long',\r\n                isRequired: 'The field is required'\r\n            },\r\n            textbox: {\r\n                isTooLong: 'Your text is too long',\r\n                isRequired: 'The field is required',\r\n                emailIncorrect: 'This email is incorrect',\r\n                nan: 'Your test is nan'\r\n            }\r\n        }\r\n    } as I18N\r\n    , jsonPathDirectoryI18N: 'i18N/cscomponents/'\r\n};","export class DateTime {\r\n    private _date: Date = new Date(Date.now());\r\n    private _firstDayOfWek: number = 1;\r\n    private _locale: string = 'en-gb';\r\n    private _Timezone: DateTimeZone = 'Europe/London';\r\n\r\n    public get dateJS(): Date { return this._date; }\r\n    public get dateJSTZ(): Date {\r\n        //return new Date(new Date(this.dateJS).setMinutes(this.dateJS.getMinutes() + this.getGap()));   \r\n        var date = this.dateJS;\r\n        var gap: number = this.getGap();\r\n        date = new Date(new Date(date).setMinutes(date.getMinutes() + gap));\r\n        return date;\r\n    }\r\n    public get dateJSUTC(): Date { return new Date(new Date(this.dateJS).setMinutes(this.dateJS.getUTCMinutes() + this.getGap())); }\r\n    public get locale(): string { return this._locale.toLowerCase(); };\r\n\r\n    public get day(): number { return this.dateJS.getDate(); }\r\n    public get dayNarrowName(): string { return this.dateJS.toLocaleString(this.locale, { weekday: 'narrow' }); }\r\n    public get dayShortName(): string { return this.dateJS.toLocaleString(this.locale, { weekday: 'short' }); }\r\n    public get dayLongName(): string { return this.dateJS.toLocaleString(this.locale, { weekday: 'long' }); }\r\n    //where 0 represents Sunday.\r\n    public get dayOfWeek(): number { return this.dateJS.getDay(); }\r\n    public get daysOfWeek(): number[] { return this.getDaysOfWeek(); }\r\n    public get daysInMonth(): number { return this.getDaysInMonth(); }\r\n    public get week(): number { return this.getDateWeek(); }\r\n    public get month(): number { return this.dateJS.getMonth() + 1; }\r\n    public get monthNarrowName(): string { return this.dateJS.toLocaleString(this.locale, { month: 'narrow' }); }\r\n    public get monthShortName(): string { return this.dateJS.toLocaleString(this.locale, { month: 'short' }); }\r\n    public get monthLongName(): string { return this.dateJS.toLocaleString(this.locale, { month: 'long' }); }\r\n    public get year(): number { return this.dateJS.getFullYear(); }\r\n\r\n    public get hours(): number { return this.dateJS.getHours(); }\r\n    public get hours2Digits(): string { return this.formatDigit(this.hours, 2); }\r\n    public get minutes(): number { return this.dateJS.getMinutes(); }\r\n    public get minutes2Digits(): string { return this.formatDigit(this.minutes, 2); }\r\n    public get seconds(): number { return this.dateJS.getSeconds(); }\r\n    public get seconds2Digits(): string { return this.formatDigit(this.seconds, 2); }\r\n    public get milliseconds(): number { return this.dateJS.getMilliseconds(); }\r\n    public get time(): number { return this.dateJS.getTime(); }\r\n    public get timezone(): DateTimeZone { return this._Timezone; }\r\n    public get timezoneOffset(): number { return this.getTimezoneOffset(); }\r\n\r\n    public get utcDay(): number { return this.dateJSUTC.getUTCDate(); }\r\n    //where 0 represents Sunday.\r\n    public get utcDayOfWeek(): number { return this.dateJSUTC.getUTCDay(); }\r\n    public get utcDaysInMonth(): number { return this.getUTCDaysInMonth(); }\r\n    public get utcWeek(): number { return this.getUTCDateWeek(); }\r\n    public get utcMonth(): number { return this.dateJSUTC.getUTCMonth() + 1; }\r\n    public get utcYear(): number { return this.dateJSUTC.getUTCFullYear(); }\r\n\r\n    public get utcHours(): number { return this.dateJSUTC.getUTCHours(); }\r\n    public get utcMinutes(): number { return this.dateJSUTC.getUTCMinutes(); }\r\n    public get utcSeconds(): number { return this.dateJSUTC.getUTCSeconds(); }\r\n    public get utcMilliseconds(): number { return this.dateJSUTC.getUTCMilliseconds(); }\r\n\r\n    constructor();\r\n    constructor(year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number);\r\n    constructor(value: number | string);\r\n    constructor(value: Date);\r\n    constructor(value: DateTime);\r\n    constructor(value?: number | string | Date | DateTime, monthIndex?: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number) {\r\n        switch (typeof value) {\r\n            case 'object':\r\n                if (value instanceof DateTime) { this.setDate(value.dateJS); }\r\n                else if (value instanceof Date) { this.setDate(value); }\r\n                break;\r\n            case 'string': this.setDate(value); break;\r\n            case 'number':\r\n                if (monthIndex == undefined) { this.setDate(value); }\r\n                else {\r\n                    var month = monthIndex;\r\n                    if (date == undefined) { this.setDate(value, month); }\r\n                    if (date != undefined) { this.setDate(value, month, date); }\r\n                    if (date != undefined\r\n                        && hours != undefined) { this.setDate(value, month, date, hours); }\r\n                    if (date != undefined\r\n                        && hours != undefined\r\n                        && minutes != undefined) { this.setDate(value, month, date, hours, minutes); }\r\n                    if (date != undefined\r\n                        && hours != undefined\r\n                        && minutes != undefined\r\n                        && seconds != undefined) { this.setDate(value, month, date, hours, minutes, seconds); }\r\n                    if (date != undefined\r\n                        && hours != undefined\r\n                        && minutes != undefined\r\n                        && seconds != undefined\r\n                        && ms != undefined) { this.setDate(value, month, date, hours, minutes, seconds, ms); }\r\n                }\r\n                break;\r\n        }\r\n    }\r\n\r\n    //#region Static Method\r\n    public static now(): DateTime { return new DateTime(Date.now()); }\r\n    public static nowUTC(timezone?: DateTimeZone): DateTime {\r\n        var now = new Date(Date.now());\r\n        var dt = new DateTime();\r\n        if (timezone != undefined) { dt.setTimezone(timezone); }\r\n        var date: Date = new Date(new Date(now).setMinutes(now.getMinutes() + dt.getGap(timezone)));\r\n        return new DateTime(date);\r\n    }\r\n    public static fromStringFromat(value: string, format: string): DateTime { return new DateTime().setDateFromStringFromat(value, format); }\r\n    //#endregion\r\n\r\n    //#region private void\r\n    private getGap(timezone?: DateTimeZone): number {\r\n        timezone = timezone ?? this._Timezone;\r\n        var d = new Date(Date.now());\r\n        var hourZ = d.toLocaleTimeString(this._locale, { hour: 'numeric', timeZone: timezone, timeZoneName: 'longOffset' });\r\n        if (hourZ != undefined) {\r\n            hourZ = hourZ.substring(hourZ.lastIndexOf(' ') + 1);\r\n            var scales = hourZ.substring(3).split(':');\r\n            var hm = `${scales[0].substring(0, 1)}${parseInt(scales[0].substring(1)) * 60 + parseInt(scales[1])}`;\r\n            return (parseInt(hm) * -1) + (d.getTimezoneOffset() * -1);\r\n        }\r\n        return 0;\r\n    }\r\n    private getTimezoneOffset(timezone?: DateTimeZone): number {\r\n        timezone = timezone ?? this._Timezone;\r\n        var d = new Date(Date.now());\r\n        var hourZ = d.toLocaleTimeString('fr-fr', { hour: 'numeric', timeZone: timezone, timeZoneName: 'longOffset' });\r\n        if (hourZ != undefined) {\r\n            hourZ = hourZ.substring(hourZ.lastIndexOf(' ') + 1);\r\n            var scales = hourZ.substring(3).split(':');\r\n            var hm = `${scales[0].substring(0, 1)}${parseInt(scales[0].substring(1)) * 60 + parseInt(scales[1])}`;\r\n            return (parseInt(hm) * -1);\r\n        }\r\n        return 0;\r\n    }\r\n    private getDaysOfWeek(): number[] {\r\n        let start: number = this._firstDayOfWek;\r\n        let end: number = start + 6;\r\n        let daysOfWeek: number[] = [];\r\n        for (var i = start; i <= end; i++) {\r\n            let target = i;\r\n            if (target > 6) { target = target - 7; }\r\n            daysOfWeek.push(target);\r\n        }\r\n        return daysOfWeek;\r\n    }\r\n    private getDaysInMonth(): number {\r\n        return new Date(new Date(this.dateJS.getFullYear(), this.dateJS.getMonth() + 1, 1).setDate(-1)).getDate();\r\n    }\r\n    private getDateWeek(): number {\r\n        return this.getUTCDateWeek();\r\n        // Create new date\r\n        let d: Date = new Date(this.dateJS.getFullYear(), this.dateJS.getMonth(), this.dateJS.getDate());\r\n        // Set to first Thursday: current date + 4 - current day number and Sunday's day number 7\r\n        d.setDate(d.getDate() + 4 - (d.getDay() || 7));\r\n        // Get first day of year\r\n        var yearStart = new Date(d.getFullYear(), 0, 1);\r\n        // Calculate full weeks to nearest Thursday\r\n        var weekNo = Math.ceil((((+d - +yearStart) / 86400000) + 1) / 7);\r\n        // Return array of year and week number\r\n        return weekNo\r\n    }\r\n    private getUTCDateWeek(): number {\r\n        // Create new date\r\n        let d: Date = new Date(Date.UTC(this.dateJSUTC.getFullYear(), this.dateJSUTC.getMonth(), this.dateJSUTC.getDate()));\r\n        // Set to first Thursday: current date + 4 - current day number and Sunday's day number 7\r\n        d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay() || 7));\r\n        // Get first day of year\r\n        var yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));\r\n        // Calculate full weeks to nearest Thursday\r\n        var weekNo = Math.ceil((((+d - +yearStart) / 86400000) + 1) / 7);\r\n        // Return array of year and week number\r\n        return weekNo\r\n    }\r\n    private getUTCDaysInMonth(): number {\r\n        return new Date(new Date(this.dateJSUTC.getUTCFullYear(), this.dateJSUTC.getUTCMonth() + 1, 1).setUTCDate(-1)).getUTCDate();\r\n    }\r\n    private toStringFormat(date: Date, format: string, timezone?: DateTimeZone) {\r\n        if (timezone == undefined) { timezone = this._Timezone; }\r\n        let _date: Date = date;\r\n\r\n        //#region Year\r\n        format = format.replace(/YYYY/, '#0000#');\r\n        format = format.replace(/yyyy/, '#0000#');\r\n        format = format.replace(/YY/, '#00#');\r\n        format = format.replace(/yy/, '#00#');\r\n        //#endregion\r\n        //#region Month\r\n        format = format.replace(/MMMMM/, '#11111#');\r\n        format = format.replace(/MMMM/, '#1111#');\r\n        format = format.replace(/MMM/, '#111#');\r\n        format = format.replace(/MM/, '#11#');\r\n        format = format.replace(/M/, '#1#');\r\n        //#endregion\r\n        //#region Day\r\n        format = format.replace(/dd/, '#22#');\r\n        format = format.replace(/d/, '#2#');\r\n        //#endregion\r\n        //#region Hour\r\n        format = format.replace(/hh/, '#33#');\r\n        format = format.replace(/h/, '#3#');\r\n        format = format.replace(/HH/, '#44#');\r\n        format = format.replace(/H/, '#4#');\r\n        //#endregion\r\n        //#region Minute\r\n        format = format.replace(/mm/, '#55#');\r\n        format = format.replace(/m/, '#5#');\r\n        //#endregion\r\n        //#region Second\r\n        format = format.replace(/ss/, '#66#');\r\n        format = format.replace(/s/, '#6#');\r\n        //#endregion\r\n        //#region Millisecond\r\n        format = format.replace(/fff/, '#777#');\r\n        format = format.replace(/ff/, '#77#');\r\n        format = format.replace(/f/, '#7#');\r\n        //#endregion\r\n        //#region Week\r\n        format = format.replace(/ww/, '#88#');\r\n        format = format.replace(/w/, '#8#');\r\n        //#endregion\r\n        //#region DayOfWeek\r\n        format = format.replace(/EEEEEE/, '#999999#');\r\n        format = format.replace(/EEEEE/, '#99999#');\r\n        format = format.replace(/EEEE/, '#9999#');\r\n        format = format.replace(/EEE/, '#999#');\r\n        format = format.replace(/EE/, '#999#');\r\n        format = format.replace(/E/, '#999#');\r\n        //#endregion\r\n        //#region Period\r\n        format = format.replace(/aaaaa/, '#1.00000#');\r\n        format = format.replace(/aaaa/, '#1.0000#');\r\n        format = format.replace(/aaa/, '#1.000#');\r\n        format = format.replace(/aa/, '#1.000#');\r\n        format = format.replace(/a/, '#1.000#');\r\n        //#endregion\r\n        //#region Zone\r\n        format = format.replace(/ZZZZZZ/, '#1.111111#');\r\n        format = format.replace(/ZZZZZ/, '#1.11111#');\r\n        format = format.replace(/ZZZZ/, '#1.1111#');\r\n        format = format.replace(/ZZZ/, '#1.111#');\r\n        format = format.replace(/ZZ/, '#1.111#');\r\n        format = format.replace(/Z/, '#1.111#');\r\n        format = format.replace(/zzzz/, '#1.2222#');\r\n        format = format.replace(/zzz/, '#1.222#');\r\n        format = format.replace(/zz/, '#1.222#');\r\n        format = format.replace(/z/, '#1.222#');\r\n        format = format.replace(/OOOO/, '#1.3333#');\r\n        format = format.replace(/OOO/, '#1.333#');\r\n        format = format.replace(/OO/, '#1.333#');\r\n        format = format.replace(/O/, '#1.333#');\r\n        format = format.replace(/LLLLL/, '#1.44444#');\r\n        format = format.replace(/LLLL/, '#1.4444#');\r\n        //#endregion\r\n\r\n        //#region Year\r\n        format = format.replaceAll('#0000#', _date.toLocaleString(this.locale, { timeZone: timezone, year: 'numeric' }));\r\n        format = format.replaceAll('#00#', _date.toLocaleString(this.locale, { timeZone: timezone, year: '2-digit' }));\r\n        //#endregion\r\n        //#region Month\r\n        format = format.replaceAll('#11111#', _date.toLocaleString(this.locale, { timeZone: timezone, month: 'narrow' }));\r\n        format = format.replaceAll('#1111#', _date.toLocaleString(this.locale, { timeZone: timezone, month: 'long' }));\r\n        format = format.replaceAll('#111#', _date.toLocaleString(this.locale, { timeZone: timezone, month: 'short' }));\r\n        format = format.replaceAll('#11#', _date.toLocaleString(this.locale, { timeZone: timezone, month: '2-digit' }));\r\n        format = format.replaceAll('#1#', _date.toLocaleString(this.locale, { timeZone: timezone, month: 'numeric' }));\r\n        //#endregion\r\n        //#region Day\r\n        format = format.replaceAll('#22#', _date.toLocaleString(this.locale, { timeZone: timezone, day: '2-digit' }));\r\n        format = format.replaceAll('#2#', _date.toLocaleString(this.locale, { timeZone: timezone, day: 'numeric' }));\r\n        //#endregion\r\n        //#region Hour\r\n        format = format.replaceAll('#33#', this.formatDigit(_date.toLocaleString(this.locale, { timeZone: timezone, hour12: true, hour: '2-digit' }), 2));\r\n        var hour12 = _date.toLocaleString(this.locale, { timeZone: timezone, hour12: true, hour: 'numeric' });\r\n        format = format.replaceAll('#3#', hour12.substring(0, hour12.indexOf(' ')));\r\n        format = format.replaceAll('#44#', this.formatDigit(_date.toLocaleString(this.locale, { timeZone: timezone, hour: '2-digit' }), 2));\r\n        var hour24 = _date.toLocaleString(this.locale, { timeZone: timezone, hour: 'numeric' });\r\n        format = format.replaceAll('#4#', parseInt(hour24.substring(0, hour24.indexOf(' '))).toString());\r\n        //#endregion\r\n        //#region Minute\r\n        format = format.replaceAll('#55#', this.formatDigit(_date.toLocaleString(this.locale, { timeZone: timezone, minute: '2-digit' }), 2));\r\n        format = format.replaceAll('#5#', _date.toLocaleString(this.locale, { timeZone: timezone, minute: 'numeric' }));\r\n        //#endregion\r\n        //#region Second\r\n        format = format.replaceAll('#66#', this.formatDigit(_date.toLocaleString(this.locale, { timeZone: timezone, second: '2-digit' }), 2));\r\n        format = format.replaceAll('#6#', _date.toLocaleString(this.locale, { timeZone: timezone, second: 'numeric' }));\r\n        //#endregion\r\n        //#region Millisecond\r\n        format = format.replaceAll('#777#', _date.toLocaleString(this.locale, { timeZone: timezone, fractionalSecondDigits: 3 }));\r\n        format = format.replaceAll('#77#', _date.toLocaleString(this.locale, { timeZone: timezone, fractionalSecondDigits: 2 }));\r\n        format = format.replaceAll('#7#', _date.toLocaleString(this.locale, { timeZone: timezone, fractionalSecondDigits: 1 }));\r\n        //#endregion\r\n        //#region Week\r\n        format = format.replaceAll('#88#', this.formatDigit(this.week, 2));\r\n        format = format.replaceAll('#8#', this.week.toString());\r\n        //#endregion\r\n        //#region DayOfWeek\r\n        format = format.replaceAll('#999999#', _date.toLocaleString(this.locale, { timeZone: timezone, weekday: 'short' }).substring(0, 2));\r\n        format = format.replaceAll('#99999#', _date.toLocaleString(this.locale, { timeZone: timezone, weekday: 'narrow' }));\r\n        format = format.replaceAll('#9999#', _date.toLocaleString(this.locale, { timeZone: timezone, weekday: 'long' }));\r\n        format = format.replaceAll('#999#', _date.toLocaleString(this.locale, { timeZone: timezone, weekday: 'short' }));\r\n        //#endregion\r\n        //#region Period\r\n        format = format.replaceAll('#1.00000#', _date.toLocaleString(this.locale, { timeZone: timezone, dayPeriod: 'narrow' }));\r\n        format = format.replaceAll('#1.0000#', _date.toLocaleString(this.locale, { timeZone: timezone, dayPeriod: 'long' }));\r\n        format = format.replaceAll('#1.000#', _date.toLocaleString(this.locale, { timeZone: timezone, dayPeriod: 'short' }));\r\n        //#endregion\r\n        //#region Zone\r\n        var hourZ = _date.toLocaleTimeString(this.locale, { hour: 'numeric', timeZone: timezone, timeZoneName: 'longOffset' });\r\n        hourZ = hourZ.substring(hourZ.lastIndexOf(' ') + 1);\r\n        format = format.replaceAll('#1.11111#', hourZ.substring(3));\r\n        format = format.replaceAll('#1.1111#', hourZ);\r\n        format = format.replaceAll('#1.111#', hourZ.substring(3).replace(':', ''));\r\n        var hourZZ = _date.toLocaleTimeString(this.locale, { hour: 'numeric', timeZone: timezone, timeZoneName: 'shortGeneric' });\r\n        hourZZ = hourZZ.substring(hourZZ.lastIndexOf(' ') + 1);\r\n        format = format.replaceAll('#1.111111#', hourZZ);\r\n        var hourz = _date.toLocaleTimeString(this.locale, { hour: 'numeric', timeZone: timezone, timeZoneName: 'shortOffset' });\r\n        hourz = hourz.substring(hourz.lastIndexOf(' ') + 1);\r\n        format = format.replaceAll('#1.2222#', hourZ);\r\n        format = format.replaceAll('#1.222#', hourz);\r\n        format = format.replaceAll('#1.3333#', hourZ.replace('UTC', 'GMT'));\r\n        format = format.replaceAll('#1.333#', hourz.replace('UTC', 'GMT'));\r\n        format = format.replaceAll('#1.44444#', _date.toLocaleTimeString(this.locale, { timeZone: timezone, timeZoneName: 'shortGeneric' }));\r\n        format = format.replaceAll('#1.4444#', _date.toLocaleTimeString(this.locale, { timeZone: timezone, timeZoneName: 'longGeneric' }));\r\n        //#endregion\r\n        return format;\r\n    }\r\n    private toStringIsoFormat(date: Date, timezone?: DateTimeZone) {\r\n        if (timezone == undefined) { timezone = this._Timezone; }\r\n        let _date: Date = date;\r\n        let format = '';\r\n        //#region Year\r\n        format += `${_date.toLocaleString(this.locale, { timeZone: timezone, year: 'numeric' })}`;\r\n        //#endregion\r\n        //#region Month\r\n        format += `-${_date.toLocaleString(this.locale, { timeZone: timezone, month: '2-digit' })}`;\r\n        //#endregion\r\n        //#region Day\r\n        format += `-${_date.toLocaleString(this.locale, { timeZone: timezone, day: '2-digit' })}`;\r\n        //#endregion\r\n        //#region Hour\r\n        format += `T${this.formatDigit(_date.toLocaleString(this.locale, { timeZone: timezone, hour: '2-digit' }), 2)}`;\r\n        //#endregion\r\n        //#region Minute\r\n        format += `:${this.formatDigit(_date.toLocaleString(this.locale, { timeZone: timezone, minute: '2-digit' }), 2)}`;\r\n        //#endregion\r\n        //#region Second\r\n        format += `:${this.formatDigit(_date.toLocaleString(this.locale, { timeZone: timezone, second: '2-digit' }), 2)}`;\r\n        //#endregion\r\n        //#region Millisecond\r\n        format += `.${_date.toLocaleString(this.locale, { timeZone: timezone, fractionalSecondDigits: 3 })}`;\r\n        //#endregion\r\n        //#region Zone\r\n        var hourZ = _date.toLocaleTimeString(this.locale, { hour: 'numeric', timeZone: timezone, timeZoneName: 'longOffset' });\r\n        hourZ = hourZ.substring(hourZ.lastIndexOf(' ') + 1);\r\n        format += `Z`;\r\n        //format += `Z${hourZ.substring(3)}`;\r\n        //#endregion\r\n        return format;\r\n    }\r\n    private formatDigit(value: number | string, length?: number) {\r\n        var s = value.toString();\r\n        if (length == undefined) { length = s.length; }\r\n        if (s.length > length) { return s.substring(0, length); }\r\n        while (s.length < length) { s = `0${s}`; }\r\n        return s;\r\n    }\r\n    //#endregion\r\n\r\n    //#region Add\r\n    public addDays(value: number): DateTime {\r\n        return new DateTime(new Date(new Date(this.dateJS).setDate(this.dateJS.getDate() + value)));\r\n    }\r\n    public addMonths(value: number): DateTime {\r\n        let _date: Date = new Date(new Date(this.dateJS).setMonth(this.dateJS.getMonth() + value));\r\n        if (value < 0) {\r\n            while (_date.getMonth() == this.dateJS.getMonth()) { _date = new Date(new Date(_date).setDate(_date.getDate() - 1)); }\r\n        }\r\n        if (value > 0) {\r\n            while (_date.getMonth() > this.dateJS.getMonth() + 1) { _date = new Date(new Date(_date).setDate(_date.getDate() - 1)); }\r\n        }\r\n        return new DateTime(_date);\r\n    }\r\n    public addYears(value: number): DateTime {\r\n        let _date: Date = new Date(new Date(this.dateJS).setFullYear(this.dateJS.getFullYear() + value));\r\n        if (value < 0) {\r\n            while (_date.getMonth() == this.dateJS.getMonth()) { _date = new Date(new Date(_date).setDate(_date.getDate() - 1)); }\r\n        }\r\n        if (value > 0) {\r\n            while (_date.getMonth() > this.dateJS.getMonth() + 1) { _date = new Date(new Date(_date).setDate(_date.getDate() - 1)); }\r\n        }\r\n        return new DateTime(_date);\r\n    }\r\n    //#endregion\r\n    //#region Set\r\n    public setDate(): DateTime;\r\n    public setDate(year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): DateTime;\r\n    public setDate(value: number | string): DateTime;\r\n    public setDate(value: Date): DateTime;\r\n    public setDate(value: DateTime): DateTime;\r\n    public setDate(value?: number | string | Date | DateTime, monthIndex?: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): DateTime {\r\n        switch (typeof value) {\r\n            case 'object':\r\n                if (value instanceof DateTime) { this._date = new Date(value.dateJS); }\r\n                else if (value instanceof Date) { this._date = new Date(value); }\r\n                break;\r\n            case 'string':\r\n                var req = ``;\r\n                if (this.locale == 'fr-fr') {\r\n                    if (value.indexOf('T') == -1) {\r\n                        if (value.indexOf('/') > -1) {\r\n                            var sDate = value.substring(0, 10).split('/');\r\n                            var req = `${sDate[2]}-${sDate[1]}-${sDate[0]}`;\r\n                        }\r\n                        if (value.indexOf(':') > -1) {\r\n                            var iStart = value.indexOf(' ');\r\n                            var iEnd = value.indexOf('.');\r\n                            var sTime = value.substring(iStart + 1, iEnd).split(':');\r\n                            var sMilli = value.substring(iEnd + 1);\r\n                            var req = `${req}T${sTime[0]}:${sTime[1]}:${sTime[2]}.${sMilli}`;\r\n                        }\r\n                    }\r\n                }\r\n                var _date = (req == '') ? new Date(value) : new Date(req);\r\n                if (isNaN(_date.getTime())) { _date = new Date(Date.now()); }\r\n                this._date = _date;\r\n                break;\r\n            case 'number':\r\n                if (monthIndex == undefined) { this._date = new Date(value); }\r\n                else {\r\n                    var month = monthIndex - 1;\r\n                    if (date == undefined) { this._date = new Date(value, month); }\r\n                    if (date != undefined) { this._date = new Date(value, month, date); }\r\n                    if (date != undefined\r\n                        && hours != undefined) { this._date = new Date(value, month, date, hours); }\r\n                    if (date != undefined\r\n                        && hours != undefined\r\n                        && minutes != undefined) { this._date = new Date(value, month, date, hours, minutes); }\r\n                    if (date != undefined\r\n                        && hours != undefined\r\n                        && minutes != undefined\r\n                        && seconds != undefined) { this._date = new Date(value, month, date, hours, minutes, seconds); }\r\n                    if (date != undefined\r\n                        && hours != undefined\r\n                        && minutes != undefined\r\n                        && seconds != undefined\r\n                        && ms != undefined) { this._date = new Date(value, month, date, hours, minutes, seconds, ms); }\r\n                }\r\n                break;\r\n        }\r\n        return this;\r\n    }\r\n    public setDateFromStringFromat(value: string, format: string) {\r\n        var year = this.formatDigit(this.extractValueFromString(value, format, 'y'), 4);\r\n        var month = this.formatDigit(this.extractValueFromString(value, format, 'M'), 2);\r\n        var day = this.formatDigit(this.extractValueFromString(value, format, 'd'), 2);\r\n        var hours = this.formatDigit(this.extractValueFromString(value, format, 'H'), 2);\r\n        var minutes = this.formatDigit(this.extractValueFromString(value, format, 'm'), 2);\r\n        var seconds = this.formatDigit(this.extractValueFromString(value, format, 's'), 2);\r\n        var milliseconds = this.formatDigit(this.extractValueFromString(value, format, 'f'), 3);\r\n        var req = `${year}-${month}-${day}T${hours}:${minutes}:${seconds}.${milliseconds}`;\r\n        var _date = new Date(req);\r\n        if (isNaN(_date.getTime())) { _date = new Date(Date.now()); }\r\n        this._date = _date;\r\n        return this;\r\n    }\r\n    private extractValueFromString(value: string, format: string, char: string): number {\r\n        var res = 0;\r\n        if (format.indexOf(char) > -1) {\r\n            var istart = format.indexOf(char);\r\n            var iend = istart;\r\n            while (format.indexOf(char, iend) > -1) { iend = format.indexOf(char, iend) + 1; }\r\n            res = parseInt(value.substring(istart, iend));\r\n            if (isNaN(res)) { res = 0; }\r\n        }\r\n        return res;\r\n    }\r\n    public setMonth(value: number): DateTime { this.dateJS.setMonth(value - 1); return this; }\r\n    public setYear(value: number): DateTime { this.dateJS.setFullYear(value); return this; }\r\n\r\n    public setHours(value: number): DateTime { this.dateJS.setHours(value); return this; }\r\n    public setMinutes(value: number): DateTime { this.dateJS.setMinutes(value); return this; }\r\n    public setSeconds(value: number): DateTime { this.dateJS.setSeconds(value); return this; }\r\n    public setMilliseconds(value: number): DateTime { this.dateJS.setMilliseconds(value); return this; }\r\n\r\n    public setLocale(value: string): DateTime { this._locale = value.toLowerCase(); return this; }\r\n\r\n    public setTimezone(timezone: DateTimeZone): DateTime { this._Timezone = timezone; return this; }\r\n    //#endregion\r\n\r\n    //#region toString\r\n    public toString(value?: string, timezone?: DateTimeZone) {\r\n        var date = this.dateJS;\r\n        var gap: number = this.getGap(timezone);\r\n        date = new Date(new Date(date).setMinutes(date.getMinutes() + gap));\r\n        if (value != undefined) { return this.toStringFormat(date, value, timezone); }\r\n        else { return date.toString(); }\r\n    }\r\n    public toUTCString(timezone?: DateTimeZone) { return new Date(new Date(this.dateJS).setMinutes(this.dateJS.getMinutes() + this.getGap(timezone))).toUTCString(); }\r\n\r\n    public toTimeString() {\r\n        var date = this.dateJSTZ;\r\n        var str = date.toLocaleString(this._locale, { timeZone: this._Timezone, timeStyle: 'full' });\r\n        var gmt = this.toStringFormat(date, 'ZZZ');\r\n        return `${str.substring(0, 8)} GMT${gmt} (${str.substring(9)})`\r\n    }\r\n    public toDateString() { return this.dateJSTZ.toDateString(); }\r\n    public toISOString() { return this.dateJSTZ.toISOString(); }\r\n    public toJSON() {\r\n        return {\r\n            day: this.day,\r\n            dayNarrowName: this.dayNarrowName,\r\n            dayShortName: this.dayShortName,\r\n            dayLongName: this.dayLongName,\r\n            dayOfWeek: this.dayOfWeek,\r\n            daysOfWeek: this.daysOfWeek,\r\n            daysInMonth: this.daysInMonth,\r\n            week: this.week,\r\n            month: this.month,\r\n            monthNarrowName: this.monthNarrowName,\r\n            monthShortName: this.monthShortName,\r\n            monthLongName: this.monthLongName,\r\n            year: this.year,\r\n            hours: this.hours,\r\n            hours2Digits: this.hours2Digits,\r\n            minutes: this.minutes,\r\n            minutes2Digits: this.minutes2Digits,\r\n            seconds: this.seconds,\r\n            seconds2Digits: this.seconds2Digits,\r\n            milliseconds: this.milliseconds,\r\n            time: this.time,\r\n            timezone: this.timezone,\r\n            timezoneOffset: this.timezoneOffset,\r\n            utcDay: this.utcDay,\r\n            utcDayOfWeek: this.utcDayOfWeek,\r\n            utcDaysInMonth: this.utcDaysInMonth,\r\n            utcWeek: this.utcWeek,\r\n            utcMonth: this.utcMonth,\r\n            utcYear: this.utcYear,\r\n            utcHours: this.utcHours,\r\n            utcMinutes: this.utcMinutes,\r\n            utcSeconds: this.utcSeconds,\r\n            utcMilliseconds: this.utcMilliseconds,\r\n        }\r\n    }\r\n\r\n    public toLocaleString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) { return this.dateJS.toLocaleString(locales, options); }\r\n    public toLocaleDateString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) { return this.dateJS.toLocaleDateString(locales, options); }\r\n    public toLocaleTimeString(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) { return this.dateJS.toLocaleTimeString(locales, options); }\r\n    public toLocaleISOString() { return this.toStringIsoFormat(this.dateJSTZ); }\r\n    //#endregion\r\n}\r\nexport type DateTimeZone =\r\n    'Africa/Abidjan'\r\n    | 'Africa/Accra'\r\n    | 'Africa/Algiers'\r\n    | 'Africa/Bissau'\r\n    | 'Africa/Cairo'\r\n    | 'Africa/Casablanca'\r\n    | 'Africa/Ceuta'\r\n    | 'Africa/El_Aaiun'\r\n    | 'Africa/Johannesburg'\r\n    | 'Africa/Juba'\r\n    | 'Africa/Khartoum'\r\n    | 'Africa/Lagos'\r\n    | 'Africa/Maputo'\r\n    | 'Africa/Monrovia'\r\n    | 'Africa/Nairobi'\r\n    | 'Africa/Ndjamena'\r\n    | 'Africa/Sao_Tome'\r\n    | 'Africa/Tripoli'\r\n    | 'Africa/Tunis'\r\n    | 'Africa/Windhoek'\r\n    | 'America/Adak'\r\n    | 'America/Anchorage'\r\n    | 'America/Araguaina'\r\n    | 'America/Argentina/Buenos_Aires'\r\n    | 'America/Argentina/Catamarca'\r\n    | 'America/Argentina/Cordoba'\r\n    | 'America/Argentina/Jujuy'\r\n    | 'America/Argentina/La_Rioja'\r\n    | 'America/Argentina/Mendoza'\r\n    | 'America/Argentina/Rio_Gallegos'\r\n    | 'America/Argentina/Salta'\r\n    | 'America/Argentina/San_Juan'\r\n    | 'America/Argentina/San_Luis'\r\n    | 'America/Argentina/Tucuman'\r\n    | 'America/Argentina/Ushuaia'\r\n    | 'America/Asuncion'\r\n    | 'America/Atikokan'\r\n    | 'America/Bahia'\r\n    | 'America/Bahia_Banderas'\r\n    | 'America/Barbados'\r\n    | 'America/Belem'\r\n    | 'America/Belize'\r\n    | 'America/Blanc-Sablon'\r\n    | 'America/Boa_Vista'\r\n    | 'America/Bogota'\r\n    | 'America/Boise'\r\n    | 'America/Cambridge_Bay'\r\n    | 'America/Campo_Grande'\r\n    | 'America/Cancun'\r\n    | 'America/Caracas'\r\n    | 'America/Cayenne'\r\n    | 'America/Chicago'\r\n    | 'America/Chihuahua'\r\n    | 'America/Costa_Rica'\r\n    | 'America/Creston'\r\n    | 'America/Cuiaba'\r\n    | 'America/Curacao'\r\n    | 'America/Danmarkshavn'\r\n    | 'America/Dawson'\r\n    | 'America/Dawson_Creek'\r\n    | 'America/Denver'\r\n    | 'America/Detroit'\r\n    | 'America/Edmonton'\r\n    | 'America/Eirunepe'\r\n    | 'America/El_Salvador'\r\n    | 'America/Fort_Nelson'\r\n    | 'America/Fortaleza'\r\n    | 'America/Glace_Bay'\r\n    | 'America/Godthab'\r\n    | 'America/Goose_Bay'\r\n    | 'America/Grand_Turk'\r\n    | 'America/Guatemala'\r\n    | 'America/Guayaquil'\r\n    | 'America/Guyana'\r\n    | 'America/Halifax'\r\n    | 'America/Havana'\r\n    | 'America/Hermosillo'\r\n    | 'America/Indiana/Indianapolis'\r\n    | 'America/Indiana/Knox'\r\n    | 'America/Indiana/Marengo'\r\n    | 'America/Indiana/Petersburg'\r\n    | 'America/Indiana/Tell_City'\r\n    | 'America/Indiana/Vevay'\r\n    | 'America/Indiana/Vincennes'\r\n    | 'America/Indiana/Winamac'\r\n    | 'America/Inuvik'\r\n    | 'America/Iqaluit'\r\n    | 'America/Jamaica'\r\n    | 'America/Juneau'\r\n    | 'America/Kentucky/Louisville'\r\n    | 'America/Kentucky/Monticello'\r\n    | 'America/La_Paz'\r\n    | 'America/Lima'\r\n    | 'America/Los_Angeles'\r\n    | 'America/Maceio'\r\n    | 'America/Managua'\r\n    | 'America/Manaus'\r\n    | 'America/Martinique'\r\n    | 'America/Matamoros'\r\n    | 'America/Mazatlan'\r\n    | 'America/Menominee'\r\n    | 'America/Merida'\r\n    | 'America/Metlakatla'\r\n    | 'America/Mexico_City'\r\n    | 'America/Miquelon'\r\n    | 'America/Moncton'\r\n    | 'America/Monterrey'\r\n    | 'America/Montevideo'\r\n    | 'America/Nassau'\r\n    | 'America/New_York'\r\n    | 'America/Nipigon'\r\n    | 'America/Nome'\r\n    | 'America/Noronha'\r\n    | 'America/North_Dakota/Beulah'\r\n    | 'America/North_Dakota/Center'\r\n    | 'America/North_Dakota/New_Salem'\r\n    | 'America/Ojinaga'\r\n    | 'America/Panama'\r\n    | 'America/Pangnirtung'\r\n    | 'America/Paramaribo'\r\n    | 'America/Phoenix'\r\n    | 'America/Port-au-Prince'\r\n    | 'America/Port_of_Spain'\r\n    | 'America/Porto_Velho'\r\n    | 'America/Puerto_Rico'\r\n    | 'America/Punta_Arenas'\r\n    | 'America/Rainy_River'\r\n    | 'America/Rankin_Inlet'\r\n    | 'America/Recife'\r\n    | 'America/Regina'\r\n    | 'America/Resolute'\r\n    | 'America/Rio_Branco'\r\n    | 'America/Santarem'\r\n    | 'America/Santiago'\r\n    | 'America/Santo_Domingo'\r\n    | 'America/Sao_Paulo'\r\n    | 'America/Scoresbysund'\r\n    | 'America/Sitka'\r\n    | 'America/St_Johns'\r\n    | 'America/Swift_Current'\r\n    | 'America/Tegucigalpa'\r\n    | 'America/Thule'\r\n    | 'America/Thunder_Bay'\r\n    | 'America/Tijuana'\r\n    | 'America/Toronto'\r\n    | 'America/Vancouver'\r\n    | 'America/Whitehorse'\r\n    | 'America/Winnipeg'\r\n    | 'America/Yakutat'\r\n    | 'America/Yellowknife'\r\n    | 'Antarctica/Casey'\r\n    | 'Antarctica/Davis'\r\n    | 'Antarctica/DumontDUrville'\r\n    | 'Antarctica/Macquarie'\r\n    | 'Antarctica/Mawson'\r\n    | 'Antarctica/Palmer'\r\n    | 'Antarctica/Rothera'\r\n    | 'Antarctica/Syowa'\r\n    | 'Antarctica/Troll'\r\n    | 'Antarctica/Vostok'\r\n    | 'Asia/Almaty'\r\n    | 'Asia/Amman'\r\n    | 'Asia/Anadyr'\r\n    | 'Asia/Aqtau'\r\n    | 'Asia/Aqtobe'\r\n    | 'Asia/Ashgabat'\r\n    | 'Asia/Atyrau'\r\n    | 'Asia/Baghdad'\r\n    | 'Asia/Baku'\r\n    | 'Asia/Bangkok'\r\n    | 'Asia/Barnaul'\r\n    | 'Asia/Beirut'\r\n    | 'Asia/Bishkek'\r\n    | 'Asia/Brunei'\r\n    | 'Asia/Chita'\r\n    | 'Asia/Choibalsan'\r\n    | 'Asia/Colombo'\r\n    | 'Asia/Damascus'\r\n    | 'Asia/Dhaka'\r\n    | 'Asia/Dili'\r\n    | 'Asia/Dubai'\r\n    | 'Asia/Dushanbe'\r\n    | 'Asia/Famagusta'\r\n    | 'Asia/Gaza'\r\n    | 'Asia/Hebron'\r\n    | 'Asia/Ho_Chi_Minh'\r\n    | 'Asia/Hong_Kong'\r\n    | 'Asia/Hovd'\r\n    | 'Asia/Irkutsk'\r\n    | 'Asia/Jakarta'\r\n    | 'Asia/Jayapura'\r\n    | 'Asia/Jerusalem'\r\n    | 'Asia/Kabul'\r\n    | 'Asia/Kamchatka'\r\n    | 'Asia/Karachi'\r\n    | 'Asia/Kathmandu'\r\n    | 'Asia/Khandyga'\r\n    | 'Asia/Kolkata'\r\n    | 'Asia/Krasnoyarsk'\r\n    | 'Asia/Kuala_Lumpur'\r\n    | 'Asia/Kuching'\r\n    | 'Asia/Macau'\r\n    | 'Asia/Magadan'\r\n    | 'Asia/Makassar'\r\n    | 'Asia/Manila'\r\n    | 'Asia/Nicosia'\r\n    | 'Asia/Novokuznetsk'\r\n    | 'Asia/Novosibirsk'\r\n    | 'Asia/Omsk'\r\n    | 'Asia/Oral'\r\n    | 'Asia/Pontianak'\r\n    | 'Asia/Pyongyang'\r\n    | 'Asia/Qatar'\r\n    | 'Asia/Qostanay'\r\n    | 'Asia/Qyzylorda'\r\n    | 'Asia/Riyadh'\r\n    | 'Asia/Sakhalin'\r\n    | 'Asia/Samarkand'\r\n    | 'Asia/Seoul'\r\n    | 'Asia/Shanghai'\r\n    | 'Asia/Singapore'\r\n    | 'Asia/Srednekolymsk'\r\n    | 'Asia/Taipei'\r\n    | 'Asia/Tashkent'\r\n    | 'Asia/Tbilisi'\r\n    | 'Asia/Tehran'\r\n    | 'Asia/Thimphu'\r\n    | 'Asia/Tokyo'\r\n    | 'Asia/Tomsk'\r\n    | 'Asia/Ulaanbaatar'\r\n    | 'Asia/Urumqi'\r\n    | 'Asia/Ust-Nera'\r\n    | 'Asia/Vladivostok'\r\n    | 'Asia/Yakutsk'\r\n    | 'Asia/Yangon'\r\n    | 'Asia/Yekaterinburg'\r\n    | 'Asia/Yerevan'\r\n    | 'Atlantic/Azores'\r\n    | 'Atlantic/Bermuda'\r\n    | 'Atlantic/Canary'\r\n    | 'Atlantic/Cape_Verde'\r\n    | 'Atlantic/Faroe'\r\n    | 'Atlantic/Madeira'\r\n    | 'Atlantic/Reykjavik'\r\n    | 'Atlantic/South_Georgia'\r\n    | 'Atlantic/Stanley'\r\n    | 'Australia/Adelaide'\r\n    | 'Australia/Brisbane'\r\n    | 'Australia/Broken_Hill'\r\n    | 'Australia/Currie'\r\n    | 'Australia/Darwin'\r\n    | 'Australia/Eucla'\r\n    | 'Australia/Hobart'\r\n    | 'Australia/Lindeman'\r\n    | 'Australia/Lord_Howe'\r\n    | 'Australia/Melbourne'\r\n    | 'Australia/Perth'\r\n    | 'Australia/Sydney'\r\n    | 'Europe/Amsterdam'\r\n    | 'Europe/Andorra'\r\n    | 'Europe/Astrakhan'\r\n    | 'Europe/Athens'\r\n    | 'Europe/Belgrade'\r\n    | 'Europe/Berlin'\r\n    | 'Europe/Brussels'\r\n    | 'Europe/Bucharest'\r\n    | 'Europe/Budapest'\r\n    | 'Europe/Chisinau'\r\n    | 'Europe/Copenhagen'\r\n    | 'Europe/Dublin'\r\n    | 'Europe/Gibraltar'\r\n    | 'Europe/Helsinki'\r\n    | 'Europe/Istanbul'\r\n    | 'Europe/Kaliningrad'\r\n    | 'Europe/Kiev'\r\n    | 'Europe/Kirov'\r\n    | 'Europe/Lisbon'\r\n    | 'Europe/London'\r\n    | 'Europe/Luxembourg'\r\n    | 'Europe/Madrid'\r\n    | 'Europe/Malta'\r\n    | 'Europe/Minsk'\r\n    | 'Europe/Monaco'\r\n    | 'Europe/Moscow'\r\n    | 'Europe/Oslo'\r\n    | 'Europe/Paris'\r\n    | 'Europe/Prague'\r\n    | 'Europe/Riga'\r\n    | 'Europe/Rome'\r\n    | 'Europe/Samara'\r\n    | 'Europe/Saratov'\r\n    | 'Europe/Simferopol'\r\n    | 'Europe/Sofia'\r\n    | 'Europe/Stockholm'\r\n    | 'Europe/Tallinn'\r\n    | 'Europe/Tirane'\r\n    | 'Europe/Ulyanovsk'\r\n    | 'Europe/Uzhgorod'\r\n    | 'Europe/Vienna'\r\n    | 'Europe/Vilnius'\r\n    | 'Europe/Volgograd'\r\n    | 'Europe/Warsaw'\r\n    | 'Europe/Zaporozhye'\r\n    | 'Europe/Zurich'\r\n    | 'Indian/Chagos'\r\n    | 'Indian/Christmas'\r\n    | 'Indian/Cocos'\r\n    | 'Indian/Kerguelen'\r\n    | 'Indian/Mahe'\r\n    | 'Indian/Maldives'\r\n    | 'Indian/Mauritius'\r\n    | 'Indian/Reunion'\r\n    | 'Pacific/Apia'\r\n    | 'Pacific/Auckland'\r\n    | 'Pacific/Bougainville'\r\n    | 'Pacific/Chatham'\r\n    | 'Pacific/Chuuk'\r\n    | 'Pacific/Easter'\r\n    | 'Pacific/Efate'\r\n    | 'Pacific/Enderbury'\r\n    | 'Pacific/Fakaofo'\r\n    | 'Pacific/Fiji'\r\n    | 'Pacific/Funafuti'\r\n    | 'Pacific/Galapagos'\r\n    | 'Pacific/Gambier'\r\n    | 'Pacific/Guadalcanal'\r\n    | 'Pacific/Guam'\r\n    | 'Pacific/Honolulu'\r\n    | 'Pacific/Kiritimati'\r\n    | 'Pacific/Kosrae'\r\n    | 'Pacific/Kwajalein'\r\n    | 'Pacific/Majuro'\r\n    | 'Pacific/Marquesas'\r\n    | 'Pacific/Nauru'\r\n    | 'Pacific/Niue'\r\n    | 'Pacific/Norfolk'\r\n    | 'Pacific/Noumea'\r\n    | 'Pacific/Pago_Pago'\r\n    | 'Pacific/Palau'\r\n    | 'Pacific/Pitcairn'\r\n    | 'Pacific/Pohnpei'\r\n    | 'Pacific/Port_Moresby'\r\n    | 'Pacific/Rarotonga'\r\n    | 'Pacific/Tahiti'\r\n    | 'Pacific/Tarawa'\r\n    | 'Pacific/Tongatapu'\r\n    | 'Pacific/Wake'\r\n    | 'Pacific/Wallis';","import { ElementRef } from \"@angular/core\";\r\nimport { DateTime } from \"./date-time\";\r\n\r\nexport class Console {\r\n    public static write(options: {\r\n            component?: any\r\n            , elementRef?: ElementRef\r\n            , type?: ConsoleType\r\n            , title?: string\r\n        },\r\n        ...optionalParams: any[]): void {\r\n        options.type = options.type ?? 'log';\r\n        options.title = options.title ?? '';\r\n        var bgColor = '#ffffff';\r\n        var color = '#000000';\r\n        switch (options.type) {\r\n            case 'debug': bgColor = '#c5b3e6'; break;\r\n            case 'error': bgColor = '#f1aeb5'; break;\r\n            case 'info': bgColor = '#9eeaf9'; break;\r\n            case 'log': bgColor = '#ffffff'; break;\r\n            case 'trace': bgColor = '#efadce'; break;\r\n            case 'warning': bgColor = '#ffe69c'; break;\r\n        }\r\n        if (optionalParams != undefined && optionalParams.length > 0) {\r\n            console.groupCollapsed(`%c ${options.title}`, `padding: 3px 10px 3px 10px; background-color:${bgColor}; color:${color}`);\r\n            var objs: any[] = [];\r\n            objs.push({ name: 'Title', value: options.title });\r\n            if (options.component != undefined) {\r\n                let componentName = options.component.componentName ?? '';\r\n                let componentId = options.component.componentId ?? '';\r\n                objs.push({ name: 'ComponentName', value: componentName });\r\n                objs.push({ name: 'ComponentId', value: componentId });\r\n            }\r\n            if (options.elementRef != undefined && options.elementRef.nativeElement != undefined && options.elementRef.nativeElement instanceof HTMLElement) {\r\n                objs.push({ name: 'HtmlTagName', value: options.elementRef.nativeElement.tagName });\r\n                objs.push({ name: 'HtmlName', value: options.elementRef.nativeElement.getAttribute('name') ?? '' });\r\n                objs.push({ name: 'HtmlId', value: options.elementRef.nativeElement.id ?? '' });\r\n            }\r\n            objs.push({ name: 'Execution Times', value: DateTime.now().toString(\"yyyy-MM-dd HH:mm:ss.fff\") });\r\n            optionalParams.forEach((e, i) => {\r\n                switch (typeof e) {\r\n                    case 'bigint':\r\n                    case 'boolean':\r\n                    case 'number':\r\n                    case 'function':\r\n                    case 'string':\r\n                    case 'symbol':\r\n                        objs.push({ name: `Message.${i}`, value: e });\r\n                        break;\r\n                    case 'object':\r\n                        objs.push({ name: `Message.${i}`, value: e });\r\n                        if (e instanceof Array) {\r\n                            if (e.length > 0) {\r\n                                e.forEach((eObj, iObj) => {\r\n                                    objs.push({ name: `Message.${i}.${iObj}`, value: eObj });\r\n                                });\r\n                            }\r\n                        } else {\r\n                            Object.entries(e).forEach((eObj, iObj) => {\r\n                                if (eObj.length > 1) { objs.push({ name: `Message.${i}.${iObj}.${eObj[0]}`, value: eObj[1] }); }\r\n                                else { objs.push({ name: `Message.${i}.${iObj}`, value: eObj[0] }); }\r\n                            });\r\n                        }\r\n                        break;\r\n                }\r\n            })\r\n            console.table(objs, ['name', 'value']);\r\n            console.groupEnd();\r\n        }\r\n    }\r\n}\r\nexport type ConsoleType = 'log' | 'info' | 'warning' | 'error' | 'trace' | 'debug';\r\n","import { Component, ElementRef, input, output, Version } from '@angular/core';\r\nimport { Console } from '../../console';\r\n\r\n@Component({\r\n  selector: 'csc-component-base',\r\n  imports: [],\r\n  templateUrl: './component-base.component.html',\r\n  styleUrl: './component-base.component.scss'\r\n})\r\nexport class ComponentBaseComponent {\r\n\r\n  public readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  protected hostElement: ElementRef;\r\n\r\n  public get componentId(): string { return this.input_componentId(); }\r\n  public get componentName(): string { return this.constructor.name; }\r\n  public tag?: any = undefined;\r\n\r\n  public input_componentId = input('', { alias: 'ComponentId', transform: (value: string) => { return value ?? ''; } });\r\n\r\n  public output_Click = output<any>({ alias: 'click' });\r\n  public output_DblClick = output<any>({ alias: 'dblclick' });\r\n  public output_Focus = output<any>({ alias: 'focus' });\r\n  public output_Blur = output<any>({ alias: 'blur' });\r\n  public output_KeyPress = output<any>({ alias: 'keypress' });\r\n  public output_KeyDown = output<any>({ alias: 'keydown' });\r\n  public output_KeyUp = output<any>({ alias: 'keyup' });\r\n  public output_Change = output<any>({ alias: 'change' });\r\n\r\n  constructor(private _hostElement: ElementRef) { this.hostElement = _hostElement; }\r\n\r\n  protected focus(event: FocusEvent) { this.output_Focus.emit(event); }\r\n  protected blur(event: FocusEvent) { this.output_Blur.emit(event); }\r\n  protected keypress(event: KeyboardEvent) { this.output_KeyPress.emit(event); }\r\n  protected keydown(event: KeyboardEvent) { this.output_KeyDown.emit(event); }\r\n  protected keyup(event: KeyboardEvent) { this.output_KeyUp.emit(event); }\r\n  protected change(event: Event) { this.output_Change.emit(event); }\r\n\r\n  protected log(title: string, ...optionalParams: any[]) { Console.write({ component: this, elementRef: this.hostElement, title: title, type: 'log' }, title, optionalParams); }\r\n  protected info(title: string, ...optionalParams: any[]) { Console.write({ component: this, elementRef: this.hostElement, title: title, type: 'info' }, title, optionalParams); }\r\n  protected warning(title: string, ...optionalParams: any[]) { Console.write({ component: this, elementRef: this.hostElement, title: title, type: 'warning' }, title, optionalParams); }\r\n  protected error(title: string, ...optionalParams: any[]) { Console.write({ component: this, elementRef: this.hostElement, title: title, type: 'error' }, title, optionalParams); }\r\n}\r\n","","import { IDatagridI18N } from \"../interfaces/idatagrid-i18n\";\r\n\r\nexport const DatagridEnvironmentConst = {\r\n  i18N: {\r\n    first: \"First\"\r\n    , previous: \"Previous\"\r\n    , next: \"Next\"\r\n    , last: \"Last\"\r\n    , labelTotal: \"Show #{numItemFrom}# to #{numItemTo}# items of #{numItemLength}# entries\"\r\n    , search: \"Search\"\r\n    , show: \"Show\"\r\n    , entries: \"entries\"\r\n    , refresh: \"Refresh\"\r\n    , exportCSV: \"Export CSV\"\r\n    , exportXLSX: \"Export Excel\"\r\n    , clearFilters: \"Clear Filters\"\r\n    , parameters: \"Parameters\"\r\n    , validate: \"Validate\"\r\n    , all: \"All\"\r\n    , allEntries: \"All Entries\"\r\n    , yes: \"Yes\"\r\n    , no: \"No\"\r\n    , applyFilter: \"Apply\"\r\n    , closeFilter: 'Close'\r\n    , eraseFilter: 'Erase'\r\n    , columns: 'Columns'\r\n    , options: 'Options'\r\n    , filter: 'filter'\r\n    , digitsSeparator: '.'\r\n    , currencyCode: 'USD'\r\n    , currencySymbol: '$'\r\n    , notInitialized: 'Not Inizialized'\r\n    , options_Title: 'Title'\r\n    , options_ToolsBar: 'Tools Bar'\r\n    , options_Menus: 'Menus'\r\n    , options_GroupingColumn: 'Grouping Column'\r\n    , options_HeaderColumns: 'Header Columns'\r\n    , options_FilteringColumns: 'Filtering Columns'\r\n    , options_Messages: 'Messages'\r\n    , options_Totals: 'Totals'\r\n    , options_Footer: 'Footer'\r\n    , footerTotalMenu: 'Totals'\r\n    , footerTotalMenu_None: 'None'\r\n    , footerTotalMenu_Sum: 'Sum'\r\n    , footerTotalMenu_Avg: 'Average'\r\n    , footerTotalMenu_Min: 'Minimum'\r\n    , footerTotalMenu_Max: 'Maximum'\r\n    , dateFormat: 'yyyy-MM-dd'\r\n    , dateTimeFormat: 'yyyy-MM-dd HH:mm:ss'\r\n    , numberFormat: '0.00'\r\n    , loadingData: 'Loading data...'\r\n    , loadedData: 'Data loaded.'\r\n    , loadedError: 'Loaded error.'\r\n    , constructionData: 'Construction Data.'\r\n  } as IDatagridI18N\r\n  , defaulti18N: {\r\n    first: \"First\"\r\n    , previous: \"Previous\"\r\n    , next: \"Next\"\r\n    , last: \"Last\"\r\n    , labelTotal: \"Show #{numItemFrom}# to #{numItemTo}# items of #{numItemLength}# entries\"\r\n    , search: \"Search\"\r\n    , show: \"Show\"\r\n    , entries: \"entries\"\r\n    , refresh: \"Refresh\"\r\n    , exportCSV: \"Export CSV\"\r\n    , exportXLSX: \"Export Excel\"\r\n    , clearFilters: \"Clear Filters\"\r\n    , parameters: \"Parameters\"\r\n    , validate: \"Validate\"\r\n    , all: \"All\"\r\n    , allEntries: \"All Entries\"\r\n    , yes: \"Yes\"\r\n    , no: \"No\"\r\n    , applyFilter: \"Apply\"\r\n    , closeFilter: 'Close'\r\n    , eraseFilter: 'Erase'\r\n    , columns: 'Columns'\r\n    , options: 'Options'\r\n    , filter: 'filter'\r\n    , digitsSeparator: '.'\r\n    , currencyCode: 'USD'\r\n    , currencySymbol: '$'\r\n    , notInitialized: 'Not Inizialized'\r\n    , options_Title: 'Title'\r\n    , options_ToolsBar: 'Tools Bar'\r\n    , options_Menus: 'Menus'\r\n    , options_GroupingColumn: 'Grouping Column'\r\n    , options_HeaderColumns: 'Header Columns'\r\n    , options_FilteringColumns: 'Filtering Columns'\r\n    , options_Messages: 'Messages'\r\n    , options_Totals: 'Totals'\r\n    , options_Footer: 'Footer'\r\n    , footerTotalMenu: 'Totals'\r\n    , footerTotalMenu_None: 'None'\r\n    , footerTotalMenu_Sum: 'Sum'\r\n    , footerTotalMenu_Avg: 'Average'\r\n    , footerTotalMenu_Min: 'Minimum'\r\n    , footerTotalMenu_Max: 'Maximum'\r\n    , dateFormat: 'yyyy-MM-dd'\r\n    , dateTimeFormat: 'yyyy-MM-dd HH:mm:ss'\r\n    , numberFormat: '0.00'\r\n    , loadingData: 'Loading data...'\r\n    , loadedData: 'Data loaded.'\r\n    , loadedError: 'Loaded error.'\r\n    , constructionData: 'Construction Data.'\r\n  } as IDatagridI18N\r\n  , jsonPathDirectoryI18N: 'i18N/cscomponents/datagrid/'\r\n}  ","import { IDatagridColumn } from \"../interfaces/idatagrid-column\";\r\nimport { DatagridColumnFilteringType } from \"../types/datagrid-column-filtering-type\";\r\nimport { DatagridFooterColumnCalculType } from \"../types/datagrid-column-footer-calcul-type\";\r\nimport { DatagridColumnType } from \"../types/datagrid-column-type\";\r\nimport { DatagridColumnSortingDirection } from \"../types/datagrid-sorting-direction-type\";\r\nimport { DatagridCellEvent } from \"./datagrid-cell-event\";\r\n\r\nexport class DatagridColumn {\r\n\r\n  public index: number = 0;\r\n  public id: string = \"\";\r\n  public dataField: string = \"\";\r\n  public html: string = \"\";\r\n  public visible: boolean = true;\r\n  public width: number = 150;\r\n  public label: string = \"\";\r\n  public editing: boolean = false;\r\n  public sorting: boolean = true;\r\n  public sortIndex: number = 0;\r\n  public sortBy: DatagridColumnSortingDirection = 'none';\r\n  public type: DatagridColumnType = 'string';\r\n  public format: string = '';\r\n  public filteringType: DatagridColumnFilteringType = 'manuel';\r\n  public styleHead: {};\r\n  public style: {};\r\n  public footerCalcul: DatagridFooterColumnCalculType = 'none';\r\n  public filter: any;\r\n  public filterActivate: boolean = false;\r\n  public templateCallback?: any;\r\n  public cellClick?: (event: DatagridCellEvent) => void;\r\n  public cellDbClick?: (event: DatagridCellEvent) => void;\r\n  public cellChangeValue?: (event: DatagridCellEvent) => void;\r\n\r\n\r\n  constructor(properties?: IDatagridColumn) {\r\n    if (properties == undefined) { properties = { index: 0, html: '', dataField: '' }; }\r\n    this.index = (properties.index == undefined) ? 0 : properties.index;\r\n    this.html = (properties.html == undefined) ? properties.dataField : properties.html;\r\n    this.dataField = properties.dataField;\r\n    this.id = (properties.id == undefined) ? properties.dataField : properties.id;\r\n    this.visible = (properties.visible == undefined) ? true : properties.visible;\r\n    this.width = (properties.width == undefined) ? 150 : properties.width;\r\n    this.label = (properties.label == undefined) ? properties.dataField : properties.label;\r\n    this.type = (properties.type == undefined) ? 'string' : properties.type;\r\n    this.format = (properties.format == undefined) ? '' : properties.format;\r\n    this.styleHead = (properties.styleHead == undefined) ? {} : properties.styleHead;\r\n    //#region Cell\r\n    this.style = (properties.style == undefined) ? {} : properties.style;\r\n    this.editing = (properties.editing == undefined) ? false : properties.editing;\r\n    //#endregion\r\n    //#region Sort\r\n    this.sorting = (properties.sorting == undefined) ? false : properties.sorting;\r\n    this.sortIndex = (properties.sortIndex == undefined) ? 0 : properties.sortIndex;\r\n    this.sortBy = (properties.sortBy == undefined) ? 'none' : properties.sortBy;\r\n    //#endregion\r\n    //#region Filter\r\n    this.filter = (properties.filter == undefined) ? {} : properties.filter;\r\n    this.filterActivate = (properties.filterActivate == undefined) ? false : properties.filterActivate;\r\n    this.filteringType = (properties.filteringType == undefined) ? 'manuel' : properties.filteringType;\r\n    //#endregion\r\n    this.footerCalcul = (properties.footerCalcul == undefined) ? 'none' : properties.footerCalcul;\r\n    //#region Callback\r\n    this.templateCallback = properties.templateCallback;\r\n    this.cellClick = properties.cellClick;\r\n    this.cellDbClick = properties.cellDbClick;\r\n    this.cellChangeValue = properties.cellChangeValue;\r\n    //#endregion\r\n  }\r\n}","import { DatagridCell } from \"./datagrid-cell-dto\";\r\n\r\nexport class DatagridRow {\r\n    public index: number = 0;\r\n    public id: string = \"\";\r\n    public cells: DatagridCell[] = [];\r\n    public dataBoundItem: any = {};\r\n    public selected: boolean = false;\r\n    public changed: boolean = false;\r\n}\r\n","import { Component, ElementRef, input, output, Version } from '@angular/core';\r\nimport { DatagridColumn } from '../dtos/datagrid-column-dto';\r\nimport { DatagridMovementDirectionType } from '../types/datagrid-movement-direction-type';\r\nimport { IDatagridI18N } from '../interfaces/idatagrid-i18n';\r\nimport { IDatagridOptions } from '../interfaces/idatagrid-options';\r\nimport { ComponentBaseComponent } from '../../component-base/component-base.component';\r\n\r\n@Component({\r\n  selector: 'csc-datagrid-item-panel-columns',\r\n  imports: [],\r\n  templateUrl: './datagrid-item-panel-columns.component.html',\r\n  styleUrl: './datagrid-item-panel-columns.component.scss'\r\n})\r\nexport class DatagridItemPanelColumnsComponent extends ComponentBaseComponent {\r\n\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  datagridColumns = input.required<DatagridColumn[]>({ alias: 'DatagridColumns' });\r\n  datagridOptions = input.required<IDatagridOptions>({ alias: 'DatagridOptions' });\r\n  i18N = input.required<IDatagridI18N>({ alias: 'I18N' });\r\n\r\n  output_SetVisibleColumnByIndex = output<any>({ alias: 'setVisibleColumnByIndex' });\r\n  output_MoveColumnByIndex = output<any>({ alias: 'moveColumnByIndex' });\r\n\r\n  constructor(hostElement: ElementRef) { super(hostElement); }\r\n\r\n  protected setVisibleColumnByIndex(event: any, colIndex: any) { this.output_SetVisibleColumnByIndex.emit({ event: event, colIndex: colIndex }); }\r\n  protected moveColumnByIndex(event: any, colIndex: number, direction: DatagridMovementDirectionType) { this.output_MoveColumnByIndex.emit({ event: event, colIndex: colIndex, direction: direction }); }\r\n}\r\n","<div class=\"datagrid-item-panel-title\" [attr.data-item]=\"'columns'\">\r\n    <div class=\"datagrid-item-panel-title-text\">{{this.i18N().columns}}</div>\r\n</div>\r\n<div class=\"datagrid-item-panel-body\">\r\n    @for (col of datagridColumns(); track $index) {\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-text\" (click)=\"setVisibleColumnByIndex($event, col.index)\">\r\n            <div class=\"checkbox\" [ariaChecked]=\"col.visible\"></div>\r\n            <span>{{col.label}}</span>\r\n        </div>\r\n        @if(datagridOptions().colReorder){\r\n        <div class=\"datagrid-item-panel-item-up\" (click)=\"moveColumnByIndex($event, col.index, 'up')\"\r\n            [ariaDisabled]=\"col.index<=0\"></div>\r\n        <div class=\"datagrid-item-panel-item-down\" (click)=\"moveColumnByIndex($event, col.index, 'down')\"\r\n            [ariaDisabled]=\"col.index>=datagridColumns().length-1\"></div>\r\n        }\r\n    </div>\r\n    }\r\n</div>","import { Component, ElementRef, input, output, Version } from '@angular/core';\r\nimport { DatagridItemToolModuleType } from '../types/datagrid-item-tool-option-type';\r\nimport { IDatagridI18N } from '../interfaces/idatagrid-i18n';\r\nimport { IDatagridAllowPanels } from '../interfaces/idatagrid-allow-panels';\r\nimport { ComponentBaseComponent } from '../../component-base/component-base.component';\r\nimport { DatagridEnvironmentConst } from '../consts/datagrid-environment-const';\r\n\r\n@Component({\r\n  selector: 'csc-datagrid-item-panel-options',\r\n  imports: [],\r\n  templateUrl: './datagrid-item-panel-options.component.html',\r\n  styleUrl: './datagrid-item-panel-options.component.scss'\r\n})\r\nexport class DatagridItemPanelOptionsComponent extends ComponentBaseComponent {\r\n\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  allowModules = input<IDatagridAllowPanels>({}, { alias: 'AllowModules' });\r\n  i18N = input<IDatagridI18N>(DatagridEnvironmentConst.i18N, { alias: 'I18N' });\r\n\r\n  output_SetVisibilityDatagridModule = output<any>({ alias: 'setVisibilityDatagridModule' });\r\n\r\n  constructor(hostElement: ElementRef) { super(hostElement); }\r\n\r\n  protected setVisibilityDatagridModule(event: any, module: DatagridItemToolModuleType) { this.output_SetVisibilityDatagridModule.emit({ event: event, module: module }); }\r\n}\r\n","<div class=\"datagrid-item-panel-title\" [attr.data-item]=\"'options'\">\r\n    <div class=\"datagrid-item-panel-title-text\">{{this.i18N().options}}</div>\r\n</div>\r\n<div class=\"datagrid-item-panel-body\">\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-text\" (click)=\"setVisibilityDatagridModule($event, 'title')\">\r\n            <div class=\"checkbox\" [ariaChecked]=\"allowModules().allowTitle\"></div>\r\n            <span>{{this.i18N().options_Title}}</span>\r\n        </div>\r\n    </div>\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-text\" (click)=\"setVisibilityDatagridModule($event, 'toolbar')\">\r\n            <div class=\"checkbox\" [ariaChecked]=\"allowModules().allowToolBar\"></div>\r\n            <span>{{this.i18N().options_ToolsBar}}</span>\r\n        </div>\r\n    </div>\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-text\" (click)=\"setVisibilityDatagridModule($event, 'menu')\">\r\n            <div class=\"checkbox\" [ariaChecked]=\"allowModules().allowMenu\"></div>\r\n            <span>{{this.i18N().options_Menus}}</span>\r\n        </div>\r\n    </div>\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-text\" (click)=\"setVisibilityDatagridModule($event, 'groupColumns')\">\r\n            <div class=\"checkbox\" [ariaChecked]=\"allowModules().allowGroupColumns\"></div>\r\n            <span>{{this.i18N().options_GroupingColumn}}</span>\r\n        </div>\r\n    </div>\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-text\" (click)=\"setVisibilityDatagridModule($event, 'columnHeader')\">\r\n            <div class=\"checkbox\" [ariaChecked]=\"allowModules().allowHeaderColumns\"></div>\r\n            <span>{{this.i18N().options_HeaderColumns}}</span>\r\n        </div>\r\n    </div>\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-text\" (click)=\"setVisibilityDatagridModule($event, 'columnFilter')\">\r\n            <div class=\"checkbox\" [ariaChecked]=\"allowModules().allowFilteringColumns\"></div>\r\n            <span>{{this.i18N().options_FilteringColumns}}</span>\r\n        </div>\r\n    </div>\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-text\" (click)=\"setVisibilityDatagridModule($event, 'message')\">\r\n            <div class=\"checkbox\" [ariaChecked]=\"allowModules().allowMessage\"></div>\r\n            <span>{{this.i18N().options_Messages}}</span>\r\n        </div>\r\n    </div>\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-text\" (click)=\"setVisibilityDatagridModule($event, 'totals')\">\r\n            <div class=\"checkbox\" [ariaChecked]=\"allowModules().allowTotals\"></div>\r\n            <span>{{this.i18N().options_Totals}}</span>\r\n        </div>\r\n    </div>\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-text\" (click)=\"setVisibilityDatagridModule($event, 'footer')\">\r\n            <div class=\"checkbox\" [ariaChecked]=\"allowModules().allowFooter\"></div>\r\n            <span>{{this.i18N().options_Footer}}</span>\r\n        </div>\r\n    </div>\r\n</div>","import { Component, ElementRef, input, Version } from '@angular/core';\r\nimport { ComponentBaseComponent } from '../component-base/component-base.component';\r\nimport { LoaderType } from './types/loader-type';\r\n\r\n@Component({\r\n  selector: 'csc-loader',\r\n  imports: [],\r\n  templateUrl: './loader.component.html',\r\n  styleUrl: './loader.component.scss'\r\n})\r\nexport class LoaderComponent extends ComponentBaseComponent {\r\n  public override readonly version: Version = new Version(\"3.2.1\");\r\n  input_type = input<LoaderType>('dots', { alias: 'LoaderType' })\r\n  protected get classType() { return `csc-loading-${this.input_type()}`; }\r\n  constructor(hostElement: ElementRef) { super(hostElement);}\r\n}","<div class=\"csc-loading-box\"><div [class]=\"classType\"></div></div>","import { Component, effect, ElementRef, input, output, Version } from '@angular/core';\r\nimport { ComponentBaseComponent } from '../../components/component-base/component-base.component';\r\nimport { AbstractControl, ControlValueAccessor, FormControl, FormGroup, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\r\n\r\n@Component({\r\n  template: '',\r\n  providers: [\r\n    { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: FormBaseComponent }\r\n    , { provide: NG_VALIDATORS, multi: true, useExisting: FormBaseComponent }\r\n  ]\r\n})\r\nexport class FormBaseComponent extends ComponentBaseComponent implements ControlValueAccessor, Validator {\r\n\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  private _htmlHostElement!: HTMLElement;\r\n  private _value: any = undefined;\r\n  private _required: boolean = false;\r\n  private _formControl: AbstractControl | null = null;\r\n\r\n  protected get htmlHostElement(): HTMLElement { return this._htmlHostElement; }\r\n  protected get required(): boolean { return this._required; }\r\n  protected isTouched: boolean = false;\r\n  protected isDisabled: boolean = false;\r\n  protected set value(value: any) { this.writeValue(value); }\r\n\r\n  public get value(): any { return this._value; }\r\n  public get formControl(): AbstractControl | null { return this._formControl; }\r\n\r\n  public input_Value = input<any>(undefined, { alias: 'Value' });\r\n  public input_Required = input<boolean>(undefined, { alias: 'Required' });\r\n\r\n  public output_Validated = output<any>({ alias: 'validated' });\r\n\r\n  constructor(hostElement: ElementRef) {\r\n    super(hostElement);\r\n    this._htmlHostElement = hostElement.nativeElement;\r\n    effect((effect) => {\r\n      if (this._value != this.input_Value() && this._value == undefined && this.input_Value() != undefined) { this.writeValue(this.input_Value()); }\r\n      if (this._required != this.input_Required() && this.input_Required() != undefined) {\r\n        this.setRequired(this.input_Required() as boolean);\r\n      }\r\n    });\r\n  }\r\n\r\n  public onChange = (value: any) => { };\r\n  public onTouched = (value: any) => { };\r\n  public onValidate(control: AbstractControl): ValidationErrors | null { return {} };\r\n  public onValidatorChange = (value: any) => { };\r\n  public onStatusChanges = (value: any) => { };\r\n\r\n  public setValue(obj: any): void { this.writeValue(obj); }\r\n  public writeValue(obj: any): void { this._value = obj; }\r\n  public registerOnChange(fn: any): void { this.onChange = fn; }\r\n  public registerOnTouched(fn: any): void { this.onTouched = fn; }\r\n  public setDisabledState?(isDisabled: boolean): void {\r\n    this.isDisabled = isDisabled;\r\n    if (this.isDisabled) { (this.hostElement.nativeElement as HTMLElement).setAttribute('aria-disabled', 'true'); }\r\n    else { (this.hostElement.nativeElement as HTMLElement).removeAttribute('aria-disabled'); }\r\n\r\n  }\r\n  public validate(control: AbstractControl): ValidationErrors | null {\r\n    if (control.validator == null) { this.setRequired(false); return null; }\r\n    const validator = control.validator({} as AbstractControl);\r\n    if (validator != null) { this.setRequired(validator['required']); }\r\n    let res = this.onValidate(control);\r\n    this.setFormControl(control);\r\n    this.output_Validated.emit({ control: control, errors: res });\r\n    return res;\r\n  }\r\n  public setFormControl(control: AbstractControl) {\r\n    if (this._formControl == null && control != undefined && control != null) {\r\n      this._formControl = control;\r\n      let _this = this;\r\n      control.statusChanges.subscribe({\r\n        next(value) {\r\n          _this.onStatusChanges(control);\r\n        },\r\n      });\r\n    }\r\n  }\r\n  public registerOnValidatorChange?(fn: () => void): void { this.registerOnValidatorChange = fn; }\r\n  private setRequired(value: boolean) {\r\n    this._required = value;\r\n    if (value) { (this.hostElement.nativeElement as HTMLElement).setAttribute('aria-required', 'true'); }\r\n    else { (this.hostElement.nativeElement as HTMLElement).setAttribute('aria-required', 'false'); }\r\n  }\r\n\r\n  protected override keypress(event: KeyboardEvent) {\r\n    super.keypress(event);\r\n    if (this.isTouched) return;\r\n    this.isTouched = true;\r\n  }\r\n}\r\n","import { Component, effect, ElementRef, input, Version } from '@angular/core';\r\nimport { ComponentBaseComponent } from '../component-base/component-base.component';\r\nimport { IconType } from './types/icon-type';\r\n\r\n@Component({\r\n  selector: 'csc-icon',\r\n  imports: [],\r\n  templateUrl: './icon.component.html',\r\n  styleUrl: './icon.component.scss'\r\n})\r\nexport class IconComponent extends ComponentBaseComponent {\r\n  public override readonly version: Version = new Version(\"1.2.1\");\r\n  public input_icon = input<IconType>(undefined, { alias: 'Icon' });\r\n  public input_stringConstructor = input<string>(undefined, { alias: 'StringConstructor' });\r\n  constructor(hostElement: ElementRef) {\r\n    super(hostElement);\r\n    effect(() => {\r\n      if (this.input_icon() != undefined) {\r\n        (this.hostElement.nativeElement as HTMLElement).setAttribute('aria-label', this.input_icon() ?? '');\r\n      }\r\n      if (this.input_stringConstructor() != undefined) {\r\n        this.createFromStringConstructor(this.input_stringConstructor() ?? '');\r\n      }\r\n    });\r\n  }\r\n  public createFromStringConstructor(value: string) {\r\n    let constructor: any = {}\r\n    let find: boolean = true;\r\n    let iPos: number = 0;\r\n    var iPosEnd: number = 0;\r\n    var charEnter: string = '';\r\n    var nameInput: string = '';\r\n    var valueInput: string = '';\r\n    while (find) {\r\n      find = value.indexOf('[', iPos) > -1;\r\n      if (find) {\r\n        iPos = value.indexOf('[', iPos) + 1;\r\n        iPosEnd = value.indexOf(']', iPos);\r\n        nameInput = value.substring(iPos, iPosEnd);\r\n        charEnter = value.substring(iPosEnd + 2, iPosEnd + 3);\r\n        iPos = iPosEnd + 3;\r\n        valueInput = value.substring(iPos, value.indexOf(charEnter, iPos));\r\n        iPos++;\r\n        constructor[nameInput] = valueInput\r\n      }\r\n    }\r\n\r\n    if (constructor.Icon != undefined) {\r\n      (this.hostElement.nativeElement as HTMLElement).setAttribute('aria-label', constructor.Icon);\r\n    }\r\n  }\r\n}\r\n","","export enum NotificationResult {\r\n    Abort = 3\r\n    , Cancel = 2\r\n    , Continue = 11\r\n    , Ignore = 5\r\n    , No = 7\r\n    , None = 0\r\n    , OK = 1\r\n    , Retry = 4\r\n    , TryAgain = 10\r\n    , Yes = 6\r\n}","import { INotificationI18N } from \"../interfaces/inotification-i18n\";\r\n\r\nexport const NotificationEnvironmentConst = {\r\n  i18N: {\r\n    ok: \"Ok\",\r\n    cancel: \"Cancel\",\r\n    retry: \"Retry\",\r\n    yes: \"Yes\",\r\n    no: \"No\",\r\n    abort: \"Abort\",\r\n    ignore: \"Ignore\",\r\n    continue: \"Continue\",\r\n    tryAgain: \"TryAgain\"\r\n  } as INotificationI18N\r\n  , defaulti18N: {\r\n    ok: \"Ok\",\r\n    cancel: \"Cancel\",\r\n    retry: \"Retry\",\r\n    yes: \"Yes\",\r\n    no: \"No\",\r\n    abort: \"Abort\",\r\n    ignore: \"Ignore\",\r\n    continue: \"Continue\",\r\n    tryAgain: \"TryAgain\"\r\n  } as INotificationI18N\r\n  , jsonPathDirectoryI18N: 'i18N/cscomponents/notification/'\r\n}  ","import { Component, ElementRef, Version } from '@angular/core';\r\nimport { INotificationOptions } from '../interfaces/inotification-options';\r\nimport { IconComponent } from \"../../icon/icon.component\";\r\nimport { IconType } from '../../icon/types/icon-type';\r\nimport { NotificationResult } from '../enums/notification-result';\r\nimport { NotificationEvent } from '../events/notification-event';\r\nimport { INotificationI18N } from '../interfaces/inotification-i18n';\r\nimport { NotificationEnvironmentConst } from '../consts/notification-environment-const';\r\nimport { ComponentBaseComponent } from '../../component-base/component-base.component';\r\n\r\n@Component({\r\n  selector: 'csc-notification-item',\r\n  imports: [IconComponent],\r\n  templateUrl: './notification-item.component.html',\r\n  styleUrl: './notification-item.component.scss'\r\n})\r\nexport class NotificationItemComponent extends ComponentBaseComponent {\r\n\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  private _htmlContentElement?: HTMLElement = undefined;\r\n  private _icon?: IconType = undefined;\r\n  private _options: INotificationOptions = { type: 'none', message: undefined };\r\n\r\n  protected get htmlContentElement(): HTMLElement | undefined { return this._htmlContentElement; }\r\n  protected get htmlHostElement(): HTMLElement { return this.hostElement.nativeElement; }\r\n  protected get icon(): IconType | undefined { return this._icon; }\r\n  protected get options(): INotificationOptions { return this._options; }\r\n  protected get i18N(): INotificationI18N { return NotificationEnvironmentConst.i18N; }\r\n\r\n  public onClose = (event: NotificationEvent) => { };\r\n\r\n  constructor(_hostElement: ElementRef) { super(_hostElement); }\r\n\r\n  protected close(result?: NotificationResult) {\r\n    this.htmlHostElement.classList.remove('show');\r\n    if (this.options.dialogResult != undefined) { this.options.dialogResult({ target: this.htmlHostElement, options: this.options, result: result }); }\r\n    setTimeout(() => { this.onClose({ target: this.htmlHostElement, result: result ?? NotificationResult.None }); }, 400);\r\n  }\r\n\r\n  public show(callbackfn?: (options: INotificationOptions) => void) {\r\n    let _options: INotificationOptions = this._options;\r\n    if (callbackfn != undefined) { callbackfn(_options); }\r\n    let notificationItem: HTMLElement = this.htmlHostElement;\r\n    setTimeout(() => {\r\n      notificationItem.classList.add('show');\r\n      if (_options.autoClose != false) {\r\n        setTimeout(() => {\r\n          notificationItem.classList.remove('show');\r\n          setTimeout(() => { this.onClose({ target: this.htmlHostElement, result: NotificationResult.None }); }, 400);\r\n        }, 5000);\r\n      }\r\n    }, 1);\r\n    let notificationItemContent: HTMLElement | undefined = undefined;\r\n    switch (typeof _options.message) {\r\n      case 'bigint':\r\n      case 'boolean':\r\n      case 'number':\r\n      case 'string':\r\n        notificationItemContent = document.createElement('div');\r\n        notificationItemContent.innerHTML = _options.message.toString();\r\n        break;\r\n      case 'object':\r\n        if (_options.message instanceof HTMLElement) { notificationItemContent = _options.message; }\r\n        break;\r\n    }\r\n    if (notificationItemContent != undefined) { this._htmlContentElement = notificationItemContent; }\r\n    this.htmlHostElement.setAttribute(\"data-type\", _options.type);\r\n    switch (_options.type) {\r\n      case 'error': this._icon = 'x-octagon'; break;\r\n      case 'info': this._icon = 'info-square'; break;\r\n      case 'question': this._icon = 'question-circle'; break;\r\n      case 'success': this._icon = 'check2-circle'; break;\r\n      case 'warning': this._icon = 'exclamation-diamond'; break;\r\n    }\r\n    return this;\r\n  }\r\n}\r\n","@if(htmlContentElement!=undefined && options.message!=undefined){\r\n<a type=\"button\" class=\"csc-notification-item-btn-close\" (click)=\"close()\"></a>\r\n@if(options.titleHtml!=undefined){\r\n<div class=\"csc-notification-item-header\">\r\n    @if(options.titleIconType!=undefined){<csc-icon [Icon]=\"options.titleIconType\"></csc-icon>}\r\n    <span [innerHTML]=\"options.titleHtml\"></span>\r\n</div>\r\n}\r\n<div class=\"csc-notification-item-container\">\r\n    @if(icon!=undefined){\r\n    <div class=\"csc-notification-item-icon\"><csc-icon [Icon]=\"icon\"></csc-icon></div>\r\n    }\r\n    <div class=\"csc-notification-item-content\" [innerHtml]=\"htmlContentElement.outerHTML\"></div>\r\n</div>\r\n@if(options.buttons!=undefined && options.buttons!='none'){\r\n<div #notificationItemFooter class=\"csc-notification-item-footer\">\r\n    @switch (options.buttons) {\r\n    @case ('OK') {\r\n    <button type=\"button\" class=\"csc-notification-btn csc-notification-btn-default\" (click)=\"close(1)\">{{i18N.ok}}</button>\r\n    }\r\n    @case ('OKCancel') {\r\n    <button type=\"button\" class=\"csc-notification-btn csc-notification-btn-success\" (click)=\"close(1)\">{{i18N.ok}}</button>\r\n    <button type=\"button\" class=\"csc-notification-btn csc-notification-btn-danger\" (click)=\"close(2)\">{{i18N.cancel}}</button>\r\n    }\r\n    @case ('YesNo') {\r\n    <button type=\"button\" class=\"csc-notification-btn csc-notification-btn-success\" (click)=\"close(6)\">{{i18N.yes}}</button>\r\n    <button type=\"button\" class=\"csc-notification-btn csc-notification-btn-danger\" (click)=\"close(7)\">{{i18N.no}}</button>\r\n    }\r\n    @case ('YesNoCancel') {\r\n    <button type=\"button\" class=\"csc-notification-btn csc-notification-btn-success\" (click)=\"close(6)\">{{i18N.yes}}</button>\r\n    <button type=\"button\" class=\"csc-notification-btn csc-notification-btn-danger\" (click)=\"close(7)\">{{i18N.no}}</button>\r\n    <button type=\"button\" class=\"csc-notification-btn csc-notification-btn-default\" (click)=\"close(2)\">{{i18N.cancel}}</button>\r\n    }\r\n    @case ('Abort') {\r\n    <button type=\"button\" class=\"csc-notification-btn csc-notification-btn-danger\" (click)=\"close(3)\">{{i18N.abort}}</button>\r\n    }\r\n    @case ('Retry') {\r\n    <button type=\"button\" class=\"csc-notification-btn csc-notification-btn-warning\" (click)=\"close(4)\">{{i18N.retry}}</button>\r\n    }\r\n    @case ('Ignore') {\r\n    <button type=\"button\" class=\"csc-notification-btn csc-notification-btn-primary\" (click)=\"close(5)\">{{i18N.ignore}}</button>\r\n    }\r\n    @case ('AbortRetryIgnore') {\r\n    <button type=\"button\" class=\"csc-notification-btn csc-notification-btn-danger\" (click)=\"close(3)\">{{i18N.abort}}</button>\r\n    <button type=\"button\" class=\"csc-notification-btn csc-notification-btn-warning\"\r\n        (click)=\"close(10)\">{{i18N.tryAgain}}</button>\r\n    <button type=\"button\" class=\"csc-notification-btn csc-notification-btn-primary\" (click)=\"close(5)\">{{i18N.ignore}}</button>\r\n    }\r\n    @case ('Continue') {\r\n    <button type=\"button\" class=\"csc-notification-btn csc-notification-btn-primary\"\r\n        (click)=\"close(11)\">{{i18N.continue}}</button>\r\n    }\r\n    @case ('Cancel') {\r\n    <button type=\"button\" class=\"csc-notification-btn csc-notification-btn-danger\" (click)=\"close(2)\">{{i18N.cancel}}</button>\r\n    }\r\n    }\r\n</div>\r\n}\r\n}","export enum ModalResult {\r\n    Abort = 3\r\n    , Cancel = 2\r\n    , Continue = 11\r\n    , Ignore = 5\r\n    , No = 7\r\n    , None = 0\r\n    , OK = 1\r\n    , Retry = 4\r\n    , TryAgain = 10\r\n    , Yes = 6\r\n}","import { IModalI18N } from \"../interfaces/imodal-i18n\";\r\n\r\nexport const ModalEnvironmentConst = {\r\n  i18N: {\r\n    ok: \"Ok\",\r\n    cancel: \"Cancel\",\r\n    retry: \"Retry\",\r\n    yes: \"Yes\",\r\n    no: \"No\",\r\n    abort: \"Abort\",\r\n    ignore: \"Ignore\",\r\n    continue: \"Continue\",\r\n    tryAgain: \"TryAgain\"\r\n  } as IModalI18N\r\n  , defaulti18N: {\r\n    ok: \"Ok\",\r\n    cancel: \"Cancel\",\r\n    retry: \"Retry\",\r\n    yes: \"Yes\",\r\n    no: \"No\",\r\n    abort: \"Abort\",\r\n    ignore: \"Ignore\",\r\n    continue: \"Continue\",\r\n    tryAgain: \"TryAgain\"\r\n  } as IModalI18N\r\n  , jsonPathDirectoryI18N: 'i18N/cscomponents/modal/'\r\n}  ","import { Component, ElementRef, Version, viewChild, ViewContainerRef } from '@angular/core';\r\nimport { IModalOptions } from './interfaces/imodal-options';\r\nimport { ComponentBaseComponent } from '../component-base/component-base.component';\r\nimport { ModalResult } from './enums/modal-result';\r\nimport { IModalI18N } from './interfaces/imodal-i18n';\r\nimport { ModalEnvironmentConst } from './consts/modal-environment-const';\r\nimport { IconType } from '../icon/types/icon-type';\r\nimport { ModalEvent } from './events/modal-event';\r\nimport { IconComponent } from \"../icon/icon.component\";\r\nimport { IModalCustomButton } from './interfaces/imodal-custom-button';\r\n\r\n@Component({\r\n  selector: 'csc-modal',\r\n  imports: [IconComponent],\r\n  templateUrl: './modal.component.html',\r\n  styleUrl: './modal.component.scss'\r\n})\r\nexport class ModalComponent extends ComponentBaseComponent {\r\n\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  private _htmlContentElement?: HTMLElement = undefined;\r\n  private _icon?: IconType = undefined;\r\n  private _options: IModalOptions = {};\r\n  private _componentRef?: any = undefined;\r\n\r\n  protected get htmlContentElement(): HTMLElement | undefined { return this._htmlContentElement; }\r\n  protected get htmlHostElement(): HTMLElement { return this.hostElement.nativeElement; }\r\n  protected get icon(): IconType | undefined { return this._icon; }\r\n  protected get options(): IModalOptions { return this._options; }\r\n  protected get i18N(): IModalI18N { return ModalEnvironmentConst.i18N; }\r\n  public get componentRef(): any { return this._componentRef; }\r\n\r\n  modal = viewChild<ElementRef>('modal');\r\n  modalDialog = viewChild<ElementRef>('modalDialog');\r\n  modalContent = viewChild<ElementRef>('modalContent');\r\n  modalHeader = viewChild<ElementRef>('modalHeader');\r\n  modalTitle = viewChild<ElementRef>('modalTitle');\r\n  modalBody = viewChild<ElementRef>('modalBody');\r\n  modalFooter = viewChild<ElementRef>('modalFooter');\r\n\r\n  modalBodyContainerHtml = viewChild<ElementRef>('modalBodyContainerHtml');\r\n  modalBodyContainerView = viewChild('modalBodyContainerView', { read: ViewContainerRef });\r\n\r\n  constructor(_hostElement: ElementRef) { super(_hostElement); }\r\n\r\n  public onClose = (event: ModalEvent) => { };\r\n\r\n  public open(callbackfn?: (options: IModalOptions) => void) {\r\n    let _options: IModalOptions = this._options;\r\n    if (callbackfn != undefined) { callbackfn(_options); }\r\n    let modal: HTMLElement = this.htmlHostElement;\r\n    setTimeout(() => {\r\n      modal.classList.add('show');\r\n    }, 1);\r\n    let modalContent: HTMLElement | undefined = undefined;\r\n    switch (typeof _options.message) {\r\n      case 'bigint':\r\n      case 'boolean':\r\n      case 'number':\r\n      case 'string':\r\n        modalContent = document.createElement('div');\r\n        modalContent.innerHTML = _options.message.toString();\r\n        break;\r\n      case 'object':\r\n        if (_options.message instanceof HTMLElement) { modalContent = _options.message; }\r\n        break;\r\n    }\r\n    if (_options.buttons == undefined) { _options.buttons = 'OK'; }\r\n    if (modalContent != undefined) { this._htmlContentElement = modalContent; }\r\n    if (_options.type != undefined && _options.type != 'none') {\r\n      this.htmlHostElement.setAttribute(\"data-type\", _options.type);\r\n      switch (_options.type) {\r\n        case 'error': this._icon = 'x-octagon'; break;\r\n        case 'info': this._icon = 'info-square'; break;\r\n        case 'question': this._icon = 'question-circle'; break;\r\n        case 'success': this._icon = 'check2-circle'; break;\r\n        case 'warning': this._icon = 'exclamation-diamond'; break;\r\n      }\r\n    }\r\n    if (_options.component != undefined && _options.message == undefined && this.modalBodyContainerView() != undefined) {\r\n      this._componentRef = this.modalBodyContainerView()?.createComponent(_options.component)\r\n    }\r\n    return this;\r\n  }\r\n\r\n  protected close(result?: ModalResult) {\r\n    this.htmlHostElement.classList.remove('show');\r\n    if (this.options.dialogResult != undefined) { this.options.dialogResult({ target: this.htmlHostElement, options: this.options, result: result }); }\r\n    setTimeout(() => { this.onClose({ target: this.htmlHostElement, result: result ?? ModalResult.None }); }, 400);\r\n  }\r\n\r\n  protected customButtonClick(event: any, customButton: IModalCustomButton) {\r\n    var mr: ModalResult = customButton.dialogResult ?? ModalResult.None;\r\n    if (customButton.callBack != undefined) { customButton.callBack({ target: event.target, customButton: customButton, result: mr }); }\r\n    if (customButton.closeOnClick != false) { this.close(mr); }\r\n  }\r\n\r\n  protected getCustomButtonClassList(customButton: IModalCustomButton) {\r\n    var classList = customButton.classList ?? [];\r\n    if (classList.indexOf('csc-modal-btn') < 0) { classList.push('csc-modal-btn'); }\r\n    return classList;\r\n  }\r\n\r\n\r\n\r\n  // public close(value?: DialogResult, tag?: any) {\r\n  //   if (this.modal.nativeElement != undefined) {\r\n  //     var element = (this.modal.nativeElement as HTMLDivElement);\r\n  //     element.classList.remove(\"show\");\r\n  //     setTimeout(() => {\r\n  //       var fct = undefined;\r\n  //       if (value != undefined && this.dialogResult != undefined) { fct = this.dialogResult; }\r\n  //       this.resetOptions();\r\n  //       if (this.modalBodyContainerView != undefined) { this.modalBodyContainerView.clear(); }\r\n  //       element.style.removeProperty(\"display\");\r\n  //       if (fct != undefined) { fct(value, tag); }\r\n  //     }, 500);\r\n  //   }\r\n  // }\r\n  // public resetOptions() {\r\n  //   this.color = undefined;\r\n  //   this.classList = undefined;\r\n  //   this.htmlArguments = undefined;\r\n  //   this.title = this.Title;\r\n  //   this.iconTitleSrc = this.IconTitleSrc;\r\n  //   this.icon = undefined;\r\n  //   this.message = undefined;\r\n  //   this.classBody = undefined;\r\n  //   this.buttons = undefined;\r\n  //   this.buttonCloseIsVisible = true;\r\n  //   this.customButtons = undefined;\r\n  //   this.showFooter = true;\r\n\r\n  //   this.component = undefined;\r\n  //   this.componentRef = undefined;\r\n  //   this.viewRef = undefined;\r\n  //   this.componentArguments = undefined;\r\n\r\n  //   this.dialogResult = undefined;\r\n  //   this.callback = undefined;\r\n  //   this.callbackShow = undefined;\r\n  //   this.callbackShown = undefined;\r\n  //   this.callbackHide = undefined;\r\n  //   this.callbackHidden = undefined;\r\n  // }\r\n  // public setOptions(options?: IModalOption) {\r\n  //   this.resetOptions();\r\n  //   if (options != undefined) {\r\n  //     if (options.color != undefined) { this.color = options.color; }\r\n  //     if (options.classList != undefined) { this.classList = options.classList; }\r\n  //     if (options.htmlArguments != undefined) { this.htmlArguments = options.htmlArguments; }\r\n  //     if (options.title != undefined) { this.title = options.title; }\r\n  //     if (options.iconTitleSrc != undefined) { this.iconTitleSrc = options.iconTitleSrc; }\r\n  //     if (options.icon != undefined) { this.icon = options.icon; }\r\n  //     if (options.message != undefined) { this.message = options.message; }\r\n  //     if (options.classBody != undefined) { this.classBody = options.classBody; }\r\n  //     if (options.buttons != undefined) { this.buttons = options.buttons; }\r\n  //     if (options.buttonCloseIsVisible != undefined) { this.buttonCloseIsVisible = options.buttonCloseIsVisible; }\r\n  //     if (options.customButtons != undefined) { this.customButtons = options.customButtons; }\r\n  //     if (options.showFooter != undefined) { this.showFooter = options.showFooter; }\r\n\r\n  //     if (options.component != undefined) { this.component = options.component; }\r\n  //     if (options.componentRef != undefined) { this.componentRef = options.componentRef; }\r\n  //     if (options.viewRef != undefined) { this.viewRef = options.viewRef; }\r\n  //     if (options.componentArguments != undefined) { this.componentArguments = options.componentArguments; }\r\n\r\n  //     if (options.dialogResult != undefined) { this.dialogResult = options.dialogResult; }\r\n  //     if (options.callback != undefined) { this.callback = options.callback; }\r\n  //     if (options.callbackShow != undefined) { this.callbackShow = options.callbackShow; }\r\n  //     if (options.callbackShown != undefined) { this.callbackShown = options.callbackShown; }\r\n  //     if (options.callbackHide != undefined) { this.callbackHide = options.callbackHide; }\r\n  //     if (options.callbackHidden != undefined) { this.callbackHidden = options.callbackHidden; }\r\n\r\n  //     if (this.color != undefined) {\r\n  //       (this.modal.nativeElement as HTMLDivElement).classList.add(`modal-${this.color}`);\r\n  //     }\r\n  //     if (this.buttons == undefined) {\r\n  //       this.buttons = 'OK';\r\n  //     }\r\n  //     if (this.buttons != undefined) {\r\n  //       //(this.modal.nativeElement as HTMLDivElement).classList.add(`modal-${this.color}`);\r\n  //     }\r\n  //     if (this.component != undefined && this.message == undefined) {\r\n  //       var cr = this.modalBodyContainerView.createComponent(this.component)\r\n  //       this.componentRef = cr;\r\n  //       this.viewRef = cr.hostView as ViewRef;\r\n  //       try { (cr.instance as ComponentBase).load(this.componentArguments); }\r\n  //       catch { }\r\n  //     }\r\n  //   }\r\n  // }\r\n}\r\n","<div #modal class=\"csc-modal-backdrop\" (click)=\"close()\">\r\n    <div #modalDialog class=\"csc-modal-dialog\" (click)=\"$event.stopPropagation()\">\r\n        <div #modalHeader class=\"csc-modal-header\">\r\n            <div #modalTitle class=\"csc-modal-title\">\r\n                @if (options.titleIconType != undefined || options.titleIconType != 'none') {\r\n                <csc-icon [Icon]=\"options.titleIconType\" class=\"icon\"></csc-icon>\r\n                }\r\n                @if (options.titleIconImageSrc != undefined || options.titleIconImageSrc != null) {\r\n                <img src=\"{{options.titleIconImageSrc}}\" class=\"icon\" alt=\"{{options.titleHtml}}\">\r\n                }\r\n                <span [innerHTML]=\"options.titleHtml\"></span>\r\n            </div>\r\n            @if(options.buttonCloseIsVisible!=false){\r\n            <a role=\"button\" class=\"csc-modal-btn-close\" (click)=\"close()\"></a>\r\n            }\r\n        </div>\r\n        <div class=\"csc-modal-content\">\r\n            @if(options.type!=undefined && options.type!='none'){\r\n            <div class=\"csc-modal-content-icon\">\r\n                <csc-icon [Icon]=\"icon\"></csc-icon>\r\n            </div>\r\n            }\r\n            <div #modalBody class=\"csc-modal-body\">\r\n                @if (htmlContentElement != undefined) {\r\n                <span #modalBodyContainerHtml [innerHTML]=\"htmlContentElement.outerHTML\"></span>\r\n                }\r\n                <ng-container #modalBodyContainerView></ng-container>\r\n            </div>\r\n        </div>\r\n        @if(options.showFooter!=false && ((options.buttons!=undefined && options.buttons!='none') ||\r\n        (options.customButtons!=undefined && options.customButtons.length>0))){\r\n        <div #modalFooter class=\"csc-modal-footer\">\r\n            @switch (options.buttons) {\r\n            @case ('OK') {\r\n            <button type=\"button\" class=\"csc-modal-btn csc-modal-btn-default\" (click)=\"close(1)\">{{i18N.ok}}</button>\r\n            }\r\n            @case ('OKCancel') {\r\n            <button type=\"button\" class=\"csc-modal-btn csc-modal-btn-success\" (click)=\"close(1)\">{{i18N.ok}}</button>\r\n            <button type=\"button\" class=\"csc-modal-btn csc-modal-btn-danger\" (click)=\"close(2)\">{{i18N.cancel}}</button>\r\n            }\r\n            @case ('YesNo') {\r\n            <button type=\"button\" class=\"csc-modal-btn csc-modal-btn-success\" (click)=\"close(6)\">{{i18N.yes}}</button>\r\n            <button type=\"button\" class=\"csc-modal-btn csc-modal-btn-danger\" (click)=\"close(7)\">{{i18N.no}}</button>\r\n            }\r\n            @case ('YesNoCancel') {\r\n            <button type=\"button\" class=\"csc-modal-btn csc-modal-btn-success\" (click)=\"close(6)\">{{i18N.yes}}</button>\r\n            <button type=\"button\" class=\"csc-modal-btn csc-modal-btn-danger\" (click)=\"close(7)\">{{i18N.no}}</button>\r\n            <button type=\"button\" class=\"csc-modal-btn csc-modal-btn-default\" (click)=\"close(2)\">{{i18N.cancel}}</button>\r\n            }\r\n            @case ('Abort') {\r\n            <button type=\"button\" class=\"csc-modal-btn csc-modal-btn-danger\" (click)=\"close(3)\">{{i18N.abort}}</button>\r\n            }\r\n            @case ('Retry') {\r\n            <button type=\"button\" class=\"csc-modal-btn csc-modal-btn-warning\" (click)=\"close(4)\">{{i18N.retry}}</button>\r\n            }\r\n            @case ('Ignore') {\r\n            <button type=\"button\" class=\"csc-modal-btn csc-modal-btn-primary\" (click)=\"close(5)\">{{i18N.ignore}}</button>\r\n            }\r\n            @case ('AbortRetryIgnore') {\r\n            <button type=\"button\" class=\"csc-modal-btn csc-modal-btn-danger\" (click)=\"close(3)\">{{i18N.abort}}</button>\r\n            <button type=\"button\" class=\"csc-modal-btn csc-modal-btn-warning\" (click)=\"close(10)\">{{i18N.tryAgain}}</button>\r\n            <button type=\"button\" class=\"csc-modal-btn csc-modal-btn-primary\" (click)=\"close(5)\">{{i18N.ignore}}</button>\r\n            }\r\n            @case ('Continue') {\r\n            <button type=\"button\" class=\"csc-modal-btn csc-modal-btn-primary\" (click)=\"close(11)\">{{i18N.continue}}</button>\r\n            }\r\n            @case ('Cancel') {\r\n            <button type=\"button\" class=\"csc-modal-btn csc-modal-btn-danger\" (click)=\"close(2)\">{{i18N.cancel}}</button>\r\n            }\r\n            }\r\n            @if(options.customButtons!=undefined){\r\n            @for (customButton of options.customButtons; track $index) {\r\n            <button type=\"button\" title=\"{{customButton.name??''}}\" [classList]=\"getCustomButtonClassList(customButton)\"\r\n                [style]=\"customButton.style??''\" [innerHTML]=\"customButton.html\"\r\n                (click)=\"customButtonClick($event, customButton)\"></button>\r\n            }\r\n            }\r\n        </div>\r\n        }\r\n    </div>\r\n</div>","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { DatagridEnvironmentConst } from '../components/datagrid/consts/datagrid-environment-const';\r\nimport { IDatagridI18N } from '../components/datagrid/interfaces/idatagrid-i18n';\r\nimport { INotificationI18N } from '../components/notification/interfaces/inotification-i18n';\r\nimport { NotificationEnvironmentConst } from '../components/notification/consts/notification-environment-const';\r\nimport { CSCEnvironment } from '../cscomponents.environment';\r\nimport { I18N } from '../interfaces/i18n';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class CSComponentsManagerService {\r\n\r\n  private _currentLanguage: string = 'en-gb';\r\n  public get currentLanguge(): string { return this._currentLanguage; }\r\n\r\n  public changeLanguage: EventEmitter<string> = new EventEmitter();\r\n\r\n  constructor() {\r\n    if (localStorage.getItem(`csc-language`) != undefined && localStorage.getItem(`csc-language`) != this.currentLanguge) {\r\n      this.setLanguage(localStorage.getItem(`csc-language`) as string);\r\n    }\r\n  }\r\n\r\n  protected setI18N(json: any, language: string) {\r\n    try {\r\n      let i18n: I18N = {\r\n        currencyCode:json.currencyCode ?? CSCEnvironment.defaulti18N.currencyCode,\r\n        currencySymbol:json.currencySymbol ?? CSCEnvironment.defaulti18N.currencySymbol,\r\n        digitsSeparator:json.digitsSeparator ?? CSCEnvironment.defaulti18N.digitsSeparator,\r\n        components: {\r\n          textarea: {\r\n            isRequired: json.textarea.isRequired ?? CSCEnvironment.defaulti18N.components.textarea.isRequired,\r\n            isTooLong: json.textarea.isTooLong ?? CSCEnvironment.defaulti18N.components.textarea.isTooLong,\r\n          },\r\n          textbox: {\r\n            emailIncorrect: json.textbox.emailIncorrect ?? CSCEnvironment.defaulti18N.components.textbox.emailIncorrect,\r\n            isRequired: json.textbox.isRequired ?? CSCEnvironment.defaulti18N.components.textbox.isRequired,\r\n            isTooLong: json.textbox.isTooLong ?? CSCEnvironment.defaulti18N.components.textbox.isTooLong,\r\n            nan: json.textbox.nan ?? CSCEnvironment.defaulti18N.components.textbox.nan\r\n          }\r\n        }\r\n      };\r\n      CSCEnvironment.i18N = i18n;\r\n      localStorage.setItem(`csc-datagrid-language`, language);\r\n    } catch { }\r\n  }\r\n  protected setDatagridI18N(json: any, language: string) {\r\n    try {\r\n      let i18n: IDatagridI18N = {\r\n        first: json.first ?? DatagridEnvironmentConst.defaulti18N.first,\r\n        previous: json.previous ?? DatagridEnvironmentConst.defaulti18N.previous,\r\n        next: json.next ?? DatagridEnvironmentConst.defaulti18N.next,\r\n        last: json.last ?? DatagridEnvironmentConst.defaulti18N.last,\r\n        labelTotal: json.labelTotal ?? DatagridEnvironmentConst.defaulti18N.labelTotal,\r\n        search: json.search ?? DatagridEnvironmentConst.defaulti18N.search,\r\n        show: json.show ?? DatagridEnvironmentConst.defaulti18N.show,\r\n        entries: json.entries ?? DatagridEnvironmentConst.defaulti18N.entries,\r\n        refresh: json.refresh ?? DatagridEnvironmentConst.defaulti18N.refresh,\r\n        exportCSV: json.exportCSV ?? DatagridEnvironmentConst.defaulti18N.exportCSV,\r\n        exportXLSX: json.exportXLSX ?? DatagridEnvironmentConst.defaulti18N.exportXLSX,\r\n        clearFilters: json.clearFilters ?? DatagridEnvironmentConst.defaulti18N.clearFilters,\r\n        parameters: json.parameters ?? DatagridEnvironmentConst.defaulti18N.parameters,\r\n        validate: json.validate ?? DatagridEnvironmentConst.defaulti18N.validate,\r\n        all: json.all ?? DatagridEnvironmentConst.defaulti18N.all,\r\n        allEntries: json.allEntries ?? DatagridEnvironmentConst.defaulti18N.allEntries,\r\n        yes: json.yes ?? DatagridEnvironmentConst.defaulti18N.yes,\r\n        no: json.no ?? DatagridEnvironmentConst.defaulti18N.no,\r\n        applyFilter: json.applyFilter ?? DatagridEnvironmentConst.defaulti18N.applyFilter,\r\n        closeFilter: json.closeFilter ?? DatagridEnvironmentConst.defaulti18N.closeFilter,\r\n        eraseFilter: json.eraseFilter ?? DatagridEnvironmentConst.defaulti18N.eraseFilter,\r\n        columns: json.columns ?? DatagridEnvironmentConst.defaulti18N.columns,\r\n        options: json.options ?? DatagridEnvironmentConst.defaulti18N.options,\r\n        filter: json.filter ?? DatagridEnvironmentConst.defaulti18N.filter,\r\n        digitsSeparator: json.digitsSeparator ?? DatagridEnvironmentConst.defaulti18N.digitsSeparator,\r\n        currencyCode: json.currencyCode ?? DatagridEnvironmentConst.defaulti18N.currencyCode,\r\n        currencySymbol: json.currencySymbol ?? DatagridEnvironmentConst.defaulti18N.currencySymbol,\r\n        notInitialized: json.notInitialized ?? DatagridEnvironmentConst.defaulti18N.notInitialized,\r\n        options_Title: json.options_Title ?? DatagridEnvironmentConst.defaulti18N.options_Title,\r\n        options_ToolsBar: json.options_ToolsBar ?? DatagridEnvironmentConst.defaulti18N.options_ToolsBar,\r\n        options_Menus: json.options_Menus ?? DatagridEnvironmentConst.defaulti18N.options_Menus,\r\n        options_GroupingColumn: json.options_GroupingColumn ?? DatagridEnvironmentConst.defaulti18N.options_GroupingColumn,\r\n        options_HeaderColumns: json.options_HeaderColumns ?? DatagridEnvironmentConst.defaulti18N.options_HeaderColumns,\r\n        options_FilteringColumns: json.options_FilteringColumns ?? DatagridEnvironmentConst.defaulti18N.options_FilteringColumns,\r\n        options_Messages: json.options_Messages ?? DatagridEnvironmentConst.defaulti18N.options_Messages,\r\n        options_Totals: json.options_Totals ?? DatagridEnvironmentConst.defaulti18N.options_Totals,\r\n        options_Footer: json.options_Footer ?? DatagridEnvironmentConst.defaulti18N.options_Footer,\r\n        columnMenu: json.columnMenu ?? DatagridEnvironmentConst.defaulti18N.columnMenu,\r\n        columnMenu_sorting: json.columnMenu_sorting ?? DatagridEnvironmentConst.defaulti18N.columnMenu_sorting,\r\n        columnMenu_sortAsc: json.columnMenu_sortAsc ?? DatagridEnvironmentConst.defaulti18N.columnMenu_sortAsc,\r\n        columnMenu_sortDesc: json.columnMenu_sortDesc ?? DatagridEnvironmentConst.defaulti18N.columnMenu_sortDesc,\r\n        footerTotalMenu: json.footerTotalMenu ?? DatagridEnvironmentConst.defaulti18N.footerTotalMenu,\r\n        footerTotalMenu_None: json.footerTotalMenu_None ?? DatagridEnvironmentConst.defaulti18N.footerTotalMenu_None,\r\n        footerTotalMenu_Sum: json.footerTotalMenu_Sum ?? DatagridEnvironmentConst.defaulti18N.footerTotalMenu_Sum,\r\n        footerTotalMenu_Avg: json.footerTotalMenu_Avg ?? DatagridEnvironmentConst.defaulti18N.footerTotalMenu_Avg,\r\n        footerTotalMenu_Min: json.footerTotalMenu_Min ?? DatagridEnvironmentConst.defaulti18N.footerTotalMenu_Min,\r\n        footerTotalMenu_Max: json.footerTotalMenu_Max ?? DatagridEnvironmentConst.defaulti18N.footerTotalMenu_Max,\r\n        dateFormat: json.dateFormat ?? DatagridEnvironmentConst.defaulti18N.dateFormat,\r\n        dateTimeFormat: json.dateTimeFormat ?? DatagridEnvironmentConst.defaulti18N.dateTimeFormat,\r\n        numberFormat: json.numberFormat ?? DatagridEnvironmentConst.defaulti18N.numberFormat,\r\n        loadedData: json.loadedData ?? DatagridEnvironmentConst.defaulti18N.loadedData,\r\n        loadedError: json.loadedError ?? DatagridEnvironmentConst.defaulti18N.loadedError,\r\n        loadingData: json.loadingData ?? DatagridEnvironmentConst.defaulti18N.loadingData,\r\n        constructionData: json.constructionData ?? DatagridEnvironmentConst.defaulti18N.constructionData,\r\n      };\r\n      DatagridEnvironmentConst.i18N = i18n;\r\n      localStorage.setItem(`csc-datagrid-language`, language);\r\n    } catch { }\r\n  }\r\n  protected setNotificationI18N(json: any, language: string) {\r\n    try {\r\n      let i18n: INotificationI18N = {\r\n        ok: json.ok ?? NotificationEnvironmentConst.defaulti18N.ok,\r\n        cancel: json.cancel ?? NotificationEnvironmentConst.defaulti18N.cancel,\r\n        retry: json.retry ?? NotificationEnvironmentConst.defaulti18N.retry,\r\n        yes: json.yes ?? NotificationEnvironmentConst.defaulti18N.yes,\r\n        no: json.no ?? NotificationEnvironmentConst.defaulti18N.no,\r\n        abort: json.abort ?? NotificationEnvironmentConst.defaulti18N.abort,\r\n        ignore: json.ignore ?? NotificationEnvironmentConst.defaulti18N.ignore,\r\n        continue: json.continue ?? NotificationEnvironmentConst.defaulti18N.continue,\r\n        tryAgain: json.tryAgain ?? NotificationEnvironmentConst.defaulti18N.tryAgain,\r\n      };\r\n      NotificationEnvironmentConst.i18N = i18n;\r\n      localStorage.setItem(`csc-notification-language`, language);\r\n    } catch { }\r\n  }\r\n  public setLanguage(language: string) {\r\n    localStorage.setItem(`csc-language`, language);\r\n    this._currentLanguage = language;\r\n\r\n    let jsonPathDirectoryI18N: string;\r\n    try {\r\n      jsonPathDirectoryI18N = CSCEnvironment.jsonPathDirectoryI18N;\r\n      if (!jsonPathDirectoryI18N.endsWith('/')) { jsonPathDirectoryI18N += '/'; }\r\n      fetch(`${jsonPathDirectoryI18N}${language.toLowerCase()}.json`).then(res => {\r\n        if (res.status == 404) { return {}; }\r\n        return res.json();\r\n      }).then((resp: any) => { this.setI18N(resp, language); });\r\n    } catch { }\r\n\r\n    try {\r\n      jsonPathDirectoryI18N = DatagridEnvironmentConst.jsonPathDirectoryI18N;\r\n      if (!jsonPathDirectoryI18N.endsWith('/')) { jsonPathDirectoryI18N += '/'; }\r\n      fetch(`${jsonPathDirectoryI18N}${language.toLowerCase()}.json`).then(res => {\r\n        if (res.status == 404) { return {}; }\r\n        return res.json();\r\n      }).then((resp: any) => { this.setDatagridI18N(resp, language); });\r\n    } catch { }\r\n\r\n    try {\r\n      jsonPathDirectoryI18N = NotificationEnvironmentConst.jsonPathDirectoryI18N;\r\n      if (!jsonPathDirectoryI18N.endsWith('/')) { jsonPathDirectoryI18N += '/'; }\r\n      fetch(`${jsonPathDirectoryI18N}${language.toLowerCase()}.json`).then(res => {\r\n        if (res.status == 404) { return {}; }\r\n        return res.json();\r\n      }).then((resp: any) => { this.setNotificationI18N(resp, language); });\r\n    } catch { }\r\n  }\r\n}\r\n","import { Component, ElementRef, inject, viewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\r\nimport { CSComponentsManagerService } from '../../managers/cscomponents-manager.service';\r\nimport { NotificationItemComponent } from '../notification/notification-item/notification-item.component';\r\nimport { INotificationOptions } from '../notification/interfaces/inotification-options';\r\nimport { IModalOptions } from '../modal/interfaces/imodal-options';\r\nimport { ModalComponent } from '../modal/modal.component';\r\nimport { PopupManagerService } from '../../managers/popup-manager/popup-manager.service';\r\n\r\n@Component({\r\n  selector: 'csc-popup-container',\r\n  imports: [],\r\n  templateUrl: './popup-container.component.html',\r\n  styleUrl: './popup-container.component.scss',\r\n  encapsulation: ViewEncapsulation.None\r\n})\r\nexport class PopupContainerComponent {\r\n\r\n  protected get hostElement(): ElementRef { return this._hostElement; }\r\n\r\n  protected get isModalContainsChild(): boolean { return this.popupModalContainer()?.length > 0; }\r\n  protected get isNotificationContainsChild(): boolean { return this.popupNotificationContainer()?.length > 0; }\r\n\r\n  protected popupDropdownList = viewChild.required<ElementRef>('popupDropdownList');\r\n  protected popupTooltip = viewChild.required<ElementRef>('popupTooltip');\r\n  protected popupModal = viewChild.required<ElementRef>('popupModal');\r\n  protected popupModalContainer = viewChild.required('popupModalContainer', { read: ViewContainerRef });\r\n  protected popupNotification = viewChild.required<ElementRef>('popupNotification');\r\n  protected popupNotificationContainer = viewChild.required('popupNotificationContainer', { read: ViewContainerRef });\r\n\r\n  constructor(\r\n    private _hostElement: ElementRef\r\n    , private _manager: PopupManagerService\r\n    , private _csManager: CSComponentsManagerService) { _manager.inject(this); }\r\n\r\n  public appendDropdownList(popup: any) { this.popupDropdownList()?.nativeElement.append(popup); }\r\n  public appendTooltip(popup: any) { this.popupTooltip()?.nativeElement.append(popup); }\r\n  public openModal(callbackfn?: (options: IModalOptions) => void): ModalComponent {\r\n    let cr = this.popupModalContainer().createComponent(ModalComponent);\r\n    let modal = cr.instance as ModalComponent\r\n    modal.onClose = (e: any) => {\r\n      var index = this.popupModalContainer().indexOf(cr.hostView);\r\n      if (index >= 0) { this.popupModalContainer().remove(index); }\r\n    }\r\n    return modal.open(callbackfn);\r\n  }\r\n  public showNotification(callbackfn?: (options: INotificationOptions) => void):NotificationItemComponent {\r\n    let cr = this.popupNotificationContainer().createComponent(NotificationItemComponent);\r\n    let notificationItem = cr.instance as NotificationItemComponent\r\n    notificationItem.onClose = (e: any) => {\r\n      var index = this.popupNotificationContainer().indexOf(cr.hostView);\r\n      if (index >= 0) { this.popupNotificationContainer().remove(index); }\r\n    }\r\n    return notificationItem.show(callbackfn);\r\n  }\r\n}\r\n","<div #popupDropdownList class=\"csc-popup-dropdown-list\"></div>\r\n<div #popupTooltip class=\"csc-popup-tooltip\"></div>\r\n<div #popupModal class=\"csc-popup-modal\" [class]=\"{'show':isModalContainsChild}\">\r\n    <ng-container #popupModalContainer></ng-container>\r\n</div>\r\n<div #popupNotification class=\"csc-popup-notification\" [class]=\"{'show':isNotificationContainsChild}\">\r\n    <ng-container #popupNotificationContainer></ng-container>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { PopupContainerComponent } from '../../components/popup-container/popup-container.component';\r\nimport { ModalComponent } from '../../components/modal/modal.component';\r\nimport { NotificationItemComponent } from '../../components/notification/notification-item/notification-item.component';\r\nimport { IModalOptions } from '../../components/modal/interfaces/imodal-options';\r\nimport { INotificationOptions } from '../../components/notification/interfaces/inotification-options';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class PopupManagerService {\r\n\r\n  private _popupContainer!: PopupContainerComponent;\r\n\r\n  public get popupContainer(): PopupContainerComponent { return this._popupContainer; }\r\n\r\n  constructor() { }\r\n\r\n  public inject(popup: any) {\r\n    if (this._popupContainer == undefined && popup instanceof PopupContainerComponent) { this._popupContainer = popup; }\r\n  }\r\n\r\n  public popupDropdownList(popup: any) { this.popupContainer.appendDropdownList(popup); }\r\n  public popupTooltip(popup: any) { this.popupContainer.appendTooltip(popup); }\r\n  public openModal(callbackfn?: (options: IModalOptions) => void): ModalComponent { return this.popupContainer.openModal(callbackfn); }\r\n  public showNotification(callbackfn?: (options: INotificationOptions) => void): NotificationItemComponent { return this.popupContainer.showNotification(callbackfn); }\r\n\r\n}\r\n","import { ChangeDetectorRef, Component, effect, ElementRef, HostListener, input, output, Version, viewChild } from '@angular/core';\r\nimport { IDropdownButtonEntrie } from './interfaces/idropdown-button-entrie';\r\nimport { PopupManagerService } from '../../managers/popup-manager/popup-manager.service';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { LoaderType } from '../../components/loader/types/loader-type';\r\nimport { LoaderComponent } from \"../../components/loader/loader.component\";\r\nimport { SortDirectionType } from './types/sort-direction-type';\r\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\r\nimport { FormBaseComponent } from '../../form-components/form-base/form-base.component';\r\n\r\n@Component({\r\n  selector: 'csc-dropdown-button',\r\n  imports: [LoaderComponent],\r\n  templateUrl: './dropdown-button.component.html',\r\n  styleUrl: './dropdown-button.component.scss',\r\n  providers: [\r\n    { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: DropdownButtonComponent }\r\n    , { provide: NG_VALIDATORS, multi: true, useExisting: DropdownButtonComponent }\r\n  ]\r\n})\r\nexport class DropdownButtonComponent extends FormBaseComponent implements ControlValueAccessor, Validator {\r\n\r\n  public override readonly version: Version = new Version(\"2.1.1\");\r\n\r\n  private _expanded: boolean = false;\r\n  private _loading: boolean = false;\r\n  private _datasQuerie?: any[] = undefined;\r\n  private _dataEntries: IDropdownButtonEntrie[] = [];\r\n  private _placeHolder: string = 'Select an object';\r\n  private _loaderType: LoaderType = 'dots';\r\n  private _popupPosition = { bottom: 0, height: 0, left: 0, right: 0, top: 0, width: 0, x: 0, y: 0 };\r\n  private _htmlField?: string = undefined;\r\n  private _textField?: string = undefined;\r\n  private _dataField?: string = undefined;\r\n  private _groupField?: string = undefined;\r\n  private _sortByField?: string = undefined;\r\n  private _sortDirection: SortDirectionType = 'none';\r\n  private _defaultSelectedValue?: string = undefined;\r\n\r\n  protected get popupPosition() { return this._popupPosition };\r\n  protected get loading(): boolean { return this._loading };\r\n  protected get epxanded(): boolean { return this._expanded; }\r\n  protected get maxSizeList(): number { return this.input_MaxSizeList(); }\r\n\r\n  public get dataEntries() { return this._dataEntries; }\r\n  public get placeHolder() { return this._placeHolder; }\r\n  public get loaderType() { return this._loaderType; }\r\n  public get selectedIndex(): number | undefined { return this.selectedItem?.index; }\r\n  public get selectedItem(): IDropdownButtonEntrie | undefined { return this._dataEntries.find(x => x.selected); }\r\n  public get selectedValue(): any { return this.selectedItem?.value ?? undefined; }\r\n\r\n  public input_PlaceHolder = input<string>('Select an object', { alias: 'PlaceHolder' });\r\n  public input_LoaderType = input<LoaderType>('dots', { alias: 'LoaderType' });\r\n  public input_DataEntries = input<any[]>([], { alias: 'DataEntries' });\r\n  public input_HtmlField = input<string>('html', { alias: 'HtmlField' });\r\n  public input_TextField = input<string>('text', { alias: 'TextField' });\r\n  public input_DataField = input<string>('value', { alias: 'DataField' });\r\n  public input_GroupField = input<string | undefined>(undefined, { alias: 'GroupField' });\r\n  public input_SortByField = input<string>('html', { alias: 'SortByField' });\r\n  public input_SortDirection = input<SortDirectionType>('none', { alias: 'SortDirection' });\r\n  public input_DefaultSelectedValue = input(undefined, { alias: 'DefaultSelectedValue', transform: (value: string) => { return value; } });\r\n  public input_MaxSizeList = input<number>(-1, { alias: 'MaxSizeList' });\r\n\r\n  public output_SelectedValue = output<any>({ alias: 'selectedValue' });\r\n  public output_SelectedItem = output<any>({ alias: 'selectedItem' });\r\n  public output_SelectedIndex = output<any>({ alias: 'selectedIndex' });\r\n  public output_StartLoading = output<any>({ alias: 'startLoading' });\r\n  public output_LoadCompleted = output<any>({ alias: 'loadCompleted' });\r\n\r\n  public dropdownButton = viewChild<ElementRef>('dropdownButton');\r\n  public dropdownOverlay = viewChild<ElementRef>('dropdownOverlay');\r\n  public dropdownMenu = viewChild<ElementRef>('dropdownMenu');\r\n\r\n  @HostListener('window:resize', ['$event']) onResize(event: any) { this.close(); }\r\n  @HostListener('window:scroll', ['$event']) onScroll(event: any) { this.close(); }\r\n\r\n  constructor(\r\n    hostElement: ElementRef\r\n    , private popupManager: PopupManagerService\r\n    , private httpClient: HttpClient\r\n    , private cdRef: ChangeDetectorRef) {\r\n    super(hostElement);\r\n    effect((effect) => {\r\n      this._placeHolder = this.input_PlaceHolder();\r\n      this._loaderType = this.input_LoaderType();\r\n      this._htmlField = this.input_HtmlField();\r\n      this._textField = this.input_TextField();\r\n      this._dataField = this.input_DataField();\r\n      this._groupField = this.input_GroupField();\r\n      this._sortByField = this.input_SortByField();\r\n      this._sortDirection = this.input_SortDirection();\r\n      if (this.input_DataEntries() != undefined && this.input_DataEntries() != this._datasQuerie) {\r\n        this._datasQuerie = this.input_DataEntries();\r\n        this.loadData(this._datasQuerie as any[]);\r\n      }\r\n      if (this.input_DefaultSelectedValue() != undefined && this.input_DefaultSelectedValue() != this._defaultSelectedValue && this.selectedValue == undefined) {\r\n        this._defaultSelectedValue = this.input_DefaultSelectedValue();\r\n        this.writeValue(this._defaultSelectedValue);\r\n      }\r\n    });\r\n  }\r\n  protected getItemsGroup(): string[] {    return this._dataEntries.map((x) => x.group).filter((value, index, array) => array.indexOf(value) === index);  }\r\n  protected getItemsByGroup(group?: string): IDropdownButtonEntrie[] { return this._dataEntries.filter(x => (group == undefined || group == '') ? (x.group == undefined || x.group == '') : x.group == group); }\r\n\r\n  protected elementClick(event: any, item: IDropdownButtonEntrie, value: any, index: number) {\r\n    if (this.loading || this.isDisabled) return;\r\n    this.setSelectedValue(event, item, value, index);\r\n    this.close();\r\n  }\r\n  protected getHtmlOfSelectedItem() {\r\n    var elem = this.selectedItem;\r\n    if (elem == undefined && this._dataEntries.length > 0) { elem = this._dataEntries[0]; elem.selected = true; }\r\n    return (elem != undefined) ? elem.html : undefined\r\n  }\r\n  protected clearSelectedItems() { this._dataEntries.filter(x => x.selected == true).forEach((e, i) => { e.selected == false; }); }\r\n  protected toggle() {\r\n    if (this.loading || this.isDisabled) return;\r\n    if (!this._expanded) { this.open(); }\r\n    else { this.close(); }\r\n  }\r\n  protected open() {\r\n    this._expanded = true;\r\n    (this.hostElement.nativeElement as HTMLElement).setAttribute('aria-expanded', this._expanded.toString());\r\n  }\r\n  protected close() {\r\n    this._expanded = false;\r\n    (this.hostElement.nativeElement as HTMLElement).setAttribute('aria-expanded', this._expanded.toString());\r\n  }\r\n  protected menuPosition(e?: any) {\r\n    if (this.dropdownButton() != undefined && this.dropdownOverlay() != undefined && this.dropdownMenu() != undefined) {\r\n      const buttonRect = (this.dropdownButton()?.nativeElement as HTMLElement).getBoundingClientRect();\r\n      const overlayRect = (this.dropdownOverlay()?.nativeElement as HTMLElement).getBoundingClientRect();\r\n      const menuRect = (this.dropdownMenu()?.nativeElement as HTMLElement).getBoundingClientRect();\r\n\r\n      let overlayElem = this.dropdownOverlay()?.nativeElement as HTMLElement;\r\n      let menuElem = this.dropdownMenu()?.nativeElement as HTMLElement;\r\n      let top: number = 0;\r\n      let left: number = 0;\r\n      let width: number = 0;\r\n\r\n      //#region top\r\n      if (menuRect.bottom > overlayRect.height) { top = buttonRect.top - menuRect.height; }\r\n      else { top = buttonRect.bottom; }\r\n      //#endregion\r\n      //#region width\r\n      if (buttonRect.width > menuRect.width) { width = buttonRect.width; }\r\n      else { width = menuRect.width; }\r\n      //#endregion\r\n      //#region left \r\n      if ((buttonRect.left + menuRect.width) > overlayRect.width) { left = buttonRect.right - menuRect.width; }\r\n      else { left = buttonRect.left; }\r\n      //#endregion\r\n\r\n      menuElem.style.top = `${top}px`;\r\n      menuElem.style.left = `${left}px`;\r\n      //menuElem.style.width = `${width}px`;\r\n\r\n      if (this.popupManager != undefined) { this.popupManager.popupDropdownList(overlayElem); }\r\n    }\r\n  }\r\n  protected setSelectedValue(event: any, item: IDropdownButtonEntrie, value: any, index: number) {\r\n    this._dataEntries.forEach((e, i) => { e.selected = false; });\r\n    item.selected = true;\r\n    if (!this.output_SelectedValue['destroyed']) { this.output_SelectedValue.emit({ event: event, value: value }); }\r\n    if (!this.output_SelectedItem['destroyed']) { this.output_SelectedItem.emit({ event: event, item: item }); }\r\n    if (!this.output_SelectedIndex['destroyed']) { this.output_SelectedIndex.emit({ event: event, index: index }); }\r\n    if (!this.output_Change['destroyed']) { this.output_Change.emit({ event: event, traget: this.hostElement, item: item, value: value, index: index }); }\r\n    this.onChange(value);\r\n  }\r\n  protected getBackdropTheme() {\r\n    var elemDatagrid = (this.hostElement.nativeElement as HTMLElement).closest('csc-datagrid');\r\n    var themeDatagrid = elemDatagrid?.getAttribute('data-theme');\r\n    if (themeDatagrid != undefined) { return `datagrid-${themeDatagrid}`; }\r\n    return '';\r\n  }\r\n\r\n  public override writeValue(obj: any): void {\r\n    super.writeValue(obj);\r\n    setTimeout(() => {\r\n      var value = obj;\r\n      var elem = this._dataEntries.find(x => x.value == value);\r\n      if (elem != undefined) { this.setSelectedValue({ target: this.hostElement.nativeElement }, elem, value, elem.index); }\r\n    }, 100);\r\n  }\r\n\r\n  public isSelected() {\r\n    var res = false;\r\n    if (this._dataEntries != undefined) { res = this._dataEntries.filter(x => x.selected == true).length > 0; }\r\n    return res;\r\n  }\r\n\r\n  public setItems(value: IDropdownButtonEntrie[]) { this._dataEntries = value; }\r\n  public showLoading(value: boolean) {\r\n    this._loading = value;\r\n    (this.hostElement.nativeElement as HTMLElement).setAttribute('aria-busy', this._loading.toString());\r\n  }\r\n  public loadUrl(url: string): void;\r\n  public loadUrl(url: string, _dataField?: string, _textField?: string, _htmlField?: string, _sortByField?: string, _sortDirection?: SortDirectionType): void;\r\n  public loadUrl(url: string, _httpParams?: HttpParams): void;\r\n  public loadUrl(url: string, _httpParams: HttpParams, _dataField?: string, _textField?: string, _htmlField?: string, _sortByField?: string, _sortDirection?: SortDirectionType): void;\r\n  public loadUrl(url: string, params_dataField?: HttpParams | string, _value2?: string, _value3?: string, _value4?: string, _value5?: string | SortDirectionType, _value6?: SortDirectionType): void {\r\n    this.showLoading(true);\r\n    setTimeout(() => { this.showLoading(false); }, 3000);\r\n    var _httpParams: HttpParams | undefined = undefined;\r\n    if (params_dataField instanceof HttpParams) { _httpParams = params_dataField as HttpParams; }\r\n    if (_httpParams == undefined || _httpParams == null) { _httpParams = new HttpParams(); }\r\n    this.httpClient.get(url, { params: _httpParams }).subscribe({\r\n      next: res => {\r\n        if (params_dataField instanceof HttpParams) { this.loadData(res as any[], _value2, _value3, _value4, _value5, _value6); }\r\n        else { this.loadData(res as any[], params_dataField, _value2, _value3, _value4, _value5 as SortDirectionType); }\r\n      },\r\n      error: err => { this.error('loadUrl', 'Dowloading error...'); this.showLoading(false); }\r\n    });\r\n  }\r\n  public loadData(\r\n    _data: any[]\r\n    , _dataField?: string\r\n    , _textField?: string\r\n    , _htmlField?: string\r\n    , _groupField?: string\r\n    , _sortByField?: string\r\n    , _sortDirection?: SortDirectionType): IDropdownButtonEntrie[] {\r\n    this.showLoading(true);\r\n    this.output_StartLoading.emit(true);\r\n    this.clearSelectedItems()\r\n\r\n    var dataField = (_dataField ?? this._dataField) ?? 'value';\r\n    var textField = (_textField ?? this._textField) ?? dataField;\r\n    var htmlField = (_htmlField ?? this._htmlField) ?? textField;\r\n    var groupField = _groupField ?? this._groupField;\r\n    var sortByField = (_sortByField ?? this._sortByField) ?? htmlField;\r\n    var sortDirection = _sortDirection ?? this._sortDirection;\r\n\r\n    var res: IDropdownButtonEntrie[] = []\r\n    if (Array.isArray(_data) && _data != undefined && _data.length > 0) {\r\n      try {\r\n        var datas: any[] = [];\r\n        if (Array.isArray(_data[0])) { _data.forEach((e, i) => { datas.push(e); }); }\r\n        else { datas.push(_data); }\r\n        datas.forEach((e, i) => {\r\n          let ent: IDropdownButtonEntrie[] = this.constructionEntries(e, dataField, textField, htmlField, sortByField, sortDirection, groupField);\r\n          if (i > 0 && ent.length > 0) { ent[0].divider = true; }\r\n          res = res.concat(ent);\r\n        });\r\n      } catch (ex) { this.error(`loadData`, ex); }\r\n    }\r\n    this._dataEntries = res;\r\n    this.showLoading(false);\r\n    this.output_LoadCompleted.emit(true);\r\n    this.writeValue(this.value);\r\n    return res;\r\n  }\r\n  private constructionEntries(\r\n    _data: any[]\r\n    , _dataField: string\r\n    , _textField: string\r\n    , _htmlField: string\r\n    , _sortByField: string\r\n    , _sortDirection: SortDirectionType\r\n    , _groupField?: string): IDropdownButtonEntrie[] {\r\n    var data: any[] = _data;\r\n    var res: IDropdownButtonEntrie[] = []\r\n    var dataField = _dataField;\r\n    var textField = _textField;\r\n    var htmlField = _htmlField;\r\n    var groupField = _groupField;\r\n    var sortByField = _sortByField;\r\n    var sortDirection = _sortDirection;\r\n    var group: string[] = [];\r\n    if (groupField != undefined) {\r\n      group = data.map((x) => x[groupField as string] ?? '').filter((value, index, array) => array.indexOf(value) === index);\r\n      group.sort((a: any, b: any) => { return a < b ? -1 : a > b ? 1 : 0 });\r\n    }\r\n    if (group.length > 1) {\r\n      group.forEach((e, i) => {\r\n        let ent: IDropdownButtonEntrie[] = this.constructionEntries(\r\n          data.filter(x => e == '' ? (x[groupField as string] == undefined || x[groupField as string] == '') : e == x[groupField as string])\r\n          , dataField\r\n          , textField\r\n          , htmlField\r\n          , sortByField\r\n          , sortDirection\r\n          , groupField\r\n        );\r\n        //if (i > 0 && ent.length > 0) { ent[0].divider = true; }\r\n        res = res.concat(ent);\r\n      });\r\n    } else {\r\n      if (sortDirection != 'none') {\r\n        var firstElement = _data[0];\r\n        switch (typeof (firstElement)) {\r\n          case 'bigint':\r\n          case 'number':\r\n            if (sortDirection == 'ascending') { data.sort((a: any, b: any) => a - b); }\r\n            else if (sortDirection == 'descending') { data.sort((b: any, a: any) => b - a); }\r\n            break;\r\n          case 'boolean':\r\n            if (sortDirection == 'ascending') { data.sort((a: any, b: any) => a ? 1 : 0); }\r\n            else if (sortDirection == 'descending') { data.sort((b: any, a: any) => b ? 1 : 0); }\r\n            break;\r\n          case 'string':\r\n            if (sortDirection == 'ascending') { data.sort((a: any, b: any) => a < b ? -1 : a > b ? 1 : 0); }\r\n            else if (sortDirection == 'descending') { data.sort((b: any, a: any) => a < b ? -1 : a > b ? 1 : 0); }\r\n            break;\r\n          case 'object':\r\n            if (Object.keys(firstElement).indexOf(sortByField) > -1) {\r\n              if (sortDirection == 'ascending') { data.sort((a: any, b: any) => a[sortByField] < b[sortByField] ? -1 : a[sortByField] > b[sortByField] ? 1 : 0); }\r\n              else if (sortDirection == 'descending') { data.sort((b: any, a: any) => a[sortByField] < b[sortByField] ? -1 : a[sortByField] > b[sortByField] ? 1 : 0); }\r\n            }\r\n            break;\r\n        }\r\n      }\r\n      Object.entries(data).forEach(\r\n        ([key, value], i) => {\r\n          let injectable: boolean = true;\r\n          switch (typeof (value)) {\r\n            case 'bigint':\r\n            case 'boolean':\r\n            case 'number':\r\n            case 'string':\r\n              res.push({ index: i, html: value.toString(), text: value.toString(), value: value, selected: false, divider: false, tag: value });\r\n              break;\r\n            case 'object':\r\n              if (this.checkDataIsIDropdownButtonEntrie(value)) { res.push(value); }\r\n              else {\r\n                var keys = Object.keys(value);\r\n                if (keys.indexOf(htmlField) == -1 || keys.indexOf(textField) == -1 || keys.indexOf(dataField) == -1) { injectable = false; }\r\n                if (injectable) {\r\n                  var groupName = (groupField != undefined) ? (value as any)[groupField] : undefined;\r\n                  res.push({\r\n                    index: i\r\n                    , html: (value as any)[htmlField]\r\n                    , text: (value as any)[textField]\r\n                    , value: (value as any)[dataField]\r\n                    , selected: false\r\n                    , divider: false\r\n                    , group: groupName\r\n                    , tag: value\r\n                  });\r\n                }\r\n              }\r\n              break;\r\n          }\r\n        });\r\n    }\r\n    return res;\r\n  }\r\n  private checkDataIsIDropdownButtonEntrie(obj: any): boolean {\r\n    var res = false;\r\n    if (typeof (obj) == 'object') {\r\n      res = true;\r\n      if (('index' in obj) == false) { res = false; }\r\n      if (('text' in obj) == false) { res = false; }\r\n      if (('value' in obj) == false) { res = false; }\r\n      if (('html' in obj) == false) { res = false; }\r\n      if (('selected' in obj) == false) { res = false; }\r\n      if (('divider' in obj) == false) { res = false; }\r\n    }\r\n    return res;\r\n  }\r\n  public clearData() { this._dataEntries = []; }\r\n}\r\n","<a title=\"{{this.placeHolder}}\" #dropdownButton role=\"combobox\" [class]=\"{'loading':loading}\" (click)=\"toggle()\">\r\n    @if(isSelected()){<label [innerHTML]=\"getHtmlOfSelectedItem()\"></label>}\r\n    @else { <label class=\"csc-placeholder\" [innerHTML]=\"placeHolder\"></label>}\r\n</a>\r\n@if(loading){<csc-loader [LoaderType]=\"loaderType\"></csc-loader>}\r\n@if(epxanded){\r\n<div #dropdownOverlay role=\"backdrop\" (click)=\"close()\" [attr.data-theme]=\"getBackdropTheme()\">\r\n    <div #dropdownMenu role=\"list\" (click)=\"$event.stopPropagation()\"\r\n        [style.max-height]=\"(maxSizeList==-1)?'100%':maxSizeList+'px'\">\r\n        @if(getItemsGroup()==undefined || getItemsGroup().length==0){ {{menuPosition()}} }\r\n        @else{\r\n        @for (itemGroup of getItemsGroup(); track $index; let lastGroup=$last) {\r\n        @if($index>0){\r\n        <hr /> }\r\n        @if(itemGroup!=undefined && itemGroup!=''){\r\n        <div role=\"group\">\r\n            <span class=\"csc-title-group\">{{itemGroup}}</span>\r\n            @for (item of getItemsByGroup(itemGroup); track $index; let last=$last) {\r\n            @if(item.divider){\r\n            <hr>}\r\n            <a role=\"button\" role=\"listitem\" [title]=\"item.text\" [innerHTML]=\"item.html\"\r\n                [ariaValueText]=\"item.value.toString()\" [ariaSelected]=\"item.value==this.selectedValue\"\r\n                (click)=\"elementClick($event, item, item.value, item.index)\"></a>\r\n            }\r\n        </div>\r\n        }\r\n        @else{\r\n        @for (item of getItemsByGroup(itemGroup); track $index; let last=$last) {\r\n        @if(item.divider){\r\n        <hr>}\r\n        <a role=\"button\" role=\"listitem\" [title]=\"item.text\" [innerHTML]=\"item.html\"\r\n            [ariaValueText]=\"item.value.toString()\" [ariaSelected]=\"item.value==this.selectedValue\"\r\n            (click)=\"elementClick($event, item, item.value, item.index)\"></a>\r\n        }\r\n        }\r\n        @if(lastGroup){ {{menuPosition()}} }\r\n        }\r\n        }\r\n    </div>\r\n</div>\r\n}","import { Component, ElementRef, input, Version } from '@angular/core';\r\nimport { ComponentBaseComponent } from '../../component-base/component-base.component';\r\n\r\n@Component({\r\n  selector: 'csc-datagrid-toggle-button',\r\n  imports: [],\r\n  templateUrl: './datagrid-toggle-button.component.html',\r\n  styleUrl: './datagrid-toggle-button.component.scss'\r\n})\r\nexport class DatagridToggleButtonComponent extends ComponentBaseComponent{\r\n\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  private _checked: boolean = false;\r\n\r\n  text = input<string>('', { alias: 'Text' });\r\n  value = input<any>(undefined, { alias: 'Value' });\r\n  checked = input(false, {\r\n    alias: 'Checked', transform: (value: boolean) => {\r\n      this.setChecked(value);\r\n      return value;\r\n    }\r\n  });\r\n\r\n  constructor(hostElement: ElementRef) {\r\n    super(hostElement);\r\n    (hostElement.nativeElement as HTMLElement).addEventListener('click', (event) => {\r\n      event.stopImmediatePropagation();\r\n      this.setChecked(!this._checked);\r\n      this.output_Click.emit({ event: event, checked: this._checked, value: this.value() })\r\n    });\r\n  }\r\n  public getValue() { return this.value(); }\r\n  public getChecked() { return this._checked; }\r\n  public setChecked(value: boolean) {\r\n    if (this._checked != value) {\r\n      this._checked = value;\r\n      (this.hostElement.nativeElement as HTMLElement).ariaChecked = value.toString();\r\n      this.output_Change.emit({ event: this, checked: this._checked, value: this.value() })\r\n    }\r\n  }\r\n}\r\n","{{this.text()}}","import { Component, effect, ElementRef, HostListener, input, Version, viewChild } from '@angular/core';\r\nimport { CalendarViewType } from './types/calendar-view-type';\r\nimport { DateTime } from '../../date-time';\r\nimport { IDatetimePickerRowDays } from './interfaces/idatetime-picker-row-days';\r\nimport { IconComponent } from '../../components/icon/icon.component';\r\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\r\nimport { FormBaseComponent } from '../form-base/form-base.component';\r\nimport { PopupManagerService } from '../../managers/popup-manager/popup-manager.service';\r\n\r\n@Component({\r\n  selector: 'csc-datetime-picker',\r\n  imports: [IconComponent],\r\n  templateUrl: './datetime-picker.component.html',\r\n  styleUrl: './datetime-picker.component.scss',\r\n  providers: [\r\n    { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: DatetimePickerComponent }\r\n    , { provide: NG_VALIDATORS, multi: true, useExisting: DatetimePickerComponent }\r\n  ]\r\n})\r\nexport class DatetimePickerComponent extends FormBaseComponent implements ControlValueAccessor, Validator {\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  private _expanded: boolean = false;\r\n\r\n  private _calendarDays: IDatetimePickerRowDays[] = [];\r\n  private _firstDayOfWek: number = 1;\r\n  private _currentTimes: number[] = [0, 0];\r\n  private _defaultValue: DateTime = DateTime.now();\r\n\r\n  protected currentDate: DateTime = DateTime.now();\r\n  protected currentCalendarView: CalendarViewType = 'days';\r\n  protected selectedDate?: DateTime = undefined;\r\n  protected selectedValue?: DateTime = undefined;\r\n  protected selectedDateUTC?: DateTime = undefined;\r\n  protected timeHour: number = 0;\r\n  protected timeMinute: number = 0;\r\n  protected isOpenCalendar: boolean = false;\r\n  protected valueUTC: string = \"\";\r\n  protected get isAutoClose(): boolean {\r\n    if (!this.input_autoClose()) { return false; }\r\n    else if (this.input_showTime()) { return false; }\r\n    else { return true; }\r\n  }\r\n  protected get currentMonth(): number { return this.getCurrentMonth(); };\r\n  protected get currentYear(): number { return this.currentDate.year };\r\n  protected get currentTitleCalendar(): string {\r\n    let title: string = '';\r\n    switch (this.currentCalendarView) {\r\n      case 'days':\r\n        title = `${this.getMonthName(this.currentMonth)} ${this.currentYear.toString()}`;\r\n        break;\r\n      case 'months':\r\n        title = this.currentYear.toString();\r\n        break;\r\n      case 'years':\r\n        title = (this.currentDecadeYear.length > 0) ? `${this.currentDecadeYear[this.currentDecadeYear.length - 1]}/${this.currentDecadeYear[0]}` : '';\r\n        break;\r\n    }\r\n    return title;\r\n  }\r\n  protected get formatSelected(): string { return this.input_showTime() ? this.input_formatDateTimeSelected() : this.input_formatDateSelected(); }\r\n  protected get epxanded(): boolean { return this._expanded; }\r\n\r\n  public get datetimeValue(): DateTime { return (this.value != undefined) ? new DateTime(this.value) : DateTime.now(); }\r\n  public get formatedValue(): string {\r\n    if (this.value == undefined) { return ''; }\r\n    return this.input_formatValue() == '' ? this.value.toLocaleISOString() : this.value.toString(this.input_formatValue());\r\n  }\r\n\r\n  public currentDecadeYear: number[] = [];\r\n  public input_value = input<DateTime>(undefined, { alias: 'Value' });\r\n  public input_showTime = input(false, { alias: 'ShowTime' });\r\n  public input_showCancelButton = input(true, { alias: 'ShowCancelButton' });\r\n  public input_autoClose = input(true, { alias: 'AutoClose' });\r\n  public input_formatValue = input('', { alias: 'FormatValue' });\r\n  public input_formatDateSelected = input('EEE dd MMMM yyyy', { alias: 'FormatDateSelected' });\r\n  public input_formatDateTimeSelected = input('EEE dd MMMM yyyy - HH:mm', { alias: 'FormatDateTimeSelected' });\r\n  public input_calendarView = input<CalendarViewType>('days', { alias: 'CalendarView' });\r\n  public input_placeholder = input('Enter your date', { alias: 'Placeholder' });\r\n  public input_iconStart = input('', { alias: 'IconStart' });\r\n  public input_inputGroupStart = input('', { alias: 'InputGroupStart' });\r\n  public input_cultureInfo = input('fr-FR', { alias: 'CultureInfo' });\r\n\r\n  public txtValue = viewChild<ElementRef>('txtValue');\r\n\r\n  public dropdownButton = viewChild<ElementRef>('dropdownButton');\r\n  public dropdownOverlay = viewChild<ElementRef>('dropdownOverlay');\r\n  public dropdownMenu = viewChild<ElementRef>('dropdownMenu');\r\n\r\n  @HostListener('window:resize', ['$event']) onResize(event: any) { this.close(); }\r\n  @HostListener('window:scroll', ['$event']) onScroll(event: any) { this.close(); }\r\n\r\n  constructor(hostElement: ElementRef, private popupManager: PopupManagerService) {\r\n    super(hostElement);\r\n    (hostElement.nativeElement as HTMLElement).setAttribute('aria-expanded', 'false');\r\n    effect(() => {\r\n      if (this.input_value() != undefined) {\r\n        if (this.value == undefined || this.value == null || this.value == '') {\r\n          setTimeout(() => {\r\n            this.writeValue(this.input_value());\r\n            this.onChange(this.input_formatValue() == '' ? this.value.toLocaleISOString() : this.value.toString(this.input_formatValue()));\r\n          }, 1);\r\n        }\r\n      } else if (this.value == undefined || this.value == null || this.value == '') {\r\n        if (this.required) {\r\n          setTimeout(() => {\r\n            this.writeValue(this._defaultValue);\r\n            this.onChange(this.input_formatValue() == '' ? this.value.toLocaleISOString() : this.value.toString(this.input_formatValue()));\r\n          }, 1);\r\n        }\r\n        else { this.init(this._defaultValue); }\r\n      }\r\n    });\r\n  }\r\n\r\n  public override writeValue(obj: any): void {\r\n    super.writeValue(obj);\r\n    this.init(obj);\r\n    (this.txtValue() as ElementRef).nativeElement.value = (obj as DateTime).toString(this.formatSelected);\r\n  }\r\n\r\n  private init(obj: any) {\r\n    var value = DateTime.now();\r\n    if (obj != undefined) { value = new DateTime(obj); }\r\n    //this._datetimeValue = value;\r\n    this.currentDate = value;\r\n    if (this.input_showTime()) { this._currentTimes = [this.currentDate.hours, this.currentDate.minutes]; }\r\n    else { this._currentTimes = [0, 0]; }\r\n    this.moveDate(value);\r\n    this.setDecadeYear(value.year);\r\n    //(this.txtValue() as ElementRef).nativeElement.value = value.toString(this.formatSelected);\r\n    this.currentCalendarView = this.input_calendarView();\r\n  }\r\n\r\n  protected getBackdropTheme() {\r\n    var elemDatagrid = (this.hostElement.nativeElement as HTMLElement).closest('csc-datagrid');\r\n    var themeDatagrid = elemDatagrid?.getAttribute('data-theme');\r\n    if (themeDatagrid != undefined) { return `datagrid-${themeDatagrid}`; }\r\n    return '';\r\n  }\r\n  protected selectDay(value: DateTime) {\r\n    this.selectedDate = value;\r\n    this.moveDate(value);\r\n    if (this.isAutoClose) { this.validateCalendar(); }\r\n    else if (this.input_showTime()) { this.changeCalendarView('times'); }\r\n  }\r\n  protected downMonth() { this.moveDate(this.currentDate.addMonths(-1)); }\r\n  protected upMonth() { this.moveDate(this.currentDate.addMonths(1)); }\r\n  protected getCurrentMonth(): number { return this.currentDate.month; }\r\n  protected getMonthName(num: number) { return new DateTime(1970, num, 1).setLocale(this.input_cultureInfo()).monthLongName; }\r\n  protected selectMonth(value: number) {\r\n    this.currentDate.setMonth(value);\r\n    this.changeCalendarView('days');\r\n    this.createCalendarDays();\r\n  }\r\n  protected downYear() { this.moveDate(this.currentDate.addYears(-1)); }\r\n  protected upYear() { this.moveDate(this.currentDate.addYears(1)); }\r\n  protected downDecadeYear() {\r\n    this.setDecadeYear((this.currentDecadeYear.length > 0) ? this.currentDecadeYear[this.currentDecadeYear.length - 1] : this.currentYear);\r\n  }\r\n  protected upDecadeYear() {\r\n    this.setDecadeYear((this.currentDecadeYear.length > 0) ? this.currentDecadeYear[0] : this.currentYear);\r\n  }\r\n  protected getCurrentDecadeRange(start: number, end: number) {\r\n    return this.currentDecadeYear.filter((x, i) => (i >= start && i <= end));\r\n  }\r\n  protected setDecadeYear(target: number) {\r\n    let decadeYear: number[] = [];\r\n    for (var i = (target - 5) + 9; i > (target - 5); i--) {\r\n      decadeYear.push(i);\r\n    }\r\n    this.currentDecadeYear = decadeYear;\r\n  }\r\n  protected selectYear(value: number) {\r\n    this.setDecadeYear(value);\r\n    this.currentDate.setYear(value);\r\n    this.changeCalendarView('months');\r\n  }\r\n  protected getCurrentHour() {\r\n    var s = this._currentTimes[0].toString();\r\n    if (s.length > 1) { return s; }\r\n    return s = `0${s}`;\r\n  }\r\n  protected upHour() {\r\n    var value = this._currentTimes[0] + 1;\r\n    if (value > 23) { value = 0; }\r\n    this._currentTimes[0] = value;\r\n  }\r\n  protected downHour() {\r\n    var value = this._currentTimes[0] - 1;\r\n    if (value < 0) { value = 23; }\r\n    this._currentTimes[0] = value;\r\n  }\r\n  protected getCurrentMinute() {\r\n    var s = this._currentTimes[1].toString();\r\n    if (s.length > 1) { return s; }\r\n    return s = `0${s}`;\r\n  }\r\n  protected upMinute() {\r\n    var value = this._currentTimes[1] + 1;\r\n    if (value > 59) { value = 0; }\r\n    this._currentTimes[1] = value;\r\n  }\r\n  protected downMinute() {\r\n    var value = this._currentTimes[1] - 1;\r\n    if (value < 0) { value = 59; }\r\n    this._currentTimes[1] = value;\r\n  }\r\n  protected gotoToday() {\r\n    this.moveDate(DateTime.now());\r\n    this.changeCalendarView('days');\r\n  }\r\n  protected getCalendarDays(): IDatetimePickerRowDays[] { return this._calendarDays; }\r\n  protected getCalendarHeaderDays(): DateTime[] {\r\n    return (this._calendarDays.length > 0) ? this._calendarDays[0].values : [];\r\n  }\r\n  protected createCalendarDays() {\r\n    let value: DateTime = this.currentDate;\r\n    let dtTarget: DateTime = new DateTime(value.year, value.month, 1);\r\n    var dayStart = (dtTarget.dayOfWeek * -1) + this._firstDayOfWek;\r\n    let dtStart: DateTime = dtTarget.addDays(dayStart - 1);\r\n    let dtEnd: DateTime = new DateTime(value.year, value.month, value.daysInMonth);\r\n    var dayEnd = 6 - dtEnd.dayOfWeek + this._firstDayOfWek;\r\n    dtEnd = dtEnd.addDays(dayEnd);\r\n    let daysRows: IDatetimePickerRowDays[] = [];\r\n    let iRow: number = 0;\r\n    let dtWhile: DateTime = dtStart;\r\n    while (dtWhile.dateJS < dtEnd.dateJS) {\r\n      let daysRow: DateTime[] = [];\r\n      for (var i = 0; i < 7; i++) {\r\n        dtWhile = dtWhile.addDays(1);\r\n        daysRow.push(dtWhile);\r\n      }\r\n      iRow++;\r\n      daysRows.push({ index: iRow, values: daysRow });\r\n    }\r\n    this._calendarDays = daysRows;\r\n  }\r\n  protected moveDate(value: DateTime) {\r\n    this.currentDate = new DateTime(value.year, value.month, 1, value.hours, value.minutes, value.seconds);\r\n    this.createCalendarDays();\r\n  }\r\n  protected getNow(): DateTime { return DateTime.now(); }\r\n\r\n  protected menuPosition() {\r\n    if (this.dropdownButton() != undefined && this.dropdownOverlay() != undefined && this.dropdownMenu() != undefined) {\r\n      const hostElementRect = (this.hostElement.nativeElement as HTMLElement).getBoundingClientRect();\r\n      const buttonRect = (this.dropdownButton()?.nativeElement as HTMLElement).getBoundingClientRect();\r\n      const overlayRect = (this.dropdownOverlay()?.nativeElement as HTMLElement).getBoundingClientRect();\r\n      const menuRect = (this.dropdownMenu()?.nativeElement as HTMLElement).getBoundingClientRect();\r\n\r\n      let overlayElem = this.dropdownOverlay()?.nativeElement as HTMLElement;\r\n      let menuElem = this.dropdownMenu()?.nativeElement as HTMLElement;\r\n      let top: number = 0;\r\n      let left: number = 0;\r\n      let width: number = 0;\r\n\r\n      //#region top\r\n      if (menuRect.bottom > overlayRect.height) { top = hostElementRect.top - menuRect.height; }\r\n      else { top = hostElementRect.bottom; }\r\n      //#endregion\r\n      //#region width\r\n      if (hostElementRect.width > menuRect.width) { width = hostElementRect.width; }\r\n      else { width = menuRect.width; }\r\n      //#endregion\r\n      //#region left \r\n      if ((hostElementRect.left + menuRect.width) > overlayRect.width) { left = hostElementRect.right - menuRect.width; }\r\n      else { left = hostElementRect.left; }\r\n      //#endregion\r\n\r\n      menuElem.style.top = `${top}px`;\r\n      menuElem.style.left = `${left}px`;\r\n      //menuElem.style.width = `${width}px`;\r\n      menuElem.style.display = `block`;\r\n\r\n      if (this.popupManager != undefined) { this.popupManager.popupDropdownList(overlayElem); }\r\n    }\r\n  }\r\n\r\n  //#region Calendar Action\r\n  protected validateClick(event: any) {\r\n    if (this.currentCalendarView != 'days') { this.changeCalendarView('days'); }\r\n    else { this.validateCalendar(); }\r\n  }\r\n  protected validateCalendar() {\r\n    if (this.selectedDate == undefined) { this.selectedDate = this.datetimeValue; }\r\n    this.selectedDate.setHours(this._currentTimes[0]);\r\n    this.selectedDate.setMinutes(this._currentTimes[1]);\r\n    this.selectedDate.setSeconds(0);\r\n    this.selectedDate.setMilliseconds(0);\r\n    this.selectedValue = this.selectedDate;\r\n    (this.txtValue() as ElementRef).nativeElement.value = this.selectedDate.toString(this.formatSelected);\r\n    this.openCalendar(false);\r\n    this.writeValue(this.selectedValue);\r\n    this.output_Change.emit({ target: this, selectedValue: this.selectedValue, selectedFormatedValue: this.selectedValue.toString(this.formatSelected) });\r\n    this.onChange(this.input_formatValue() == '' ? this.value.toLocaleISOString() : this.value.toString(this.input_formatValue()));\r\n  }\r\n  protected cancelClick(event: any) {\r\n    if (this.currentCalendarView != 'days') { this.changeCalendarView('days'); }\r\n    else {\r\n      if (this.selectedValue != undefined) { this.selectedDate = this.selectedValue; }\r\n      else { this.selectedDate = undefined; }\r\n      if (this.selectedDate != undefined) { this._currentTimes = [this.selectedDate.hours, this.selectedDate.minutes] }\r\n      else { this._currentTimes = [0, 0]; }\r\n      this.openCalendar(false);\r\n    }\r\n  }\r\n  protected openCalendar(value?: boolean) {\r\n    if (value == undefined) { value = true; }\r\n    this.isOpenCalendar = value;\r\n    this._expanded = value;\r\n    (this.hostElement.nativeElement).setAttribute('aria-expanded', value);\r\n    //setTimeout(() => { this.menuPosition(); }, 100);\r\n  }\r\n  protected close() {\r\n    this.isOpenCalendar = false;\r\n    this._expanded = false;\r\n    (this.hostElement.nativeElement).setAttribute('aria-expanded', false);\r\n  }\r\n  protected toggleOpenCalendar(event: any) { this.openCalendar(!this.isOpenCalendar); }\r\n  protected changeCalendarView(value: CalendarViewType) {\r\n    if (this.currentCalendarView != 'days' && this.currentCalendarView == value) { this.currentCalendarView = 'days'; }\r\n    else { this.currentCalendarView = value; }\r\n  }\r\n  protected changeAutoCalendarView() {\r\n    switch (this.currentCalendarView) {\r\n      case 'days':\r\n        this.currentCalendarView = 'months';\r\n        break;\r\n      case 'months':\r\n        this.setDecadeYear(this.currentYear);\r\n        this.currentCalendarView = 'years';\r\n        break;\r\n    }\r\n\r\n  }\r\n  //#endregion\r\n}\r\n","<input #txtValue type=\"text\" [placeholder]=\"this.input_placeholder()\" [disabled]=\"isDisabled\" [readOnly]=\"true\" />\r\n<a #dropdownButton role=\"button\" class=\"csc-datetime-picker-button csc-datetime-picker-button-open-calendar\"\r\n    (click)=\"toggleOpenCalendar($event)\">\r\n    <csc-icon [ariaLabel]=\"'calendar3'\"></csc-icon>\r\n</a>\r\n@if(epxanded){\r\n<div #dropdownOverlay role=\"backdrop\" (click)=\"close()\" [attr.data-theme]=\"getBackdropTheme()\">\r\n    <div #dropdownMenu class=\"csc-datetime-picker-menu\" (click)=\"$event.stopPropagation()\">\r\n        <div #calendar class=\"csc-datetime-picker-calendar\">\r\n            <header class=\"csc-datetime-picker-header\">\r\n                @if(currentCalendarView == 'days'){\r\n                <a role=\"button\" class=\"csc-datetime-picker-button csc-datetime-picker-button-header-move\"\r\n                    (click)=\"downMonth()\">\r\n                    <csc-icon [ariaLabel]=\"'caret-left-fill'\"></csc-icon>\r\n                </a>\r\n                <a #calendarTitle role=\"button\" class=\"csc-datetime-picker-button csc-datetime-picker-button-title\"\r\n                    (click)=\"changeAutoCalendarView()\">{{this.currentTitleCalendar}}</a>\r\n                <a role=\"button\" class=\"csc-datetime-picker-button csc-datetime-picker-button-header-move\"\r\n                    (click)=\"upMonth()\">\r\n                    <csc-icon [ariaLabel]=\"'caret-right-fill'\"></csc-icon>\r\n                </a>\r\n                }\r\n                @if(currentCalendarView == 'months'){\r\n                <a role=\"button\" class=\"csc-datetime-picker-button csc-datetime-picker-button-header-move\"\r\n                    (click)=\"downYear()\">\r\n                    <csc-icon [ariaLabel]=\"'caret-left-fill'\"></csc-icon>\r\n                </a>\r\n                <a #calendarTitle role=\"button\" class=\"csc-datetime-picker-button csc-datetime-picker-button-title\"\r\n                    (click)=\"changeAutoCalendarView()\">{{this.currentTitleCalendar}}</a>\r\n                <a role=\"button\" class=\"csc-datetime-picker-button csc-datetime-picker-button-header-move\"\r\n                    (click)=\"upYear()\"><csc-icon [ariaLabel]=\"'caret-right-fill'\"></csc-icon>\r\n                </a>\r\n                }\r\n                @if(currentCalendarView == 'years'){\r\n                <a role=\"button\" class=\"csc-datetime-picker-button csc-datetime-picker-button-header-move\"\r\n                    (click)=\"downDecadeYear()\"><csc-icon [ariaLabel]=\"'caret-left-fill'\"></csc-icon>\r\n                </a>\r\n                <a #calendarTitle role=\"button\" class=\"csc-datetime-picker-button csc-datetime-picker-button-title\"\r\n                    (click)=\"changeAutoCalendarView()\">{{this.currentTitleCalendar}}</a>\r\n                <a role=\"button\" class=\"csc-datetime-picker-button csc-datetime-picker-button-header-move\"\r\n                    (click)=\"upDecadeYear()\"><csc-icon [ariaLabel]=\"'caret-right-fill'\"></csc-icon>\r\n                </a>\r\n                }\r\n            </header>\r\n            <main class=\"csc-datetime-picker-main\">\r\n                @if(currentCalendarView == 'days'){\r\n                <div #calendarDays class=\"csc-datetime-picker-days\">\r\n                    <div class=\"csc-datetime-picker-days-row-columnheader\">\r\n                        <div class=\"csc-datetime-picker-days-columnheader\">\r\n                            <div class=\"csc-datetime-picker-days-columnheader-content\">#</div>\r\n                        </div>\r\n                        @for (item of getCalendarHeaderDays(); track $index) {\r\n                        <div class=\"csc-datetime-picker-days-columnheader\">\r\n                            <div class=\"csc-datetime-picker-days-columnheader-content\">{{item.dayShortName}}</div>\r\n                        </div>\r\n                        }\r\n                    </div>\r\n                    @for (itemRow of getCalendarDays(); track $index; let idRow=$index) {\r\n                    <div class=\"csc-datetime-picker-days-row\">\r\n                        <div class=\"csc-datetime-picker-days-gridcell\" role=\"rowheader\">\r\n                            <div class=\"csc-datetime-picker-days-gridcell-content\">{{itemRow.values[4].week}}</div>\r\n                        </div>\r\n                        @for (itemCell of itemRow.values; track $index; let idCell=$index) {\r\n                        <div class=\"csc-datetime-picker-days-gridcell\" [ariaSelected]=\"(this.selectedDate != undefined\r\n                                        && itemCell.day==this.selectedDate.day\r\n                                        &&itemCell.month==this.selectedDate.month\r\n                                        &&itemCell.year==this.selectedDate.year)\"\r\n                            [ariaDisabled]=\"(itemCell.month!=this.currentDate.month)\" [ariaPressed]=\"(itemCell.day==currentDate.day\r\n                                        &&itemCell.month==currentDate.month\r\n                                        &&itemCell.year==currentDate.year)\" [ariaCurrent]=\"(itemCell.day==getNow().day\r\n                                        &&itemCell.month==getNow().month\r\n                                        &&itemCell.year==getNow().year)\">\r\n                            <div class=\"csc-datetime-picker-days-gridcell-button\" (click)=\"selectDay(itemCell)\">\r\n                                <div class=\"csc-datetime-picker-days-gridcell-content\">{{(itemCell.day)}}</div>\r\n                            </div>\r\n                        </div>\r\n                        }\r\n                    </div>\r\n                    }\r\n                </div>\r\n                }\r\n                @if(currentCalendarView == 'months'){\r\n                <div #calendarMonths class=\"csc-datetime-picker-months\">\r\n                    <div class=\"csc-datetime-picker-months-row\">\r\n                        @for (itemCell of [1,2,3]; track $index) {\r\n                        <div class=\"csc-datetime-picker-months-gridcell\" [class]=\"{'active':itemCell==currentMonth}\"\r\n                            (click)=\"selectMonth(itemCell)\">\r\n                            <div class=\"csc-datetime-picker-months-gridcell-content\">\r\n                                {{getMonthName(itemCell)}}\r\n                            </div>\r\n                        </div>\r\n                        }\r\n                    </div>\r\n                    <div class=\"csc-datetime-picker-months-row\">\r\n                        @for (itemCell of [4,5,6]; track $index) {\r\n                        <div class=\"csc-datetime-picker-months-gridcell\" [class]=\"{'active':itemCell==currentMonth}\"\r\n                            (click)=\"selectMonth(itemCell)\">\r\n                            <div class=\"csc-datetime-picker-months-gridcell-content\">\r\n                                {{getMonthName(itemCell)}}\r\n                            </div>\r\n                        </div>\r\n                        }\r\n                    </div>\r\n                    <div class=\"csc-datetime-picker-months-row\">\r\n                        @for (itemCell of [7,8,9]; track $index) {\r\n                        <div class=\"csc-datetime-picker-months-gridcell\" [class]=\"{'active':itemCell==currentMonth}\"\r\n                            (click)=\"selectMonth(itemCell)\">\r\n                            <div class=\"csc-datetime-picker-months-gridcell-content\">\r\n                                {{getMonthName(itemCell)}}\r\n                            </div>\r\n                        </div>\r\n                        }\r\n                    </div>\r\n                    <div class=\"csc-datetime-picker-months-row\">\r\n                        @for (itemCell of [10,11,12]; track $index) {\r\n                        <div class=\"csc-datetime-picker-months-gridcell\" [class]=\"{'active':itemCell==currentMonth}\"\r\n                            (click)=\"selectMonth(itemCell)\">\r\n                            <div class=\"csc-datetime-picker-months-gridcell-content\">\r\n                                {{getMonthName(itemCell)}}\r\n                            </div>\r\n                        </div>\r\n                        }\r\n                    </div>\r\n                </div>\r\n                }\r\n                @if(currentCalendarView == 'years'){\r\n                <div #calendarYears class=\"csc-datetime-picker-years\">\r\n                    <div class=\"csc-datetime-picker-years-row\">\r\n                        @for (itemCell of getCurrentDecadeRange(0,3); track $index) {\r\n                        <div class=\"csc-datetime-picker-years-gridcell\" [class]=\"{'active':itemCell==this.currentYear}\"\r\n                            (click)=\"selectYear(itemCell)\">\r\n                            <div class=\"csc-datetime-picker-years-gridcell-content\">\r\n                                {{(itemCell)}}</div>\r\n                        </div>\r\n                        }\r\n                        @for (itemCell of getCurrentDecadeRange(4,6); track $index) {\r\n                        <div class=\"csc-datetime-picker-years-gridcell\" [class]=\"{'active':itemCell==this.currentYear}\"\r\n                            (click)=\"selectYear(itemCell)\">\r\n                            <div class=\"csc-datetime-picker-years-gridcell-content\">\r\n                                {{(itemCell)}}</div>\r\n                        </div>\r\n                        }\r\n                        @for (itemCell of getCurrentDecadeRange(7,9); track $index) {\r\n                        <div class=\"csc-datetime-picker-years-gridcell\" [class]=\"{'active':itemCell==this.currentYear}\"\r\n                            (click)=\"selectYear(itemCell)\">\r\n                            <div class=\"csc-datetime-picker-years-gridcell-content\">\r\n                                {{(itemCell)}}</div>\r\n                        </div>\r\n                        }\r\n                    </div>\r\n                </div>\r\n                }\r\n                @if(currentCalendarView == 'times'){\r\n                <div #calendarTimes class=\"csc-datetime-picker-times\">\r\n                    <div class=\"csc-datetime-picker-times-row\">\r\n                        <div class=\"csc-datetime-picker-times-gridcell\">\r\n                            <a role=\"button\" class=\"csc-datetime-picker-button csc-datetime-picker-button-times\"\r\n                                (click)=\"upHour()\"><csc-icon [ariaLabel]=\"'caret-up-fill'\"></csc-icon></a>\r\n                        </div>\r\n                        <div class=\"csc-datetime-picker-times-gridcell-separator\"></div>\r\n                        <div class=\"csc-datetime-picker-times-gridcell\">\r\n                            <a role=\"button\" class=\"csc-datetime-picker-button csc-datetime-picker-button-times\"\r\n                                (click)=\"upMinute()\"><csc-icon [ariaLabel]=\"'caret-up-fill'\"></csc-icon></a>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"csc-datetime-picker-times-row\">\r\n                        <div class=\"csc-datetime-picker-times-gridcell\"><label>{{this.getCurrentHour()}}</label></div>\r\n                        <div class=\"csc-datetime-picker-times-gridcell-separator\"><span>:</span></div>\r\n                        <div class=\"csc-datetime-picker-times-gridcell\"><label>{{this.getCurrentMinute()}}</label>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"csc-datetime-picker-times-row\">\r\n                        <div class=\"csc-datetime-picker-times-gridcell\">\r\n                            <a role=\"button\" class=\"csc-datetime-picker-button csc-datetime-picker-button-times\"\r\n                                (click)=\"downHour()\"><csc-icon [ariaLabel]=\"'caret-down-fill'\"></csc-icon></a>\r\n                        </div>\r\n                        <div class=\"csc-datetime-picker-times-gridcell-separator\"></div>\r\n                        <div class=\"csc-datetime-picker-times-gridcell\">\r\n                            <a role=\"button\" class=\"csc-datetime-picker-button csc-datetime-picker-button-times\"\r\n                                (click)=\"downMinute()\"><csc-icon [ariaLabel]=\"'caret-down-fill'\"></csc-icon></a>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                }\r\n            </main>\r\n            <footer #selectedDateFooter></footer>\r\n            <footer class=\"csc-datetime-picker-footer\">\r\n                <a role=\"button\" class=\"csc-datetime-picker-button\" (click)=\"gotoToday()\">\r\n                    <csc-icon [ariaLabel]=\"'calendar3-event'\"></csc-icon>\r\n                </a>\r\n                @if(input_showTime()){\r\n                <a role=\"button\" class=\"csc-datetime-picker-button\" (click)=\"changeCalendarView('days')\">\r\n                    <csc-icon [ariaLabel]=\"'calendar3'\"></csc-icon>\r\n                </a>\r\n                }\r\n                @if(input_showTime()){\r\n                <a role=\"button\" class=\"csc-datetime-picker-button\" (click)=\"changeCalendarView('times')\">\r\n                    <csc-icon [ariaLabel]=\"'clock'\"></csc-icon>\r\n                </a>\r\n                }\r\n                @if(!isAutoClose){\r\n                <a role=\"button\" class=\"csc-datetime-picker-button\" (click)=\"validateClick($event)\">\r\n                    <csc-icon [ariaLabel]=\"'check2'\"></csc-icon>\r\n                </a>\r\n                }\r\n                @if(input_showCancelButton()){\r\n                <a role=\"button\" class=\"csc-datetime-picker-button\" (click)=\"cancelClick($event)\">\r\n                    <csc-icon [ariaLabel]=\"'x'\"></csc-icon>\r\n                </a>\r\n                }\r\n            </footer>\r\n        </div>\r\n    </div>\r\n</div>\r\n{{menuPosition()}}\r\n}","import { Component, ElementRef, input, Version, viewChild } from '@angular/core';\r\nimport { DropdownButtonComponent } from '../../../form-components/dropdown-button/dropdown-button.component';\r\nimport { DatagridToggleButtonComponent } from '../datagrid-toggle-button/datagrid-toggle-button.component';\r\nimport { IDropdownButtonEntrie } from '../../../form-components/dropdown-button/interfaces/idropdown-button-entrie';\r\nimport { DatetimePickerComponent } from '../../../form-components/datetime-picker/datetime-picker.component';\r\nimport { DateTime } from '../../../date-time';\r\nimport { ComponentBaseComponent } from '../../component-base/component-base.component';\r\n\r\n@Component({\r\n  selector: 'csc-datagrid-filter-group-item',\r\n  imports: [DropdownButtonComponent, DatagridToggleButtonComponent, DatetimePickerComponent],\r\n  templateUrl: './datagrid-filter-group-item.component.html',\r\n  styleUrl: './datagrid-filter-group-item.component.scss'\r\n})\r\nexport class DatagridFilterGroupItemComponent extends ComponentBaseComponent {\r\n\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  input_andOrEnabled = input(false, { alias: 'AndOrEnabled' });\r\n  input_dataConditions = input<IDropdownButtonEntrie[]>([], { alias: 'DataConditions' });\r\n  input_type = input<'Date' | 'Datetime' | 'Text'>('Text', { alias: 'Type' });\r\n\r\n  btnAnd = viewChild<DatagridToggleButtonComponent>('btnAnd');\r\n  btnOr = viewChild<DatagridToggleButtonComponent>('btnOr');\r\n  cboCondition = viewChild<DropdownButtonComponent>('cboCondition');\r\n  txtValue = viewChild<ElementRef>('txtValue');\r\n  dtPicker = viewChild<DatetimePickerComponent>('dtPicker');\r\n\r\n  constructor(hostElement: ElementRef) { super(hostElement); }\r\n\r\n  public getFilter(): {} {\r\n    var filterItem: any = {};\r\n    if (this.btnAnd()?.getChecked()) { filterItem.andor = this.btnAnd()?.getValue(); }\r\n    if (this.btnOr()?.getChecked()) { filterItem.andor = this.btnOr()?.getValue(); }\r\n    filterItem.condition = this.cboCondition()?.selectedValue;\r\n    filterItem.value = this.txtValue()?.nativeElement?.value;\r\n    return filterItem;\r\n  }\r\n\r\n  protected btnAndOrClicked(event: any) {\r\n    if (this.btnAnd != undefined && this.btnOr != undefined) {\r\n      if (event.value == '&&' && event.checked == true) { this.btnOr()?.setChecked(false); }\r\n      if (event.value == '||' && event.checked == true) { this.btnAnd()?.setChecked(false); }\r\n    }\r\n  }\r\n\r\n  protected dtPickerValueChanged(event: any) { (this.txtValue() as ElementRef).nativeElement.value = (event.target.value as DateTime).toString('yyyy-MM-ddTHH:mm:ss'); }\r\n\r\n  public clearFilter(): void {\r\n    if (this.txtValue() != undefined) { (this.txtValue() as ElementRef).nativeElement.value = ''; }\r\n    this.btnOr()?.setChecked(false);\r\n    this.btnAnd()?.setChecked(false);\r\n    this.cboCondition()?.writeValue(undefined);\r\n  }\r\n  public setFilter(filter: any) {\r\n    try {\r\n      console.log('filter', filter);\r\n      if (filter != undefined && this.txtValue() != undefined) {\r\n        if (filter.value != undefined) {\r\n          (this.txtValue() as ElementRef).nativeElement.value = filter.value;\r\n          if (this.dtPicker() != undefined && filter.value != undefined && filter.value != '') { (this.dtPicker() as DatetimePickerComponent).setValue(DateTime.fromStringFromat(filter.value, 'yyyy-MM-ddTHH:mm:ss')); }\r\n        }\r\n        if (filter.condition != undefined) { (this.cboCondition() as DropdownButtonComponent).writeValue(filter.condition); }\r\n        if (filter.andor == '&&') { (this.btnAnd() as DatagridToggleButtonComponent).setChecked(true); }\r\n        else if (filter.andor == '||') { (this.btnOr() as DatagridToggleButtonComponent).setChecked(true); }\r\n      }\r\n    } catch { }\r\n  }\r\n}\r\n","<div class=\"datagrid-item-panel-groupitem\">\r\n    <div class=\"datagrid-item-panel-groupitem-content\">\r\n        @if(input_andOrEnabled()){\r\n        <div class=\"datagrid-item-panel-item\" data-type=\"andor\">\r\n            <div class=\"datagrid-item-panel-item-content andor\">\r\n                <csc-datagrid-toggle-button #btnAnd [Text]=\"'And'\" [Value]=\"'&&'\" [Checked]=\"false\"\r\n                    (click)=\"btnAndOrClicked($event)\"></csc-datagrid-toggle-button>\r\n                <csc-datagrid-toggle-button #btnOr [Text]=\"'Or'\" [Value]=\"'||'\" [Checked]=\"false\"\r\n                    (click)=\"btnAndOrClicked($event)\"></csc-datagrid-toggle-button>\r\n            </div>\r\n        </div>\r\n        <div class=\"datagrid-item-panel-item\">\r\n            <div class=\"datagrid-item-panel-item-content\">\r\n                <hr />\r\n            </div>\r\n        </div>\r\n        }\r\n        @if(input_type()=='Text'){\r\n        <div class=\"datagrid-item-panel-item\" data-type=\"condition\">\r\n            <div class=\"datagrid-item-panel-item-content\">\r\n                <csc-dropdown-button #cboCondition class=\"datagrid-dropdown-button\" [ComponentId]=\"this.componentId+'.cboConditionText'\"\r\n                    [DataEntries]=\"input_dataConditions()\"></csc-dropdown-button>\r\n            </div>\r\n        </div>\r\n        <div class=\"datagrid-item-panel-item\" data-type=\"text\">\r\n            <div class=\"datagrid-item-panel-item-content\">\r\n                <input #txtValue title=\"Value\" type=\"text\" />\r\n            </div>\r\n        </div>\r\n        }\r\n        @if(input_type()=='Datetime'){\r\n        <div class=\"datagrid-item-panel-item\" data-type=\"condition\">\r\n            <div class=\"datagrid-item-panel-item-content\">\r\n                <csc-dropdown-button #cboCondition class=\"datagrid-dropdown-button\" [ComponentId]=\"this.componentId+'.cboConditionDatetime'\"\r\n                    [DataEntries]=\"input_dataConditions()\"></csc-dropdown-button>\r\n            </div>\r\n        </div>\r\n        <div class=\"datagrid-item-panel-item\" data-type=\"text\">\r\n            <div class=\"datagrid-item-panel-item-content\">\r\n                <input #txtValue title=\"Value\" type=\"hidden\" />\r\n                <csc-datetime-picker #dtPicker class=\"datagrid-datetime-picker\" [ComponentId]=\"'dtPickerStart'\"\r\n                    [FormatDateSelected]=\"'dd/MM/yyyy HH:mm:ss'\" [ShowTime]=\"true\"\r\n                    (change)=\"dtPickerValueChanged($event)\"></csc-datetime-picker>\r\n            </div>\r\n        </div>\r\n        }\r\n        @if(input_type()=='Date'){\r\n        <div class=\"datagrid-item-panel-item\" data-type=\"condition\">\r\n            <div class=\"datagrid-item-panel-item-content\">\r\n                <csc-dropdown-button #cboCondition class=\"datagrid-dropdown-button\" [ComponentId]=\"this.componentId+'.cboConditionDate'\"\r\n                    [DataEntries]=\"input_dataConditions()\"></csc-dropdown-button>\r\n            </div>\r\n        </div>\r\n        <div class=\"datagrid-item-panel-item\" data-type=\"text\">\r\n            <div class=\"datagrid-item-panel-item-content\">\r\n                <input #txtValue title=\"Value\" type=\"hidden\" />\r\n                <csc-datetime-picker #dtPicker class=\"datagrid-datetime-picker\" [ComponentId]=\"'dtPickerEnd'\"\r\n                    [FormatDateSelected]=\"'dd/MM/yyyy'\"\r\n                    (change)=\"dtPickerValueChanged($event)\"></csc-datetime-picker>\r\n            </div>\r\n        </div>\r\n        }\r\n    </div>\r\n</div>","import { Component, effect, ElementRef, input, output, Version, viewChild, viewChildren } from '@angular/core';\r\nimport { DatagridColumn } from '../dtos/datagrid-column-dto';\r\nimport { DatagridColumnFilteringType } from '../types/datagrid-column-filtering-type';\r\nimport { DatagridFilterGroupItemComponent } from '../datagrid-filter-group-item/datagrid-filter-group-item.component';\r\nimport { IDatagridI18N } from '../interfaces/idatagrid-i18n';\r\nimport { DatagridColumnSortingDirection } from \"../types/datagrid-sorting-direction-type\";\r\nimport { DropdownButtonComponent } from '../../../form-components/dropdown-button/dropdown-button.component';\r\nimport { ComponentBaseComponent } from '../../component-base/component-base.component';\r\nimport { IDatagridOptions } from '../interfaces/idatagrid-options';\r\nimport { DatagridEnvironmentConst } from '../consts/datagrid-environment-const';\r\n\r\n@Component({\r\n  selector: 'csc-datagrid-item-panel-filter',\r\n  imports: [DatagridFilterGroupItemComponent, DropdownButtonComponent],\r\n  templateUrl: './datagrid-item-panel-filter.component.html',\r\n  styleUrl: './datagrid-item-panel-filter.component.scss'\r\n})\r\nexport class DatagridItemPanelFilterComponent extends ComponentBaseComponent {\r\n\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  btnSortAsc = viewChild<ElementRef>('btnSortAsc');\r\n  btnSortDesc = viewChild<ElementRef>('btnSortDesc');\r\n  groupItems = viewChildren('groupItem');\r\n  cboFooterTotal = viewChild<DropdownButtonComponent>('cboFooterTotal');\r\n\r\n  private _datas: any[] = [];\r\n  private _uniqueDatas: any[] = [];\r\n  private _filterOrigin?: any = undefined;\r\n  private _column?: DatagridColumn = undefined;\r\n  private _textContains?: string = undefined;\r\n\r\n  protected dataConditionsNumber: any[] = [\r\n    { html: 'Equals', text: '=', value: '=' }\r\n    , { html: 'Does not equals', text: '!=', value: '!=' }\r\n    , { html: 'Greater than', text: '>', value: '>' }\r\n    , { html: 'Greater than or equal to', text: '>=', value: '>=' }\r\n    , { html: 'Less than', text: '<', value: '<' }\r\n    , { html: 'Less than or equal to', text: '<=', value: '<=' }\r\n    , { html: 'Between', text: '<>', value: '<>' }\r\n    , { html: 'Blank', text: '', value: '' }\r\n    , { html: 'Not blank', text: '*', value: '*' }\r\n  ];\r\n  protected dataConditionsString: any[] = [\r\n    { html: 'Contains', text: '%%', value: '%%' }\r\n    , { html: 'Does not contains', text: '!%%!', value: '!%%!' }\r\n    , { html: 'Equals', text: '=', value: '=' }\r\n    , { html: 'Does not equals', text: '!=', value: '!=' }\r\n    , { html: 'Begins with', text: '%a', value: '%a' }\r\n    , { html: 'Ends with', text: 'a%', value: 'a%' }\r\n    , { html: 'Blank', text: '', value: '' }\r\n    , { html: 'Not blank', text: '*', value: '*' }\r\n  ];\r\n  protected dataFooter: any[] = [];\r\n\r\n  input_column = input.required<DatagridColumn>({ alias: 'Column' });\r\n  input_datagridColumns = input.required<DatagridColumn[]>({ alias: 'DatagridColumns' });\r\n  input_datagridOptions = input.required<IDatagridOptions>({ alias: 'DatagridOptions' });\r\n  input_i18N = input<IDatagridI18N>(DatagridEnvironmentConst.i18N, { alias: 'I18N' });\r\n  input_datas = input.required<any[]>({ alias: 'Datas' });\r\n\r\n  output_ApplyFilterClick = output<any>({ alias: 'applyFilterClick' });\r\n  output_SortColumn = output<any>({ alias: 'sortColumn' });\r\n\r\n  constructor(hostElement: ElementRef) {\r\n    super(hostElement);\r\n    effect((effect) => {\r\n      this._datas = this.input_datas() ?? [];\r\n      this.setUniqueDatasFromColumn();\r\n      if (this.input_column() != undefined) {\r\n        this._column = this.input_column();\r\n        this._filterOrigin = this.input_column().filter;\r\n        if (this.input_column().filteringType == 'auto'\r\n          || this._column.type == 'boolean') { this.setUniqueDatasFromColumn(); }\r\n        else {\r\n          this.groupItems().forEach((e, i) => {\r\n            (e as DatagridFilterGroupItemComponent).clearFilter();\r\n            if (this.input_column().filter != undefined && Array.isArray(this._column?.filter)) {\r\n              this.input_column().filter[i].format = this.input_column().format;\r\n              (e as DatagridFilterGroupItemComponent).setFilter(this.input_column().filter[i]);\r\n            }\r\n          });\r\n        }\r\n      }\r\n      this.dataFooter = [\r\n        { html: this.input_i18N().footerTotalMenu_None, text: this.input_i18N().footerTotalMenu_None, value: 'none' }//, selected: this._column?.footerCalcul == 'none' }\r\n        , { html: this.input_i18N().footerTotalMenu_Sum, text: this.input_i18N().footerTotalMenu_Sum, value: 'sum' }//, selected: this._column?.footerCalcul == 'sum' }\r\n        , { html: this.input_i18N().footerTotalMenu_Avg, text: this.input_i18N().footerTotalMenu_Avg, value: 'avg' }//, selected: this._column?.footerCalcul == 'avg' }\r\n        , { html: this.input_i18N().footerTotalMenu_Max, text: this.input_i18N().footerTotalMenu_Max, value: 'max' }//, selected: this._column?.footerCalcul == 'max' }\r\n        , { html: this.input_i18N().footerTotalMenu_Min, text: this.input_i18N().footerTotalMenu_Min, value: 'min' }//, selected: this._column?.footerCalcul == 'min' }\r\n      ];\r\n      if (this.cboFooterTotal() != undefined && this._column?.footerCalcul != undefined) {\r\n        this.cboFooterTotal()?.setValue(this._column?.footerCalcul);\r\n      }\r\n    });\r\n  }\r\n  protected get filteringType(): DatagridColumnFilteringType {\r\n    if (this._column == undefined || this._column.filteringType == undefined) { return 'manuel'; }\r\n    else { return this._column.filteringType as DatagridColumnFilteringType; }\r\n  }\r\n  protected get uniqueDatasFromColumn(): any[] { return this._uniqueDatas; }\r\n\r\n  private setUniqueDatasFromColumn() {\r\n    var datas: any[] = [];\r\n    if (this._column != undefined && this._datas != undefined) {\r\n      var uniqueValue: any[] = Array.from(new Set(this._datas.map(item => item[(this._column as DatagridColumn).dataField]))).sort((a, b) => {\r\n        try {\r\n          let aValue = a.value;\r\n          let bValue = b.value;\r\n          if (aValue != undefined || aValue != null) { aValue = aValue.toLowerCase(); } else { aValue = ''; }\r\n          if (bValue != undefined || bValue != null) { bValue = bValue.toLowerCase(); } else { bValue = ''; }\r\n          return aValue < bValue ? -1 : aValue > bValue ? 1 : 0\r\n        } catch { }\r\n        return 0;\r\n      });\r\n      uniqueValue = uniqueValue.sort((a, b) => { return a.toString().localeCompare(b.toString()); });\r\n      uniqueValue.forEach((e, i) => {\r\n        let checked: boolean = true;\r\n        if (this._filterOrigin == undefined || !Array.isArray(this._filterOrigin)) { checked = true; }\r\n        else { checked = (this._filterOrigin as any[]).indexOf(e) > -1 }\r\n        datas.push({ checked: checked, value: e });\r\n      });\r\n    }\r\n    this._uniqueDatas = datas;\r\n  }\r\n  private createFilterByGroup(): {} {\r\n    let filters: any[] = [];\r\n    this.groupItems()?.forEach((e, i) => {\r\n      let groupItem = e as DatagridFilterGroupItemComponent;\r\n      filters.push(groupItem.getFilter());\r\n    });\r\n    return filters;\r\n  }\r\n\r\n  protected checkValue(event: any, value: any, checked: boolean) { value.checked = checked; }\r\n  protected applyFilterClick(event: any, apply: boolean) {\r\n    var filter: any = { apply: apply, column: this._column, filter: this._filterOrigin };\r\n    if (this._column != undefined) {\r\n      if (apply) {\r\n        if (this.filteringType == 'auto'\r\n          || this._column.type == 'boolean'\r\n        ) {\r\n          filter.filter = this._uniqueDatas.filter(x => x.checked).map(x => x.value);\r\n        } else {\r\n          if (this._column.type == 'number'\r\n            || this._column.type == 'monetary'\r\n            || this._column.type == 'date'\r\n            || this._column.type == 'datetime'\r\n            || this._column.type == undefined\r\n            || this._column.type == 'string') {\r\n            filter.filter = this.createFilterByGroup();\r\n          } else {\r\n            filter.filter = this._textContains;\r\n          }\r\n        }\r\n        filter.filterActivate = true;\r\n        filter.column = this._column;\r\n      }\r\n      this._column.filter = filter.filter;\r\n    }\r\n    this.output_ApplyFilterClick.emit({ event: event, filter: filter });\r\n  }\r\n  protected getValueString(value: any) {\r\n    if (typeof (value) == 'boolean') {\r\n      if (value) { return this.input_i18N().yes; }\r\n      else { return this.input_i18N().no; }\r\n    }\r\n    return value.toString()\r\n  }\r\n  protected btnSortAscDescClicked(event: any, direction: DatagridColumnSortingDirection) { this.output_SortColumn.emit({ event: event, column: this._column, direction: direction }); }\r\n  protected dataFooterSelected(event: any) { if (this._column != undefined && this._column?.footerCalcul != event.value) { this._column.footerCalcul = event.value; } }\r\n}\r\n","@if(this.input_column()!=undefined){\r\n<div class=\"datagrid-item-panel-title\" [attr.data-item]=\"'filter'\">\r\n    <div class=\"datagrid-item-panel-title-content\" [innerHTML]=\"this.input_column().html\"></div>\r\n</div>\r\n<div class=\"datagrid-item-panel-body\">\r\n    <!-- #region Sorting -->\r\n    <div class=\"datagrid-item-panel-subtitle\">\r\n        <div class=\"datagrid-item-panel-subtitle-content\">\r\n            {{this.input_i18N().columnMenu_sorting}}\r\n        </div>\r\n    </div>\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-content\">\r\n            <button type=\"button\" class=\"datagrid-item-panel-button\" aria-sort=\"ascending\"\r\n                (click)=\"btnSortAscDescClicked($event, 'ascending')\">{{this.input_i18N().columnMenu_sortAsc}}</button>\r\n        </div>\r\n    </div>\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-content\">\r\n            <button type=\"button\" class=\"datagrid-item-panel-button\" aria-sort=\"descending\"\r\n                (click)=\"btnSortAscDescClicked($event, 'descending')\">{{this.input_i18N().columnMenu_sortDesc}}</button>\r\n        </div>\r\n    </div>\r\n    <!-- #endregion -->\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-content\">\r\n            <hr />\r\n        </div>\r\n    </div>\r\n    <div class=\"datagrid-item-panel-subtitle\">\r\n        <div class=\"datagrid-item-panel-subtitle-content\">\r\n            {{this.input_i18N().filter}}\r\n        </div>\r\n    </div>\r\n    <!-- #region FilterAuto-->\r\n    @if(this.filteringType=='auto' || this.input_column().type == 'boolean'){\r\n    @for (col of uniqueDatasFromColumn; track $index) {\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-checkbox-item\" (click)=\"checkValue($event, col, !col.checked)\">\r\n            <div class=\"checkbox\" [ariaChecked]=\"col.checked\"></div>\r\n            <span>{{getValueString(col.value)}}</span>\r\n        </div>\r\n    </div>\r\n    }\r\n    }\r\n    <!-- #endregion -->\r\n    @else if(this.input_column().type == 'number' || this.input_column().type == 'monetary') {\r\n    <csc-datagrid-filter-group-item #groupItem [DataConditions]=\"dataConditionsNumber\"\r\n        [ComponentId]=\"'filterConditionNumber1'\" [AndOrEnabled]=\"false\"></csc-datagrid-filter-group-item>\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-content\">\r\n            <hr />\r\n        </div>\r\n    </div>\r\n    <csc-datagrid-filter-group-item #groupItem [DataConditions]=\"dataConditionsNumber\"\r\n        [ComponentId]=\"'filterConditionNumber2'\" [AndOrEnabled]=\"true\"></csc-datagrid-filter-group-item>\r\n    }\r\n    @else if(this.input_column().type == undefined ||this.input_column().type == 'string') {\r\n    <csc-datagrid-filter-group-item #groupItem [DataConditions]=\"dataConditionsString\"\r\n        [ComponentId]=\"'filterConditionString1'\" [AndOrEnabled]=\"false\"></csc-datagrid-filter-group-item>\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-content\">\r\n            <hr />\r\n        </div>\r\n    </div>\r\n    <csc-datagrid-filter-group-item #groupItem [DataConditions]=\"dataConditionsString\"\r\n        [ComponentId]=\"'filterConditionString2'\" [AndOrEnabled]=\"true\"></csc-datagrid-filter-group-item>\r\n    }\r\n    @else if(this.input_column().type == 'date') {\r\n    <csc-datagrid-filter-group-item #groupItem [DataConditions]=\"dataConditionsNumber\" [AndOrEnabled]=\"false\"\r\n        [ComponentId]=\"'filterConditionDate1'\" [Type]=\"'Date'\"></csc-datagrid-filter-group-item>\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-content\">\r\n            <hr />\r\n        </div>\r\n    </div>\r\n    <csc-datagrid-filter-group-item #groupItem [DataConditions]=\"dataConditionsNumber\" [AndOrEnabled]=\"true\"\r\n        [ComponentId]=\"'filterConditionDate2'\" [Type]=\"'Date'\"></csc-datagrid-filter-group-item>\r\n    }\r\n    @else if(this.input_column().type == 'datetime') {\r\n    <csc-datagrid-filter-group-item #groupItem [DataConditions]=\"dataConditionsNumber\" [AndOrEnabled]=\"false\"\r\n        [ComponentId]=\"'filterConditionDateTime1'\" [Type]=\"'Datetime'\"></csc-datagrid-filter-group-item>\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-content\">\r\n            <hr />\r\n        </div>\r\n    </div>\r\n    <csc-datagrid-filter-group-item #groupItem [DataConditions]=\"dataConditionsNumber\" [AndOrEnabled]=\"true\"\r\n        [ComponentId]=\"'filterConditionDateTime2'\" [Type]=\"'Datetime'\"></csc-datagrid-filter-group-item>\r\n    }\r\n    @else {\r\n    <csc-datagrid-filter-group-item #groupItem [DataConditions]=\"dataConditionsString\"\r\n        [ComponentId]=\"'filterConditionNone1'\" [AndOrEnabled]=\"false\"></csc-datagrid-filter-group-item>\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-content\">\r\n            <hr />\r\n        </div>\r\n    </div>\r\n    <csc-datagrid-filter-group-item #groupItem [DataConditions]=\"dataConditionsString\"\r\n        [ComponentId]=\"'filterConditionNone2'\" [AndOrEnabled]=\"true\"></csc-datagrid-filter-group-item>\r\n    }\r\n    <!-- #region FooterTotal-->\r\n    @if(this.input_datagridOptions().allowPanels?.allowTotals==true &&\r\n    (this.input_column().type=='number'||this.input_column().type=='monetary')){\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-content\">\r\n            <hr />\r\n        </div>\r\n    </div>\r\n    <div class=\"datagrid-item-panel-subtitle\">\r\n        <div class=\"datagrid-item-panel-subtitle-content\">{{this.input_i18N().footerTotalMenu}}</div>\r\n    </div>\r\n    <div class=\"datagrid-item-panel-item\">\r\n        <div class=\"datagrid-item-panel-item-content\">\r\n            <csc-dropdown-button #cboFooterTotal [DataEntries]=\"dataFooter\" [ComponentId]=\"'cboFooterTotal'\"\r\n                (selectedValue)=\"dataFooterSelected($event)\"></csc-dropdown-button>\r\n        </div>\r\n    </div>\r\n    }\r\n    <!-- #endregion -->\r\n</div>\r\n<div class=\"datagrid-item-panel-footer\">\r\n    <div class=\"datagrid-item-panel-footer-content\">\r\n        <button role=\"button\" title=\"Apply\"\r\n            (click)=\"applyFilterClick($event, true);\">{{this.input_i18N().applyFilter}}</button>\r\n        <button role=\"button\" title=\"Close\"\r\n            (click)=\"applyFilterClick($event, false);\">{{this.input_i18N().closeFilter}}</button>\r\n    </div>\r\n</div>\r\n}","import { Component, ElementRef, input, output, Version } from '@angular/core';\r\nimport { DatagridItemPanelColumnsComponent } from '../datagrid-item-panel-columns/datagrid-item-panel-columns.component';\r\nimport { DatagridItemPanelOptionsComponent } from '../datagrid-item-panel-options/datagrid-item-panel-options.component';\r\nimport { DatagridColumn } from '../dtos/datagrid-column-dto';\r\nimport { DatagridItemToolPanelType } from '../types/datagrid-item-tool-panel-type';\r\nimport { DatagridItemPanelFilterComponent } from '../datagrid-item-panel-filter/datagrid-item-panel-filter.component';\r\nimport { IDatagridI18N } from '../interfaces/idatagrid-i18n';\r\nimport { IDatagridOptions } from '../interfaces/idatagrid-options';\r\nimport { ComponentBaseComponent } from '../../component-base/component-base.component';\r\nimport { DatagridEnvironmentConst } from '../consts/datagrid-environment-const';\r\n\r\n@Component({\r\n  selector: 'csc-datagrid-item-panels',\r\n  imports: [\r\n    DatagridItemPanelColumnsComponent,\r\n    DatagridItemPanelOptionsComponent,\r\n    DatagridItemPanelFilterComponent\r\n  ],\r\n  templateUrl: './datagrid-item-panels.component.html',\r\n  styleUrl: './datagrid-item-panels.component.scss'\r\n})\r\nexport class DatagridItemPanelsComponent extends ComponentBaseComponent {\r\n\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  private _columnFilter: DatagridColumn = new DatagridColumn();\r\n  public get columnFilter(): DatagridColumn { return this._columnFilter; }\r\n\r\n  input_toolPanelsVisibled = input(false, { alias: 'ToolPanelsVisibled' });\r\n  input_itemToolPanelActive = input('', { alias: 'ItemToolPanelActive' });\r\n  input_itemToolPanels = input<DatagridItemToolPanelType[]>([], { alias: 'ItemToolPanels' });\r\n  output_ToggleToolPanels = output<any>({ alias: 'toggleToolPanels' });\r\n\r\n  constructor(hostElement: ElementRef) { super(hostElement); }\r\n\r\n  protected toggleToolPanels(event: any, itemPanel: any) {\r\n    if (itemPanel == 'filter' && this.input_itemToolPanelActive() == '') { return; }\r\n    this.output_ToggleToolPanels.emit({ event: event, itemPanel: itemPanel });\r\n  }\r\n\r\n  //#region DatagridItemPanelColumnsComponent\r\n  input_datagridColumns = input<DatagridColumn[]>([], { alias: 'DatagridColumns' });\r\n  input_datagridOptions = input.required<IDatagridOptions>({ alias: 'DatagridOptions' });\r\n  output_SetVisibleColumnByIndex = output<any>({ alias: 'setVisibleColumnByIndex' });\r\n  output_MoveColumnByIndex = output<any>({ alias: 'moveColumnByIndex' });\r\n\r\n  protected setVisibleColumnByIndex(event: any) { this.output_SetVisibleColumnByIndex.emit(event); }\r\n  protected moveColumnByIndex(event: any) { this.output_MoveColumnByIndex.emit(event); }\r\n  //#endregion\r\n\r\n  //#region DatagridItemPanelOptionsComponent\r\n  input_allowModules = input<any>({}, { alias: 'AllowModules' });\r\n  output_SetVisibilityDatagridModule = output<any>({ alias: 'setVisibilityDatagridModule' });\r\n\r\n  protected setVisibilityDatagridModule(event: any) { this.output_SetVisibilityDatagridModule.emit(event); }\r\n  //#endregion\r\n\r\n  //#region DatagridItemPanelFilterComponent\r\n  input_datas = input<any[]>([], { alias: 'Datas' });\r\n  input_i18N = input<IDatagridI18N>(DatagridEnvironmentConst.i18N, { alias: 'I18N' });\r\n  output_ApplyFilterClick = output<any>({ alias: 'applyFilterClick' });\r\n  output_SortColumn = output<any>({ alias: 'sortColumn' });\r\n\r\n  protected applyFilterClick(event: any) { this.output_ApplyFilterClick.emit(event); }\r\n  protected sortColumn(event: any) { this.output_SortColumn.emit(event); }\r\n  //#endregion\r\n\r\n  public setColumnFilter(col: DatagridColumn) { this._columnFilter = col; }\r\n}\r\n","<div class=\"datagrid-toolpanels-item-main\">\r\n    @switch (input_itemToolPanelActive()) {\r\n    @case ('columns') {\r\n    <csc-datagrid-item-panel-columns [DatagridColumns]=\"input_datagridColumns()\" [DatagridOptions]=\"input_datagridOptions()\"\r\n        [I18N]=\"this.input_i18N()\" (setVisibleColumnByIndex)=\"setVisibleColumnByIndex($event)\"\r\n        (moveColumnByIndex)=\"moveColumnByIndex($event)\"></csc-datagrid-item-panel-columns>\r\n    }\r\n    @case ('options') {\r\n    <csc-datagrid-item-panel-options [AllowModules]=\"{\r\n                allowTitle : input_allowModules().allowTitle\r\n                , allowToolBar : input_allowModules().allowToolBar\r\n                , allowMenu : input_allowModules().allowMenu\r\n                , allowGroupColumns : input_allowModules().allowGroupColumns\r\n                , allowHeaderColumns : input_allowModules().allowHeaderColumns\r\n                , allowFilteringColumns : input_allowModules().allowFilteringColumns\r\n                , toolPanelsEnabled : input_allowModules().toolPanelsEnabled\r\n                , allowFooter : input_allowModules().allowFooter\r\n                , allowTotals : input_allowModules().allowTotals\r\n                , allowMessage : input_allowModules().allowMessage\r\n            }\" [I18N]=\"this.input_i18N()\"\r\n        (setVisibilityDatagridModule)=\"setVisibilityDatagridModule($event)\"></csc-datagrid-item-panel-options>\r\n    }\r\n    @case ('filter') {\r\n    <csc-datagrid-item-panel-filter [DatagridColumns]=\"input_datagridColumns()\" [DatagridOptions]=\"input_datagridOptions()\" [Column]=\"this.columnFilter\"\r\n        [Datas]=\"this.input_datas()\" [I18N]=\"this.input_i18N()\" (applyFilterClick)=\"applyFilterClick($event)\"\r\n        (sortColumn)=\"sortColumn($event)\"></csc-datagrid-item-panel-filter>\r\n    }\r\n    }\r\n</div>\r\n<div class=\"datagrid-toolpanels-items\">\r\n    @for (itemToolPanel of input_itemToolPanels(); track $index) {\r\n    <div class=\"datagrid-toolpanels-item\" [attr.data-item]=\"itemToolPanel\"\r\n        (click)=\"toggleToolPanels($event, itemToolPanel)\">\r\n        <div class=\"datagrid-toolpanels-item-content\">\r\n            @switch (itemToolPanel) {\r\n            @case ('columns') {<span>{{this.input_i18N().columns}}</span>}\r\n            @case ('options') {<span>{{this.input_i18N().options}}</span>}\r\n            @case ('filter') {<span>{{this.input_i18N().filter}}</span>}\r\n            }\r\n        </div>\r\n        <div class=\"datagrid-toolpanels-item-separator\"></div>\r\n    </div>\r\n    }\r\n</div>","export class DatagridPagination {\r\n    public enabledFirst: boolean\r\n    public enabledPrevious: boolean\r\n    public enabledNext: boolean\r\n    public enabledLast: boolean\r\n    public visible: boolean\r\n  \r\n    constructor() {\r\n      this.enabledFirst = true;\r\n      this.enabledPrevious = true;\r\n      this.enabledFirst = true;\r\n      this.enabledNext = true;\r\n      this.enabledLast = true;\r\n      this.visible = true;\r\n    }\r\n  }\r\n","import { Component, effect, ElementRef, input, output, Version } from '@angular/core';\r\nimport { DatagridPagination } from '../dtos/datagrid-pagination-dto';\r\nimport { IDatagridPaginationTemplate } from '../interfaces/idatagrid-pagination-template';\r\nimport { IDatagridPaginationItem } from '../interfaces/idatagrid-pagination-item';\r\nimport { ComponentBaseComponent } from '../../component-base/component-base.component';\r\n\r\n@Component({\r\n  selector: 'csc-datagrid-pagination',\r\n  imports: [],\r\n  templateUrl: './datagrid-pagination.component.html',\r\n  styleUrl: './datagrid-pagination.component.scss'\r\n})\r\nexport class DatagridPaginationComponent extends ComponentBaseComponent {\r\n\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  private _numPage: number = 1;\r\n  private _pageMax: number = 1;\r\n  private _itemPaginationLength: number = 5;\r\n  private _pagination: DatagridPagination = new DatagridPagination();\r\n  private _i18N: IDatagridPaginationTemplate = {\r\n    first: 'first'\r\n    , last: 'last'\r\n    , next: 'next'\r\n    , previous: 'previous'\r\n  };\r\n\r\n  protected paginationItem: IDatagridPaginationItem[] = [];\r\n\r\n  public get numPage(): number { return this._numPage; }\r\n  public get pageMax(): number { return this._pageMax; }\r\n  public get itemPaginationLength(): number { return this._itemPaginationLength; }\r\n  public get pagination(): DatagridPagination { return this._pagination; }\r\n  public get i18N(): IDatagridPaginationTemplate { return this._i18N; }\r\n\r\n  public input_Pagination = input.required<DatagridPagination>({ alias: 'Pagination' });\r\n  public input_NumPage = input.required<number>({ alias: 'NumPage' });\r\n  public input_PageMax = input.required<number>({ alias: 'PageMax' });\r\n  public input_ItemPaginationLength = input.required<number>({ alias: 'ItemPaginationLength' });\r\n  public input_i18N = input.required<IDatagridPaginationTemplate>({ alias: 'i18N' });\r\n\r\n  public output_GotoFirst = output<any>({ alias: 'gotoFirst' })\r\n  public output_GotoPrevious = output<any>({ alias: 'gotoPrevious' })\r\n  public output_GotoNext = output<any>({ alias: 'gotoNext' })\r\n  public output_GotoLast = output<any>({ alias: 'gotoLast' })\r\n  public output_GotoPage = output<any>({ alias: 'gotoPage' })\r\n\r\n  constructor(hostElement: ElementRef) {\r\n    super(hostElement);\r\n    (hostElement.nativeElement as HTMLElement).classList.add(\"csc-datagrid-pagination\");\r\n    effect((effect) => {\r\n      if (this._pagination != this.input_Pagination()) { this._pagination = this.input_Pagination(); }\r\n      if (this._numPage != this.input_NumPage()) { this._numPage = this.input_NumPage(); }\r\n      if (this._pageMax != this.input_PageMax()) { this._pageMax = this.input_PageMax(); }\r\n      if (this._itemPaginationLength != this.input_ItemPaginationLength()) { this._itemPaginationLength = this.input_ItemPaginationLength(); }\r\n      if (this._i18N != this.input_i18N()) { this._i18N = this.input_i18N(); }\r\n      this.buildPagination();\r\n    });\r\n  }\r\n\r\n  //#region Navigation\r\n  public gotoFirst() { this.output_GotoFirst.emit(1); this.gotoPage(1); }\r\n  public gotoPrevious() { if (this._numPage > 1) { this.output_GotoPrevious.emit(this._numPage - 1); this.gotoPage(this._numPage - 1); } }\r\n  public gotoNext() { this.output_GotoNext.emit(this._numPage + 1); this.gotoPage(this._numPage + 1); }\r\n  public gotoLast() { this.output_GotoLast.emit(this._pageMax); this.gotoPage(this._pageMax); }\r\n  public gotoPage(numPage: number) { this.output_GotoPage.emit(numPage); }\r\n  //#endregion\r\n  protected buildPagination() {\r\n    let paginationItem: IDatagridPaginationItem[] = [];\r\n    let index = 1;\r\n    let iPage: number = this._numPage\r\n    if (iPage > (this._pageMax - this._itemPaginationLength)) { iPage = (this._pageMax - this._itemPaginationLength) + 1; }\r\n    if (this._numPage > 1 && this._pageMax > this._itemPaginationLength) { paginationItem.push({ index: index, html: \"...\", enabled: false, active: false, page: 1 }); }\r\n    for (var i = 0; i < this._itemPaginationLength; i++) {\r\n      index = i + iPage;\r\n      if (index <= this._pageMax && index > 0) { paginationItem.push({ index: index, html: `${index}`, enabled: true, active: (index == this._numPage), page: index }); }\r\n    }\r\n    if (this._numPage <= (this._pageMax - this._itemPaginationLength) && this._pageMax > this._itemPaginationLength) { paginationItem.push({ index: index, html: \"...\", enabled: false, active: false, page: this._pageMax }); }\r\n    if (index < this._pageMax) { paginationItem.push({ index: this._pageMax, html: `${this._pageMax}`, enabled: true, active: (index == this._numPage), page: this._pageMax }); }\r\n    this.paginationItem = paginationItem;\r\n  }\r\n  //#endregion\r\n}","@if(pagination.enabledFirst && numPage>1){\r\n<span class=\"csc-datagrid-pagination-first\" (click)=\"gotoFirst()\"></span>\r\n}\r\n@if(pagination.enabledPrevious && numPage>1){\r\n<span class=\"csc-datagrid-pagination-previous\" (click)=\"gotoPrevious()\"></span>\r\n}\r\n@for (item of paginationItem; track $index) {\r\n<span class=\"csc-datagrid-pagination-item\"\r\n    [class]=\"{'active' : item.active == true, 'disabled' : item.enabled == false}\" (click)=\"gotoPage(item.page)\"\r\n    [innerHTML]=\"item.html\">\r\n</span>\r\n}\r\n@if(pagination.enabledNext && numPage<pageMax){ <span class=\"csc-datagrid-pagination-next\" (click)=\"gotoNext()\">\r\n    </span>\r\n    }\r\n    @if(pagination.enabledLast && numPage<pageMax){ <span class=\"csc-datagrid-pagination-last\"\r\n        (click)=\"gotoLast()\"></span>\r\n        }","import { Component, ElementRef, input, output, Version, viewChildren } from '@angular/core';\r\nimport { DatagridRow } from '../dtos/datagrid-row-dto';\r\nimport { DatagridColumn } from '../dtos/datagrid-column-dto';\r\nimport { DatagridCell } from '../dtos/datagrid-cell-dto';\r\nimport { DatagridColumnType } from '../types/datagrid-column-type';\r\nimport { IDatagridOptions } from '../interfaces/idatagrid-options';\r\nimport { DatagridCellEvent } from '../dtos/datagrid-cell-event';\r\nimport { ComponentBaseComponent } from '../../component-base/component-base.component';\r\n\r\n@Component({\r\n  selector: 'csc-datagrid-row',\r\n  imports: [],\r\n  templateUrl: './datagrid-row.component.html',\r\n  styleUrl: './datagrid-row.component.scss'\r\n})\r\nexport class DatagridRowComponent extends ComponentBaseComponent {\r\n\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  private _rowPainted: boolean = false;\r\n  private _defaultRowHeight: number = 32;\r\n\r\n  public get rowId(): string { return this.row().id; }\r\n\r\n  datagridColumns = input.required<DatagridColumn[]>({ alias: 'DatagridColumns' });\r\n  datagridOptions = input.required<IDatagridOptions>({ alias: 'DatagridOptions' });\r\n  row = input.required({\r\n    alias: 'Row', transform: (value: DatagridRow) => {\r\n      if (this.dataGridCellContents() != undefined) {\r\n        this.dataGridCellContents().forEach((e, i) => {\r\n          let htmlElementGridCellContent: HTMLElement = (e as ElementRef).nativeElement as HTMLElement;\r\n          let htmlElementGridCell: HTMLElement | null = htmlElementGridCellContent.closest('[role=\"gridcell\"]');\r\n          let columnId = htmlElementGridCell?.getAttribute('aria-colindex');\r\n          if (columnId != undefined) {\r\n            let col: DatagridColumn | undefined = this.getColumnById(columnId);\r\n            let cell: DatagridCell | undefined = value.cells.find(x => x.columnId == columnId);\r\n            if (cell != undefined) { htmlElementGridCellContent.style.cssText = this.getStyleContentCellInline(cell); }\r\n          }\r\n        });\r\n      }\r\n      this._rowPainted = false;\r\n      this.hostElement.nativeElement.setAttribute(\"datagrid-row-index\", value.id);\r\n      return value;\r\n    }\r\n  });\r\n\r\n  output_SelectedRow = output<any>({ alias: 'selectedRow' });\r\n  output_CellChangeValue = output<any>({ alias: 'cellChangeValue' });\r\n  output_CellClick = output<any>({ alias: 'cellClick' });\r\n  output_CellDbClick = output<any>({ alias: 'cellDbClick' });\r\n  output_RowPainting = output<any>({ alias: 'rowPainting' });\r\n  output_CellPainting = output<any>({ alias: 'cellPainting' });\r\n\r\n  dataGridCellContents = viewChildren('dataGridCellContent');\r\n\r\n  constructor(hostElement: ElementRef) { super(hostElement); }\r\n\r\n  //#region Column\r\n  protected getColumnById(colId: string): DatagridColumn | undefined { return this.datagridColumns().find(x => x.id == colId); }\r\n  protected getColumnByDataField(dataField: string): DatagridColumn | undefined { return this.datagridColumns().find(x => x.dataField == dataField); }\r\n  protected setVisibleColumnByIndex(event: any) {\r\n    var colVisible = undefined;\r\n    var colVisibleIndex = this.datagridColumns().findIndex(x => x.index == event.colIndex);\r\n    if (colVisibleIndex != undefined && colVisibleIndex >= 0) {\r\n      colVisible = this.datagridColumns()[colVisibleIndex];\r\n      colVisible.visible = !colVisible.visible;\r\n      this.datagridColumns()[colVisibleIndex] = colVisible;\r\n    }\r\n  }\r\n  protected getColumnTypeById(colId: string): DatagridColumnType {\r\n    var col = this.getColumnById(colId);\r\n    if (col != undefined && col.type != undefined) { return col.type; }\r\n    return 'string';\r\n  }\r\n  //#endregion\r\n  //#region Cell\r\n  protected getRowHeight() { return this.datagridOptions().rowHeight ?? this._defaultRowHeight; }\r\n  protected getStyleRowHeight() { return { 'height': `${this.getRowHeight()}px !important` }; }\r\n\r\n  protected getWidthCell(cell: DatagridCell): {} { return { 'width': `${cell.column.width}px` }; }\r\n  protected getStyleContentCell(cell: DatagridCell): {} {\r\n    let style: any = {} = cell.column.style ?? {};\r\n    if (cell.column.type == 'number' && style['justify-content'] == undefined) { style['justify-content'] = 'flex-end'; }\r\n    else if (cell.column.type == 'monetary' && style['justify-content'] == undefined) { style['justify-content'] = 'flex-end'; }\r\n    else if (cell.column.type == 'boolean' && style['justify-content'] == undefined) { style['justify-content'] = 'center'; }\r\n    else if (cell.column.type == 'date' && style['justify-content'] == undefined) { style['justify-content'] = 'center'; }\r\n    else if (cell.column.type == 'datetime' && style['justify-content'] == undefined) { style['justify-content'] = 'center'; }\r\n    return style;\r\n  }\r\n  protected getStyleContentCellInline(cell: DatagridCell): string {\r\n    var css = '';\r\n    Object.entries(this.getStyleContentCell(cell)).forEach((e, i) => { css += `${e[0]}:${e[1]};` });\r\n    return css;\r\n  }\r\n  protected getCellsByColumns(cells: DatagridCell[]) {\r\n    let _cells: DatagridCell[] = [];\r\n    this.datagridColumns().forEach((eCol, iCol) => {\r\n      let cell = cells.find(x => x.columnId == eCol.id);\r\n      if (cell != undefined) { _cells.push(cell); }\r\n    });\r\n    return _cells\r\n  }\r\n  protected getCellsByVisibledColumns(cells: DatagridCell[]) {\r\n    let _cells: DatagridCell[] = [];\r\n    this.datagridColumns().forEach((eCol, iCol) => {\r\n      if (eCol.visible == undefined || eCol.visible) {\r\n        let cell = cells.find(x => x.columnId == eCol.id);\r\n        if (cell != undefined) { _cells.push(cell); }\r\n        else {\r\n          _cells.push({\r\n            column: eCol\r\n            , columnId: eCol.id\r\n            , dataField: eCol.dataField\r\n            , rowId: this.row().id\r\n            , dataBoundItem: this.row().dataBoundItem[eCol.dataField]\r\n            , changed: false\r\n            , dataValue: () => { return '' }\r\n            , dataValueString: () => { return ''; }\r\n          });\r\n        }\r\n      }\r\n    });\r\n    return _cells\r\n  }\r\n  protected getCellByColumn(cells: DatagridCell[], col: DatagridColumn): DatagridCell | undefined { return cells.find(x => x.columnId == col.id); }\r\n  protected getHtmlCell(cell: DatagridCell): string {\r\n    if (typeof cell.dataValue() == 'function') { return cell.dataValue()(); }\r\n    else { return cell.dataValueString(); }\r\n  }\r\n  //#endregion\r\n  //#region Row\r\n  protected isOdd(): boolean { if (this.datagridOptions().theme?.stripped) { return (this.row().index % 2) == 0; } return false; }\r\n  //#endregion\r\n\r\n  protected cellChangeValue(event: any, row: DatagridRow, cell: DatagridCell) {\r\n    cell.changed = true;\r\n    var oldValue = row.dataBoundItem[cell.dataField];\r\n    if (cell.column.type == 'number' && !isNaN(event.target.value)) { row.dataBoundItem[cell.dataField] = Number.parseFloat(event.target.value); }\r\n    else if (cell.column.type == 'monetary' && !isNaN(event.target.value)) { row.dataBoundItem[cell.dataField] = Number.parseFloat(event.target.value); }\r\n    else if (cell.column.type == undefined || cell.column.type == 'string') { row.dataBoundItem[cell.dataField] = event.target.value; }\r\n    else { event.target.value = row.dataBoundItem[cell.dataField]; }\r\n    row.changed = true;\r\n    this.output_CellChangeValue.emit({ event: event, col: cell.column, row: row, cell: cell, oldValue: oldValue, newValue: row.dataBoundItem[cell.dataField] });\r\n    if (cell.column.cellChangeValue != undefined) {\r\n      var eventCell: DatagridCellEvent = {\r\n        cell: cell,\r\n        column: cell.column,\r\n        row: row,\r\n        value: cell.dataValue()\r\n      }\r\n      cell.column.cellChangeValue(eventCell);\r\n    }\r\n  }\r\n  protected cellClick(event: any, row: DatagridRow, cell: DatagridCell) {\r\n    if (this.datagridOptions().enabledSelectedRow == true) {\r\n      row.selected = !row.selected;\r\n      this.output_SelectedRow.emit({ event: event, row: row });\r\n    }\r\n    this.output_CellClick.emit({ event: event, col: cell.column, row: row, cell: cell });\r\n    if (cell.column.editing == true && cell.column.type == 'boolean') {\r\n      cell.changed = true;\r\n      var oldValue = row.dataBoundItem[cell.dataField];\r\n      row.dataBoundItem[cell.dataField] = !cell.dataValue();\r\n      row.changed = true;\r\n      this.output_CellChangeValue.emit({ event: event, col: cell.column, row: row, cell: cell, oldValue: oldValue, newValue: row.dataBoundItem[cell.dataField] });\r\n      if (cell.column.cellChangeValue != undefined) {\r\n        var eventCell: DatagridCellEvent = {\r\n          cell: cell,\r\n          column: cell.column,\r\n          row: row,\r\n          value: cell.dataValue()\r\n        }\r\n        cell.column.cellChangeValue(eventCell);\r\n      }\r\n    }\r\n    if (cell.column.cellClick != undefined) {\r\n      var eventCell: DatagridCellEvent = {\r\n        cell: cell,\r\n        column: cell.column,\r\n        row: row,\r\n        value: cell.dataValue()\r\n      }\r\n      cell.column.cellClick(eventCell);\r\n    }\r\n  }\r\n  protected cellDbClick(event: any, row: DatagridRow, cell: DatagridCell) {\r\n    if (this.datagridOptions().enabledDoubleClickOnRow == true) {\r\n      var _event = { event: event, col: cell.column, row: row, cell: cell };\r\n      if (this.datagridOptions().dbClickedRow_Callback != undefined) { this.datagridOptions().dbClickedRow_Callback(_event); }\r\n      this.output_CellDbClick.emit(_event);\r\n    }\r\n    if (cell.column.cellDbClick != undefined) {\r\n      var eventCell: DatagridCellEvent = {\r\n        cell: cell,\r\n        column: cell.column,\r\n        row: row,\r\n        value: cell.dataValue()\r\n      }\r\n      cell.column.cellDbClick(eventCell);\r\n    }\r\n  }\r\n  protected rowPainting() {\r\n    if (this._rowPainted) { return; }\r\n    this._rowPainted = true;\r\n    this.output_RowPainting.emit({ target: this.hostElement.nativeElement, row: this.row() });\r\n  }\r\n  protected cellPainting(event: any, cell: DatagridCell) {\r\n    if (this._rowPainted) { return; }\r\n    this.output_CellPainting.emit({\r\n      targetCell: event.target,\r\n      targetRow: this.hostElement.nativeElement,\r\n      cell: cell,\r\n      column: cell.column,\r\n      row: this.row(),\r\n      value: cell.dataValue()\r\n    });\r\n  }\r\n}\r\n","<div class=\"datagrid-row\" role=\"row\" [style]=\"getStyleRowHeight()\">\r\n    @for (cell of getCellsByVisibledColumns(row().cells); track $index; let last=$last) {\r\n    <div class=\"datagrid-gridcell\" role=\"gridcell\" [style]=\"getWidthCell(cell)\" (click)=\"cellClick($event, row(), cell)\"\r\n        (dblclick)=\"cellDbClick($event, row(), cell)\" [ariaColIndex]=\"cell.columnId\">\r\n        @if(getColumnTypeById(cell.columnId)=='boolean'){\r\n        <div #dataGridCellContent class=\"datagrid-gridcell-content-boolean\" [style]=\"getStyleContentCell(cell)\">\r\n            <div role=\"checkbox\" [ariaChecked]=\"cell.dataValue()\" [ariaReadOnly]=\"(cell.column.editing!=true)\"></div>\r\n            {{this.cellPainting({index:$index,target:dataGridCellContent}, cell)}}\r\n        </div>\r\n        }\r\n        @else if(getColumnTypeById(cell.columnId)=='image'){\r\n        <div #dataGridCellContent class=\"datagrid-gridcell-content\" [style]=\"getStyleContentCell(cell)\">\r\n            <img [src]=\"cell.dataValue()\" title=\"{{cell.column.label}}\" height=\"100%\" />\r\n            {{this.cellPainting({index:$index,target:dataGridCellContent}, cell)}}\r\n        </div>\r\n        }\r\n        @else if(cell.column.editing){\r\n        <div #dataGridCellContent class=\"datagrid-gridcell-content\" [style]=\"getStyleContentCell(cell)\">\r\n            <input type=\"text\" [value]=\"cell.dataValue()\" (change)=\"cellChangeValue($event, row(), cell)\" />\r\n            {{this.cellPainting({index:$index,target:dataGridCellContent}, cell)}}\r\n        </div>\r\n        }\r\n        @else {\r\n        <div #dataGridCellContent class=\"datagrid-gridcell-content\" [style]=\"getStyleContentCell(cell)\"\r\n            [innerHTML]=\"getHtmlCell(cell)\">\r\n            {{this.cellPainting({index:$index,target:dataGridCellContent}, cell)}}\r\n        </div>\r\n        }\r\n        @if(last){\r\n        {{this.rowPainting()}}\r\n        }\r\n    </div>\r\n    }\r\n</div>\r\n<div class=\"datagrid-row-separator\"></div>","import { Injectable } from '@angular/core';\r\nimport { ModuleRegistryType } from './types/module-registery-type';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ModuleRegistryService {\r\n\r\n  private static _module: ModuleRegistryType = 'community';\r\n  public get module(): ModuleRegistryType { return ModuleRegistryService._module; }\r\n\r\n  constructor() { }\r\n\r\n  public static registerModules(module: ModuleRegistryType): void;\r\n  public static registerModules(module: ModuleRegistryType, dsn: string): void;\r\n  public static registerModules(module: ModuleRegistryType, dsn?: string): void {\r\n    if (dsn != undefined) {\r\n      /*this.httpClient.get<any>('').subscribe({\r\n        next: (res) => {\r\n\r\n        }\r\n        , error: (err) => {\r\n\r\n        },\r\n      });*/\r\n      this._module = module;\r\n    } else { this._module = module; }\r\n  }\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { Component, ElementRef, output, Version, viewChild } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { IDatagridButtonExtends } from '../interfaces/idatagrid-button-extends';\r\nimport { IDatagridCustomButton } from '../interfaces/idatagrid-custom-button';\r\nimport { IDatagridOptions } from '../interfaces/idatagrid-options';\r\nimport { IDatagridTheme } from '../interfaces/idatagrid-theme';\r\nimport { IDatagridI18N } from '../interfaces/idatagrid-i18n';\r\nimport { DatagridColumn } from '../dtos/datagrid-column-dto';\r\nimport { DatagridRow } from '../dtos/datagrid-row-dto';\r\nimport { DatagridCell } from '../dtos/datagrid-cell-dto';\r\nimport { DatagridItemToolPanelType } from '../types/datagrid-item-tool-panel-type';\r\nimport { DatagridItemPanelsComponent } from '../../../components/datagrid/datagrid-item-panels/datagrid-item-panels.component';\r\nimport { DatagridPaginationComponent } from '../../../components/datagrid/datagrid-pagination/datagrid-pagination.component';\r\nimport { DatagridRowComponent } from '../../../components/datagrid/datagrid-row/datagrid-row.component';\r\nimport { DatagridPagination } from '../dtos/datagrid-pagination-dto';\r\nimport { LoaderComponent } from '../../loader/loader.component';\r\nimport { DropdownButtonComponent } from '../../../form-components/dropdown-button/dropdown-button.component';\r\nimport { DatagridEnvironmentConst } from '../consts/datagrid-environment-const';\r\nimport { DatagridColumnSortingDirection } from '../types/datagrid-sorting-direction-type';\r\nimport { DatagridColumnType } from '../types/datagrid-column-type';\r\nimport { IDropdownButtonEntrie } from '../../../form-components/dropdown-button/interfaces/idropdown-button-entrie';\r\nimport { DatagridItemToolModuleType } from '../types/datagrid-item-tool-option-type';\r\nimport { DateTime } from '../../../date-time';\r\nimport { ComponentBaseComponent } from '../../component-base/component-base.component';\r\nimport { IconComponent } from '../../icon/icon.component';\r\nimport { IDatagridMessageQueue } from '../interfaces/idatagrid-message-queue';\r\nimport { IconType } from '../../icon/types/icon-type';\r\nimport { LoaderType } from '../../loader/types/loader-type';\r\nimport { ModuleRegistryService } from '../../../services/module-registry/module-registry.service';\r\n\r\n@Component({\r\n  selector: 'csc-datagrid',\r\n  imports: [\r\n    DatagridItemPanelsComponent,\r\n    DatagridPaginationComponent,\r\n    DatagridRowComponent,\r\n    LoaderComponent,\r\n    DropdownButtonComponent,\r\n    IconComponent\r\n  ],\r\n  templateUrl: './datagrid.component.html',\r\n  styleUrl: './datagrid.component.scss'\r\n})\r\nexport class DatagridComponent extends ComponentBaseComponent {\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  //#region Private variables\r\n  private _datagridOptions: IDatagridOptions = { columns: [] };\r\n  //#region Datas\r\n  private _datas: any[] = [];\r\n  private _currentDatas: any[] = [];\r\n  //#endregion\r\n  //#region Uri\r\n  private _httpParams: HttpParams = new HttpParams();\r\n  private _uri: string = \"\";\r\n  //#endregion\r\n  //#region Initialization\r\n  private _isInitialized = false;\r\n  private _isLoaded = false;\r\n  //#endregion\r\n  //#region Structure Datagrid\r\n  private _datagridColumns!: DatagridColumn[];\r\n  private _datagridRows: DatagridRow[] = [];\r\n  private _datagridRowsFiltered: DatagridRow[] = [];\r\n  private _isFiltering: boolean = false;\r\n  private _itemToolPanels: DatagridItemToolPanelType[] = ['columns'];\r\n  private _itemToolPanelActive: string = '';\r\n  private _toolPanelsEnabledOrigin: boolean = true;\r\n  private _toolPanelsVisibled: boolean = false;\r\n  private _datagridQueuing: boolean = false;\r\n  private _datagridMessageQueues: IDatagridMessageQueue[] = []\r\n  private _fullscreen: boolean = false;\r\n  private _defaultRowHeight: number = 32;\r\n  private _defaultColumnHeaderHeight: number = 32;\r\n  private _defaultColumnFooterHeight: number = 32;\r\n  private _language: string = 'en-gb';\r\n  //#endregion\r\n  //#region Components Pagination\r\n  private _pagination: DatagridPagination = new DatagridPagination();\r\n  private _numberPaginationItem: number = 5;\r\n  private _currentPage: number = 1;\r\n  private _numPageSize: number = 10;\r\n  //#endregion\r\n  //#endregion\r\n\r\n  //#region Public Get\r\n  //#region Datas\r\n  public get Datas(): any[] { return this._datas; }\r\n  public get currentDatas(): any[] { return this._currentDatas; }\r\n  //#endregion\r\n  //#region Loader\r\n  protected get loaderType(): LoaderType { return this._datagridOptions.theme?.loaderType ?? 'dots'; }\r\n  //#endregion\r\n  //#region Initialization\r\n  public get isInitialized(): boolean { return this._isInitialized; }\r\n  public get isLoaded(): boolean { return this._isLoaded; }\r\n  //#endregion\r\n  //#region Structure Datagrid\r\n  public get datagridColumns(): DatagridColumn[] { return this._datagridColumns.sort((a, b) => { return a.index - b.index; }); }\r\n  public get datagridRows(): DatagridRow[] { return this._datagridRows; }\r\n  public get datagridRowsFiltered(): DatagridRow[] { return this._datagridRowsFiltered; }\r\n  public get i18N(): IDatagridI18N { return DatagridEnvironmentConst.i18N; }\r\n  public get language(): string { return this._language; }\r\n  public get labelTotal(): string {\r\n    let labelTotal: string = this.i18N.labelTotal ?? '';\r\n    labelTotal = labelTotal.replace(\"#{numItemFrom}#\", this.itemStart.toString());\r\n    let numItemTo = this.itemEnd;\r\n    if (numItemTo > this._datagridRowsFiltered.length) { numItemTo = this._datagridRowsFiltered.length; }\r\n    labelTotal = labelTotal.replace(\"#{numItemTo}#\", numItemTo.toString());\r\n    labelTotal = labelTotal.replace(\"#{numItemLength}#\", this._datagridRowsFiltered.length.toString());\r\n    return labelTotal;\r\n  }\r\n  protected get itemStart(): number { return this.numberItemsShow > 0 ? ((this.currentPage - 1) * this.numberItemsShow) + 1 : 1; }\r\n  protected get itemEnd(): number { return this.numberItemsShow > 0 ? this.currentPage * this.numberItemsShow : this._datagridRowsFiltered.length; }\r\n  //#endregion\r\n  //#region Buttons\r\n  public get title(): string { return this._datagridOptions.title ?? ''; }\r\n  public get buttons(): IDatagridButtonExtends[] { return this._datagridOptions.buttons ?? [{ name: 'refresh' }, { name: 'clearFilters' }]; }\r\n  public get customButton(): IDatagridCustomButton[] { return this._datagridOptions.customButton ?? []; }\r\n  public get isFiltering(): boolean { return this._isFiltering; }\r\n  //#endregion\r\n  //#region Components Pagination\r\n  protected get pagination(): DatagridPagination { return this._pagination; }\r\n  protected get numberPaginationItem(): number { return this._numberPaginationItem; }\r\n  protected get numberItemsShow(): number { return this._numPageSize; }\r\n  public get currentPage(): number { return this._currentPage; }\r\n  public get maxPage(): number { return Math.ceil(this._datagridRowsFiltered.length / ((this._numPageSize > 0) ? this._numPageSize : this._datagridRowsFiltered.length)); }\r\n  //#endregion\r\n  //#region Panels\r\n  public get itemToolPanels(): DatagridItemToolPanelType[] { return this._itemToolPanels; }\r\n  public get itemToolPanelActive(): string { return this._itemToolPanelActive; }\r\n  public get toolPanelsEnabled(): boolean { return this.datagridOptions?.allowPanels?.toolPanelsEnabled ?? false; }\r\n  public get toolPanelsEnabledOrigin(): boolean { return this._toolPanelsEnabledOrigin; }\r\n  public get toolPanelsVisibled(): boolean { return this._toolPanelsVisibled; }\r\n  //#endregion\r\n  //#region Authorization\r\n  protected get allowTitle(): boolean { return this.datagridOptions?.allowPanels?.allowTitle ?? false; }\r\n  protected get allowToolBar(): boolean { return this.datagridOptions?.allowPanels?.allowToolBar ?? false; }\r\n  protected get allowMenu(): boolean { return this.datagridOptions?.allowPanels?.allowMenu ?? false; }\r\n  protected get allowGroupColumns(): boolean { return this.datagridOptions?.allowPanels?.allowGroupColumns ?? false; }\r\n  protected get allowHeaderColumns(): boolean { return this.datagridOptions?.allowPanels?.allowHeaderColumns ?? false; }\r\n  protected get allowHeaderRows(): boolean { return this.datagridOptions?.allowPanels?.allowHeaderRows ?? false; }\r\n  protected get allowFilteringColumns(): boolean { return this.datagridOptions?.allowPanels?.allowFilteringColumns ?? false; }\r\n  protected get allowFooter(): boolean { return this.datagridOptions?.allowPanels?.allowFooter ?? false; }\r\n  protected get allowTotals(): boolean { return this.datagridOptions?.allowPanels?.allowTotals ?? false; }\r\n  protected get allowMessage(): boolean { return this.datagridOptions?.allowPanels?.allowMessage ?? false; }\r\n  protected get allowMultiColumnSort(): boolean { return this.datagridOptions?.allowMultiColumnSort ?? false; }\r\n  protected get colReorder(): boolean { return this.datagridOptions.colReorder ?? false; }\r\n  protected get multiSelectionRow(): boolean { return false; }\r\n  //#endregion\r\n  //#endregion\r\n\r\n  //#region Public Set\r\n  //#endregion\r\n\r\n  /************************************************ */\r\n  public get datagridOptions(): IDatagridOptions { return this._datagridOptions; }\r\n  /************************************************ */\r\n\r\n  //#region ViewChild\r\n  datagridColumnHeaders = viewChild<ElementRef>('datagridColumnHeaders');\r\n  datagridColumnFooters = viewChild<ElementRef>('datagridColumnFooters');\r\n  datagridColumnFilterings = viewChild<ElementRef>('datagridColumnFilterings');\r\n  cboDatagridDropdownButton = viewChild<DropdownButtonComponent>('cboDatagridDropdownButton');\r\n  datagridRowHeaders = viewChild<ElementRef>('datagridRowHeaders');\r\n  datagridBody = viewChild<ElementRef>('datagridBody');\r\n  datagridPagination = viewChild<DatagridPaginationComponent>('datagridPagination');\r\n  datagridItemPanels = viewChild<DatagridItemPanelsComponent>('datagridItemPanels');\r\n  txtSearch = viewChild<ElementRef>('txtSearch');\r\n  //#endregion\r\n\r\n  //#region Output\r\n  output_SelectedRow = output<any>({ alias: 'selectedRow' });\r\n  output_CellChangeValue = output<any>({ alias: 'cellChangeValue' });\r\n  output_CellClick = output<any>({ alias: 'cellClick' });\r\n  output_CellDbClick = output<any>({ alias: 'cellDbClick' });\r\n  output_RowPainting = output<any>({ alias: 'rowPainting' });\r\n  output_CellPainting = output<any>({ alias: 'cellPainting' });\r\n  //#endregion\r\n\r\n  constructor(\r\n    private httpClient: HttpClient\r\n    , private moduleRegistery: ModuleRegistryService\r\n    , hostElement: ElementRef) {\r\n    super(hostElement);\r\n    (hostElement.nativeElement as HTMLElement).classList.add(\"csc-datagrid\");\r\n    (hostElement.nativeElement as HTMLElement).ariaExpanded = this._fullscreen.toString()\r\n    let theme: IDatagridTheme = { name: 'original', stripped: false, loaderType: 'dots' };\r\n    if (theme.stripped) { (this.hostElement.nativeElement as HTMLElement).classList.add(\"csc-datagrid-stripped\"); }\r\n    if (theme.name) { (this.hostElement.nativeElement as HTMLElement).setAttribute('data-theme', 'original'); }\r\n    //#region Language\r\n    var cscLanguageStorage = localStorage.getItem(`csc-language`);\r\n    var datagridLanguageStorage = localStorage.getItem(`csc-datagrid-language`);\r\n    if (datagridLanguageStorage == undefined && cscLanguageStorage != undefined) { datagridLanguageStorage = cscLanguageStorage; }\r\n    if (this._datagridOptions.i18N == undefined && datagridLanguageStorage != undefined) { this._datagridOptions.i18N = datagridLanguageStorage; }\r\n    this.setLanguage((this._datagridOptions.i18N != undefined) ? this._datagridOptions.i18N : 'en-us');\r\n    //#endregion\r\n  }\r\n\r\n  //#region Initialization\r\n  protected setVisibilityDatagridModule(event: any) {\r\n    if (this.datagridOptions.allowPanels != undefined) {\r\n      switch (event.module as DatagridItemToolModuleType) {\r\n        case 'columnFilter': this.datagridOptions.allowPanels.allowFilteringColumns = !this.allowFilteringColumns; break;\r\n        case 'columnHeader': this.datagridOptions.allowPanels.allowHeaderColumns = !this.allowHeaderColumns; break;\r\n        case 'footer': this.datagridOptions.allowPanels.allowFooter = !this.allowFooter; break;\r\n        case 'groupColumns': this.datagridOptions.allowPanels.allowGroupColumns = !this.allowGroupColumns; break;\r\n        case 'menu': this.datagridOptions.allowPanels.allowMenu = !this.allowMenu; break;\r\n        case 'title': this.datagridOptions.allowPanels.allowTitle = !this.allowTitle; break;\r\n        case 'toolbar': this.datagridOptions.allowPanels.allowToolBar = !this.allowToolBar; break;\r\n        case 'toolPanel': this.datagridOptions.allowPanels.toolPanelsEnabled = !this.toolPanelsEnabled; break;\r\n        case 'message': this.datagridOptions.allowPanels.allowMessage = !this.allowMessage; break;\r\n        case 'totals': this.datagridOptions.allowPanels.allowTotals = !this.allowTotals; break;\r\n      }\r\n    }\r\n  }\r\n  protected setI18N(json: any, language: string) {\r\n    try {\r\n      let i18n: IDatagridI18N = {\r\n        first: json.first ?? DatagridEnvironmentConst.defaulti18N.first,\r\n        previous: json.previous ?? DatagridEnvironmentConst.defaulti18N.previous,\r\n        next: json.next ?? DatagridEnvironmentConst.defaulti18N.next,\r\n        last: json.last ?? DatagridEnvironmentConst.defaulti18N.last,\r\n        labelTotal: json.labelTotal ?? DatagridEnvironmentConst.defaulti18N.labelTotal,\r\n        search: json.search ?? DatagridEnvironmentConst.defaulti18N.search,\r\n        show: json.show ?? DatagridEnvironmentConst.defaulti18N.show,\r\n        entries: json.entries ?? DatagridEnvironmentConst.defaulti18N.entries,\r\n        refresh: json.refresh ?? DatagridEnvironmentConst.defaulti18N.refresh,\r\n        exportCSV: json.exportCSV ?? DatagridEnvironmentConst.defaulti18N.exportCSV,\r\n        exportXLSX: json.exportXLSX ?? DatagridEnvironmentConst.defaulti18N.exportXLSX,\r\n        clearFilters: json.clearFilters ?? DatagridEnvironmentConst.defaulti18N.clearFilters,\r\n        parameters: json.parameters ?? DatagridEnvironmentConst.defaulti18N.parameters,\r\n        validate: json.validate ?? DatagridEnvironmentConst.defaulti18N.validate,\r\n        all: json.all ?? DatagridEnvironmentConst.defaulti18N.all,\r\n        allEntries: json.allEntries ?? DatagridEnvironmentConst.defaulti18N.allEntries,\r\n        yes: json.yes ?? DatagridEnvironmentConst.defaulti18N.yes,\r\n        no: json.no ?? DatagridEnvironmentConst.defaulti18N.no,\r\n        applyFilter: json.applyFilter ?? DatagridEnvironmentConst.defaulti18N.applyFilter,\r\n        closeFilter: json.closeFilter ?? DatagridEnvironmentConst.defaulti18N.closeFilter,\r\n        eraseFilter: json.eraseFilter ?? DatagridEnvironmentConst.defaulti18N.eraseFilter,\r\n        columns: json.columns ?? DatagridEnvironmentConst.defaulti18N.columns,\r\n        options: json.options ?? DatagridEnvironmentConst.defaulti18N.options,\r\n        filter: json.filter ?? DatagridEnvironmentConst.defaulti18N.filter,\r\n        digitsSeparator: json.digitsSeparator ?? DatagridEnvironmentConst.defaulti18N.digitsSeparator,\r\n        currencyCode: json.currencyCode ?? DatagridEnvironmentConst.defaulti18N.currencyCode,\r\n        currencySymbol: json.currencySymbol ?? DatagridEnvironmentConst.defaulti18N.currencySymbol,\r\n        notInitialized: json.notInitialized ?? DatagridEnvironmentConst.defaulti18N.notInitialized,\r\n        options_Title: json.options_Title ?? DatagridEnvironmentConst.defaulti18N.options_Title,\r\n        options_ToolsBar: json.options_ToolsBar ?? DatagridEnvironmentConst.defaulti18N.options_ToolsBar,\r\n        options_Menus: json.options_Menus ?? DatagridEnvironmentConst.defaulti18N.options_Menus,\r\n        options_GroupingColumn: json.options_GroupingColumn ?? DatagridEnvironmentConst.defaulti18N.options_GroupingColumn,\r\n        options_HeaderColumns: json.options_HeaderColumns ?? DatagridEnvironmentConst.defaulti18N.options_HeaderColumns,\r\n        options_FilteringColumns: json.options_FilteringColumns ?? DatagridEnvironmentConst.defaulti18N.options_FilteringColumns,\r\n        options_Messages: json.options_Messages ?? DatagridEnvironmentConst.defaulti18N.options_Messages,\r\n        options_Totals: json.options_Totals ?? DatagridEnvironmentConst.defaulti18N.options_Totals,\r\n        options_Footer: json.options_Footer ?? DatagridEnvironmentConst.defaulti18N.options_Footer,\r\n        columnMenu: json.columnMenu ?? DatagridEnvironmentConst.defaulti18N.columnMenu,\r\n        columnMenu_sorting: json.columnMenu_sorting ?? DatagridEnvironmentConst.defaulti18N.columnMenu_sorting,\r\n        columnMenu_sortAsc: json.columnMenu_sortAsc ?? DatagridEnvironmentConst.defaulti18N.columnMenu_sortAsc,\r\n        columnMenu_sortDesc: json.columnMenu_sortDesc ?? DatagridEnvironmentConst.defaulti18N.columnMenu_sortDesc,\r\n        footerTotalMenu: json.footerTotalMenu ?? DatagridEnvironmentConst.defaulti18N.footerTotalMenu,\r\n        footerTotalMenu_None: json.footerTotalMenu_None ?? DatagridEnvironmentConst.defaulti18N.footerTotalMenu_None,\r\n        footerTotalMenu_Sum: json.footerTotalMenu_Sum ?? DatagridEnvironmentConst.defaulti18N.footerTotalMenu_Sum,\r\n        footerTotalMenu_Avg: json.footerTotalMenu_Avg ?? DatagridEnvironmentConst.defaulti18N.footerTotalMenu_Avg,\r\n        footerTotalMenu_Min: json.footerTotalMenu_Min ?? DatagridEnvironmentConst.defaulti18N.footerTotalMenu_Min,\r\n        footerTotalMenu_Max: json.footerTotalMenu_Max ?? DatagridEnvironmentConst.defaulti18N.footerTotalMenu_Max,\r\n        dateFormat: json.dateFormat ?? DatagridEnvironmentConst.defaulti18N.dateFormat,\r\n        dateTimeFormat: json.dateTimeFormat ?? DatagridEnvironmentConst.defaulti18N.dateTimeFormat,\r\n        numberFormat: json.numberFormat ?? DatagridEnvironmentConst.defaulti18N.numberFormat,\r\n        loadedData: json.loadedData ?? DatagridEnvironmentConst.defaulti18N.loadedData,\r\n        loadedError: json.loadedError ?? DatagridEnvironmentConst.defaulti18N.loadedError,\r\n        loadingData: json.loadingData ?? DatagridEnvironmentConst.defaulti18N.loadingData,\r\n        constructionData: json.constructionData ?? DatagridEnvironmentConst.defaulti18N.constructionData,\r\n      };\r\n      DatagridEnvironmentConst.i18N = i18n;\r\n      localStorage.setItem(`csc-datagrid-language`, language);\r\n      this._language = language;\r\n      var pageSize = this.datagridOptions.pageSize;\r\n      if (pageSize != undefined) {\r\n        pageSize.filter(x => x.value == -1).forEach((e, i) => { e.html = DatagridEnvironmentConst.i18N.allEntries });\r\n        this.datagridOptions.pageSize = pageSize;\r\n        this.cboDatagridDropdownButton()?.setItems(pageSize);\r\n      }\r\n    } catch { }\r\n  }\r\n  protected bundleRegistery() {\r\n    var _options = this.datagridOptions;\r\n    //#region itemToolPanels\r\n    switch (this.moduleRegistery.module) {\r\n      case 'community':\r\n      case 'developer':\r\n        var panels: DatagridItemToolPanelType[] = [];\r\n        _options.itemToolPanels?.forEach((e, i) => { if (e != 'options') { panels.push(e); } })\r\n        this._itemToolPanels = panels;\r\n        break;\r\n      case 'enterprise':\r\n      case 'bundle':\r\n        this._itemToolPanels = _options.itemToolPanels ?? [];\r\n        break;\r\n    }\r\n    //#endregion\r\n    //#region allowPanels\r\n    if (_options.allowPanels == undefined) { _options.allowPanels = {}; }\r\n    if (_options.allowPanels != undefined) {\r\n      switch (this.moduleRegistery.module) {\r\n        case 'community':\r\n          if (_options.allowPanels.allowFilteringColumns) { _options.allowPanels.allowFilteringColumns = false; }\r\n          //if (_options.allowPanels.allowFooter) { _options.allowPanels.allowFooter = false; }\r\n          if (_options.allowPanels.allowGroupColumns) { _options.allowPanels.allowGroupColumns = false; }\r\n          //if (_options.allowPanels.allowHeaderColumns) { _options.allowPanels.allowHeaderColumns = false; }\r\n          //if (_options.allowPanels.allowHeaderRows) { _options.allowPanels.allowHeaderRows = false; }\r\n          //if (_options.allowPanels.allowMenu) { _options.allowPanels.allowMenu = false; }\r\n          //if (_options.allowPanels.allowMessage) { _options.allowPanels.allowMessage = false; }\r\n          //if (_options.allowPanels.allowTitle) { _options.allowPanels.allowTitle = false; }\r\n          //if (_options.allowPanels.allowToolBar) { _options.allowPanels.allowToolBar = false; }\r\n          if (_options.allowPanels.allowTotals) { _options.allowPanels.allowTotals = false; }\r\n          if (_options.allowPanels.toolPanelsEnabled) { _options.allowPanels.toolPanelsEnabled = false; }\r\n          _options.customButton = [];\r\n          break;\r\n        case 'developer':\r\n          if (_options.allowPanels.allowGroupColumns) { _options.allowPanels.allowGroupColumns = false; }\r\n          if (_options.allowPanels.allowTotals) { _options.allowPanels.allowTotals = false; }\r\n          break;\r\n      }\r\n    }\r\n    if (!_options.allowPanels?.allowMenu) { this._numPageSize = -1; }\r\n    //#endregion\r\n  }\r\n\r\n  public init(callbackfn?: (options: IDatagridOptions) => void) {\r\n    this._isInitialized = true;\r\n    this.configureOptions(callbackfn);\r\n  }\r\n  public configureOptions(callbackfn?: (options: IDatagridOptions) => void) {\r\n    let _options: IDatagridOptions = this._datagridOptions;\r\n    if (callbackfn != undefined) { callbackfn(_options); }\r\n    if (_options.theme != undefined) { this.setTheme(_options.theme); }\r\n    else { this.setTheme({ name: 'original-minimal', stripped: true, loaderType: 'eclipse' }); }\r\n    if (_options.jsonPathDirectoryI18N != undefined) { DatagridEnvironmentConst.jsonPathDirectoryI18N = _options.jsonPathDirectoryI18N; }\r\n    if (_options.columnHeaderHeight == undefined) { _options.columnHeaderHeight = this._defaultColumnHeaderHeight; }\r\n    if (_options.columnFooterHeight == undefined) { _options.columnFooterHeight = this._defaultColumnFooterHeight; }\r\n    if (_options.rowHeight == undefined) { _options.rowHeight = this._defaultRowHeight; }\r\n    this.setColumnsDef(_options.columns);\r\n    if (_options.itemToolPanels == undefined) { _options.itemToolPanels = []; }\r\n    if (_options.allowPanels == undefined) { _options.allowPanels = {}; }\r\n    if (_options.pageSize == undefined) {\r\n      _options.pageSize = [{ index: 0, html: '10', text: '10', value: 10, selected: true, divider: false }\r\n        , { index: 1, html: '20', text: '20', value: 20, selected: false, divider: false }\r\n        , { index: 2, html: '50', text: '50', value: 50, selected: false, divider: false }\r\n        , { index: 4, html: '', text: '', value: -1, selected: false, divider: true }];\r\n    }\r\n    if (_options.defaultPageSize != undefined && _options.pageSize != undefined && _options.pageSize.length > 0) {\r\n      _options.pageSize.forEach((e, i) => { e.selected = false; });\r\n      var itemPageSize = _options.pageSize.find(x => x.value == _options.defaultPageSize);\r\n      if (itemPageSize == undefined) { itemPageSize = _options.pageSize[0]; }\r\n      itemPageSize.selected = true;\r\n    }\r\n    this._numPageSize = _options.pageSize.find(x => x.selected)?.value;\r\n    //#region Language\r\n    var cscLanguageStorage = localStorage.getItem(`csc-language`);\r\n    var datagridLanguageStorage = localStorage.getItem(`csc-datagrid-language`);\r\n    if (datagridLanguageStorage == undefined && cscLanguageStorage != undefined) { datagridLanguageStorage = cscLanguageStorage; }\r\n    if (_options.i18N == undefined && datagridLanguageStorage != undefined) { _options.i18N = datagridLanguageStorage; }\r\n    this.setLanguage((_options.i18N != undefined) ? _options.i18N : 'en-us');\r\n    //#endregion\r\n    this.bundleRegistery();\r\n    if (this._datas == undefined || this._datas.length == 0) { this.loadDataJson([]); }\r\n  }\r\n  public setTheme(theme: IDatagridTheme) {\r\n    switch (theme.name) {\r\n      case 'original':\r\n        if (theme.stripped == undefined) { theme.stripped = false; }\r\n        if (theme.loaderType == undefined) { theme.loaderType = 'eclipse'; }\r\n        if (this._datagridOptions.allowPanels == undefined) {\r\n          this._datagridOptions.allowPanels = {\r\n            allowFilteringColumns: true,\r\n            allowFooter: false,\r\n            allowGroupColumns: false,\r\n            allowHeaderColumns: true,\r\n            allowHeaderRows: false,\r\n            allowMenu: false,\r\n            allowMessage: false,\r\n            allowTitle: false,\r\n            allowToolBar: false,\r\n            allowTotals: false,\r\n            toolPanelsEnabled: false,\r\n          }\r\n        } else {\r\n          this._datagridOptions.allowPanels.allowHeaderColumns = this._datagridOptions.allowPanels.allowHeaderColumns ?? true;\r\n          this._datagridOptions.allowPanels.allowFilteringColumns = this._datagridOptions.allowPanels.allowFilteringColumns ?? true;\r\n        }\r\n        this._datagridOptions.itemToolPanels = ['filter']\r\n        this._datagridOptions.theme = theme;\r\n        (this.hostElement.nativeElement as HTMLElement).classList.remove(\"csc-datagrid-stripped\");\r\n        (this.hostElement.nativeElement as HTMLElement).setAttribute('data-theme', this._datagridOptions.theme.name);\r\n        break;\r\n      case 'original-minimal':\r\n        if (theme.stripped == undefined) { theme.stripped = false; }\r\n        if (theme.loaderType == undefined) { theme.loaderType = 'eclipse'; }\r\n        if (this._datagridOptions.allowPanels == undefined) {\r\n          this._datagridOptions.allowPanels = {\r\n            allowFilteringColumns: false,\r\n            allowFooter: false,\r\n            allowGroupColumns: false,\r\n            allowHeaderColumns: false,\r\n            allowHeaderRows: false,\r\n            allowMenu: false,\r\n            allowMessage: false,\r\n            allowTitle: false,\r\n            allowToolBar: false,\r\n            allowTotals: false,\r\n            toolPanelsEnabled: false,\r\n          }\r\n        }\r\n        this._datagridOptions.theme = theme;\r\n        (this.hostElement.nativeElement as HTMLElement).classList.remove(\"csc-datagrid-stripped\");\r\n        (this.hostElement.nativeElement as HTMLElement).setAttribute('data-theme', this._datagridOptions.theme.name);\r\n        break;\r\n      case 'original-full':\r\n        if (theme.stripped == undefined) { theme.stripped = true; }\r\n        if (theme.loaderType == undefined) { theme.loaderType = 'eclipse'; }\r\n        if (this._datagridOptions.allowPanels == undefined) {\r\n          this._datagridOptions.allowPanels = {\r\n            allowFilteringColumns: true,\r\n            allowFooter: true,\r\n            allowGroupColumns: false,\r\n            allowHeaderColumns: true,\r\n            allowHeaderRows: true,\r\n            allowMenu: true,\r\n            allowMessage: true,\r\n            allowTitle: true,\r\n            allowToolBar: true,\r\n            allowTotals: true,\r\n            toolPanelsEnabled: true,\r\n          }\r\n        } else {\r\n          this._datagridOptions.allowPanels.allowFilteringColumns = this._datagridOptions.allowPanels.allowFilteringColumns ?? true;\r\n          this._datagridOptions.allowPanels.allowFooter = this._datagridOptions.allowPanels.allowFooter ?? true;\r\n          this._datagridOptions.allowPanels.allowHeaderColumns = this._datagridOptions.allowPanels.allowHeaderColumns ?? true;\r\n          this._datagridOptions.allowPanels.allowHeaderRows = this._datagridOptions.allowPanels.allowHeaderRows ?? true;\r\n          this._datagridOptions.allowPanels.allowMenu = this._datagridOptions.allowPanels.allowMenu ?? true;\r\n          this._datagridOptions.allowPanels.allowMessage = this._datagridOptions.allowPanels.allowMessage ?? true;\r\n          this._datagridOptions.allowPanels.allowTitle = this._datagridOptions.allowPanels.allowTitle ?? true;\r\n          this._datagridOptions.allowPanels.allowToolBar = this._datagridOptions.allowPanels.allowToolBar ?? true;\r\n          this._datagridOptions.allowPanels.allowTotals = this._datagridOptions.allowPanels.allowTotals ?? true;\r\n          this._datagridOptions.allowPanels.toolPanelsEnabled = this._datagridOptions.allowPanels.toolPanelsEnabled ?? true;\r\n        }\r\n        this._datagridOptions.theme = theme;\r\n        (this.hostElement.nativeElement as HTMLElement).classList.add(\"csc-datagrid-stripped\");\r\n        (this.hostElement.nativeElement as HTMLElement).setAttribute('data-theme', this._datagridOptions.theme.name);\r\n        break;\r\n    }\r\n    this.bundleRegistery();\r\n  }\r\n  public setLanguage(value: string) {\r\n    try {\r\n      let jsonPathDirectoryI18N = DatagridEnvironmentConst.jsonPathDirectoryI18N;\r\n      if (!jsonPathDirectoryI18N.endsWith('/')) { jsonPathDirectoryI18N += '/'; }\r\n      fetch(`${jsonPathDirectoryI18N}${value.toLowerCase()}.json`).then(res => {\r\n        if (res.status == 404) {\r\n          let notInitialized = `${DatagridEnvironmentConst.defaulti18N.notInitialized}<br />Please, choose a correct language<br />You are an Alien ? I'm joke :)`\r\n          return { notInitialized: notInitialized };\r\n        }\r\n        return res.json();\r\n      }).then((resp: any) => { this.setI18N(resp, value); });\r\n    } catch { }\r\n  }\r\n  public setPageSize(event: any) { this._numPageSize = event.value; }\r\n  //#endregion\r\n  //#region Structure\r\n  public getPageSize(): IDropdownButtonEntrie[] {\r\n    return this.datagridOptions.pageSize ?? [{ index: 0, html: '10', text: '10', value: 10, selected: true, divider: false }];\r\n  }\r\n  //#endregion\r\n  //#region Load\r\n  public load() {\r\n    this._isLoaded = false;\r\n    if (this._uri != undefined && this._uri != \"\") { this.loadFromUri(this._uri, this._httpParams); }\r\n    else { this.loadDataJson(this._datas); }\r\n  }\r\n  async loadFromUri(uri: string, httpParams?: HttpParams) {\r\n    this._isLoaded = false;\r\n    this.setMessage(DatagridEnvironmentConst.i18N.loadingData, 'info', 'database-down');\r\n    this._uri = uri;\r\n    if (httpParams != undefined) { this._httpParams = httpParams; }\r\n    this.httpClient.get<any[]>(uri, { params: httpParams }).subscribe(\r\n      {\r\n        next: res => { this.loadDataJson(res); }\r\n        , error: err => { this.setMessage(DatagridEnvironmentConst.i18N.loadedError); }\r\n      });\r\n  }\r\n  public loadDataJson(datas: any[]) {\r\n    this._isLoaded = false;\r\n    var rows: DatagridRow[] = []\r\n    var sortedRows: DatagridRow[] = []\r\n    if (datas != undefined && datas.length > 0) {\r\n      this.setMessage(DatagridEnvironmentConst.i18N.constructionData, 'info', 'database-fill-gear');\r\n      if ((this.datagridColumns == undefined || this.datagridColumns.length == 0)) {\r\n        var columns: DatagridColumn[] = []\r\n        Object.entries(datas[0]).forEach((e, i) => {\r\n          var type: DatagridColumnType = 'string';\r\n          if (typeof e[1] == 'number') { type = 'number'; }\r\n          else if (typeof e[1] == 'boolean') { type = 'boolean'; }\r\n          else if (e[1] instanceof Date) { type = 'datetime'; }\r\n          columns.push(new DatagridColumn({ dataField: e[0], html: e[0], index: i, type: type }));\r\n        });\r\n        this.setColumnsDef(columns);\r\n      }\r\n      rows = this.createRowsFromDatas(datas);\r\n      sortedRows = this.sortRows(rows);\r\n      this.setMessage(DatagridEnvironmentConst.i18N.loadedData, 'success', 'database-fill-check');\r\n    }\r\n    this._datas = datas;\r\n    this._currentDatas = datas;\r\n    this._datagridRows = rows;\r\n    this._datagridRowsFiltered = sortedRows;\r\n    this._isLoaded = true;\r\n  }\r\n  //#endregion\r\n  //#region Column\r\n  protected getSortingColumns(): DatagridColumn[] {\r\n    var cols: DatagridColumn[] = this.datagridColumns.filter(x => x.sorting == true);\r\n    if (cols == undefined) return [];\r\n    return cols.sort((a, b) => { return (a.sortIndex ?? 0) - (b.sortIndex ?? 0) });\r\n  }\r\n  protected getColumnHeaderHeight() { return this.datagridOptions.columnHeaderHeight ?? this._defaultColumnHeaderHeight; }\r\n  protected getColumnFooterHeight() { return this.datagridOptions.columnFooterHeight ?? this._defaultColumnFooterHeight; }\r\n  protected getStyleColumnHeaderHeight() { return { 'height': `${this.getColumnHeaderHeight()}px !important` }; }\r\n  protected getStyleColumnFooterHeight() { return { 'height': `${this.getColumnFooterHeight()}px !important` }; }\r\n  protected getStyleColumn(col: DatagridColumn) {\r\n    var styleHeader: {} = {};\r\n    if (col != undefined && col.styleHead != undefined) { styleHeader = Object.assign(styleHeader, col.styleHead); }\r\n    return styleHeader;\r\n  }\r\n  protected getWidthColumn(col: DatagridColumn) {\r\n    return (col != undefined && col.width != undefined) ? { 'width': `${col.width}px` } : { 'width': '150px' };\r\n  }\r\n  protected getColumnHeadersWidth() {\r\n    var width: number = 0;\r\n    this.datagridColumns.forEach((e, i) => { width += e.width; })\r\n    return { 'width': `${width}px !important` };\r\n  }\r\n  protected getVisibleColumnById(colId: any): boolean {\r\n    var col = this._datagridColumns.find(x => x.id == colId);\r\n    return (col != undefined && col.visible != undefined) ? col.visible : true;\r\n  }\r\n  protected getColumnById(colId: string): DatagridColumn | undefined { return this._datagridColumns == undefined ? undefined : this._datagridColumns.find(x => x.id == colId); }\r\n  protected getColumnByDataField(dataField: string): DatagridColumn | undefined { return this._datagridColumns == undefined ? undefined : this._datagridColumns.find(x => x.dataField == dataField); }\r\n  protected setVisibleColumnByIndex(event: any) {\r\n    var colVisible = undefined;\r\n    var colVisibleIndex = this._datagridColumns.findIndex(x => x.index == event.colIndex);\r\n    if (colVisibleIndex != undefined && colVisibleIndex >= 0) {\r\n      colVisible = this._datagridColumns[colVisibleIndex];\r\n      colVisible.visible = !colVisible.visible;\r\n      this._datagridColumns[colVisibleIndex] = colVisible;\r\n    }\r\n  }\r\n  protected columnClicked(e: any, column: DatagridColumn) {\r\n    let direction: DatagridColumnSortingDirection = 'none';\r\n    if (column.sortBy == 'descending') { direction = 'none'; }\r\n    else if (column.sortBy == 'ascending') { direction = 'descending'; }\r\n    else { direction = 'ascending' }\r\n    this.sortColumn({ event: e, column: column, direction: direction });\r\n  }\r\n  protected moveColumnByIndex(event: any) { this.swapColumnByIndex(event.colIndex, (event.direction == 'up') ? event.colIndex - 1 : event.colIndex + 1); }\r\n  protected menuColumn(event: any, col: DatagridColumn) {\r\n    if (this.datagridOptions.allowPanels != undefined) { this.datagridOptions.allowPanels.toolPanelsEnabled = true; }\r\n    if (this._toolPanelsVisibled\r\n      && this._itemToolPanelActive == 'filter'\r\n      && this.datagridItemPanels()?.columnFilter == col) {\r\n      this._toolPanelsVisibled = false;\r\n      this._itemToolPanelActive = '';\r\n    } else {\r\n      this._toolPanelsVisibled = true;\r\n      this._itemToolPanelActive = 'filter';\r\n      this.datagridItemPanels()?.setColumnFilter(col);\r\n    }\r\n  }\r\n  protected swapColumnByIndex(oldPosition: number, newPosition: number) {\r\n    let columns: DatagridColumn[] = this._datagridColumns;\r\n    let colMax = columns.length - 1;\r\n    if (oldPosition >= 0 && oldPosition != newPosition && newPosition <= colMax) {\r\n      var colMove = columns.find(x => x.index == oldPosition);\r\n      if (colMove != undefined) {\r\n        let columnsMove: DatagridColumn[] = columns.filter(x => {\r\n          if (oldPosition < newPosition) { return (x.index >= oldPosition && x.index <= newPosition); }\r\n          else { return (x.index >= newPosition && x.index <= oldPosition); }\r\n        });\r\n        columnsMove.forEach((eCol, iCol) => {\r\n          if (eCol.id == colMove?.id) { colMove.index = newPosition; }\r\n          else {\r\n            if (oldPosition < newPosition) { eCol.index = eCol.index - 1; }\r\n            else { eCol.index = eCol.index + 1; }\r\n          }\r\n        });\r\n      }\r\n    }\r\n  }\r\n  public setColumnsDef(datagridColumns: DatagridColumn[]) {\r\n    datagridColumns.sort((a, b) => { return a.index - b.index }).forEach((e, i) => { e.index = i; e.visible = e.visible ?? true; e.width = e.width ?? 150; });\r\n    this._datagridColumns = datagridColumns;\r\n  }\r\n  public sortColumn(event: any) {\r\n    let column: DatagridColumn = event.column;\r\n    let direction: DatagridColumnSortingDirection = event.direction;\r\n    var cols: DatagridColumn[] = this.getSortingColumns();\r\n    if (!this.allowMultiColumnSort) {\r\n      cols.filter(x => x.id != column.id).forEach((e, i) => { e.sorting = false; e.sortBy = 'none'; e.sortIndex = -1; });\r\n      cols = [];\r\n    }\r\n    if (column.sortBy == direction) { direction = 'none'; }\r\n    if (direction == 'none') { column.sorting = false; column.sortBy = 'none'; column.sortIndex = -1; }\r\n    else {\r\n      let index = column.sorting ? column.sortIndex : cols.length + 1;\r\n      column.sorting = true; column.sortBy = direction; column.sortIndex = index;\r\n    }\r\n    this.getSortingColumns().forEach((eCol, iCol) => { eCol.sortIndex = iCol });\r\n    this._datagridRowsFiltered = this.sortRows(this._datagridRowsFiltered);\r\n  }\r\n  public getValueTotalColumns(column: DatagridColumn): string {\r\n    if (column.type != 'number' && column.type != 'monetary') { return ''; }\r\n    if (column.footerCalcul == undefined || column.footerCalcul == 'none') { return ''; }\r\n    let values = this.getPageSizeRows().map(m => m.cells.filter(x => x.dataField == column.dataField).map(p => p.dataValue())[0] as number);\r\n    if (values != undefined && values.length > 0) {\r\n      let valueMax: number = Math.max(...values);\r\n      let valueMin: number = Math.min(...values);\r\n      let valueSum: number = values.reduce((a, b) => { return Math.round((a + b) * 100) / 100; }, 0);\r\n      let valueAvg: number = Math.round((valueSum / values.length) * 100) / 100\r\n      switch (column.footerCalcul) {\r\n        case 'avg': return this.toDataStringFormat(valueAvg, column);\r\n        case 'max': return this.toDataStringFormat(valueMax, column);\r\n        case 'min': return this.toDataStringFormat(valueMin, column);\r\n        case 'sum': return this.toDataStringFormat(valueSum, column);\r\n      }\r\n    }\r\n    return \"\";\r\n  }\r\n  public getColumns() { return this.datagridColumns; }\r\n  //#endregion\r\n  //#region Cell\r\n  protected getWidthCell(cell: DatagridCell) {\r\n    var col = this.getColumnById(cell.columnId);\r\n    return (col != undefined) ? `width: ${col.width}px;` : `width: 150px;`;\r\n  }\r\n  protected getStyleContentCell(cell: DatagridCell) {\r\n    var col = this.getColumnById(cell.columnId);\r\n    let style: string = '';\r\n    if (col != undefined) {\r\n      if (col.type == 'number') { style = `text-align:right;`; }\r\n      if (col.type == 'monetary') { style = `text-align:right;`; }\r\n      else if (col.type == 'boolean') { style = `text-align:center;`; }\r\n    }\r\n    return style;\r\n  }\r\n  protected getCellsByColumns(cells: DatagridCell[]) {\r\n    let _cells: DatagridCell[] = [];\r\n    this.datagridColumns.forEach((eCol, iCol) => {\r\n      let cell: DatagridCell | undefined = cells.find(x => x.columnId == eCol.id);\r\n      if (cell != undefined) { _cells.push(cell); }\r\n    });\r\n    return _cells\r\n  }\r\n  protected getCellsByVisibledColumns(cells: DatagridCell[]) {\r\n    let _cells: DatagridCell[] = [];\r\n    this.datagridColumns.forEach((eCol, iCol) => {\r\n      if (eCol.visible) {\r\n        let cell: DatagridCell | undefined = cells.find(x => x.columnId == eCol.id);\r\n        if (cell != undefined) { _cells.push(cell); }\r\n      }\r\n    });\r\n    return _cells\r\n  }\r\n  protected getCellByColumn(cells: DatagridCell[], col: DatagridColumn): DatagridCell | undefined { return cells.find(x => x.columnId == col.id); }\r\n  protected cellClicked(event: any) { this.output_CellClick.emit(event); }\r\n  protected cellDbClick(event: any) { this.output_CellDbClick.emit(event); }\r\n  protected cellChangeValue(event: any) { this.output_CellChangeValue.emit(event); }\r\n  protected cellPainting(event: any) { this.output_CellPainting.emit(event); }\r\n  //#endregion\r\n  //#region Row\r\n  protected getRowHeight() { return this.datagridOptions.rowHeight ?? this._defaultRowHeight; }\r\n  protected getStyleRowHeight() { return { 'height': `${this.getRowHeight()}px !important` }; }\r\n  protected getPageSizeRows(): DatagridRow[] { return (this._numPageSize > -1) ? this._datagridRowsFiltered.slice(this.itemStart - 1, this.itemEnd) : this._datagridRowsFiltered; }\r\n  protected sortRows(rows: DatagridRow[]): DatagridRow[] {\r\n    var cols: DatagridColumn[] = this.getSortingColumns();\r\n    if (cols != undefined && cols.length > 0) {\r\n      var _rows = rows;\r\n      _rows = _rows.sort((a, b) => {\r\n        let s: number = 0;\r\n        let c: boolean = true;\r\n        cols.forEach((eCol, iCol) => {\r\n          if (c) {\r\n            let res: number = 0;\r\n            var cellA = a.cells.find((x: DatagridCell) => x.dataField == eCol.dataField);\r\n            var cellB = b.cells.find((x: DatagridCell) => x.dataField == eCol.dataField);\r\n            switch (eCol.sortBy) {\r\n              case 'ascending':\r\n                if (!isNaN(cellA?.dataValue()) && !isNaN(cellB?.dataValue())) { res = cellA?.dataValue() - cellB?.dataValue(); }\r\n                else { res = cellA?.dataValue().toString().localeCompare(cellB?.dataValue().toString()); }\r\n                break;\r\n              case 'descending':\r\n                if (!isNaN(cellA?.dataValue()) && !isNaN(cellB?.dataValue())) { res = cellB?.dataValue() - cellA?.dataValue(); }\r\n                else { res = cellB?.dataValue().toString().localeCompare(cellA?.dataValue().toString()); }\r\n                break;\r\n              default: res = a.id.localeCompare(b.id);\r\n            }\r\n            if (res != 0) { c = false; }\r\n            s = res;\r\n          }\r\n        });\r\n        return s;\r\n      });\r\n    }\r\n    return this.buildRowIndex(rows);\r\n  }\r\n  public setRowSelectedById(rowId: string, selected: boolean) {\r\n    var rowActive = undefined;\r\n    var rowActiveIndex = this._datagridRowsFiltered.findIndex(x => x.id == rowId);\r\n    if (rowActiveIndex != undefined && rowActiveIndex >= 0) {\r\n      rowActive = this._datagridRowsFiltered[rowActiveIndex];\r\n      rowActive.selected = selected;\r\n      this._datagridRowsFiltered[rowActiveIndex] = rowActive;\r\n    }\r\n  }\r\n  protected createRowsFromDatas(datas: any[]): DatagridRow[] {\r\n    var rows: DatagridRow[] = [];\r\n    var ids: string[] = [];\r\n    if (datas != undefined && datas.length > 0) {\r\n      for (var iRow = 1; iRow < datas.length; iRow++) {\r\n        let _rowDatas: any = datas[iRow];\r\n        let id = this.datagridOptions.rowDataField == undefined ? iRow.toString() : _rowDatas[this.datagridOptions.rowDataField].toString();\r\n        if (ids.indexOf(id) == -1) {\r\n          let _dataGridRow: DatagridRow = new DatagridRow();\r\n          _dataGridRow.index = iRow;\r\n          _dataGridRow.id = id;\r\n          _dataGridRow.dataBoundItem = _rowDatas;\r\n          _dataGridRow.selected = false;\r\n          let cells: DatagridCell[] = [];\r\n          this.datagridColumns.forEach((eCol, iCol) => {\r\n            let _rowDataObject = _dataGridRow.dataBoundItem[eCol.dataField];\r\n            if (_rowDataObject != undefined) {\r\n              cells.push({\r\n                column: eCol\r\n                , columnId: eCol.id\r\n                , dataField: eCol.dataField\r\n                , changed: false\r\n                , rowId: iRow.toString()\r\n                , dataBoundItem: _dataGridRow.dataBoundItem[eCol.dataField]\r\n                , dataValue: () => { return _dataGridRow.dataBoundItem[eCol.dataField] }\r\n                , dataValueString: () => { return this.toDataStringFormat(_dataGridRow.dataBoundItem[eCol.dataField], eCol); }\r\n              });\r\n            }\r\n          });\r\n          _dataGridRow.cells = cells;\r\n          ids.push(id);\r\n          rows.push(_dataGridRow);\r\n        } else { console.error('Duplicate row id', _rowDatas); }\r\n      }\r\n    }\r\n    return rows;\r\n  }\r\n  public getSelectedRows() { return this.datagridRows.filter(x => x.selected); }\r\n  protected selectedRow(event: any) {\r\n    if (!this.multiSelectionRow) { this._datagridRowsFiltered.filter(x => x.selected && x.id != event.row.id).forEach((e, i) => { this.setRowSelectedById(e.id, false); }); }\r\n    this.output_SelectedRow.emit(event);\r\n  }\r\n  protected rowPainting(event: any) { this.output_RowPainting.emit(event); }\r\n  protected rowIsOdd(row: DatagridRow): boolean { if (this.datagridOptions.theme?.stripped) { return (row.index % 2) != 0; } return false; }\r\n  //#endregion\r\n  //#region Navigation\r\n  public gotoPage(numPage: any) {\r\n    try {\r\n      if (!this.multiSelectionRow) {\r\n        this._datagridRowsFiltered.filter(x => x.selected).forEach((e, i) => { this.setRowSelectedById(e.id, false); });\r\n      }\r\n      this._currentPage = numPage;\r\n    } catch { }\r\n  }\r\n  //#endregion\r\n  //#region ToolbarButton\r\n  protected toolbarButtonClick(event: IDatagridButtonExtends) {\r\n    switch (event.name) {\r\n      case 'refresh': this.load(); break;\r\n      case 'exportCSV': this.exportCSV(); break;\r\n      case 'exportXLSX': this.exportXLSX(); break;\r\n      case 'clearFilters': this.clearFilters(); break;\r\n    }\r\n  }\r\n  public exportCSV() {\r\n    let csv: any[] = []\r\n    let csvHeader: string = Object.keys(this._datas[0]).join('|');\r\n    csv.push(csvHeader);\r\n    this._datas.forEach((e, i) => {\r\n      let line: string = \"\";\r\n      Object.keys(e).forEach((key, i2) => {\r\n        if (line != \"\") { line += \"|\"; }\r\n        var value = e[key];\r\n        if (value != undefined || value != null) {\r\n          value = value.replaceAll('\\r\\n', ' ');\r\n          value = value.replaceAll('\\r', ' ');\r\n          value = value.replaceAll('\\n', ' ');\r\n        }\r\n        line += value;\r\n      });\r\n      csv.push(line);\r\n    });\r\n    let csvArray = csv.join('\\r\\n');\r\n    let blob = new Blob([csvArray], { type: 'text/csv' });\r\n    const anchor = document.createElement('a');\r\n    anchor.download = `${this.title}.csv`;\r\n    anchor.href = (window.webkitURL || window.URL).createObjectURL(blob);\r\n    anchor.click();\r\n  }\r\n  public exportXLSX() {\r\n\r\n  }\r\n  public clearFilters() {\r\n    if (this.datagridOptions.storageName != undefined) { localStorage.removeItem(`csc-datagrid-${this.datagridOptions.storageName}`); }\r\n    (this.txtSearch()?.nativeElement as HTMLInputElement).value = '';\r\n    this._currentDatas = this._datas;\r\n    this._datagridColumns.forEach((e, i) => { e.filterActivate = false, e.filter = {} })\r\n    this._isFiltering = false;\r\n    this._datagridRowsFiltered = this.buildRowIndex(this._datagridRows);\r\n    this.gotoPage(1);\r\n  }\r\n  protected getComponentConstructor(value: string) {\r\n    let constructor: any = {}\r\n    let find: boolean = true;\r\n    let iPos: number = 0;\r\n    var iPosEnd: number = 0;\r\n    var charEnter: string = '';\r\n    var nameInput: string = '';\r\n    var valueInput: string = '';\r\n    while (find) {\r\n      find = value.indexOf('[', iPos) > -1;\r\n      if (find) {\r\n        iPos = value.indexOf('[', iPos) + 1;\r\n        iPosEnd = value.indexOf(']', iPos);\r\n        nameInput = value.substring(iPos, iPosEnd);\r\n        charEnter = value.substring(iPosEnd + 2, iPosEnd + 3);\r\n        iPos = iPosEnd + 3;\r\n        valueInput = value.substring(iPos, value.indexOf(charEnter, iPos));\r\n        iPos++;\r\n        constructor[nameInput] = valueInput\r\n      }\r\n    }\r\n    return constructor;\r\n  }\r\n  //#endregion\r\n  //#region Search\r\n  protected search(event: any) { this.filterRows(); }\r\n  protected applyFilterClick(event: any) {\r\n    this._toolPanelsVisibled = false;\r\n    if (this.datagridOptions.allowPanels != undefined) { this.datagridOptions.allowPanels.toolPanelsEnabled = this._toolPanelsEnabledOrigin; }\r\n    if (event.filter != undefined\r\n      && event.filter.apply != undefined\r\n      && event.filter.column != undefined) {\r\n      if (event.filter.apply) {\r\n        var col = this.datagridColumns.find(x => x.id == event.filter.column.id);\r\n        if (col != undefined) {\r\n          col.filterActivate = event.filter.filterActivate;\r\n          col.filter = event.filter.filter;\r\n        }\r\n        this.filterRows();\r\n      }\r\n    }\r\n    this._itemToolPanelActive = '';\r\n  }\r\n  protected createFilterAuto(column: any) {\r\n    return Array.from(new Set(this._currentDatas.map(item => item[column.dataField]))).sort((a, b) => {\r\n      try {\r\n        let aValue = a;\r\n        let bValue = b;\r\n        if (aValue != undefined || aValue != null) { aValue = aValue.toLowerCase(); } else { aValue = ''; }\r\n        if (bValue != undefined || bValue != null) { bValue = bValue.toLowerCase(); } else { bValue = ''; }\r\n        return aValue < bValue ? -1 : aValue > bValue ? 1 : 0\r\n      } catch { }\r\n      return 0;\r\n    });\r\n  }\r\n  protected filterRows() {\r\n    var rowsFiltered: DatagridRow[] = [];\r\n    let inputSearch: HTMLInputElement = this.txtSearch()?.nativeElement as HTMLInputElement;\r\n    this._datagridRows.forEach((eRow, iRow) => {\r\n      var visibledGlobal = undefined;\r\n      var visibledRow = true;\r\n      eRow.cells.forEach((eCell, iCell) => {\r\n        var colFiltering = this._datagridColumns.find(x => x.id == eCell.columnId);\r\n        if (eCell.dataValueString != undefined && eCell.dataValueString() != '') {\r\n          var colFiltering = this._datagridColumns.find(x => x.id == eCell.columnId);\r\n          if (inputSearch != undefined\r\n            && inputSearch.value != undefined\r\n            && inputSearch.value != null\r\n            && inputSearch.value != ''\r\n          ) {\r\n            if (eCell.dataValueString().toLowerCase().indexOf(inputSearch.value.toLowerCase()) > -1) { visibledGlobal = true; }\r\n          }\r\n          else { visibledGlobal = true; }\r\n          if (colFiltering != undefined\r\n            && colFiltering.filter != undefined\r\n            && colFiltering.filterActivate != undefined\r\n            && colFiltering.filterActivate == true) {\r\n            if (Array.isArray(colFiltering.filter)) {\r\n              let res: boolean = false;\r\n              if (colFiltering.filteringType == 'auto' || colFiltering.type == 'boolean') {\r\n                colFiltering.filter.forEach((e, i) => {\r\n                  if (colFiltering?.type == 'boolean' && eCell.dataValue() == e) { res = true; }\r\n                  else if (eCell.dataValueString().toLowerCase().indexOf(e.toString().toLowerCase()) > -1) { res = true; }\r\n                });\r\n              } else {\r\n                if (colFiltering.type == 'number') {\r\n                  var resFilters = true;\r\n                  let filters: any[] = [];\r\n                  colFiltering.filter.forEach((eFilter, iFilter) => { filters.push(this.createFilterNumbers(eFilter, eCell.dataValue())); });\r\n                  filters.forEach((eFilter, iFilter) => {\r\n                    if (eFilter.andor == undefined && iFilter == 0) { resFilters = eFilter.value; }\r\n                    else {\r\n                      if (resFilters && eFilter.andor == '&&' && !eFilter.value) { resFilters = false; }\r\n                      else if (resFilters && eFilter.andor == '&&' && eFilter.value) { resFilters = true; }\r\n                      else if (resFilters && eFilter.andor == '||' && !eFilter.value) { resFilters = true; }\r\n                      else if (resFilters && eFilter.andor == '||' && eFilter.value) { resFilters = true; }\r\n                      else if (!resFilters && eFilter.andor == '&&' && !eFilter.value) { resFilters = false; }\r\n                      else if (!resFilters && eFilter.andor == '&&' && eFilter.value) { resFilters = false; }\r\n                      else if (!resFilters && eFilter.andor == '||' && !eFilter.value) { resFilters = false; }\r\n                      else if (!resFilters && eFilter.andor == '||' && eFilter.value) { resFilters = true; }\r\n                    }\r\n                  });\r\n                  res = resFilters;\r\n                } else if (colFiltering.type == 'monetary') {\r\n                  var resFilters = true;\r\n                  let filters: any[] = [];\r\n                  colFiltering.filter.forEach((eFilter, iFilter) => { filters.push(this.createFilterNumbers(eFilter, eCell.dataValue())); });\r\n                  filters.forEach((eFilter, iFilter) => {\r\n                    if (eFilter.andor == undefined && iFilter == 0) { resFilters = eFilter.value; }\r\n                    else {\r\n                      if (resFilters && eFilter.andor == '&&' && !eFilter.value) { resFilters = false; }\r\n                      else if (resFilters && eFilter.andor == '&&' && eFilter.value) { resFilters = true; }\r\n                      else if (resFilters && eFilter.andor == '||' && !eFilter.value) { resFilters = true; }\r\n                      else if (resFilters && eFilter.andor == '||' && eFilter.value) { resFilters = true; }\r\n                      else if (!resFilters && eFilter.andor == '&&' && !eFilter.value) { resFilters = false; }\r\n                      else if (!resFilters && eFilter.andor == '&&' && eFilter.value) { resFilters = false; }\r\n                      else if (!resFilters && eFilter.andor == '||' && !eFilter.value) { resFilters = false; }\r\n                      else if (!resFilters && eFilter.andor == '||' && eFilter.value) { resFilters = true; }\r\n                    }\r\n                  });\r\n                  res = resFilters;\r\n                } else if (colFiltering.type == 'date') {\r\n                  var resFilters = true;\r\n                  let filters: any[] = [];\r\n                  colFiltering.filter.forEach((eFilter, iFilter) => { filters.push(this.createFilterDate(eFilter, eCell.dataValue())); });\r\n                  filters.forEach((eFilter, iFilter) => {\r\n                    if (eFilter.andor == undefined && iFilter == 0) { resFilters = eFilter.value; }\r\n                    else {\r\n                      if (resFilters && eFilter.andor == '&&' && !eFilter.value) { resFilters = false; }\r\n                      else if (resFilters && eFilter.andor == '&&' && eFilter.value) { resFilters = true; }\r\n                      else if (resFilters && eFilter.andor == '||' && !eFilter.value) { resFilters = true; }\r\n                      else if (resFilters && eFilter.andor == '||' && eFilter.value) { resFilters = true; }\r\n                      else if (!resFilters && eFilter.andor == '&&' && !eFilter.value) { resFilters = false; }\r\n                      else if (!resFilters && eFilter.andor == '&&' && eFilter.value) { resFilters = false; }\r\n                      else if (!resFilters && eFilter.andor == '||' && !eFilter.value) { resFilters = false; }\r\n                      else if (!resFilters && eFilter.andor == '||' && eFilter.value) { resFilters = true; }\r\n                    }\r\n                  });\r\n                  res = resFilters;\r\n                } else if (colFiltering.type == 'datetime') {\r\n                  var resFilters = true;\r\n                  let filters: any[] = [];\r\n                  colFiltering.filter.forEach((eFilter, iFilter) => { filters.push(this.createFilterDateTime(eFilter, eCell.dataValue())); });\r\n                  filters.forEach((eFilter, iFilter) => {\r\n                    if (eFilter.andor == undefined && iFilter == 0) { resFilters = eFilter.value; }\r\n                    else {\r\n                      if (resFilters && eFilter.andor == '&&' && !eFilter.value) { resFilters = false; }\r\n                      else if (resFilters && eFilter.andor == '&&' && eFilter.value) { resFilters = true; }\r\n                      else if (resFilters && eFilter.andor == '||' && !eFilter.value) { resFilters = true; }\r\n                      else if (resFilters && eFilter.andor == '||' && eFilter.value) { resFilters = true; }\r\n                      else if (!resFilters && eFilter.andor == '&&' && !eFilter.value) { resFilters = false; }\r\n                      else if (!resFilters && eFilter.andor == '&&' && eFilter.value) { resFilters = false; }\r\n                      else if (!resFilters && eFilter.andor == '||' && !eFilter.value) { resFilters = false; }\r\n                      else if (!resFilters && eFilter.andor == '||' && eFilter.value) { resFilters = true; }\r\n                    }\r\n                  });\r\n                  res = resFilters;\r\n                } else if (colFiltering.type == undefined || colFiltering.type == 'string') {\r\n                  var resFilters = true;\r\n                  let filters: any[] = [];\r\n                  colFiltering.filter.forEach((eFilter, iFilter) => { filters.push(this.createFilterStrings(eFilter, eCell.dataValue())); });\r\n                  filters.forEach((eFilter, iFilter) => {\r\n                    if (eFilter.andor == undefined && iFilter == 0) { resFilters = eFilter.value; }\r\n                    else {\r\n                      if (resFilters && eFilter.andor == '&&' && !eFilter.value) { resFilters = false; }\r\n                      else if (resFilters && eFilter.andor == '&&' && eFilter.value) { resFilters = true; }\r\n                      else if (resFilters && eFilter.andor == '||' && !eFilter.value) { resFilters = true; }\r\n                      else if (resFilters && eFilter.andor == '||' && eFilter.value) { resFilters = true; }\r\n                      else if (!resFilters && eFilter.andor == '&&' && !eFilter.value) { resFilters = false; }\r\n                      else if (!resFilters && eFilter.andor == '&&' && eFilter.value) { resFilters = false; }\r\n                      else if (!resFilters && eFilter.andor == '||' && !eFilter.value) { resFilters = false; }\r\n                      else if (!resFilters && eFilter.andor == '||' && eFilter.value) { resFilters = true; }\r\n                    }\r\n                  });\r\n                  res = resFilters;\r\n                } else {\r\n                  colFiltering.filter.forEach((e, i) => {\r\n                    if (eCell.dataValueString().toLowerCase().indexOf(e.toString().toLowerCase()) > -1) { res = true; }\r\n                  });\r\n                }\r\n              }\r\n              if (!res) { visibledRow = false; }\r\n            }/* else {\r\n              if (eCell.dataValueString().toLowerCase().indexOf(colFiltering?.filter.toLowerCase()) == -1) {\r\n                visibledRow = false;\r\n              }\r\n            }*/\r\n          }\r\n        }\r\n      });\r\n      if (visibledGlobal && visibledRow) { rowsFiltered.push(eRow); }\r\n    });\r\n    this._datagridRowsFiltered = this.buildRowIndex(rowsFiltered);\r\n  }\r\n  protected createFilterNumbers(filter: any, data?: number): {} {\r\n    var valueFilter: boolean = false;\r\n    if (data != undefined) {\r\n      let value = filter.value.replace(',', '.');\r\n      switch (filter.condition) {\r\n        case \"=\":\r\n          if (!isNaN(value) && data == Number.parseFloat(value)) valueFilter = true;\r\n          break;\r\n        case \"!=\":\r\n          if (!isNaN(value) && data != Number.parseFloat(value)) valueFilter = true;\r\n          break;\r\n        case \">\":\r\n          if (!isNaN(value) && data > Number.parseFloat(value)) valueFilter = true;\r\n          break;\r\n        case \">=\":\r\n          if (!isNaN(value) && data >= Number.parseFloat(value)) valueFilter = true;\r\n          break;\r\n        case \"<\":\r\n          if (!isNaN(value) && data < Number.parseFloat(value)) valueFilter = true;\r\n          break;\r\n        case \"<=\":\r\n          if (!isNaN(value) && data <= Number.parseFloat(value)) valueFilter = true;\r\n          break;\r\n        case \"<>\":\r\n          if (!isNaN(value) && data >= Number.parseFloat(value)\r\n            || !isNaN(value) && data <= Number.parseFloat(value)) valueFilter = true;\r\n          break;\r\n      }\r\n    } else { valueFilter = filter.condition == ''; }\r\n    return { andor: filter.andor, value: valueFilter };\r\n  }\r\n  protected createFilterDate(filter: any, date?: Date): {} {\r\n    var valueFilter: boolean = false;\r\n    if (date != undefined) {\r\n      var _dt1 = new DateTime(date);\r\n      var _dt2 = new DateTime(filter.value);\r\n      _dt1 = new DateTime(_dt1.year, _dt1.month, _dt1.day);\r\n      _dt2 = new DateTime(_dt2.year, _dt2.month, _dt2.day);\r\n      switch (filter.condition) {\r\n        case \"=\":\r\n          if (_dt1.time == _dt2.time) valueFilter = true;\r\n          break;\r\n        case \"!=\":\r\n          if (_dt1.time != _dt2.time) valueFilter = true;\r\n          break;\r\n        case \">\":\r\n          if (_dt1.time > _dt2.time) valueFilter = true;\r\n          break;\r\n        case \">=\":\r\n          if (_dt1.time >= _dt2.time) valueFilter = true;\r\n          break;\r\n        case \"<\":\r\n          if (_dt1.time < _dt2.time) valueFilter = true;\r\n          break;\r\n        case \"<=\":\r\n          if (_dt1.time <= _dt2.time) valueFilter = true;\r\n          break;\r\n        case \"<>\":\r\n          if (_dt1.time >= _dt2.time\r\n            || _dt1.time < _dt2.addDays(1).time) valueFilter = true;\r\n          break;\r\n      }\r\n    } else { valueFilter = filter.condition == ''; }\r\n    return { andor: filter.andor, value: valueFilter };\r\n  }\r\n  protected createFilterDateTime(filter: any, date?: Date): {} {\r\n    var valueFilter: boolean = false;\r\n    if (date != undefined) {\r\n      var _dt1 = new DateTime(date);\r\n      var _dt2 = new DateTime(filter.value);\r\n      switch (filter.condition) {\r\n        case \"=\":\r\n          if (_dt1.time == _dt2.time) valueFilter = true;\r\n          break;\r\n        case \"!=\":\r\n          if (_dt1.time != _dt2.time) valueFilter = true;\r\n          break;\r\n        case \">\":\r\n          if (_dt1.time > _dt2.time) valueFilter = true;\r\n          break;\r\n        case \">=\":\r\n          if (_dt1.time >= _dt2.time) valueFilter = true;\r\n          break;\r\n        case \"<\":\r\n          if (_dt1.time < _dt2.time) valueFilter = true;\r\n          break;\r\n        case \"<=\":\r\n          if (_dt1.time <= _dt2.time) valueFilter = true;\r\n          break;\r\n        case \"<>\":\r\n          if (_dt1.time >= _dt2.time\r\n            || _dt1.time <= _dt2.time) valueFilter = true;\r\n          break;\r\n      }\r\n    } else { valueFilter = filter.condition == ''; }\r\n    return { andor: filter.andor, value: valueFilter };\r\n  }\r\n  protected createFilterStrings(filter: any, data?: number): {} {\r\n    var valueFilter: boolean = false;\r\n    if (data != undefined) {\r\n      switch (filter.condition) {\r\n        case \"%%\":\r\n          if (data.toString().toLowerCase().indexOf(filter.value.toLowerCase()) > -1) valueFilter = true;\r\n          break;\r\n        case \"!%%!\":\r\n          if (data.toString().toLowerCase().indexOf(filter.value.toLowerCase()) == -1) valueFilter = true;\r\n          break;\r\n        case \"=\":\r\n          if (data.toString().toLowerCase() == filter.value.toLowerCase()) valueFilter = true;\r\n          break;\r\n        case \"!=\":\r\n          if (data.toString().toLowerCase() != filter.value.toLowerCase()) valueFilter = true;\r\n          break;\r\n        case \"%a\":\r\n          if (data.toString().toLowerCase().startsWith(filter.value.toLowerCase())) valueFilter = true;\r\n          break;\r\n        case \"a%\":\r\n          if (data.toString().toLowerCase().endsWith(filter.value.toLowerCase())) valueFilter = true;\r\n          break;\r\n      }\r\n    } else { valueFilter = filter.condition == ''; }\r\n    return { andor: filter.andor, value: valueFilter };\r\n  }\r\n  protected buildRowIndex(rows: DatagridRow[]): DatagridRow[] {\r\n    for (let iRow = 0; iRow < rows.length; iRow++) { rows[iRow].index = iRow + 1; }\r\n    return rows;\r\n  }\r\n  //#endregion\r\n  protected scrolledBody() {\r\n    let scrollTop = (this.datagridBody()?.nativeElement as HTMLElement).scrollTop;\r\n    let scrollLeft = (this.datagridBody()?.nativeElement as HTMLElement).scrollLeft;\r\n\r\n    let colHeaderGroup = this.datagridColumnHeaders() == undefined ? undefined : (this.datagridColumnHeaders()?.nativeElement as HTMLElement).children[0] as HTMLElement;\r\n    let colFooterGroup = this.datagridColumnFooters() == undefined ? undefined : (this.datagridColumnFooters()?.nativeElement as HTMLElement).children[0] as HTMLElement;\r\n    let rowGroup = this.datagridRowHeaders() == undefined ? undefined : (this.datagridRowHeaders()?.nativeElement as HTMLElement).children[0] as HTMLElement;\r\n\r\n    if (colHeaderGroup != undefined) { colHeaderGroup.style.translate = `-${scrollLeft}px 0px`; }\r\n    if (colFooterGroup != undefined) { colFooterGroup.style.translate = `-${scrollLeft}px 0px`; }\r\n    if (rowGroup != undefined) { rowGroup.style.translate = ` 0px -${scrollTop}px`; }\r\n  }\r\n  public toggleFullscreen() {\r\n    this.setFullscreen(!this._fullscreen);\r\n  }\r\n  public setFullscreen(value: boolean) {\r\n    this._fullscreen = value;\r\n    (this.hostElement.nativeElement as HTMLElement).ariaExpanded = value.toString();\r\n  }\r\n  protected toggleToolPanels(event: any) {\r\n    let visibility = true;\r\n    if (this._itemToolPanelActive != event.itemPanel) {\r\n      this._itemToolPanelActive = event.itemPanel;\r\n      visibility = true;\r\n    }\r\n    else if (this._toolPanelsVisibled) {\r\n      this._itemToolPanelActive = '';\r\n      visibility = false;\r\n    }\r\n    this._toolPanelsVisibled = visibility;\r\n  }\r\n  private toDataStringFormat(dataValue: any, eCol: DatagridColumn) {\r\n    var dataValueString = dataValue == undefined ? '' : dataValue.toString()\r\n    let format: string = eCol.format;\r\n    if (dataValue != undefined) {\r\n      switch (eCol.type) {\r\n        case 'number':\r\n          if (!isNaN(dataValue)) {\r\n            if (format == '') {\r\n              format = `${DatagridEnvironmentConst.i18N.numberFormat}`;\r\n              // eCol.format = format;\r\n            }\r\n            dataValueString = dataValue.toStringFormat(format);\r\n          }\r\n          break;\r\n        case 'monetary':\r\n          if (!isNaN(dataValue)) {\r\n            if (format == '') {\r\n              format = `${DatagridEnvironmentConst.i18N.numberFormat} ${DatagridEnvironmentConst.i18N.currencySymbol}`;\r\n              // eCol.format = format;\r\n            }\r\n            dataValueString = dataValue.toStringFormat(format, DatagridEnvironmentConst.i18N.digitsSeparator);\r\n          }\r\n          break;\r\n        case 'date':\r\n          if (format == '') {\r\n            format = DatagridEnvironmentConst.i18N.dateFormat;\r\n            //eCol.format = format; \r\n          }\r\n          //var dt = new DatePipe(\"en-US\").transform(new Date(dataValue), format);\r\n          //if (dt == null || dt == '') { dataValueString = \"\"; } else { dataValueString = dt; }\r\n          dataValueString = new DateTime(dataValue).setLocale(this.language).toString(format);\r\n          break;\r\n        case 'datetime':\r\n          if (format == '') {\r\n            format = DatagridEnvironmentConst.i18N.dateTimeFormat;\r\n            //eCol.format = format;\r\n          }\r\n          // var dt = new DatePipe(\"en-US\").transform(new Date(dataValue), format);\r\n          // if (dt == null || dt == undefined) { dataValueString = \"\"; } else { dataValueString = dt; }\r\n          dataValueString = new DateTime(dataValue).setLocale(this.language).toString(format);\r\n          break;\r\n        case 'boolean':\r\n          dataValueString = dataValue ? this.i18N.yes : this.i18N.no\r\n          break;\r\n      }\r\n    }\r\n    return dataValueString;\r\n  }\r\n  //#region Message\r\n  protected getFirstMessageQueue(): IDatagridMessageQueue | undefined { return (this._datagridMessageQueues.length > 0) ? this._datagridMessageQueues[0] : undefined; }\r\n  public setMessage(value: string, type?: 'none' | 'info' | 'success' | 'warning' | 'error', icon?: IconType) {\r\n    this._datagridMessageQueues.push({ message: value, type: type, icon: icon });\r\n    this.listenMessage();\r\n  }\r\n  protected isMessageQueuing(): boolean { return this._datagridQueuing; }\r\n  protected listenMessage() {\r\n    if (this._datagridQueuing) { return; }\r\n    if (this._datagridMessageQueues.length > 0) {\r\n      this._datagridQueuing = true;\r\n      setTimeout(() => {\r\n        this._datagridQueuing = false;\r\n        setTimeout(() => {\r\n          this._datagridMessageQueues.shift();\r\n          this.listenMessage();\r\n        }, 300);\r\n      }, 1000 * 3);\r\n    }\r\n  }\r\n  //#endregion\r\n}\r\n","<div class=\"datagrid-content\">\r\n    <div class=\"datagrid-content-absolute\">\r\n        <!-- #region Datagrid Header-->\r\n        <div class=\"datagrid-header\">\r\n            @if(allowTitle){\r\n            <div class=\"datagrid-header-main\" aria-describedby=\"datagrid-title\">\r\n                <div class=\"datagrid-header-main-content\">\r\n                    <div class=\"datagrid-title\" [innerHTML]=\"title\"></div>\r\n                    <div class=\"datagrid-button-fullscreen\" (click)=\"toggleFullscreen()\"></div>\r\n                </div>\r\n                <div class=\"datagrid-row-separator\"></div>\r\n            </div>\r\n            }\r\n            @if(isLoaded && allowToolBar){\r\n            <div class=\"datagrid-header-main\" aria-describedby=\"datagrid-toolbar\">\r\n                <div class=\"datagrid-header-main-content\">\r\n                    @if(allowHeaderRows){ <div class=\"datagrid-rowheader\"></div>}\r\n                    <div class=\"datagrid-toolbar\">\r\n                        @if(isLoaded){\r\n                        @for (item of buttons; track $index) {\r\n                        <button type=\"button\" class=\"datagrid-toolbar-item\" (click)=\"toolbarButtonClick(item)\">\r\n                            @if(item.html==undefined){\r\n                            @switch (item.name) {\r\n                            @case ('refresh') {\r\n                            @if(item.iconShow==undefined || item.iconShow){<i\r\n                                class=\"datagrid-toolbar-item-refresh\"></i>}\r\n                            @if(item.textShow!=undefined && item.textShow){<span [innerHTML]=\"i18N.refresh\"></span>}\r\n                            }\r\n                            @case ('exportCSV') {\r\n                            @if(item.iconShow==undefined || item.iconShow){<i\r\n                                class=\"datagrid-toolbar-item-exportcsv\"></i>}\r\n                            @if(item.textShow!=undefined && item.textShow){<span [innerHTML]=\"i18N.exportCSV\"></span>}\r\n                            }\r\n                            @case ('exportXLSX') {\r\n                            @if(item.iconShow==undefined || item.iconShow){<i\r\n                                class=\"datagrid-toolbar-item-exportxlsx\"></i>}\r\n                            @if(item.textShow!=undefined && item.textShow){<span [innerHTML]=\"i18N.exportXLSX\"></span>}\r\n                            }\r\n                            @case ('clearFilters') {\r\n                            @if(item.iconShow==undefined || item.iconShow){<i\r\n                                class=\"datagrid-toolbar-item-clearfilters\"></i>}\r\n                            @if(item.textShow!=undefined && item.textShow){<span\r\n                                [innerHTML]=\"i18N.clearFilters\"></span>}\r\n                            }\r\n                            }\r\n                            }\r\n                            @else {<span [innerHTML]=\"item.html\"></span>}\r\n                        </button>\r\n                        }\r\n                        }\r\n                        @for (item of customButton; track $index) {\r\n                        @if(item.hidden != true && item.html!=undefined && item.html!=''){\r\n                        @if(item.html.startsWith('<csc-icon')){ <button type=\"button\"\r\n                            class=\"datagrid-toolbar-item {{item.class}}\" (click)=\"item.clicked()\">\r\n                            <csc-icon [Icon]=\"getComponentConstructor(item.html)['Icon']\"></csc-icon>\r\n                            </button>\r\n                            }@else{\r\n                            <button type=\"button\" class=\"datagrid-toolbar-item {{item.class}}\" (click)=\"item.clicked()\"\r\n                                [innerHtml]=\"item.html\">.</button>\r\n                            }\r\n                            }\r\n                            }\r\n                    </div>\r\n                </div>\r\n                <div class=\"datagrid-row-separator\"></div>\r\n            </div>\r\n            }\r\n            @if(isLoaded && allowMenu){\r\n            <div class=\"datagrid-header-main\" aria-describedby=\"datagrid-menu\">\r\n                <div class=\"datagrid-header-main-content\">\r\n                    @if(allowHeaderRows){ <div class=\"datagrid-rowheader\"></div>}\r\n                    <div class=\"datagrid-menu\">\r\n                        <div class=\"datagrid-menu-control\">\r\n                            <span>{{i18N.show}}</span>\r\n                            <csc-dropdown-button #cboDatagridDropdownButton [ComponentId]=\"'cboDatagridPageSize'\"\r\n                                [DataEntries]=\"getPageSize()\" (change)=\"setPageSize($event)\"></csc-dropdown-button>\r\n                            <span>{{i18N.entries}}</span>\r\n                        </div>\r\n                        <div class=\"datagrid-menu-filter\">\r\n                            <span [innerHTML]=\"i18N.search\"></span>\r\n                            <input #txtSearch type=\"text\" (change)=\"search($event)\" />\r\n                            <i class=\"datagrid-menu-filter-icon\" (click)=\"search($event)\"></i>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"datagrid-row-separator\"></div>\r\n            </div>\r\n            }\r\n            @if(isLoaded && allowGroupColumns){\r\n            <div class=\"datagrid-header-main\" aria-describedby=\"datagrid-groupcolumns\">\r\n                <div class=\"datagrid-header-main-content\">\r\n                    @if(allowHeaderRows){ <div class=\"datagrid-rowheader\"></div>}\r\n                    <div class=\"datagrid-groupcolumns\">\r\n                        <div class=\"datagrid-groupcolumns-content\">\r\n\r\n                        </div>\r\n                        <div class=\"datagrid-groupcolumns-placeholder\">Glisser les colonnes ici</div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"datagrid-row-separator\"></div>\r\n            </div>\r\n            }\r\n            @if(isLoaded && allowHeaderColumns){\r\n            <div class=\"datagrid-header-main\" aria-describedby=\"datagrid-columnheaders\">\r\n                <div class=\"datagrid-header-main-content\" [style]=\"getStyleColumnHeaderHeight()\">\r\n                    @if(allowHeaderRows){ <div class=\"datagrid-rowheader\"></div>}\r\n                    <div #datagridColumnHeaders class=\"datagrid-columnheaders\">\r\n                        <div class=\"datagrid-columnheaders-content\" role=\"grid\">\r\n                            <div class=\"datagrid-columnheaders-rowgroup\" role=\"rowgroup\">\r\n                                <div class=\"datagrid-columnheaders-row\" role=\"row\">\r\n                                    @for (col of datagridColumns; track $index) {\r\n                                    @if(col.visible){\r\n                                    <div class=\"datagrid-columnheader\" role=\"columnheader\" [ariaSort]=\"col.sortBy\"\r\n                                        [attr.datagrid-column-index]=\"col.id\" [style]=\"getWidthColumn(col)\">\r\n                                        <div class=\"datagrid-columnheader-content\" [style]=\"getStyleColumn(col)\"\r\n                                            [innerHTML]=\"col.html\" (click)=\"columnClicked($event, col)\">\r\n                                        </div>\r\n                                        @if(col.sorting){\r\n                                        <div class=\"datagrid-columnheader-sorting\">\r\n                                            <span class=\"datagrid-columnheader-badge\">{{col.sortIndex}}</span>\r\n                                        </div>\r\n                                        }\r\n                                        @if(col.filterActivate){\r\n                                        <div class=\"datagrid-columnheader-filtering\"></div>\r\n                                        }\r\n                                        @if(this.allowFilteringColumns){<div class=\"datagrid-columnheader-menu\"\r\n                                            (click)=\"menuColumn($event, col)\"></div>}\r\n                                    </div>\r\n                                    }\r\n                                    }\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"datagrid-row-separator\"></div>\r\n            </div>\r\n            }\r\n        </div>\r\n        <!-- #endregion -->\r\n        <!-- #region Datagrid Main -->\r\n        <div class=\"datagrid-main\">\r\n            <div class=\"datagrid-main-content\">\r\n                @if(isInitialized && isLoaded && allowHeaderRows){\r\n                <div #datagridRowHeaders class=\"datagrid-rowheaders\" aria-describedby=\"datagrid-rowheaders\">\r\n                    <div class=\"datagrid-rowheaders-content\" role=\"grid\">\r\n                        @for (row of getPageSizeRows(); track $index) {\r\n                        <div class=\"datagrid-rowgroupheader\" role=\"rowgroup\" [attr.datagrid-row-index]=\"row.index\"\r\n                            [class]=\"{active:row.selected}\">\r\n                            <div class=\"datagrid-rowheader\" role=\"row\" [style]=\"getStyleRowHeight()\">\r\n                                <div class=\"datagrid-gridcell\" role=\"rowheader\">\r\n                                    <div class=\"datagrid-gridcell-content\">{{row.index}}</div>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"datagrid-row-separator\"></div>\r\n                        </div>\r\n                        }\r\n                    </div>\r\n                </div>\r\n                }\r\n                <div #datagridBody class=\"datagrid-body\" role=\"grid\" (scroll)=\"scrolledBody()\">\r\n                    @if(!isInitialized){\r\n                    <div class=\"datagrid-not-initialized\">\r\n                        <div [innerHTML]=\"i18N.notInitialized\"></div>\r\n                    </div>\r\n                    }\r\n                    @else if(!isLoaded){<csc-loader [LoaderType]=\"loaderType\" class=\"datagrid-loader\"></csc-loader>}\r\n                    @else if(getPageSizeRows().length>0){\r\n                    @for (row of getPageSizeRows(); track $index) {\r\n                    <csc-datagrid-row [attr.data-index]=\"row.id\" [Row]=\"row\" [DatagridColumns]=\"datagridColumns\"\r\n                        [DatagridOptions]=\"datagridOptions\" (cellClick)=\"cellClicked($event)\"\r\n                        (cellDbClick)=\"cellDbClick($event)\" (cellChangeValue)=\"cellChangeValue($event)\"\r\n                        (selectedRow)=\"selectedRow($event)\" (rowPainting)=\"rowPainting($event)\"\r\n                        (cellPainting)=\"cellPainting($event)\" class=\"datagrid-rowgroup\" role=\"rowgroup\"\r\n                        [class]=\"{active:row.selected,'is-odd':rowIsOdd(row)}\"></csc-datagrid-row>\r\n                    }\r\n                    }@else{ <div class=\"datagrid-body-blank\" [style]=\"getColumnHeadersWidth()\"></div> }\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <!-- #endregion -->\r\n        <!-- #region Datagrid Footer -->\r\n        <div class=\"datagrid-footer\">\r\n            @if(isLoaded && allowTotals){\r\n            <div class=\"datagrid-footer-main\" aria-describedby=\"datagrid-totals\">\r\n                <div class=\"datagrid-row-separator\"></div>\r\n                <div class=\"datagrid-footer-main-content\" [style]=\"getStyleColumnFooterHeight()\">\r\n                    @if(allowHeaderRows){ <div class=\"datagrid-rowheader\"></div>}\r\n                    <div #datagridColumnFooters class=\"datagrid-columnfooters-totals\">\r\n                        <div class=\"datagrid-columnfooters-content\" role=\"grid\">\r\n                            <div class=\"datagrid-columnfooters-rowgroup\" role=\"rowgroup\">\r\n                                <div class=\"datagrid-columnfooters-row\" role=\"row\">\r\n                                    @for (col of datagridColumns; track $index) {\r\n                                    @if(col.visible){\r\n                                    <div class=\"datagrid-columnfooter\" role=\"gridcell\"\r\n                                        [attr.datagrid-column-index]=\"col.id\" [style]=\"getWidthColumn(col)\">\r\n                                        <div class=\"datagrid-columnfooter-content\">\r\n                                            @if(col.footerCalcul!=undefined && col.footerCalcul!='none'){\r\n                                            <input type=\"text\" [value]=\"getValueTotalColumns(col)\" />}\r\n                                        </div>\r\n                                    </div>\r\n                                    }\r\n                                    }\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            }\r\n            @if(allowMessage){\r\n            <div class=\"datagrid-footer-main\">\r\n                <div class=\"datagrid-row-separator\"></div>\r\n                <div class=\"datagrid-footer-main-content\">\r\n                    <div class=\"datagrid-message\" [class]=\"{\r\n                            'show':isMessageQueuing()\r\n                            ,'info':getFirstMessageQueue()?.type=='info'\r\n                            ,'success':getFirstMessageQueue()?.type=='success'\r\n                            ,'warning':getFirstMessageQueue()?.type=='warning'\r\n                            ,'error':getFirstMessageQueue()?.type=='error'}\">\r\n                        <div class=\"icon\">\r\n                            <csc-icon class=\"icon-content\" [ariaLabel]=\"getFirstMessageQueue()?.icon\"></csc-icon>\r\n                        </div>\r\n                        <div class=\"datagrid-message-content\" [innerHTML]=\"this.getFirstMessageQueue()?.message\"></div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            }\r\n            @if(isLoaded && allowFooter){\r\n            <div class=\"datagrid-footer-main\">\r\n                <div class=\"datagrid-row-separator\"></div>\r\n                <div class=\"datagrid-footer-main-content\">\r\n                    <div class=\"datagrid-footer-content\">\r\n                        <div class=\"showItems\">{{labelTotal}}</div>\r\n                        @if(pagination.visible){\r\n                        <csc-datagrid-pagination #datagridPagination [Pagination]=\"pagination\" [PageMax]=\"maxPage\"\r\n                            [NumPage]=\"currentPage\" [ItemPaginationLength]=\"6\"\r\n                            [i18N]=\"{first:i18N.first,previous:i18N.previous,next:i18N.next,last:i18N.last}\"\r\n                            (gotoPage)=\"gotoPage($event)\"></csc-datagrid-pagination>\r\n                        }\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            }\r\n        </div>\r\n        <!-- #endregion -->\r\n    </div>\r\n</div>\r\n@if(isLoaded && (toolPanelsEnabled || allowFilteringColumns)){\r\n<csc-datagrid-item-panels #datagridItemPanels [ToolPanelsVisibled]=\"toolPanelsVisibled\"\r\n    [ItemToolPanelActive]=\"itemToolPanelActive\" [ItemToolPanels]=\"itemToolPanels\" [DatagridColumns]=\"datagridColumns\"\r\n    [DatagridOptions]=\"datagridOptions\" [AllowModules]=\"{\r\n            allowTitle : this.allowTitle\r\n            , allowToolBar : this.allowToolBar\r\n            , allowMenu : this.allowMenu\r\n            , allowGroupColumns : this.allowGroupColumns\r\n            , allowHeaderColumns : this.allowHeaderColumns\r\n            , allowFilteringColumns : this.allowFilteringColumns\r\n            , toolPanelsEnabled : this.toolPanelsEnabled\r\n            , allowFooter : this.allowFooter\r\n            , allowMessage : this.allowMessage\r\n            , allowTotals : this.allowTotals\r\n        }\" [Datas]=\"this.Datas\" [I18N]=\"this.i18N\" (toggleToolPanels)=\"toggleToolPanels($event)\"\r\n    (setVisibleColumnByIndex)=\"setVisibleColumnByIndex($event)\" (moveColumnByIndex)=\"moveColumnByIndex($event)\"\r\n    (setVisibilityDatagridModule)=\"setVisibilityDatagridModule($event)\" (applyFilterClick)=\"applyFilterClick($event)\"\r\n    (sortColumn)=\"sortColumn($event)\" [class]=\"{show:this.toolPanelsVisibled}\"></csc-datagrid-item-panels>\r\n}","import { DatagridColumn } from \"./datagrid-column-dto\";\r\n\r\nexport class DatagridCell {\r\n    public column: DatagridColumn = new DatagridColumn();\r\n    public columnId: string = '';\r\n    public rowId: string = '';\r\n    public dataField: string = '';\r\n    public dataBoundItem: any = '';\r\n    public dataValue(): any { return undefined };\r\n    public dataValueString(): string { return '' };\r\n    public changed: boolean = false;\r\n}\r\n","import { DatagridCell } from \"./datagrid-cell-dto\";\r\nimport { DatagridColumn } from \"./datagrid-column-dto\";\r\nimport { DatagridRow } from \"./datagrid-row-dto\";\r\n\r\nexport class DatagridCellEvent {\r\n    public column: DatagridColumn = new DatagridColumn();\r\n    public row: DatagridRow = new DatagridRow();\r\n    public cell: DatagridCell = new DatagridCell();\r\n    public value: any = '';\r\n}\r\n","export class DatagridColumnFilterDto {\r\n    public values: any[] = [];\r\n}\r\n","export class Pagination {\r\n    public enabledFirst: boolean\r\n    public enabledPrevious: boolean\r\n    public enabledNext: boolean\r\n    public enabledLast: boolean\r\n    public visible: boolean\r\n  \r\n    constructor() {\r\n      this.enabledFirst = true;\r\n      this.enabledPrevious = true;\r\n      this.enabledFirst = true;\r\n      this.enabledNext = true;\r\n      this.enabledLast = true;\r\n      this.visible = true;\r\n    }\r\n  }\r\n","import { Component, effect, ElementRef, input, output, Version } from '@angular/core';\r\nimport { IPaginationItem } from './interfaces/ipagination-item';\r\nimport { IPaginationTemplate } from './interfaces/ipagination-template';\r\nimport { Pagination } from './dtos/pagination-dto';\r\nimport { NgClass } from '@angular/common';\r\nimport { ComponentBaseComponent } from '../component-base/component-base.component';\r\n\r\n@Component({\r\n  selector: 'csc-pagination',\r\n  imports: [],\r\n  templateUrl: './pagination.component.html',\r\n  styleUrl: './pagination.component.scss'\r\n})\r\nexport class PaginationComponent extends ComponentBaseComponent {\r\n\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  private _numPage: number = 0;\r\n  private _pageMax: number = 1;\r\n  private _itemPaginationLength: number = 5;\r\n  private _pagination: Pagination = new Pagination();\r\n  private _i18N: IPaginationTemplate = {\r\n    first: 'first'\r\n    , last: 'last'\r\n    , next: 'next'\r\n    , previous: 'previous'\r\n  };\r\n\r\n  protected paginationItem: IPaginationItem[] = [];\r\n\r\n  public get numPage(): number { return this._numPage; }\r\n  public get pageMax(): number { return this._pageMax; }\r\n  public get itemPaginationLength(): number { return this._itemPaginationLength; }\r\n  public get pagination(): Pagination { return this._pagination; }\r\n  public get i18N(): IPaginationTemplate { return this._i18N; }\r\n\r\n  public input_Pagination = input<Pagination>(new Pagination(), { alias: 'Pagination' });\r\n  public input_NumPage = input.required<number>({ alias: 'NumPage' });\r\n  public input_PageMax = input.required<number>({ alias: 'PageMax' });\r\n  public input_ItemPaginationLength = input.required<number>({ alias: 'ItemPaginationLength' });\r\n  public input_i18N = input<IPaginationTemplate>({ first: 'first', last: 'last', next: 'next', previous: 'previous' }, { alias: 'i18N' });\r\n\r\n  public output_GotoFirst = output<any>({ alias: 'gotoFirst' })\r\n  public output_GotoPrevious = output<any>({ alias: 'gotoPrevious' })\r\n  public output_GotoNext = output<any>({ alias: 'gotoNext' })\r\n  public output_GotoLast = output<any>({ alias: 'gotoLast' })\r\n  public output_GotoPage = output<any>({ alias: 'gotoPage' })\r\n\r\n  constructor(hostElement: ElementRef) {\r\n    super(hostElement);\r\n    (hostElement.nativeElement as HTMLElement).classList.add(\"csc-datagrid-pagination\");\r\n    effect((effect) => {\r\n      if (this._pagination != this.input_Pagination()) { this._pagination = this.input_Pagination(); }\r\n      if (this._numPage != this.input_NumPage()) { this._numPage = this.input_NumPage(); }\r\n      if (this._pageMax != this.input_PageMax()) { this._pageMax = this.input_PageMax(); }\r\n      if (this._itemPaginationLength != this.input_ItemPaginationLength()) { this._itemPaginationLength = this.input_ItemPaginationLength(); }\r\n      if (this._i18N != this.input_i18N()) { this._i18N = this.input_i18N(); }\r\n      this.buildPagination();\r\n    });\r\n  }\r\n\r\n  //#region Navigation\r\n  public gotoFirst() { this.output_GotoFirst.emit(1); this.gotoPage(1); }\r\n  public gotoPrevious() { if (this._numPage > 1) { this.output_GotoPrevious.emit(this._numPage - 1); this.gotoPage(this._numPage - 1); } }\r\n  public gotoNext() { this.output_GotoNext.emit(this._numPage + 1); this.gotoPage(this._numPage + 1); }\r\n  public gotoLast() { this.output_GotoLast.emit(this._pageMax); this.gotoPage(this._pageMax); }\r\n  public gotoPage(numPage: number) {\r\n    this._numPage = numPage;\r\n    this.buildPagination();\r\n    this.output_GotoPage.emit({ value: numPage, item: this.paginationItem.find(x => x.page == numPage) });\r\n  }\r\n  //#endregion\r\n  protected buildPagination() {\r\n    let paginationItem: IPaginationItem[] = [];\r\n    let index = 1;\r\n    let iPage: number = this._numPage\r\n    if (this._numPage < 1) { this._numPage = 1; }\r\n    if (iPage > (this._pageMax - this._itemPaginationLength)) { iPage = (this._pageMax - this._itemPaginationLength) + 1; }\r\n    if (this._numPage > 1 && this._pageMax > this._itemPaginationLength) { paginationItem.push({ index: index, html: \"...\", enabled: false, active: false, page: 1 }); }\r\n    for (var i = 0; i < this._itemPaginationLength; i++) {\r\n      index = i + iPage;\r\n      if (index <= this._pageMax && index > 0) { paginationItem.push({ index: index, html: `${index}`, enabled: true, active: (index == this._numPage), page: index }); }\r\n    }\r\n    if (this._numPage <= (this._pageMax - this._itemPaginationLength) && this._pageMax > this._itemPaginationLength) { paginationItem.push({ index: index, html: \"...\", enabled: false, active: false, page: this._pageMax }); }\r\n    if (index < this._pageMax) { paginationItem.push({ index: this._pageMax, html: `${this._pageMax}`, enabled: true, active: (index == this._numPage), page: this._pageMax }); }\r\n    this.paginationItem = paginationItem;\r\n  }\r\n  //#endregion\r\n}","@if(pagination.enabledFirst && numPage>1){\r\n<span class=\"csc-pagination-first\" (click)=\"gotoFirst()\"></span>\r\n}\r\n@if(pagination.enabledPrevious && numPage>1){\r\n<span class=\"csc-pagination-previous\" (click)=\"gotoPrevious()\"></span>\r\n}\r\n@for (item of paginationItem; track $index) {\r\n<span class=\"csc-pagination-item\"\r\n        [class]=\"{'active' : item.active == true, 'disabled' : item.enabled == false}\" (click)=\"gotoPage(item.page)\"\r\n        [innerHTML]=\"item.html\">\r\n</span>\r\n}\r\n@if(pagination.enabledNext && numPage<pageMax){ <span class=\"csc-pagination-next\" (click)=\"gotoNext()\">\r\n        </span>\r\n        }\r\n        @if(pagination.enabledLast && numPage<pageMax){ <span class=\"csc-pagination-last\" (click)=\"gotoLast()\">\r\n                </span>\r\n                }","import { Component, effect, ElementRef, input, Version, viewChild } from '@angular/core';\r\nimport { ComponentBaseComponent } from '../component-base/component-base.component';\r\n\r\n@Component({\r\n  selector: 'csc-pdfviewer',\r\n  imports: [],\r\n  templateUrl: './pdfviewer.component.html',\r\n  styleUrl: './pdfviewer.component.scss'\r\n})\r\nexport class PDFViewerComponent extends ComponentBaseComponent {\r\n\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  private _Url: string = '';\r\n\r\n  public input_Url = input<string>('', { alias: 'Url' });\r\n  public get Url(): string { return this._Url; }\r\n\r\n  public embedPDF = viewChild.required<ElementRef>('embedPDF');\r\n\r\n  constructor(_hostElement: ElementRef) {\r\n    super(_hostElement);\r\n    effect((effect) => {\r\n      if (this._Url != this.input_Url()) {\r\n        this._Url = this.input_Url();\r\n        (this.embedPDF().nativeElement as HTMLEmbedElement).src = this.Url;\r\n      }\r\n    });\r\n  }\r\n}\r\n","<embed #embedPDF type=\"application/pdf\" />","import { Component, effect, ElementRef, input, output, Version, viewChild } from '@angular/core';\r\nimport { ComponentBaseComponent } from '../component-base/component-base.component';\r\nimport { ProgressType } from './types/progress-type';\r\nimport { ProgressEvent } from './events/progress-event';\r\n\r\n@Component({\r\n  selector: 'csc-progress',\r\n  imports: [],\r\n  templateUrl: './progress.component.html',\r\n  styleUrl: './progress.component.scss'\r\n})\r\nexport class ProgressComponent extends ComponentBaseComponent {\r\n\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  private _htmlContentElement!: HTMLElement;\r\n  private _title: string = '';\r\n  private _label: string = '';\r\n  private _description: string = '';\r\n  private _value: number = 0;\r\n  private _valueMax: number = 100;\r\n  private _valueMin: number = 0;\r\n  private _rate: number = 0;\r\n  private _classLabel: string[] = [];\r\n  private _classBar: string[] = [];\r\n  private _styleLabel: string[] = [];\r\n  private _styleBar: string[] = [];\r\n  private _type: ProgressType = 'none';\r\n\r\n  protected get title(): string { return this._title; }\r\n  protected get label(): string { return this._label; }\r\n  protected get description(): string { return this._description; }\r\n\r\n  public progressbar = viewChild<ElementRef>('progressbar');\r\n\r\n  public input_Title = input('', { alias: 'Title' });\r\n  public input_Label = input('', { alias: 'Label' });\r\n  public input_ClassBar = input<string[]>([], { alias: 'ClassBar' });\r\n  public input_StyleBar = input<any>({}, { alias: 'StyleBar' });\r\n  public input_ClassLabel = input<string[]>([], { alias: 'ClassLabel' });\r\n  public input_StyleLabel = input<any>({}, { alias: 'StyleLabel' });\r\n  public input_Type = input<ProgressType>('none', { alias: 'Type' });\r\n  public input_Value = input(0, { alias: 'Value' });\r\n  public input_ValueMax = input(100, { alias: 'ValueMax' });\r\n  public input_ValueMin = input(0, { alias: 'ValueMin' });\r\n\r\n  public get value(): number { return this._value; }\r\n  public get valueMax(): number { return this._valueMax; }\r\n  public get valueMin(): number { return this._valueMin; }\r\n  public get rate(): number { return this._rate; }\r\n\r\n  public output_valueChange = output<ProgressEvent>({ alias: 'valueChange' })\r\n  public output_valueMinChange = output<ProgressEvent>({ alias: 'valueMinChange' })\r\n  public output_valueMaxChange = output<ProgressEvent>({ alias: 'valueMaxChange' })\r\n\r\n  constructor(_hostElement: ElementRef) {\r\n    super(_hostElement);\r\n    this._htmlContentElement = _hostElement.nativeElement;\r\n    effect((effect) => {\r\n      if (this._value != this.input_Value()) {\r\n        this._value = this.input_Value();\r\n        this.onValueChange(this._value);\r\n      }\r\n      if (this._valueMax != this.input_ValueMax()) {\r\n        this._valueMax = this.input_ValueMax();\r\n        this.onValueMaxChange(this._valueMax);\r\n      }\r\n      if (this._valueMin != this.input_ValueMin()) {\r\n        this._valueMin = this.input_ValueMin();\r\n        this.onValueMinChange(this._valueMin);\r\n      }\r\n      if (this._type != this.input_Type()) {\r\n        this._type = this.input_Type();\r\n        this._htmlContentElement.setAttribute('data-type', this._type);\r\n      }\r\n      if (this._title != this.input_Title()) { this._title = this.input_Title(); }\r\n      if (this._label != this.input_Label()) { this._label = this.input_Label(); }\r\n      if (this._classBar != this.input_ClassBar()) { this._classBar = this.input_ClassBar(); }\r\n      if (this._classLabel != this.input_ClassLabel()) { this._classLabel = this.input_ClassLabel(); }\r\n      if (this._styleBar != this.input_StyleBar()) { this._styleBar = this.input_StyleBar(); }\r\n      if (this._styleLabel != this.input_StyleLabel()) { this._styleLabel = this.input_StyleLabel(); }\r\n      this.calcValue();\r\n    });\r\n  }\r\n\r\n  private onValueChange(value: number) {\r\n    this.calcValue();\r\n    this.output_Change.emit(value);\r\n    this.output_valueChange.emit({ targetHtml: this._htmlContentElement, value: value, targetElement: this });\r\n  }\r\n  private onValueMaxChange(value: number) {\r\n    this.calcValue();\r\n    this.output_valueMaxChange.emit({ targetHtml: this._htmlContentElement, value: value, targetElement: this });\r\n  }\r\n  private onValueMinChange(value: number) {\r\n    this.calcValue();\r\n    this.output_valueMinChange.emit({ targetHtml: this._htmlContentElement, value: value, targetElement: this });\r\n  }\r\n  private calcValue() {\r\n    let value = this._value;\r\n    let valueMin = this._valueMin;\r\n    let valueMax = this._valueMax;\r\n\r\n    if (valueMax < valueMin) { valueMax = valueMin; }\r\n    if (value < valueMin) { value = valueMin; }\r\n    if (value > valueMax) { value = valueMax; }\r\n\r\n    let rateMax = (valueMax - valueMin);\r\n    let rateTarget = (value - valueMin);\r\n    let rate = 0;\r\n    if (rateMax == 0) {\r\n      if (this.progressbar() != undefined && this.progressbar()?.nativeElement != undefined) {\r\n        (this.progressbar()?.nativeElement as HTMLElement).style.width = `${0}%`;\r\n      }\r\n    } else {\r\n      rate = (rateTarget * 100) / rateMax;\r\n      if (rate < 0) { rate = 0; }\r\n      if (rate > 100) { rate = 100; }\r\n    }\r\n    this._rate = rate;\r\n    this.draw();\r\n  }\r\n  private draw() {\r\n    if (this.progressbar() != undefined && this.progressbar()?.nativeElement != undefined) {\r\n      (this.progressbar()?.nativeElement as HTMLElement).style.width = `${this._rate}%`;\r\n    }\r\n  }\r\n\r\n  protected getClassesLabel(): string[] { return this.input_ClassLabel() ?? []; }\r\n  protected getStylesLabel(): {} {\r\n    var style: {} = {};\r\n    if (this._styleLabel != undefined) { style = Object.assign(style, this._styleLabel); }\r\n    return style;\r\n  }\r\n  protected getClassesBar(): string[] { return this.input_ClassBar() ?? []; }\r\n  protected getStylesBar(): {} {\r\n    var style: {} = {};\r\n    if (this._styleBar != undefined) { style = Object.assign(style, this._styleBar); }\r\n    return style;\r\n  }\r\n\r\n  public setValues(values: { value: number, valueMin: number, valueMax: number }) {\r\n    if (values.value != this._value) { this._value = values.value; this.onValueChange(values.value); }\r\n    if (values.valueMax != this._valueMax) { this._valueMin = values.valueMin; this.onValueMaxChange(values.valueMax); }\r\n    if (values.valueMin != this._valueMin) { this._valueMax = values.valueMax; this.onValueMinChange(values.valueMin); }\r\n    this.calcValue();\r\n  }\r\n  public setValue(value: number) {\r\n    this.setValues({ value: value, valueMax: this._valueMax, valueMin: this._valueMin });\r\n  }\r\n  public setValueMax(value: number) {\r\n    this.setValues({ value: this._value, valueMax: value, valueMin: this._valueMin });\r\n  }\r\n  public setValueMin(value: number) {\r\n    this.setValues({ value: this._value, valueMax: this._valueMax, valueMin: value });\r\n  }\r\n  public setType(type: ProgressType) {\r\n    this._type = type;\r\n    this._htmlContentElement.setAttribute('data-type', this._type);\r\n  }\r\n  public setLabel(label: string) { this._label = label; }\r\n}\r\n","<div #progressbar [class]=\"getClassesBar()\" [style]=\"getStylesBar()\" title=\"{{title}}\" role=\"progressbar\" [ariaValueNow]=\"value\"\r\n    [ariaValueMin]=\"valueMin\" [ariaValueMax]=\"valueMax\">\r\n</div>\r\n@if(label!=''){ <span [class]=\"getClassesLabel()\" [style]=\"getStylesLabel()\" [innerHTML]=\"label\" class=\"csc-progress-label\"></span> }","import { Component, effect, ElementRef, EventEmitter, input, output, Version } from '@angular/core';\r\nimport { ITab } from '../interfaces/itab';\r\nimport { ComponentBaseComponent } from '../../component-base/component-base.component';\r\nimport { IconComponent } from \"../../icon/icon.component\";\r\n\r\n@Component({\r\n  selector: 'csc-tabitem',\r\n  imports: [IconComponent],\r\n  templateUrl: './tabitem.component.html',\r\n  styleUrl: './tabitem.component.scss'\r\n})\r\nexport class TabItemComponent extends ComponentBaseComponent {\r\n\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  private _active: boolean = false;\r\n  private _tab!: ITab;\r\n\r\n  protected get htmlHostElement(): HTMLElement { return this.hostElement.nativeElement; }\r\n\r\n  public get active() { return this._active; }\r\n  public set active(value: boolean) {\r\n    this._active = value;\r\n    this.output_activeChange.emit(value);\r\n  }\r\n  public get tab(): ITab { return this._tab; }\r\n  public get text() {\r\n    if (this._tab != undefined) {\r\n      if (this._tab.titleHtml != undefined) { return this._tab.titleHtml; }\r\n      return this._tab.title;\r\n    }\r\n    return '';\r\n  }\r\n\r\n  public input_Tab = input.required<ITab>({ alias: 'Tab' });\r\n\r\n  public output_click = output<any>({ alias: 'click' })\r\n  public output_closeTabClick = output<any>({ alias: 'closeTabClick' })\r\n  public output_activeChange = output<any>({ alias: 'activeChange' })\r\n\r\n  constructor(_hostElement: ElementRef) {\r\n    super(_hostElement);\r\n    this.htmlHostElement.classList.add(\"csc-tab-link\");\r\n    this.htmlHostElement.setAttribute(\"aria-selected\", 'false');\r\n    this.htmlHostElement.setAttribute(\"role\", 'tab');\r\n    let _this = this;\r\n    this.htmlHostElement.addEventListener('click', function (event: MouseEvent) { event.stopImmediatePropagation(); });\r\n    effect((effect) => {\r\n      if (this._tab != this.input_Tab()) {\r\n        this._tab = this.input_Tab();\r\n        if (this._tab.closeIconType == undefined) { this._tab.closeIconType = 'x'; }\r\n        if (this._tab.title == undefined) { this._tab.title = this._tab.name; }\r\n        if (this._tab.canClose == undefined) { this._tab.canClose = false; }\r\n        this.htmlHostElement.id = `tab-item-${this._tab.name}`;\r\n        this.htmlHostElement.setAttribute(\"data-csc-target\", `#tab-${this._tab.name}`);\r\n        this.htmlHostElement.setAttribute(\"aria-controls\", `tab-${this._tab.index}`);\r\n      }\r\n    });\r\n  }\r\n\r\n  public click(event: any): void {\r\n    if (event != undefined) { event.stopImmediatePropagation(); }\r\n    this.output_click.emit({ targetHtml: this.htmlHostElement, targetComponent: this, tab: this.tab });\r\n  }\r\n  public closeTab(event: MouseEvent) {\r\n    if (event != undefined) { event.stopImmediatePropagation(); }\r\n    this.output_closeTabClick.emit({ targetHtml: this.htmlHostElement, targetComponent: this, tab: this.tab });\r\n  }\r\n}","<div class=\"csc-tabitem-content\" (click)=\"click($event)\">\r\n    @if(tab.iconType!=undefined){\r\n        <csc-icon [Icon]=\"tab.iconType\"></csc-icon>\r\n    }\r\n    <span class=\"csc-tabitem-content-html\" [innerHTML]=\"text\"></span>\r\n</div>\r\n@if(tab.canClose){\r\n<a role=\"button\" class=\"csc-tabitem-btn-close\" (click)=\"closeTab($event)\">\r\n    <csc-icon [Icon]=\"tab.closeIconType\"></csc-icon>\r\n</a>\r\n}","import { AfterViewInit, Component, effect, ElementRef, EventEmitter, input, Input, OnInit, output, Output, Version, viewChild, ViewChild, ViewContainerRef, ViewRef } from '@angular/core';\r\nimport { ITab } from '../interfaces/itab';\r\nimport { ComponentBaseComponent } from '../../component-base/component-base.component';\r\n\r\n@Component({\r\n  selector: 'csc-tabpageitem',\r\n  imports: [],\r\n  templateUrl: './tabpageitem.component.html',\r\n  styleUrl: './tabpageitem.component.scss'\r\n})\r\nexport class TabPageItemComponent extends ComponentBaseComponent {\r\n\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  private _active: boolean = false;\r\n  public _tab!: ITab;\r\n\r\n  protected get htmlHostElement(): HTMLElement { return this.hostElement.nativeElement; }\r\n\r\n  public get active() { return this._active; }\r\n  public set active(value: boolean) {\r\n    this._active = value;\r\n    this.output_activeChange.emit(value);\r\n  }\r\n  public get tab(): ITab { return this._tab; }\r\n\r\n  public input_Tab = input.required<ITab>({ alias: 'Tab' });\r\n\r\n  public output_activeChange = output<any>({ alias: 'activeChange' })\r\n\r\n  public viewChild_tabPage = viewChild.required('tabPage', { read: ViewContainerRef });\r\n\r\n  constructor(_hostElement: ElementRef) {\r\n    super(_hostElement);\r\n    effect((effect) => {\r\n      if (this._tab != this.input_Tab()) {\r\n        this._tab = this.input_Tab();\r\n        this.htmlHostElement.id = `tab-${this._tab.name}`;\r\n        this.htmlHostElement.setAttribute(\"aria-labelledby\", `tabpage-item-${this._tab.name}`);\r\n        this.htmlHostElement.setAttribute(\"tabindex\", `${this._tab.index}`);\r\n        if (this._tab.component != undefined) {\r\n          var cr = this.viewChild_tabPage().createComponent(this._tab.component)\r\n          this._tab.componentRef = cr;\r\n          this._tab.viewRef = cr.hostView as ViewRef;\r\n        }\r\n      }\r\n    });\r\n    this.htmlHostElement.classList.add(\"csc-tabpageitem\");\r\n    this.htmlHostElement.setAttribute(\"role\", \"tabpanel\");\r\n  }\r\n}","@if(tab.contentHtml!=undefined){<div class=\"csc-tabpageitem-contenthtml\" [innerHTML]=\"tab.contentHtml\"></div>}\r\n@else{<ng-template #tabPage></ng-template>}","import { AfterViewInit, Component, effect, ElementRef, EventEmitter, OnInit, output, Output, QueryList, Version, viewChild, viewChildren, ViewChildren } from '@angular/core';\r\nimport { ITab } from '../interfaces/itab';\r\nimport { TabItemComponent } from '../tabitem/tabitem.component';\r\nimport { TabPageItemComponent } from '../tabpageitem/tabpageitem.component';\r\nimport { ComponentBaseComponent } from '../../component-base/component-base.component';\r\nimport { IconComponent } from \"../../icon/icon.component\";\r\n\r\n@Component({\r\n  selector: 'csc-tabpage',\r\n  imports: [TabItemComponent, TabPageItemComponent, IconComponent],\r\n  templateUrl: './tabpage.component.html',\r\n  styleUrl: './tabpage.component.scss'\r\n})\r\nexport class TabPageComponent extends ComponentBaseComponent {\r\n\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  private _tabs: ITab[] = []\r\n  private _selectedTabIndex: number = -1;\r\n  private _ScrollableTabs: boolean = false;\r\n\r\n  protected get htmlHostElement(): HTMLElement { return this.hostElement.nativeElement; }\r\n\r\n  public get tabs(): ITab[] { return this._tabs; }\r\n  public get selectedTabIndex() { return this._selectedTabIndex; }\r\n\r\n  public viewChild_tabitemsNav = viewChild.required<ElementRef>('tabitemsNav');\r\n  public viewChild_tabitems = viewChild.required<ElementRef>('tabitems');\r\n  public viewChild_tabitemsContent = viewChild.required<ElementRef>('tabitemsContent');\r\n  public viewChild_tabitemsNavScroll = viewChild.required<ElementRef>(' tabitemsNavScroll');\r\n  public viewChildren_tabitem = viewChildren<TabItemComponent>('tabitem');\r\n  public viewChildren_tabpageitem = viewChildren<TabPageItemComponent>('tabpageitem');\r\n\r\n  public output_selectedTabChange = output<any>({ alias: 'selectedTabChange' });\r\n  public output_tabItemChange = output<any>({ alias: 'tabItemChange' });\r\n\r\n  constructor(_hostElement: ElementRef) {\r\n    super(_hostElement);\r\n    this.htmlHostElement.classList.add(\"csc-tabpage\");\r\n  }\r\n\r\n  private ontabItemChange() { this.output_tabItemChange.emit({ targetHtml: this.htmlHostElement, targetComponent: this, tabs: this.tabs }); }\r\n\r\n  protected tabitem_click(event: any) { this.selectTab(event.tab); }\r\n  protected tabitem_closeTabClick(event: any) { this.remove(event.tab); }\r\n  protected tabitem_activeChange(event: any) { }\r\n  protected scrollableTabs(): boolean { return this._ScrollableTabs; }\r\n  protected setScrollableTabs() {\r\n    setTimeout(() => {\r\n      const tabitemsRect = (this.viewChild_tabitems().nativeElement as HTMLElement).getBoundingClientRect();\r\n      const tabitemsContentRect = (this.viewChild_tabitemsContent().nativeElement as HTMLElement).getBoundingClientRect();\r\n      var show = (tabitemsRect.width < tabitemsContentRect.width);\r\n      if (this._ScrollableTabs != show) {\r\n        let htmltabitems = (this.viewChild_tabitems().nativeElement as HTMLElement);\r\n        htmltabitems.scrollLeft = 0;\r\n        this._ScrollableTabs = show;\r\n      }\r\n    }, 1);\r\n  }\r\n  protected scollTabs(direction: 'left' | 'right') {\r\n    let htmltabitems = (this.viewChild_tabitems().nativeElement as HTMLElement);\r\n    if (direction == 'left') { htmltabitems.scrollLeft = htmltabitems.scrollLeft - 100; }\r\n    else { htmltabitems.scrollLeft = htmltabitems.scrollLeft + 100; }\r\n  }\r\n\r\n  public append(value: ITab) {\r\n    let tab: ITab = value;\r\n    if (this._tabs.find(x => x.name == tab.name) != undefined) { return; }\r\n    if (this._tabs.find(x => x.index == tab.index) != undefined) {\r\n      let indexMax = -1;\r\n      this._tabs.forEach((e, i) => { if (e.index > indexMax) { indexMax = e.index; } });\r\n      tab.index = indexMax + 1;\r\n    }\r\n    if (tab.selected) { this._tabs.forEach((e, i) => { if (e.name != tab.name) { e.selected = false; } }); }\r\n    let tabs: ITab[] = this._tabs;\r\n    tabs.push(tab);\r\n    this._tabs = tabs.sort((a, b) => {\r\n      var aIndex = (a.index == undefined) ? -1 : a.index;\r\n      var bIndex = (b.index == undefined) ? -1 : b.index;\r\n      return aIndex - bIndex\r\n    });\r\n    this.ontabItemChange();\r\n  }\r\n  public appendRange(value: ITab[]) {\r\n    let tabs: ITab[] = [];\r\n    value.forEach((eRange, iRange) => {\r\n      if (this.tabs.find(x => x.name == eRange.name) == undefined) {\r\n        if (this._tabs.find(x => x.index == eRange.index) != undefined) {\r\n          let indexMax = -1;\r\n          this._tabs.forEach((e, i) => { if (e.index > indexMax) { indexMax = e.index; } });\r\n          eRange.index = indexMax + 1;\r\n        }\r\n        if (eRange.selected) { this._tabs.forEach((e, i) => { if (e.name != eRange.name) { e.selected = false; } }); }\r\n        tabs.push(eRange);\r\n      }\r\n    });\r\n    tabs = this._tabs.concat(tabs);\r\n    this._tabs = tabs.sort((a, b) => {\r\n      var aIndex = (a.index == undefined) ? -1 : a.index;\r\n      var bIndex = (b.index == undefined) ? -1 : b.index;\r\n      return aIndex - bIndex\r\n    });\r\n    this.ontabItemChange();\r\n  }\r\n  public remove(value?: ITab) {\r\n    if (value != undefined) {\r\n      let tab = this.tabs.find(x => x == value);\r\n      if (tab != undefined) {\r\n        let index = this._tabs.findIndex(x => x == tab);\r\n        if (index > -1) {\r\n          this._tabs.splice(index, 1);\r\n          var tabSelected = this._tabs.find(x => x.selected);\r\n          if (tabSelected == undefined) {\r\n            if (index < this._tabs.length) { this._tabs[index].selected = true; }\r\n            else if (this._tabs.length > 0) { this._tabs[this._tabs.length - 1].selected = true; }\r\n          }\r\n          this.ontabItemChange();\r\n        }\r\n      }\r\n    }\r\n  }\r\n  public removeAt(name: string) { this.remove(this.tabs.find(x => x.name == name)); }\r\n  public selectTab(tab: ITab) { this.selectIndex(this._tabs.findIndex(x => x == tab)); }\r\n  public selectTabIndex(index: number) { this.selectIndex(this._tabs.findIndex(x => x.index == index)); }\r\n  public selectIndex(index: number) {\r\n    if (this._selectedTabIndex != index && index < this.viewChildren_tabitem().length) {\r\n      this._selectedTabIndex = index;\r\n      let tabItem: TabItemComponent = this.viewChildren_tabitem()[index] as TabItemComponent;\r\n      let tab: ITab = this.tabs[index];\r\n      if (tabItem != undefined && tab != undefined) {\r\n        this._selectedTabIndex = index;\r\n        this.tabs.forEach((e, i) => { e.selected = false; });\r\n        tab.selected = true;\r\n        this.output_selectedTabChange.emit({ targetHtml: this.htmlHostElement, targetComponent: this, tab: tab });\r\n      }\r\n    }\r\n  }\r\n}","<nav #tabitemsNav>\r\n    @if(scrollableTabs()){<div #tabitemsNavScroll class=\"csc-tabitems-scroll-tabs\" (click)=\"scollTabs('left')\"><csc-icon [Icon]=\"'caret-left-fill'\"></csc-icon></div>}\r\n    <div #tabitems class=\"csc-tabitems\">\r\n        <div #tabitemsContent class=\"csc-tabitems-content\">\r\n            @for (item of tabs; track $index; let last=$last) {\r\n            <csc-tabitem #tabitem [Tab]=\"item\" [ariaSelected]=\"item.selected\" (click)=\"tabitem_click($event)\"\r\n                (activeChange)=\"tabitem_activeChange($event)\"\r\n                (closeTabClick)=\"tabitem_closeTabClick($event)\"></csc-tabitem>\r\n            @if(last){\r\n            {{setScrollableTabs()}}\r\n            }\r\n            }\r\n        </div>\r\n    </div>\r\n    @if(scrollableTabs()){<div #tabitemsNavScroll class=\"csc-tabitems-scroll-tabs\" (click)=\"scollTabs('right')\"><csc-icon [Icon]=\"'caret-right-fill'\"></csc-icon></div>}\r\n</nav>\r\n<main class=\"csc-tabpageitems-content\">\r\n    @for (item of tabs; track $index) {\r\n    <csc-tabpageitem #tabpageitem [Tab]=\"item\" [ariaSelected]=\"item.selected\"></csc-tabpageitem>\r\n    }\r\n</main>","import { Component, effect, ElementRef, input, output, Version, viewChild } from '@angular/core';\r\nimport { IWidget } from './interfaces/iwidget';\r\nimport { ProgressComponent } from '../progress/progress.component';\r\nimport { ComponentBaseComponent } from '../component-base/component-base.component';\r\nimport { IconType } from '../icon/types/icon-type';\r\nimport { IconComponent } from \"../icon/icon.component\";\r\nimport { WidgetType } from './types/widget-type';\r\n\r\n@Component({\r\n  selector: 'csc-widget',\r\n  imports: [ProgressComponent, IconComponent],\r\n  templateUrl: './widget.component.html',\r\n  styleUrl: './widget.component.scss'\r\n})\r\nexport class WidgetComponent extends ComponentBaseComponent {\r\n\r\n  public override readonly version: Version = new Version(\"1.1.1\");\r\n\r\n  private _htmlContentElement!: HTMLElement;\r\n  private _widget!: IWidget;\r\n  private _value: number = 0;\r\n  private _valueMax: number = 0;\r\n  private _valueMin: number = 0;\r\n  private _rate: number = 0;\r\n  private _statsIcon?: IconType;\r\n  private _statsTitle: string = '';\r\n  private _statsSubTitle: string = '';\r\n  private _statsLegende: string = '';\r\n  private _statsNumber: boolean = false;\r\n  private _statsFooter: string = '';\r\n  private _type: WidgetType = 'none';\r\n\r\n  protected get statsIcon(): IconType | undefined { return this._statsIcon; }\r\n  protected get statsTitle(): string { return this._statsTitle; }\r\n  protected get statsSubTitle(): string { return this._statsSubTitle; }\r\n  protected get statsLegende(): string { return this._statsLegende; }\r\n  protected get statsNumber(): boolean { return this._statsNumber; }\r\n  protected get statsFooter(): string { return this._statsFooter; }\r\n  protected get type(): string { return this._type; }\r\n\r\n  public get value(): number { return this._value; }\r\n  public get valueMax(): number { return this._valueMax; }\r\n  public get valueMin(): number { return this._valueMin; }\r\n  public get widget(): IWidget { return this._widget; }\r\n\r\n  public input_StatsIcon = input<IconType>(undefined, { alias: 'StatsIcon' });\r\n  public input_StatsTitle = input('', { alias: 'StatsTitle' });\r\n  public input_StatsSubTitle = input('', { alias: 'StatsSubTitle' });\r\n  public input_StatsNumber = input(false, { alias: 'StatsNumber' });\r\n  public input_StatsLegende = input('', { alias: 'StatsLegende' });\r\n  public input_StatsFooter = input<string | undefined>(undefined, { alias: 'StatsFooter' });\r\n  public input_Type = input<WidgetType>('none', { alias: 'Type' });\r\n  public input_Value = input(0, { alias: 'Value' });\r\n  public input_ValueMax = input(100, { alias: 'ValueMax' });\r\n  public input_ValueMin = input(0, { alias: 'ValueMin' });\r\n\r\n  public output_valueChange = output<any>({ alias: 'valueChange' });\r\n  public output_valueMinChange = output<any>({ alias: 'valueMinChange' });\r\n  public output_valueMaxChange = output<any>({ alias: 'valueMaxChange' });\r\n\r\n  public viewChild_progressbar = viewChild<ElementRef>('progressbar');\r\n\r\n  constructor(_hostElement: ElementRef) {\r\n    super(_hostElement);\r\n    this._htmlContentElement = _hostElement.nativeElement;\r\n    this._htmlContentElement.setAttribute('data-model', 'statistic');\r\n    effect((effect) => {\r\n      if (this._value != this.input_Value()) {\r\n        this._value = this.input_Value();\r\n        this.onValueChange(this._value);\r\n      }\r\n      if (this._valueMax != this.input_ValueMax()) {\r\n        this._valueMax = this.input_ValueMax();\r\n        this.onValueMaxChange(this._valueMax);\r\n      }\r\n      if (this._valueMin != this.input_ValueMin()) {\r\n        this._valueMin = this.input_ValueMin();\r\n        this.onValueMinChange(this._valueMin);\r\n      }\r\n      if (this._type != this.input_Type()) {\r\n        this._type = this.input_Type();\r\n        this._htmlContentElement.setAttribute('data-type', this._type);\r\n      }\r\n      if (this._statsIcon != this.input_StatsIcon()) { this._statsIcon = this.input_StatsIcon(); }\r\n      if (this._statsTitle != this.input_StatsTitle()) { this._statsTitle = this.input_StatsTitle(); }\r\n      if (this._statsSubTitle != this.input_StatsSubTitle()) { this._statsSubTitle = this.input_StatsSubTitle(); }\r\n      if (this._statsLegende != this.input_StatsLegende()) { this._statsLegende = this.input_StatsLegende(); }\r\n      if (this._statsNumber != this.input_StatsNumber()) { this._statsNumber = this.input_StatsNumber(); }\r\n      if (this.input_StatsFooter() != undefined && this._statsFooter != this.input_StatsFooter()) { this._statsFooter = this.input_StatsFooter() as string; }\r\n      else { this._statsFooter = `${this._value} ${this.statsLegende} / ${this.valueMax}`; }\r\n      this.calcValue();\r\n    });\r\n  }\r\n\r\n  private onValueChange(value: number) {\r\n    this.calcValue();\r\n    this.output_Change.emit(value);\r\n    this.output_valueChange.emit({ targetHtml: this._htmlContentElement, value: value, targetElement: this });\r\n  }\r\n  private onValueMaxChange(value: number) {\r\n    this.calcValue();\r\n    this.output_valueMaxChange.emit({ targetHtml: this._htmlContentElement, value: value, targetElement: this });\r\n  }\r\n  private onValueMinChange(value: number) {\r\n    this.calcValue();\r\n    this.output_valueMinChange.emit({ targetHtml: this._htmlContentElement, value: value, targetElement: this });\r\n  }\r\n\r\n  calcValue() {\r\n    let rateMax = (this._valueMax - this._valueMin);\r\n    let rateTarget = (this._value - this._valueMin);\r\n    let rate = (rateTarget * 100) / rateMax;\r\n    if (rate < 0) { rate = 0; }\r\n    if (rate > 100) { rate = 100; }\r\n    this._rate = rate;\r\n\r\n    if (this.viewChild_progressbar() != undefined && this.viewChild_progressbar()?.nativeElement != undefined) {\r\n      (this.viewChild_progressbar()?.nativeElement as HTMLElement).style.width = `${rate}%`;\r\n    }\r\n  }\r\n\r\n  public setValues(values: { value: number, valueMin: number, valueMax: number }) {\r\n    if (values.value != this._value) { this._value = values.value; this.onValueChange(values.value); }\r\n    if (values.valueMax != this._valueMax) { this._valueMin = values.valueMin; this.onValueMaxChange(values.valueMax); }\r\n    if (values.valueMin != this._valueMin) { this._valueMax = values.valueMax; this.onValueMinChange(values.valueMin); }\r\n    this.calcValue();\r\n  }\r\n  public setValue(value: number) {\r\n    this.setValues({ value: value, valueMax: this._valueMax, valueMin: this._valueMin });\r\n  }\r\n  public setValueMax(value: number) {\r\n    this.setValues({ value: this._value, valueMax: value, valueMin: this._valueMin });\r\n  }\r\n  public setValueMin(value: number) {\r\n    this.setValues({ value: this._value, valueMax: this._valueMax, valueMin: value });\r\n  }\r\n\r\n}\r\n","@if(statsIcon!=undefined){\r\n<csc-icon [Icon]=\"statsIcon\" class=\"csc-widget-icon\"></csc-icon>\r\n}\r\n<div class=\"csc-widget-content\">\r\n    @if(statsTitle!=''){<div class=\"csc-widget-title\" [innerHtml]=\"statsTitle\"></div>}\r\n    @if(statsSubTitle!=''){<small class=\"csc-widget-subtitle\" [innerHtml]=\"statsSubTitle\"></small>}\r\n    <div class=\"csc-widget-footer\">\r\n        @if(statsNumber){<div class=\"csc-widget-number\" [innerHtml]=\"value\"></div>}\r\n        <csc-progress class=\"csc-widget-progress\" [Value]=\"value\" [ValueMin]=\"valueMin\"\r\n            [ValueMax]=\"valueMax\"></csc-progress>\r\n        @if(statsFooter!=''){<div class=\"csc-widget-legende\">{{statsFooter}}</div>}\r\n    </div>\r\n</div>","import { Component, effect, ElementRef, input, output, Version, viewChild } from '@angular/core';\r\nimport { IconComponent } from '../../components/icon/icon.component';\r\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validator } from '@angular/forms';\r\nimport { FormBaseComponent } from '../form-base/form-base.component';\r\nimport { IconType } from '../../components/icon/types/icon-type';\r\nimport { TextareaType } from './types/textarea-type';\r\nimport { TextareaStateType } from './types/textarea-state-type';\r\nimport { TextareaStyleType } from './types/textarea-style-type';\r\nimport { CSCEnvironment } from '../../cscomponents.environment';\r\nimport { I18NTextarea } from '../../interfaces/i18n';\r\n\r\n@Component({\r\n  selector: 'csc-textarea',\r\n  imports: [ReactiveFormsModule, IconComponent],\r\n  templateUrl: './textarea.component.html',\r\n  styleUrl: './textarea.component.scss',\r\n  providers: [\r\n    { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: TextareaComponent }\r\n    , { provide: NG_VALIDATORS, multi: true, useExisting: TextareaComponent }\r\n  ]\r\n})\r\nexport class TextareaComponent extends FormBaseComponent implements ControlValueAccessor, Validator {\r\n\r\n  public override readonly version: Version = new Version(\"2.1.1\");\r\n\r\n  private _label: string = '';\r\n  private _placeholder: string = '';\r\n  private _type: TextareaType = 'multiline';\r\n  private _iconType?: IconType = undefined;\r\n  private _formValidation: boolean = true;\r\n  private _message: string = '';\r\n  private _maxLength: number = -1;\r\n  private _state: TextareaStateType = 'none';\r\n  private _style: TextareaStyleType = 'default';\r\n  private _footer: boolean = true;\r\n  private get i18N(): I18NTextarea { return CSCEnvironment.i18N.components.textarea; }\r\n\r\n  protected get label(): string { return this._label; }\r\n  protected get placeholder(): string { return this._placeholder; }\r\n  protected get iconType(): IconType | undefined { return this._iconType; }\r\n  protected get message(): string { return this._message; }\r\n  protected get footer(): boolean { return this._footer; }\r\n  protected get type(): TextareaType { return this._type; }\r\n\r\n  public get htmlInputElement(): HTMLInputElement { return this.viewChild_Textarea().nativeElement; }\r\n  public get state(): TextareaStateType { return this._state; }\r\n  public get maxLength(): number { return this._maxLength; }\r\n  public get length() { return this.htmlInputElement.value.length; }\r\n\r\n  public input_value = input<string>(undefined, { alias: 'Value' });\r\n  public input_Type = input<TextareaType>('multiline', { alias: 'Type' });\r\n  public input_Style = input<TextareaStyleType>('default', { alias: 'Style' });\r\n  public input_Placeholder = input<string>('', { alias: 'Placeholder' });\r\n  public input_Label = input<string>('', { alias: 'Label' });\r\n  public input_IconType = input<IconType>(undefined, { alias: 'IconType' });\r\n  public input_FormValidation = input<boolean>(false, { alias: 'FormValidation' });\r\n  public input_Message = input<string>('', { alias: 'Message' });\r\n  public input_MaxLength = input<number>(-1, { alias: 'MaxLength' });\r\n  public input_Footer = input<boolean>(false, { alias: 'Footer' });\r\n\r\n  public output_copy = output<any>({ alias: 'copy' });\r\n  public output_cut = output<any>({ alias: 'cut' });\r\n  public output_paste = output<any>({ alias: 'paste' });\r\n  public output_beforecopy = output<any>({ alias: 'beforecopy' });\r\n  public output_beforecut = output<any>({ alias: 'beforecut' });\r\n  public output_beforepaste = output<any>({ alias: 'beforepaste' });\r\n\r\n  protected viewChild_Textarea = viewChild.required<ElementRef>('textarea');\r\n\r\n  constructor(_hostElement: ElementRef) {\r\n    super(_hostElement);\r\n    this.onStatusChanges = (control: any) => { this.checkInput(undefined); };\r\n    effect((effect) => {\r\n      if (this.input_value() != undefined) {\r\n        if (this.value == undefined || this.value == null || this.value == '') {\r\n          setTimeout(() => { this.writeValue(this.input_value()); }, 1);\r\n        }\r\n      }\r\n      if (this._label != this.input_Label()) { this._label = this.input_Label(); }\r\n      if (this._placeholder != this.input_Placeholder()) { this._placeholder = this.input_Placeholder(); }\r\n      if (this._iconType != this.input_IconType()) { this._iconType = this.input_IconType(); }\r\n      if (this._formValidation != this.input_FormValidation()) { this._formValidation = this.input_FormValidation(); }\r\n      if (this._footer != this.input_Footer()) { this._footer = this.input_Footer(); }\r\n      if (this._message != this.input_Message()) { this._message = this.input_Message(); }\r\n      if (this._maxLength != this.input_MaxLength()) { this._maxLength = this.input_MaxLength(); }\r\n      if (this._type != this.input_Type()) {\r\n        this._type = this.input_Type();\r\n        this.htmlHostElement.setAttribute('data-type', this._type);\r\n      }\r\n      if (this._style != this.input_Style()) {\r\n        this._style = this.input_Style();\r\n        this.htmlHostElement.setAttribute('data-style', this._style);\r\n      }\r\n    });\r\n  }\r\n\r\n  public override writeValue(obj: any): void {\r\n    super.writeValue(obj);\r\n    this.htmlInputElement.value = obj;\r\n  }\r\n\r\n  private checkInput(event: any) {\r\n    let state: TextareaStateType = 'none';\r\n    let message: string = '';\r\n    if (event != undefined && event.type == 'keydown' && this.length == 0) { this.setState('none', ''); return; }\r\n    if (this.maxLength > -1 && this.length > this.maxLength) { state = 'error'; message = this.i18N.isTooLong; }\r\n    else if (this.required && this.length <= 0) {\r\n      if (event == undefined || event.type == 'change') { state = 'error'; message = this.i18N.isRequired; }\r\n    }\r\n    if (!this._formValidation) { state = 'none', message = ''; }\r\n    this.setState(state, message);\r\n  }\r\n  public setState(state: TextareaStateType, message: string) {\r\n    if (state != 'none') { this.htmlHostElement.setAttribute('data-state', state); }\r\n    else { this.htmlHostElement.removeAttribute('data-state'); }\r\n    if (this.input_Message() == undefined || this.input_Message() == '') { this._message = message; }\r\n    this._state = state;\r\n  }\r\n  protected viewChild_Input_change(event: Event) {\r\n    event.stopImmediatePropagation();\r\n    this.checkInput(event);\r\n    this.onChange(this.htmlInputElement.value);\r\n    this.output_Change.emit({ targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value });\r\n  }\r\n  protected viewChild_Input_keydown(event: KeyboardEvent) { event.stopImmediatePropagation(); this.checkInput(event); this.output_KeyDown.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_keyup(event: KeyboardEvent) { event.stopImmediatePropagation(); this.checkInput(event); this.output_KeyUp.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_keypress(event: KeyboardEvent) { event.stopImmediatePropagation(); this.output_KeyPress.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_copy(event: ClipboardEvent) { event.stopImmediatePropagation(); this.output_copy.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_cut(event: ClipboardEvent) { event.stopImmediatePropagation(); this.checkInput(event); this.output_cut.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_paste(event: ClipboardEvent) { event.stopImmediatePropagation(); this.checkInput(event); this.output_paste.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_beforecopy(event: Event) { event.stopImmediatePropagation(); this.output_beforecopy.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_beforecut(event: Event) { event.stopImmediatePropagation(); this.output_beforecut.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_beforepaste(event: Event) { event.stopImmediatePropagation(); this.output_beforepaste.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_blur(event: FocusEvent) { event.stopImmediatePropagation(); this.output_Blur.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_focus(event: FocusEvent) { event.stopImmediatePropagation(); this.output_Focus.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n\r\n  protected focusPlaceholder(event: FocusEvent) { this.htmlInputElement.focus(); }\r\n\r\n}\r\n","@if(label != ''){\r\n    <label class=\"csc-textarea-label\" [innerHTML]=\"label\"></label>\r\n    }\r\n    <div class=\"csc-textarea-main\">\r\n        @if(iconType != undefined){<csc-icon class=\"csc-textarea-icon\" [Icon]=\"iconType\"></csc-icon>}\r\n        <div class=\"csc-textarea-content\">\r\n            <textarea #textarea type=\"text\" (keydown)=\"viewChild_Input_keydown($event)\" (focus)=\"viewChild_Input_focus($event)\"\r\n                (blur)=\"viewChild_Input_blur($event)\" (change)=\"viewChild_Input_change($event)\"\r\n                (beforecopy)=\"viewChild_Input_beforecopy($event)\" (beforecut)=\"viewChild_Input_beforecut($event)\"\r\n                (beforepaste)=\"viewChild_Input_beforepaste($event)\" (copy)=\"viewChild_Input_copy($event)\"\r\n                (cut)=\"viewChild_Input_cut($event)\" (keyup)=\"viewChild_Input_keyup($event)\"\r\n                (keypress)=\"viewChild_Input_keypress($event)\" (paste)=\"viewChild_Input_paste($event)\"></textarea>\r\n            @if(placeholder != ''){<label class=\"csc-textarea-placeholder\" [innerHTML]=\"placeholder\"\r\n                (click)=\"focusPlaceholder($event)\" [class]=\"{'show':length<=0}\"></label>}\r\n        </div>\r\n        @switch (state) {\r\n        @case ('info') {<csc-icon class=\"csc-textarea-icon-validator\" [Icon]=\"'info-square'\"></csc-icon>}\r\n        @case ('success') {<csc-icon class=\"csc-textarea-icon-validator\" [Icon]=\"'check2-circle'\"></csc-icon>}\r\n        @case ('warning') {<csc-icon class=\"csc-textarea-icon-validator\" [Icon]=\"'exclamation-diamond'\"></csc-icon>}\r\n        @case ('error') {<csc-icon class=\"csc-textarea-icon-validator\" [Icon]=\"'x-octagon'\"></csc-icon>}\r\n        }\r\n    </div>\r\n    @if(footer){\r\n    <div class=\"csc-textarea-footer\">\r\n        <label class=\"csc-textarea-message\" [class]=\"{'show':message.length>0}\" [innerHTML]=\"message\"></label>\r\n        <div class=\"csc-textarea-space-evently\"></div>\r\n        @if(maxLength>-1){\r\n        <label class=\"csc-textarea-length\" [class]=\"{'csc-textarea-error':length>maxLength}\"\r\n            [innerHTML]=\"length+'/'+maxLength\"></label>\r\n        }\r\n    </div>\r\n    }","import { Component, effect, ElementRef, input, output, Version, viewChild } from '@angular/core';\r\nimport { FormBaseComponent } from \"../form-base/form-base.component\";\r\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validator } from '@angular/forms';\r\nimport { IconComponent } from \"../../components/icon/icon.component\";\r\nimport { TextboxType } from './types/textbox-type';\r\nimport { IconType } from '../../components/icon/types/icon-type';\r\nimport { TextboxStateType } from './types/textbox-state-type';\r\nimport { CSCEnvironment } from '../../cscomponents.environment';\r\nimport { I18NTextbox } from '../../interfaces/i18n';\r\nimport { TextboxStyleType } from './types/textbox-style-type';\r\n\r\n@Component({\r\n  selector: 'csc-textbox',\r\n  imports: [ReactiveFormsModule, IconComponent],\r\n  templateUrl: './textbox.component.html',\r\n  styleUrl: './textbox.component.scss',\r\n  providers: [\r\n    { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: TextboxComponent }\r\n    , { provide: NG_VALIDATORS, multi: true, useExisting: TextboxComponent }\r\n  ]\r\n})\r\nexport class TextboxComponent extends FormBaseComponent implements ControlValueAccessor, Validator {\r\n\r\n  public override readonly version: Version = new Version(\"2.1.1\");\r\n\r\n  private _label: string = '';\r\n  private _placeholder: string = '';\r\n  private _type: TextboxType = 'text';\r\n  private _showTogglePassword: boolean = false;\r\n  private _iconType?: IconType = undefined;\r\n  private _formValidation: boolean = true;\r\n  private _message: string = '';\r\n  private _maxLength: number = -1;\r\n  private _state: TextboxStateType = 'none';\r\n  private _style: TextboxStyleType = 'default';\r\n  private _footer: boolean = true;\r\n  private get i18N(): I18NTextbox { return CSCEnvironment.i18N.components.textbox; }\r\n\r\n  protected get label(): string { return this._label; }\r\n  protected get placeholder(): string { return this._placeholder; }\r\n  protected get showTogglePassword(): boolean { return this._showTogglePassword; }\r\n  protected get iconType(): IconType | undefined { return this._iconType; }\r\n  protected get message(): string { return this._message; }\r\n  protected get footer(): boolean { return this._footer; }\r\n  protected get type(): TextboxType { return this._type; }\r\n\r\n  public get htmlInputElement(): HTMLInputElement { return this.viewChild_Input().nativeElement; }\r\n  public get state(): TextboxStateType { return this._state; }\r\n  public get maxLength(): number { return this._maxLength; }\r\n  public get length() { return this.htmlInputElement.value.length; }\r\n\r\n  public input_value = input<string>(undefined, { alias: 'Value' });\r\n  public input_Type = input<TextboxType>('text', { alias: 'Type' });\r\n  public input_Style = input<TextboxStyleType>('default', { alias: 'Style' });\r\n  public input_Placeholder = input<string>('', { alias: 'Placeholder' });\r\n  public input_Label = input<string>('', { alias: 'Label' });\r\n  public input_TogglePassword = input<boolean>(false, { alias: 'TogglePassword' });\r\n  public input_IconType = input<IconType>(undefined, { alias: 'IconType' });\r\n  public input_FormValidation = input<boolean>(false, { alias: 'FormValidation' });\r\n  public input_Message = input<string>('', { alias: 'Message' });\r\n  public input_MaxLength = input<number>(-1, { alias: 'MaxLength' });\r\n  public input_Footer = input<boolean>(false, { alias: 'Footer' });\r\n\r\n  public output_copy = output<any>({ alias: 'copy' });\r\n  public output_cut = output<any>({ alias: 'cut' });\r\n  public output_paste = output<any>({ alias: 'paste' });\r\n  public output_beforecopy = output<any>({ alias: 'beforecopy' });\r\n  public output_beforecut = output<any>({ alias: 'beforecut' });\r\n  public output_beforepaste = output<any>({ alias: 'beforepaste' });\r\n\r\n  protected viewChild_Input = viewChild.required<ElementRef>('input');\r\n\r\n  constructor(_hostElement: ElementRef) {\r\n    super(_hostElement);\r\n    this.onStatusChanges = (control: any) => { this.checkInput(undefined); };\r\n    effect((effect) => {\r\n      if (this.input_value() != undefined) {\r\n        if (this.value == undefined || this.value == null || this.value == '') {\r\n          setTimeout(() => { this.writeValue(this.input_value()); }, 1);\r\n        }\r\n      }\r\n      if (this._label != this.input_Label()) { this._label = this.input_Label(); }\r\n      if (this._placeholder != this.input_Placeholder()) { this._placeholder = this.input_Placeholder(); }\r\n      if (this._showTogglePassword != this.input_TogglePassword()) { this._showTogglePassword = this.input_TogglePassword(); }\r\n      if (this._iconType != this.input_IconType()) { this._iconType = this.input_IconType(); }\r\n      if (this._formValidation != this.input_FormValidation()) { this._formValidation = this.input_FormValidation(); }\r\n      if (this._footer != this.input_Footer()) { this._footer = this.input_Footer(); }\r\n      if (this._message != this.input_Message()) { this._message = this.input_Message(); }\r\n      if (this._maxLength != this.input_MaxLength()) { this._maxLength = this.input_MaxLength(); }\r\n      if (this._type != this.input_Type()) {\r\n        this._type = this.input_Type();\r\n        this.htmlHostElement.setAttribute('data-type', this._type);\r\n        switch (this._type) {\r\n          case 'text':\r\n            this.htmlInputElement.type = 'text';\r\n            break;\r\n          case 'password':\r\n            this.htmlInputElement.type = 'password';\r\n            break;\r\n        }\r\n      }\r\n      if (this._style != this.input_Style()) {\r\n        this._style = this.input_Style();\r\n        this.htmlHostElement.setAttribute('data-style', this._style);\r\n      }\r\n    });\r\n  }\r\n\r\n  public override writeValue(obj: any): void {\r\n    super.writeValue(obj);\r\n    this.htmlInputElement.value = obj;\r\n  }\r\n\r\n  protected togglePassword(event: any) {\r\n    if ((this.viewChild_Input().nativeElement as HTMLInputElement).type == 'password') { (this.viewChild_Input().nativeElement as HTMLInputElement).type = 'text'; }\r\n    else { (this.viewChild_Input().nativeElement as HTMLInputElement).type = 'password'; }\r\n  }\r\n\r\n  private checkInput(event: any) {\r\n    let state: TextboxStateType = 'none';\r\n    let message: string = '';\r\n    if (event != undefined && event.type == 'keydown' && this.length == 0) { this.setState('none', ''); return; }\r\n    if (this.maxLength > -1 && this.length > this.maxLength) { state = 'error'; message = this.i18N.isTooLong; }\r\n    else if (this.required && this.length <= 0) {\r\n      if (event == undefined || event.type == 'change') { state = 'error'; message = this.i18N.isRequired; }\r\n    }\r\n    if (!this._formValidation) { state = 'none', message = ''; }\r\n    this.setState(state, message);\r\n  }\r\n  public setState(state: TextboxStateType, message: string) {\r\n    if (state != 'none') { this.htmlHostElement.setAttribute('data-state', state); }\r\n    else { this.htmlHostElement.removeAttribute('data-state'); }\r\n    if (this.input_Message() == undefined || this.input_Message() == '') { this._message = message; }\r\n    this._state = state;\r\n  }\r\n  protected viewChild_Input_change(event: Event) {\r\n    event.stopImmediatePropagation();\r\n    this.checkInput(event);\r\n    this.onChange(this.htmlInputElement.value);\r\n    this.output_Change.emit({ targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value });\r\n  }\r\n  protected viewChild_Input_keydown(event: KeyboardEvent) { event.stopImmediatePropagation(); this.checkInput(event); this.output_KeyDown.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_keyup(event: KeyboardEvent) { event.stopImmediatePropagation(); this.checkInput(event); this.output_KeyUp.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_keypress(event: KeyboardEvent) { event.stopImmediatePropagation(); this.output_KeyPress.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_copy(event: ClipboardEvent) { event.stopImmediatePropagation(); this.output_copy.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_cut(event: ClipboardEvent) { event.stopImmediatePropagation(); this.checkInput(event); this.output_cut.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_paste(event: ClipboardEvent) { event.stopImmediatePropagation(); this.checkInput(event); this.output_paste.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_beforecopy(event: Event) { event.stopImmediatePropagation(); this.output_beforecopy.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_beforecut(event: Event) { event.stopImmediatePropagation(); this.output_beforecut.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_beforepaste(event: Event) { event.stopImmediatePropagation(); this.output_beforepaste.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_blur(event: FocusEvent) { event.stopImmediatePropagation(); this.output_Blur.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n  protected viewChild_Input_focus(event: FocusEvent) { event.stopImmediatePropagation(); this.output_Focus.emit({ event: event, targetHtml: this.htmlHostElement, targetInputHtml: event.target, targetComponent: this, value: this.htmlInputElement.value }); }\r\n\r\n  protected focusPlaceholder(event: FocusEvent) { this.htmlInputElement.focus(); }\r\n\r\n}\r\n","@if(label != ''){\r\n<label class=\"csc-textbox-label\" [innerHTML]=\"label\"></label>\r\n}\r\n<div class=\"csc-textbox-main\">\r\n    @if(iconType != undefined){<csc-icon class=\"csc-textbox-icon\" [Icon]=\"iconType\"></csc-icon>}\r\n    <div class=\"csc-textbox-content\">\r\n        <input #input type=\"text\" (keydown)=\"viewChild_Input_keydown($event)\" (focus)=\"viewChild_Input_focus($event)\"\r\n            (blur)=\"viewChild_Input_blur($event)\" (change)=\"viewChild_Input_change($event)\"\r\n            (beforecopy)=\"viewChild_Input_beforecopy($event)\" (beforecut)=\"viewChild_Input_beforecut($event)\"\r\n            (beforepaste)=\"viewChild_Input_beforepaste($event)\" (copy)=\"viewChild_Input_copy($event)\"\r\n            (cut)=\"viewChild_Input_cut($event)\" (keyup)=\"viewChild_Input_keyup($event)\"\r\n            (keypress)=\"viewChild_Input_keypress($event)\" (paste)=\"viewChild_Input_paste($event)\" />\r\n        @if(placeholder != ''){<label class=\"csc-textbox-placeholder\" [innerHTML]=\"placeholder\"\r\n            (click)=\"focusPlaceholder($event)\" [class]=\"{'show':length<=0}\"></label>}\r\n        @if(type=='password' && showTogglePassword){ <csc-icon class=\"csc-textbox-show-passowrd\"\r\n            [Icon]=\"htmlInputElement.type=='password'?'eye-slash':'eye'\" (click)=\"togglePassword($event)\"></csc-icon>}\r\n    </div>\r\n    @switch (state) {\r\n    @case ('info') {<csc-icon class=\"csc-textbox-icon-validator\" [Icon]=\"'info-square'\"></csc-icon>}\r\n    @case ('success') {<csc-icon class=\"csc-textbox-icon-validator\" [Icon]=\"'check2-circle'\"></csc-icon>}\r\n    @case ('warning') {<csc-icon class=\"csc-textbox-icon-validator\" [Icon]=\"'exclamation-diamond'\"></csc-icon>}\r\n    @case ('error') {<csc-icon class=\"csc-textbox-icon-validator\" [Icon]=\"'x-octagon'\"></csc-icon>}\r\n    }\r\n</div>\r\n@if(footer){\r\n<div class=\"csc-textbox-footer\">\r\n    <label class=\"csc-textbox-message\" [class]=\"{'show':message.length>0}\" [innerHTML]=\"message\"></label>\r\n    <div class=\"csc-textbox-space-evently\"></div>\r\n    @if(maxLength>-1){\r\n    <label class=\"csc-textbox-length\" [class]=\"{'csc-textbox-error':length>maxLength}\"\r\n        [innerHTML]=\"length+'/'+maxLength\"></label>\r\n    }\r\n</div>\r\n}","import { Injectable } from '@angular/core';\r\nimport { FormArray, FormControl, FormGroup } from '@angular/forms';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class CSFormComponentsManagerService {\r\n\r\n  constructor() { }\r\n\r\n  public checkFormGroup(formGroup: FormGroup): boolean {\r\n    this.updateValueAndValidityForm(formGroup);\r\n    return formGroup.valid;\r\n  }\r\n  public updateValueAndValidityForm(form: any) {\r\n    if (form != undefined) {\r\n      if (form instanceof FormGroup) {\r\n        let formGroup = form as FormGroup;\r\n        if (formGroup.controls != undefined && formGroup.controls != null) {\r\n          Object.entries(formGroup.controls).forEach((e, i) => { this.updateValueAndValidityForm(e[1]); });\r\n        }\r\n      }\r\n      else if (form instanceof FormArray) {\r\n        let formArray = form as FormArray;\r\n        Object.entries(formArray.controls).forEach((e, i) => { this.updateValueAndValidityForm(e[1]); });\r\n      }\r\n      else if (form instanceof FormControl) { (form as FormControl).updateValueAndValidity(); }\r\n    }\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of cscomponents\r\n */\r\n\r\nimport { CSCEnvironment } from './lib/cscomponents.environment';\r\n\r\nexport * from './lib/console';\r\nexport * from './lib/date-time';\r\nexport * from './lib/cscomponents.environment';\r\n\r\nexport * from './lib/components/component-base/component-base.component';\r\n\r\nexport * from './lib/components/datagrid/consts/datagrid-environment-const';\r\nexport * from './lib/components/datagrid/datagrid/datagrid.component';\r\nexport * from './lib/components/datagrid/datagrid-filter-group-item/datagrid-filter-group-item.component';\r\nexport * from './lib/components/datagrid/datagrid-item-panel-columns/datagrid-item-panel-columns.component';\r\nexport * from './lib/components/datagrid/datagrid-item-panel-filter/datagrid-item-panel-filter.component';\r\nexport * from './lib/components/datagrid/datagrid-item-panel-options/datagrid-item-panel-options.component';\r\nexport * from './lib/components/datagrid/datagrid-item-panels/datagrid-item-panels.component';\r\nexport * from './lib/components/datagrid/datagrid-pagination/datagrid-pagination.component';\r\nexport * from './lib/components/datagrid/datagrid-row/datagrid-row.component';\r\nexport * from './lib/components/datagrid/datagrid-toggle-button/datagrid-toggle-button.component';\r\nexport * from './lib/components/datagrid/dtos/datagrid-cell-dto';\r\nexport * from './lib/components/datagrid/dtos/datagrid-cell-event';\r\nexport * from './lib/components/datagrid/dtos/datagrid-column-dto';\r\nexport * from './lib/components/datagrid/dtos/datagrid-column-filter-dto';\r\nexport * from './lib/components/datagrid/dtos/datagrid-pagination-dto';\r\nexport * from './lib/components/datagrid/dtos/datagrid-row-dto';\r\nexport * from './lib/components/datagrid/interfaces/idatagrid-allow-panels';\r\nexport * from './lib/components/datagrid/interfaces/idatagrid-button-extends';\r\nexport * from './lib/components/datagrid/interfaces/idatagrid-column';\r\nexport * from './lib/components/datagrid/interfaces/idatagrid-custom-button';\r\nexport * from './lib/components/datagrid/interfaces/idatagrid-i18n';\r\nexport * from './lib/components/datagrid/interfaces/idatagrid-message-queue';\r\nexport * from './lib/components/datagrid/interfaces/idatagrid-options';\r\nexport * from './lib/components/datagrid/interfaces/idatagrid-pagination-item';\r\nexport * from './lib/components/datagrid/interfaces/idatagrid-pagination-template';\r\nexport * from './lib/components/datagrid/interfaces/idatagrid-theme';\r\nexport * from './lib/components/datagrid/types/datagrid-button-type';\r\nexport * from './lib/components/datagrid/types/datagrid-calendar-view-type';\r\nexport * from './lib/components/datagrid/types/datagrid-column-filtering-type';\r\nexport * from './lib/components/datagrid/types/datagrid-column-footer-calcul-type';\r\nexport * from './lib/components/datagrid/types/datagrid-column-type';\r\nexport * from './lib/components/datagrid/types/datagrid-item-tool-option-type';\r\nexport * from './lib/components/datagrid/types/datagrid-item-tool-panel-type';\r\nexport * from './lib/components/datagrid/types/datagrid-loader-type';\r\nexport * from './lib/components/datagrid/types/datagrid-message-type';\r\nexport * from './lib/components/datagrid/types/datagrid-movement-direction-type';\r\nexport * from './lib/components/datagrid/types/datagrid-sorting-direction-type';\r\nexport * from './lib/components/datagrid/types/datagrid-theme-type';\r\n\r\nexport * from './lib/components/icon/icon.component';\r\nexport * from './lib/components/icon/types/icon-type';\r\n\r\nexport * from './lib/components/loader/loader.component';\r\nexport * from './lib/components/loader/types/loader-type';\r\n\r\nexport * from './lib/components/modal/consts/modal-environment-const';\r\nexport * from './lib/components/modal/enums/modal-result';\r\nexport * from './lib/components/modal/events/modal-event';\r\nexport * from './lib/components/modal/interfaces/imodal-custom-button';\r\nexport * from './lib/components/modal/interfaces/imodal-i18n';\r\nexport * from './lib/components/modal/interfaces/imodal-options';\r\nexport * from './lib/components/modal/interfaces/imodal-option-close';\r\nexport * from './lib/components/modal/modal.component';\r\nexport * from './lib/components/modal/types/modal-buttons-type';\r\nexport * from './lib/components/modal/types/modal-type';\r\n\r\nexport * from './lib/components/notification/consts/notification-environment-const';\r\nexport * from './lib/components/notification/enums/notification-result';\r\nexport * from './lib/components/notification/events/notification-event';\r\nexport * from './lib/components/notification/interfaces/inotification-i18n';\r\nexport * from './lib/components/notification/interfaces/inotification-options';\r\nexport * from './lib/components/notification/notification-item/notification-item.component';\r\nexport * from './lib/components/notification/types/notification-buttons-type';\r\nexport * from './lib/components/notification/types/notification-type';\r\n\r\nexport * from './lib/components/pagination/dtos/pagination-dto';\r\nexport * from './lib/components/pagination/interfaces/ipagination-item';\r\nexport * from './lib/components/pagination/interfaces/ipagination-template';\r\nexport * from './lib/components/pagination/pagination.component';\r\n\r\nexport * from './lib/components/pdfviewer/pdfviewer.component';\r\n\r\nexport * from './lib/components/popup-container/popup-container.component';\r\n\r\nexport * from './lib/components/progress/events/progress-event';\r\nexport * from './lib/components/progress/progress.component';\r\nexport * from './lib/components/progress/types/progress-type';\r\n\r\nexport * from './lib/components/tabpage/interfaces/itab';\r\nexport * from './lib/components/tabpage/tabitem/tabitem.component';\r\nexport * from './lib/components/tabpage/tabpage/tabpage.component';\r\nexport * from './lib/components/tabpage/tabpageitem/tabpageitem.component';\r\n\r\nexport * from './lib/components/widget/interfaces/iwidget';\r\nexport * from './lib/components/widget/types/widget-type';\r\nexport * from './lib/components/widget/widget.component';\r\n\r\nexport * from './lib/form-components/form-base/form-base.component';\r\n\r\nexport * from './lib/form-components/datetime-picker/datetime-picker.component';\r\nexport * from './lib/form-components/datetime-picker/interfaces/idatetime-picker-row-days';\r\nexport * from './lib/form-components/datetime-picker/types/calendar-view-type';\r\n\r\nexport * from './lib/form-components/dropdown-button/dropdown-button.component';\r\nexport * from './lib/form-components/dropdown-button/interfaces/idropdown-button-entrie';\r\nexport * from './lib/form-components/dropdown-button/interfaces/idropdown-button-group';\r\nexport * from './lib/form-components/dropdown-button/types/sort-direction-type';\r\n\r\nexport * from './lib/form-components/textarea/textarea.component';\r\nexport * from './lib/form-components/textarea/types/textarea-state-type';\r\nexport * from './lib/form-components/textarea/types/textarea-style-type';\r\nexport * from './lib/form-components/textarea/types/textarea-type';\r\n\r\nexport * from './lib/form-components/textbox/textbox.component';\r\nexport * from './lib/form-components/textbox/types/textbox-state-type';\r\nexport * from './lib/form-components/textbox/types/textbox-style-type';\r\nexport * from './lib/form-components/textbox/types/textbox-type';\r\n\r\nexport * from './lib/interfaces/i18n';\r\n\r\nexport * from './lib/managers/cscomponents-manager.service';\r\nexport * from './lib/managers/csform-components-manager.service';\r\nexport * from './lib/managers/popup-manager/popup-manager.service';\r\n\r\nexport * from './lib/services/module-registry/module-registry.service';\r\nexport * from './lib/services/module-registry/types/module-registery-type';\r\n\r\n\r\ndeclare global {\r\n    interface StringConstructor {\r\n        isNullOrEmpty: (value: any) => boolean;\r\n    }\r\n    interface Number {\r\n        toStringFormat: (format: string) => string;\r\n    }\r\n}\r\nString.isNullOrEmpty = function (value: any): boolean {\r\n    if (value === undefined || value === null || value.trim() === '') { return true; }\r\n    return false;\r\n};\r\nNumber.prototype.toStringFormat = function (format: string, digitsSeparator?: string): string {\r\n    var number = format.substring(format.indexOf(\"0\"), format.lastIndexOf(\"0\") + 1);\r\n    format = format.replace(number, '#{number}#');\r\n    let res: string = this.toString();\r\n    if (number.indexOf(\".\") > 0) { res = this.toFixed(number.split('.')[1].length); }\r\n    else { res = this.toFixed(0); }\r\n    if (digitsSeparator == undefined) { digitsSeparator = CSCEnvironment.i18N.digitsSeparator; }\r\n    return format.replace('#{number}#', res.replace('.', digitsSeparator));\r\n};\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PopupManagerService","i2.CSComponentsManagerService","i1","i2_1.ModuleRegistryService"],"mappings":"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"}