@spicainternational/ngx-sds-components 8.7.4 → 8.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"spicainternational-ngx-sds-components-src-lib-date-pipes.mjs","sources":["../../../projects/ngx-sds-components/src/lib/date-pipes/date-time-formats.constants.ts","../../../projects/ngx-sds-components/src/lib/date-pipes/date-period-format.pipe.ts","../../../projects/ngx-sds-components/src/lib/date-pipes/date-format.pipe.ts","../../../projects/ngx-sds-components/src/lib/date-pipes/date-time-range-format.pipe.ts","../../../projects/ngx-sds-components/src/lib/date-pipes/date-time-range-duration.pipe.ts","../../../projects/ngx-sds-components/src/lib/date-pipes/date-compare.pipe.ts","../../../projects/ngx-sds-components/src/lib/date-pipes/spicainternational-ngx-sds-components-src-lib-date-pipes.ts"],"sourcesContent":["/**\n * Common Intl.DateTimeFormatOptions constants for consistent date/time formatting\n */\n\n// Date formats\nexport const DATE_NUMERIC_MONTH_OPTIONS: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric'\n};\n\nexport const DATE_SHORT_MONTH_OPTIONS: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'short',\n day: 'numeric'\n};\n\nexport const DATE_LONG_MONTH_OPTIONS: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n};\n\nexport const DATE_LONG_MONTH_LONG_WEEKDAY_OPTIONS: Intl.DateTimeFormatOptions = {\n weekday: 'long',\n ...DATE_LONG_MONTH_OPTIONS,\n};\n\nexport const DATE_LONG_MONTH_SHORT_WEEKDAY_OPTIONS: Intl.DateTimeFormatOptions = {\n weekday: 'short',\n ...DATE_LONG_MONTH_OPTIONS,\n};\n\n\n// export const SHORT_DATE_WITH_WEEKDAY_OPTIONS: Intl.DateTimeFormatOptions = {\n// weekday: 'short',\n// year: 'numeric',\n// month: 'short',\n// day: 'numeric'\n// };\n\n// // Long date formats\n// export const LONG_DATE_OPTIONS: Intl.DateTimeFormatOptions = {\n// weekday: 'long',\n// year: 'numeric',\n// month: 'long',\n// day: 'numeric'\n// };\n\n\n\n\n\n// Time formats\nexport const TIME_HOUR_NUMERIC_OPTION: Intl.DateTimeFormatOptions = {\n hour: 'numeric',\n minute: '2-digit'\n};\n\nexport const TIME_HOUR_2DIGIT_OPTION: Intl.DateTimeFormatOptions = {\n hour: '2-digit',\n minute: '2-digit'\n};\n\nexport const TIME_HOUR_NUMERIC_SECONDS_OPTION: Intl.DateTimeFormatOptions = {\n hour: 'numeric',\n minute: '2-digit',\n second: '2-digit'\n};\n\n// export const TIME_24H_OPTIONS: Intl.DateTimeFormatOptions = {\n// hour: '2-digit',\n// minute: '2-digit',\n// hour12: false\n// };\n\n// export const TIME_WITH_SECONDS_OPTIONS: Intl.DateTimeFormatOptions = {\n// hour: '2-digit',\n// minute: '2-digit',\n// second: '2-digit',\n// hour12: false\n// };\n\n// Date and time combinations\n// export const SHORT_DATETIME_OPTIONS: Intl.DateTimeFormatOptions = {\n// year: 'numeric',\n// month: 'short',\n// day: 'numeric',\n// hour: 'numeric',\n// minute: '2-digit',\n// hour12: true\n// };\n\n// export const LONG_DATETIME_OPTIONS: Intl.DateTimeFormatOptions = {\n// weekday: 'long',\n// year: 'numeric',\n// month: 'long',\n// day: 'numeric',\n// hour: 'numeric',\n// minute: '2-digit',\n// hour12: true\n// };\n\n// export const COMPACT_DATETIME_OPTIONS: Intl.DateTimeFormatOptions = {\n// year: 'numeric',\n// month: '2-digit',\n// day: '2-digit',\n// hour: '2-digit',\n// minute: '2-digit',\n// hour12: false\n// };\n\n// Time range specific formats (optimized for ranges)\n\n\n// export const TIME_RANGE_WITH_DATE_OPTIONS: Intl.DateTimeFormatOptions = {\n// month: 'short',\n// day: 'numeric',\n// hour: 'numeric',\n// minute: '2-digit',\n// hour12: true\n// };\n\n// export const DATE_RANGE_MONTH_OPTIONS: Intl.DateTimeFormatOptions = {\n// year: 'numeric',\n// month: 'short',\n// day: 'numeric'\n// };\n\n// export const DATE_RANGE_YEAR_OPTIONS: Intl.DateTimeFormatOptions = {\n// year: 'numeric',\n// month: 'long'\n// };\n\n// Special formats\n// export const RELATIVE_DATE_OPTIONS: Intl.DateTimeFormatOptions = {\n// weekday: 'short',\n// month: 'short',\n// day: 'numeric'\n// };\n\n// export const MONTH_YEAR_OPTIONS: Intl.DateTimeFormatOptions = {\n// year: 'numeric',\n// month: 'long'\n// };\n\n// export const WEEKDAY_ONLY_OPTIONS: Intl.DateTimeFormatOptions = {\n// weekday: 'long'\n// };\n\n// export const YEAR_ONLY_OPTIONS: Intl.DateTimeFormatOptions = {\n// year: 'numeric'\n// };\n\n// Utility object for easy access\nexport const DATE_TIME_FORMAT_OPTIONS = {\n\n DATE_NUMERIC_MONTH: DATE_NUMERIC_MONTH_OPTIONS,\n DATE_SHORT_MONTH: DATE_SHORT_MONTH_OPTIONS,\n DATE_LONG_MONTH: DATE_LONG_MONTH_OPTIONS,\n\n DATE_LONG_MONTH_LONG_WEEKDAY: DATE_LONG_MONTH_LONG_WEEKDAY_OPTIONS,\n DATE_LONG_MONTH_SHORT_WEEKDAY: DATE_LONG_MONTH_SHORT_WEEKDAY_OPTIONS,\n\n TIME_HOUR_NUMERIC: TIME_HOUR_NUMERIC_OPTION,\n TIME_HOUR_2DIGIT: TIME_HOUR_2DIGIT_OPTION,\n TIME_HOUR_NUMERIC_SECONDS: TIME_HOUR_NUMERIC_SECONDS_OPTION,\n\n // SHORT_DATE_WITH_WEEKDAY: SHORT_DATE_WITH_WEEKDAY_OPTIONS,\n \n // Long formats\n// LONG_DATE_WITH_WEEKDAY: LONG_DATE_WITH_WEEKDAY_OPTIONS,\n\n // Time formats\n// TIME_12H: TIME_12H_OPTIONS,\n// TIME_24H: TIME_24H_OPTIONS,\n// TIME_WITH_SECONDS: TIME_WITH_SECONDS_OPTIONS,\n \n // DateTime combinations\n// SHORT_DATETIME: SHORT_DATETIME_OPTIONS,\n// LONG_DATETIME: LONG_DATETIME_OPTIONS,\n// COMPACT_DATETIME: COMPACT_DATETIME_OPTIONS,\n \n // Range specific\n \n// TIME_RANGE_WITH_DATE: TIME_RANGE_WITH_DATE_OPTIONS,\n// DATE_RANGE_MONTH: DATE_RANGE_MONTH_OPTIONS,\n// DATE_RANGE_YEAR: DATE_RANGE_YEAR_OPTIONS,\n \n // Special\n// RELATIVE_DATE: RELATIVE_DATE_OPTIONS,\n// MONTH_YEAR: MONTH_YEAR_OPTIONS,\n// WEEKDAY_ONLY: WEEKDAY_ONLY_OPTIONS,\n// YEAR_ONLY: YEAR_ONLY_OPTIONS\n} as const;\nexport type DateTimeFormatOptionKeys = keyof typeof DATE_TIME_FORMAT_OPTIONS;\n\n\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isSameDay, isSameYear } from 'date-fns';\n\n/**\n * @deprecated This pipe is deprecated and will be removed in a future release. \n * Use sdsDateTimeRangeFormat pipe instead.\n */\n@Pipe({\n name: 'sdsDatePeriodFormat',\n standalone: true,\n})\nexport class SdsDatePeriodFormatPipe implements PipeTransform {\n transform(\n from: Date,\n to: Date,\n locales: string | Array<string>,\n options?: Intl.DateTimeFormatOptions,\n omitRedundantSegments: boolean = false,\n periodSeparator: string = '-',\n omitCurrentYear: boolean = false\n ): string {\n if (!from) {\n return '';\n }\n\n if (!to) {\n return from.toLocaleDateString(locales, options);\n }\n\n\n if (isSameDay(from, to)) {\n return from.toLocaleDateString(locales, options);\n } else {\n let fromOptions = {...options};\n let toOptions = {...options};\n\n if (omitRedundantSegments && fromOptions && toOptions) {\n\n // if both dates are in current year -> remove it from format\n const now = new Date();\n if (omitCurrentYear && isSameYear(from, now) && isSameYear(to, now)) {\n fromOptions.year = undefined;\n toOptions.year = undefined;\n } \n\n if (isSameYear(from, to)) {\n // if both dates have same year -> remove it from start data\n fromOptions.year = undefined;\n }\n }\n\n const fromString = from.toLocaleDateString(locales, fromOptions);\n const toString = to.toLocaleDateString(locales, toOptions);\n\n return `${fromString} ${periodSeparator} ${toString}`;\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { IntlDateTimeFormatOptionPresetType } from '@spicainternational/ngx-sds-components/src/lib/utils/date-time';\nimport { formatDateTime } from '@spicainternational/ngx-sds-components/src/lib/utils/date-time';\n// import { IntlDateTimeFormatOptionPresetType } from '../utils/date-time/intl-date-time-format-options-presets';\n// import { formatDateTime } from '../utils/date-time/date-time-format.function';\n\n\n\n@Pipe({\n name: 'sdsDateFormat',\n standalone: true,\n})\nexport class SdsDateFormatPipe implements PipeTransform {\n\n /**\n * Formats date in given locale.\n *\n * @param date Date to be formatted.\n * @param locale A locale code for the locale format rules to use.\n * @param options An optional Intl.DateTimeFormatOptions parameter that can be used to fine-tune the output.\n * @returns A string with formatted date\n * @see [Intl docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl)\n *\n * @publicApi\n */\n public transform(\n date: Date | number | string | undefined,\n locales: string | Array<string>,\n options?: Intl.DateTimeFormatOptions | IntlDateTimeFormatOptionPresetType\n ): string {\n return formatDateTime(date, locales, options);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { addDays, startOfDay } from 'date-fns';\n\n@Pipe({\n name: 'sdsDateTimeRangeFormat',\n standalone: true\n})\nexport class SdsDateTimeRangeFormatPipe implements PipeTransform {\n /**\n * Formats a date range using Intl.DateTimeFormat.formatRange\n * @param startDate - The start date of the range\n * @param endDate - The end date of the range\n * @param locales - Locale(s) to use for formatting (optional, defaults to browser locale)\n * @param options - Intl.DateTimeFormatOptions for customizing the format\n * @returns Formatted date range string\n */\n transform(\n startDate: Date | string | number,\n endDate: Date | string | number,\n locales: string | string[],\n options: Intl.DateTimeFormatOptions\n ): string {\n if (!startDate || !endDate) {\n return '';\n }\n\n try {\n const start = new Date(startDate);\n let end = new Date(endDate);\n\n if (!options || isNaN(start.getTime()) || isNaN(end.getTime())) {\n return '';\n }\n\n const formatter = new Intl.DateTimeFormat(locales, options);\n const formatterWithRange = formatter as any;\n\n if (typeof formatterWithRange.formatRange === 'function') {\n\n if (startOfDay(addDays(start, 1)).getTime() === end.getTime()) {\n end = addDays(end, -1);\n }\n\n return formatterWithRange.formatRange(start, end);\n } else {\n return `${formatter.format(start)} - ${formatter.format(end)}`;\n }\n } catch (error) {\n return '';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport differenceInMinutes from 'date-fns/differenceInMinutes';\n\n@Pipe({\n name: 'sdsDateTimeRangeDuration',\n standalone: true\n})\nexport class SdsDateTimeRangeDurationPipe implements PipeTransform {\n transform(\n startDate: Date | string | number,\n endDate: Date | string | number,\n //locales: string | string[],\n \n ): string {\n\n if (!startDate || !endDate) {\n return '';\n }\n\n try {\n const start = new Date(startDate);\n const end = new Date(endDate); \n \n // not yet supported in all browsers\n // const formatter = new Intl.DurationFormat(locales, options);\n\n const totalMinutes = differenceInMinutes(end, start);\n const hours = Math.floor(totalMinutes / 60);\n const minutes = totalMinutes % 60;\n\n return `${hours}:${minutes.toString().padStart(2, '0')}`;\n } catch (error) {\n return '';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'sdsDateCompare',\n standalone: true\n})\nexport class SdsDateComparePipe implements PipeTransform {\n transform(\n date1: Date | string | number,\n date2: Date | string | number,\n operator: 'gt' | 'lt' | 'eq' | 'gte' | 'lte'\n ): boolean {\n const d1 = new Date(date1);\n const d2 = new Date(date2);\n\n switch (operator) {\n case 'gt':\n return d1 > d2;\n case 'lt':\n return d1 < d2;\n case 'eq':\n return d1.getTime() === d2.getTime();\n case 'gte':\n return d1 >= d2;\n case 'lte':\n return d1 <= d2;\n default:\n return false;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spicainternational-ngx-sds-components-src-lib-date-pipes.mjs","sources":["../../../projects/ngx-sds-components/src/lib/date-pipes/date-time-formats.constants.ts","../../../projects/ngx-sds-components/src/lib/date-pipes/date-period-format.pipe.ts","../../../projects/ngx-sds-components/src/lib/date-pipes/date-format.pipe.ts","../../../projects/ngx-sds-components/src/lib/date-pipes/date-time-range-format.pipe.ts","../../../projects/ngx-sds-components/src/lib/date-pipes/date-time-range-duration.pipe.ts","../../../projects/ngx-sds-components/src/lib/date-pipes/date-compare.pipe.ts","../../../projects/ngx-sds-components/src/lib/date-pipes/spicainternational-ngx-sds-components-src-lib-date-pipes.ts"],"sourcesContent":["/**\n * Common Intl.DateTimeFormatOptions constants for consistent date/time formatting\n */\n\n// Date formats\nexport const DATE_NUMERIC_MONTH_OPTIONS: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric'\n};\n\nexport const DATE_SHORT_MONTH_OPTIONS: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'short',\n day: 'numeric'\n};\n\nexport const DATE_LONG_MONTH_OPTIONS: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n};\n\nexport const DATE_LONG_MONTH_LONG_WEEKDAY_OPTIONS: Intl.DateTimeFormatOptions = {\n weekday: 'long',\n ...DATE_LONG_MONTH_OPTIONS,\n};\n\nexport const DATE_LONG_MONTH_SHORT_WEEKDAY_OPTIONS: Intl.DateTimeFormatOptions = {\n weekday: 'short',\n ...DATE_LONG_MONTH_OPTIONS,\n};\n\n\n// export const SHORT_DATE_WITH_WEEKDAY_OPTIONS: Intl.DateTimeFormatOptions = {\n// weekday: 'short',\n// year: 'numeric',\n// month: 'short',\n// day: 'numeric'\n// };\n\n// // Long date formats\n// export const LONG_DATE_OPTIONS: Intl.DateTimeFormatOptions = {\n// weekday: 'long',\n// year: 'numeric',\n// month: 'long',\n// day: 'numeric'\n// };\n\n\n\n\n\n// Time formats\nexport const TIME_HOUR_NUMERIC_OPTION: Intl.DateTimeFormatOptions = {\n hour: 'numeric',\n minute: '2-digit'\n};\n\nexport const TIME_HOUR_2DIGIT_OPTION: Intl.DateTimeFormatOptions = {\n hour: '2-digit',\n minute: '2-digit'\n};\n\nexport const TIME_HOUR_NUMERIC_SECONDS_OPTION: Intl.DateTimeFormatOptions = {\n hour: 'numeric',\n minute: '2-digit',\n second: '2-digit'\n};\n\n// export const TIME_24H_OPTIONS: Intl.DateTimeFormatOptions = {\n// hour: '2-digit',\n// minute: '2-digit',\n// hour12: false\n// };\n\n// export const TIME_WITH_SECONDS_OPTIONS: Intl.DateTimeFormatOptions = {\n// hour: '2-digit',\n// minute: '2-digit',\n// second: '2-digit',\n// hour12: false\n// };\n\n// Date and time combinations\n// export const SHORT_DATETIME_OPTIONS: Intl.DateTimeFormatOptions = {\n// year: 'numeric',\n// month: 'short',\n// day: 'numeric',\n// hour: 'numeric',\n// minute: '2-digit',\n// hour12: true\n// };\n\n// export const LONG_DATETIME_OPTIONS: Intl.DateTimeFormatOptions = {\n// weekday: 'long',\n// year: 'numeric',\n// month: 'long',\n// day: 'numeric',\n// hour: 'numeric',\n// minute: '2-digit',\n// hour12: true\n// };\n\n// export const COMPACT_DATETIME_OPTIONS: Intl.DateTimeFormatOptions = {\n// year: 'numeric',\n// month: '2-digit',\n// day: '2-digit',\n// hour: '2-digit',\n// minute: '2-digit',\n// hour12: false\n// };\n\n// Time range specific formats (optimized for ranges)\n\n\n// export const TIME_RANGE_WITH_DATE_OPTIONS: Intl.DateTimeFormatOptions = {\n// month: 'short',\n// day: 'numeric',\n// hour: 'numeric',\n// minute: '2-digit',\n// hour12: true\n// };\n\n// export const DATE_RANGE_MONTH_OPTIONS: Intl.DateTimeFormatOptions = {\n// year: 'numeric',\n// month: 'short',\n// day: 'numeric'\n// };\n\n// export const DATE_RANGE_YEAR_OPTIONS: Intl.DateTimeFormatOptions = {\n// year: 'numeric',\n// month: 'long'\n// };\n\n// Special formats\n// export const RELATIVE_DATE_OPTIONS: Intl.DateTimeFormatOptions = {\n// weekday: 'short',\n// month: 'short',\n// day: 'numeric'\n// };\n\n// export const MONTH_YEAR_OPTIONS: Intl.DateTimeFormatOptions = {\n// year: 'numeric',\n// month: 'long'\n// };\n\n// export const WEEKDAY_ONLY_OPTIONS: Intl.DateTimeFormatOptions = {\n// weekday: 'long'\n// };\n\n// export const YEAR_ONLY_OPTIONS: Intl.DateTimeFormatOptions = {\n// year: 'numeric'\n// };\n\n// Utility object for easy access\nexport const DATE_TIME_FORMAT_OPTIONS = {\n\n DATE_NUMERIC_MONTH: DATE_NUMERIC_MONTH_OPTIONS,\n DATE_SHORT_MONTH: DATE_SHORT_MONTH_OPTIONS,\n DATE_LONG_MONTH: DATE_LONG_MONTH_OPTIONS,\n\n DATE_LONG_MONTH_LONG_WEEKDAY: DATE_LONG_MONTH_LONG_WEEKDAY_OPTIONS,\n DATE_LONG_MONTH_SHORT_WEEKDAY: DATE_LONG_MONTH_SHORT_WEEKDAY_OPTIONS,\n\n TIME_HOUR_NUMERIC: TIME_HOUR_NUMERIC_OPTION,\n TIME_HOUR_2DIGIT: TIME_HOUR_2DIGIT_OPTION,\n TIME_HOUR_NUMERIC_SECONDS: TIME_HOUR_NUMERIC_SECONDS_OPTION,\n\n // SHORT_DATE_WITH_WEEKDAY: SHORT_DATE_WITH_WEEKDAY_OPTIONS,\n \n // Long formats\n// LONG_DATE_WITH_WEEKDAY: LONG_DATE_WITH_WEEKDAY_OPTIONS,\n\n // Time formats\n// TIME_12H: TIME_12H_OPTIONS,\n// TIME_24H: TIME_24H_OPTIONS,\n// TIME_WITH_SECONDS: TIME_WITH_SECONDS_OPTIONS,\n \n // DateTime combinations\n// SHORT_DATETIME: SHORT_DATETIME_OPTIONS,\n// LONG_DATETIME: LONG_DATETIME_OPTIONS,\n// COMPACT_DATETIME: COMPACT_DATETIME_OPTIONS,\n \n // Range specific\n \n// TIME_RANGE_WITH_DATE: TIME_RANGE_WITH_DATE_OPTIONS,\n// DATE_RANGE_MONTH: DATE_RANGE_MONTH_OPTIONS,\n// DATE_RANGE_YEAR: DATE_RANGE_YEAR_OPTIONS,\n \n // Special\n// RELATIVE_DATE: RELATIVE_DATE_OPTIONS,\n// MONTH_YEAR: MONTH_YEAR_OPTIONS,\n// WEEKDAY_ONLY: WEEKDAY_ONLY_OPTIONS,\n// YEAR_ONLY: YEAR_ONLY_OPTIONS\n} as const;\nexport type DateTimeFormatOptionKeys = keyof typeof DATE_TIME_FORMAT_OPTIONS;\n\n\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isSameDay, isSameYear } from 'date-fns';\n\n/**\n * @deprecated This pipe is deprecated and will be removed in a future release. \n * Use sdsDateTimeRangeFormat pipe instead.\n */\n@Pipe({\n name: 'sdsDatePeriodFormat',\n standalone: true,\n})\nexport class SdsDatePeriodFormatPipe implements PipeTransform {\n transform(\n from: Date,\n to: Date,\n locales: string | Array<string>,\n options?: Intl.DateTimeFormatOptions,\n omitRedundantSegments: boolean = false,\n periodSeparator: string = '-',\n omitCurrentYear: boolean = false\n ): string {\n if (!from) {\n return '';\n }\n\n if (!to) {\n return from.toLocaleDateString(locales, options);\n }\n\n\n if (isSameDay(from, to)) {\n return from.toLocaleDateString(locales, options);\n } else {\n let fromOptions = {...options};\n let toOptions = {...options};\n\n if (omitRedundantSegments && fromOptions && toOptions) {\n\n // if both dates are in current year -> remove it from format\n const now = new Date();\n if (omitCurrentYear && isSameYear(from, now) && isSameYear(to, now)) {\n fromOptions.year = undefined;\n toOptions.year = undefined;\n } \n\n if (isSameYear(from, to)) {\n // if both dates have same year -> remove it from start data\n fromOptions.year = undefined;\n }\n }\n\n const fromString = from.toLocaleDateString(locales, fromOptions);\n const toString = to.toLocaleDateString(locales, toOptions);\n\n return `${fromString} ${periodSeparator} ${toString}`;\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { IntlDateTimeFormatOptionPresetType } from '@spicainternational/ngx-sds-components/src/lib/utils/date-time';\nimport { formatDateTime } from '@spicainternational/ngx-sds-components/src/lib/utils/date-time';\n// import { IntlDateTimeFormatOptionPresetType } from '../utils/date-time/intl-date-time-format-options-presets';\n// import { formatDateTime } from '../utils/date-time/date-time-format.function';\n\n\n\n@Pipe({\n name: 'sdsDateFormat',\n standalone: true,\n})\nexport class SdsDateFormatPipe implements PipeTransform {\n\n /**\n * Formats date in given locale.\n *\n * @param date Date to be formatted.\n * @param locale A locale code for the locale format rules to use.\n * @param options An optional Intl.DateTimeFormatOptions parameter that can be used to fine-tune the output.\n * @returns A string with formatted date\n * @see [Intl docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl)\n *\n * @publicApi\n */\n public transform(\n date: Date | number | string | undefined,\n locales: string | Array<string>,\n options?: Intl.DateTimeFormatOptions | IntlDateTimeFormatOptionPresetType\n ): string {\n return formatDateTime(date, locales, options);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'sdsDateTimeRangeFormat',\n standalone: true,\n})\nexport class SdsDateTimeRangeFormatPipe implements PipeTransform {\n /**\n * Formats a date range using Intl.DateTimeFormat.formatRange\n * @param startDate - The start date of the range\n * @param endDate - The end date of the range\n * @param locales - Locale(s) to use for formatting (optional, defaults to browser locale)\n * @param options - Intl.DateTimeFormatOptions for customizing the format\n * @returns Formatted date range string\n */\n transform(\n startDate: Date | string | number,\n endDate: Date | string | number,\n locales: string | string[],\n options: Intl.DateTimeFormatOptions,\n ): string {\n if (!startDate || !endDate) {\n return '';\n }\n\n try {\n const start = new Date(startDate);\n const end = new Date(endDate);\n\n if (!options || isNaN(start.getTime()) || isNaN(end.getTime())) {\n return '';\n }\n\n const formatter = new Intl.DateTimeFormat(locales, options);\n const formatterWithRange = formatter as any;\n\n if (typeof formatterWithRange.formatRange === 'function') {\n return formatterWithRange.formatRange(start, end);\n } else {\n return `${formatter.format(start)} - ${formatter.format(end)}`;\n }\n } catch (error) {\n return '';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport differenceInMinutes from 'date-fns/differenceInMinutes';\n\n@Pipe({\n name: 'sdsDateTimeRangeDuration',\n standalone: true\n})\nexport class SdsDateTimeRangeDurationPipe implements PipeTransform {\n transform(\n startDate: Date | string | number,\n endDate: Date | string | number,\n //locales: string | string[],\n \n ): string {\n\n if (!startDate || !endDate) {\n return '';\n }\n\n try {\n const start = new Date(startDate);\n const end = new Date(endDate); \n \n // not yet supported in all browsers\n // const formatter = new Intl.DurationFormat(locales, options);\n\n const totalMinutes = differenceInMinutes(end, start);\n const hours = Math.floor(totalMinutes / 60);\n const minutes = totalMinutes % 60;\n\n return `${hours}:${minutes.toString().padStart(2, '0')}`;\n } catch (error) {\n return '';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'sdsDateCompare',\n standalone: true\n})\nexport class SdsDateComparePipe implements PipeTransform {\n transform(\n date1: Date | string | number,\n date2: Date | string | number,\n operator: 'gt' | 'lt' | 'eq' | 'gte' | 'lte'\n ): boolean {\n const d1 = new Date(date1);\n const d2 = new Date(date2);\n\n switch (operator) {\n case 'gt':\n return d1 > d2;\n case 'lt':\n return d1 < d2;\n case 'eq':\n return d1.getTime() === d2.getTime();\n case 'gte':\n return d1 >= d2;\n case 'lte':\n return d1 <= d2;\n default:\n return false;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -121,15 +121,12 @@ class SdsNavigationRouteLinkComponent {
121
121
  #routerUrl;
122
122
  #currentUrl;
123
123
  #activeRoutePatternRegExp;
124
- navigateToDefaultUrl() {
125
- this.#router.navigateByUrl(this.link());
126
- }
127
124
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdsNavigationRouteLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
128
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: SdsNavigationRouteLinkComponent, isStandalone: true, selector: "sds-navigation-route-link", inputs: { link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, nestedLinks: { classPropertyName: "nestedLinks", publicName: "nestedLinks", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, activeRoutePattern: { classPropertyName: "activeRoutePattern", publicName: "activeRoutePattern", isSignal: true, isRequired: false, transformFunction: null }, additionalInfo: { classPropertyName: "additionalInfo", publicName: "additionalInfo", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, isCollapsed: { classPropertyName: "isCollapsed", publicName: "isCollapsed", isSignal: true, isRequired: false, transformFunction: null }, ignoreQueryParamsInActiveRoute: { classPropertyName: "ignoreQueryParamsInActiveRoute", publicName: "ignoreQueryParamsInActiveRoute", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isCollapsed: "isCollapsedChange" }, ngImport: i0, template: "<!-- class=\"sds-navigation-router-link sidebar-item-x d-flex justify-content-start align-items-center sidebar-item-x py-1\"> -->\n<div \n class=\"sds-navigation-router-link sds-navigation-item-container\"\n [class.disabled]=\"disabled()\"\n [class.active]=\"isActive()\"\n [title]=\"isCollapsed() ? text() : ''\"\n >\n <a class=\"sds-navigation-item-content w-100 pe-2 text-gray-800\" \n (click)=\"navigateToDefaultUrl()\"\n >\n <div class=\"d-flex align-items-center w-100 justify-content-center\">\n <div class=\"sds-navigation-icon\" >\n <ng-content select=\"[navigationIcon]\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"!isCollapsed()\">\n <div class=\"sds-navigation-text user-select-none\">\n {{ text() }}\n </div>\n <span *ngIf=\"additionalInfo()\"\n class=\"sds-navigation-router-link-additional-info badge rounded-pill bg-warning text-body\"\n >{{ additionalInfo() }}</span\n > \n </ng-container>\n </div>\n </a>\n</div>", styles: [".sds-navigation-router-link.sds-navigation-item-container.disabled{pointer-events:none;opacity:.6}.sds-navigation-router-link.active>a{font-weight:600!important}.sds-navigation-router-link.sds-navigation-item-container.active{background-color:var(--sds-navigation-active-item)!important}.sds-navigation-router-link.sds-navigation-item-container:hover:not(.active){background-color:var(--bs-gray-200)!important}.sds-navigation-router-link.sds-navigation-item-container{border-radius:.266rem;border-left:none!important}.sds-navigation-router-link{padding:0!important}.sds-navigation-router-link a{padding-top:.5rem!important;padding-bottom:.5rem!important}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
125
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: SdsNavigationRouteLinkComponent, isStandalone: true, selector: "sds-navigation-route-link", inputs: { link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, nestedLinks: { classPropertyName: "nestedLinks", publicName: "nestedLinks", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, activeRoutePattern: { classPropertyName: "activeRoutePattern", publicName: "activeRoutePattern", isSignal: true, isRequired: false, transformFunction: null }, additionalInfo: { classPropertyName: "additionalInfo", publicName: "additionalInfo", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, isCollapsed: { classPropertyName: "isCollapsed", publicName: "isCollapsed", isSignal: true, isRequired: false, transformFunction: null }, ignoreQueryParamsInActiveRoute: { classPropertyName: "ignoreQueryParamsInActiveRoute", publicName: "ignoreQueryParamsInActiveRoute", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isCollapsed: "isCollapsedChange" }, ngImport: i0, template: "<!-- class=\"sds-navigation-router-link sidebar-item-x d-flex justify-content-start align-items-center sidebar-item-x py-1\"> -->\n<div \n class=\"sds-navigation-router-link sds-navigation-item-container\"\n [class.disabled]=\"disabled()\"\n [class.active]=\"isActive()\"\n [title]=\"isCollapsed() ? text() : ''\"\n >\n <a class=\"sds-navigation-item-content w-100 pe-2 text-gray-800\" \n [routerLink]=\"disabled() ? null : link()\"\n >\n <div class=\"d-flex align-items-center w-100 justify-content-center\">\n <div class=\"sds-navigation-icon\" >\n <ng-content select=\"[navigationIcon]\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"!isCollapsed()\">\n <div class=\"sds-navigation-text user-select-none\">\n {{ text() }}\n </div>\n <span *ngIf=\"additionalInfo()\"\n class=\"sds-navigation-router-link-additional-info badge rounded-pill bg-warning text-body\"\n >{{ additionalInfo() }}</span\n > \n </ng-container>\n </div>\n </a>\n</div>", styles: [".sds-navigation-router-link.sds-navigation-item-container.disabled{pointer-events:none;opacity:.6}.sds-navigation-router-link.active>a{font-weight:600!important}.sds-navigation-router-link.sds-navigation-item-container.active{background-color:var(--sds-navigation-active-item)!important}.sds-navigation-router-link.sds-navigation-item-container:hover:not(.active){background-color:var(--bs-gray-200)!important}.sds-navigation-router-link.sds-navigation-item-container{border-radius:.266rem;border-left:none!important}.sds-navigation-router-link{padding:0!important}.sds-navigation-router-link a{padding-top:.5rem!important;padding-bottom:.5rem!important}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
129
126
  }
130
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdsNavigationRouteLinkComponent, decorators: [{
131
128
  type: Component,
132
- args: [{ selector: 'sds-navigation-route-link', standalone: true, imports: [NgIf], template: "<!-- class=\"sds-navigation-router-link sidebar-item-x d-flex justify-content-start align-items-center sidebar-item-x py-1\"> -->\n<div \n class=\"sds-navigation-router-link sds-navigation-item-container\"\n [class.disabled]=\"disabled()\"\n [class.active]=\"isActive()\"\n [title]=\"isCollapsed() ? text() : ''\"\n >\n <a class=\"sds-navigation-item-content w-100 pe-2 text-gray-800\" \n (click)=\"navigateToDefaultUrl()\"\n >\n <div class=\"d-flex align-items-center w-100 justify-content-center\">\n <div class=\"sds-navigation-icon\" >\n <ng-content select=\"[navigationIcon]\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"!isCollapsed()\">\n <div class=\"sds-navigation-text user-select-none\">\n {{ text() }}\n </div>\n <span *ngIf=\"additionalInfo()\"\n class=\"sds-navigation-router-link-additional-info badge rounded-pill bg-warning text-body\"\n >{{ additionalInfo() }}</span\n > \n </ng-container>\n </div>\n </a>\n</div>", styles: [".sds-navigation-router-link.sds-navigation-item-container.disabled{pointer-events:none;opacity:.6}.sds-navigation-router-link.active>a{font-weight:600!important}.sds-navigation-router-link.sds-navigation-item-container.active{background-color:var(--sds-navigation-active-item)!important}.sds-navigation-router-link.sds-navigation-item-container:hover:not(.active){background-color:var(--bs-gray-200)!important}.sds-navigation-router-link.sds-navigation-item-container{border-radius:.266rem;border-left:none!important}.sds-navigation-router-link{padding:0!important}.sds-navigation-router-link a{padding-top:.5rem!important;padding-bottom:.5rem!important}\n"] }]
129
+ args: [{ selector: 'sds-navigation-route-link', standalone: true, imports: [NgIf, RouterLink], template: "<!-- class=\"sds-navigation-router-link sidebar-item-x d-flex justify-content-start align-items-center sidebar-item-x py-1\"> -->\n<div \n class=\"sds-navigation-router-link sds-navigation-item-container\"\n [class.disabled]=\"disabled()\"\n [class.active]=\"isActive()\"\n [title]=\"isCollapsed() ? text() : ''\"\n >\n <a class=\"sds-navigation-item-content w-100 pe-2 text-gray-800\" \n [routerLink]=\"disabled() ? null : link()\"\n >\n <div class=\"d-flex align-items-center w-100 justify-content-center\">\n <div class=\"sds-navigation-icon\" >\n <ng-content select=\"[navigationIcon]\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"!isCollapsed()\">\n <div class=\"sds-navigation-text user-select-none\">\n {{ text() }}\n </div>\n <span *ngIf=\"additionalInfo()\"\n class=\"sds-navigation-router-link-additional-info badge rounded-pill bg-warning text-body\"\n >{{ additionalInfo() }}</span\n > \n </ng-container>\n </div>\n </a>\n</div>", styles: [".sds-navigation-router-link.sds-navigation-item-container.disabled{pointer-events:none;opacity:.6}.sds-navigation-router-link.active>a{font-weight:600!important}.sds-navigation-router-link.sds-navigation-item-container.active{background-color:var(--sds-navigation-active-item)!important}.sds-navigation-router-link.sds-navigation-item-container:hover:not(.active){background-color:var(--bs-gray-200)!important}.sds-navigation-router-link.sds-navigation-item-container{border-radius:.266rem;border-left:none!important}.sds-navigation-router-link{padding:0!important}.sds-navigation-router-link a{padding-top:.5rem!important;padding-bottom:.5rem!important}\n"] }]
133
130
  }], ctorParameters: () => [] });
134
131
 
135
132
  class SdsNavigationGroupComponent {
@@ -379,18 +376,13 @@ class SdsNavigationExternalLinkComponent {
379
376
  this.externalLinkIcon = faExternalLink;
380
377
  this.isCollapsed = model(false);
381
378
  }
382
- ngOnInit() {
383
- }
384
- openLink() {
385
- window.open(this.link, this.tabName);
386
- }
387
379
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdsNavigationExternalLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
388
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: SdsNavigationExternalLinkComponent, isStandalone: true, selector: "sds-navigation-external-link", inputs: { link: { classPropertyName: "link", publicName: "link", isSignal: false, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: false, isRequired: false, transformFunction: null }, tabName: { classPropertyName: "tabName", publicName: "tabName", isSignal: false, isRequired: false, transformFunction: null }, externalLinkHint: { classPropertyName: "externalLinkHint", publicName: "externalLinkHint", isSignal: false, isRequired: false, transformFunction: null }, showExternalLinkIcon: { classPropertyName: "showExternalLinkIcon", publicName: "showExternalLinkIcon", isSignal: false, isRequired: false, transformFunction: null }, isCollapsed: { classPropertyName: "isCollapsed", publicName: "isCollapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isCollapsed: "isCollapsedChange" }, ngImport: i0, template: "<div \n class=\"sds-navigation-external-link sds-navigation-item-container\"\n [title]=\"isCollapsed() ? text : ''\"\n >\n <a class=\"w-100 sds-navigation-item-content pe-2 text-gray-800 sds-fs-93\" (click)=\"openLink()\" >\n <div class=\"d-flex align-items-center justify-content-center position-relative\">\n <div class=\"sds-navigation-icon\" >\n <ng-content select=\"[navigationIcon]\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"!isCollapsed()\">\n \n <div class=\"sds-navigation-text\">\n <span>{{ text }}</span>\n </div>\n\n <div \n class=\"sds-navigation-external-link-info-container\">\n <fa-icon \n class=\"sds-navigation-external-link-info-icon\"\n *ngIf=\"showExternalLinkIcon\"\n\n [icon]=\"externalLinkIcon\"\n [size]=\"'xs'\"\n [title]=\"externalLinkHint\"\n >\n </fa-icon>\n </div> \n </ng-container>\n \n <ng-content></ng-content>\n\n </div>\n </a>\n</div>", styles: [".sds-navigation-external-link:hover{background-color:#eff1f3;border-left-color:#eff1f3}.sds-navigation-external-link{border-radius:.266rem;padding:0!important;border-left:none!important}.sds-navigation-external-link a{padding-top:.5rem!important;padding-bottom:.5rem!important}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] }); }
380
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: SdsNavigationExternalLinkComponent, isStandalone: true, selector: "sds-navigation-external-link", inputs: { link: { classPropertyName: "link", publicName: "link", isSignal: false, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: false, isRequired: false, transformFunction: null }, tabName: { classPropertyName: "tabName", publicName: "tabName", isSignal: false, isRequired: false, transformFunction: null }, externalLinkHint: { classPropertyName: "externalLinkHint", publicName: "externalLinkHint", isSignal: false, isRequired: false, transformFunction: null }, showExternalLinkIcon: { classPropertyName: "showExternalLinkIcon", publicName: "showExternalLinkIcon", isSignal: false, isRequired: false, transformFunction: null }, isCollapsed: { classPropertyName: "isCollapsed", publicName: "isCollapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isCollapsed: "isCollapsedChange" }, ngImport: i0, template: "<div \n class=\"sds-navigation-external-link sds-navigation-item-container\"\n [title]=\"isCollapsed() ? text : ''\"\n >\n <a\n class=\"w-100 sds-navigation-item-content pe-2 text-gray-800 sds-fs-93\"\n [attr.href]=\"link || null\"\n [attr.target]=\"tabName || null\"\n [attr.rel]=\"tabName === '_blank' ? 'noopener noreferrer' : null\"\n >\n <div class=\"d-flex align-items-center justify-content-center position-relative\">\n <div class=\"sds-navigation-icon\" >\n <ng-content select=\"[navigationIcon]\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"!isCollapsed()\">\n \n <div class=\"sds-navigation-text\">\n <span>{{ text }}</span>\n </div>\n\n <div \n class=\"sds-navigation-external-link-info-container\">\n <fa-icon \n class=\"sds-navigation-external-link-info-icon\"\n *ngIf=\"showExternalLinkIcon\"\n\n [icon]=\"externalLinkIcon\"\n [size]=\"'xs'\"\n [title]=\"externalLinkHint\"\n >\n </fa-icon>\n </div> \n </ng-container>\n \n <ng-content></ng-content>\n\n </div>\n </a>\n</div>", styles: [".sds-navigation-external-link:hover{background-color:#eff1f3;border-left-color:#eff1f3}.sds-navigation-external-link{border-radius:.266rem;padding:0!important;border-left:none!important}.sds-navigation-external-link a{padding-top:.5rem!important;padding-bottom:.5rem!important}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] }); }
389
381
  }
390
382
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdsNavigationExternalLinkComponent, decorators: [{
391
383
  type: Component,
392
- args: [{ selector: 'sds-navigation-external-link', standalone: true, imports: [NgIf, FaIconComponent], template: "<div \n class=\"sds-navigation-external-link sds-navigation-item-container\"\n [title]=\"isCollapsed() ? text : ''\"\n >\n <a class=\"w-100 sds-navigation-item-content pe-2 text-gray-800 sds-fs-93\" (click)=\"openLink()\" >\n <div class=\"d-flex align-items-center justify-content-center position-relative\">\n <div class=\"sds-navigation-icon\" >\n <ng-content select=\"[navigationIcon]\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"!isCollapsed()\">\n \n <div class=\"sds-navigation-text\">\n <span>{{ text }}</span>\n </div>\n\n <div \n class=\"sds-navigation-external-link-info-container\">\n <fa-icon \n class=\"sds-navigation-external-link-info-icon\"\n *ngIf=\"showExternalLinkIcon\"\n\n [icon]=\"externalLinkIcon\"\n [size]=\"'xs'\"\n [title]=\"externalLinkHint\"\n >\n </fa-icon>\n </div> \n </ng-container>\n \n <ng-content></ng-content>\n\n </div>\n </a>\n</div>", styles: [".sds-navigation-external-link:hover{background-color:#eff1f3;border-left-color:#eff1f3}.sds-navigation-external-link{border-radius:.266rem;padding:0!important;border-left:none!important}.sds-navigation-external-link a{padding-top:.5rem!important;padding-bottom:.5rem!important}\n"] }]
393
- }], ctorParameters: () => [], propDecorators: { link: [{
384
+ args: [{ selector: 'sds-navigation-external-link', standalone: true, imports: [NgIf, FaIconComponent], template: "<div \n class=\"sds-navigation-external-link sds-navigation-item-container\"\n [title]=\"isCollapsed() ? text : ''\"\n >\n <a\n class=\"w-100 sds-navigation-item-content pe-2 text-gray-800 sds-fs-93\"\n [attr.href]=\"link || null\"\n [attr.target]=\"tabName || null\"\n [attr.rel]=\"tabName === '_blank' ? 'noopener noreferrer' : null\"\n >\n <div class=\"d-flex align-items-center justify-content-center position-relative\">\n <div class=\"sds-navigation-icon\" >\n <ng-content select=\"[navigationIcon]\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"!isCollapsed()\">\n \n <div class=\"sds-navigation-text\">\n <span>{{ text }}</span>\n </div>\n\n <div \n class=\"sds-navigation-external-link-info-container\">\n <fa-icon \n class=\"sds-navigation-external-link-info-icon\"\n *ngIf=\"showExternalLinkIcon\"\n\n [icon]=\"externalLinkIcon\"\n [size]=\"'xs'\"\n [title]=\"externalLinkHint\"\n >\n </fa-icon>\n </div> \n </ng-container>\n \n <ng-content></ng-content>\n\n </div>\n </a>\n</div>", styles: [".sds-navigation-external-link:hover{background-color:#eff1f3;border-left-color:#eff1f3}.sds-navigation-external-link{border-radius:.266rem;padding:0!important;border-left:none!important}.sds-navigation-external-link a{padding-top:.5rem!important;padding-bottom:.5rem!important}\n"] }]
385
+ }], propDecorators: { link: [{
394
386
  type: Input
395
387
  }], text: [{
396
388
  type: Input
@@ -662,7 +654,6 @@ class SdsProductHomeComponent {
662
654
  this.headerClick = new EventEmitter();
663
655
  this.ICON_CLOSE = faArrowLeftFromLine;
664
656
  this.ICON_OPEN = faArrowRightFromLine;
665
- this.ICON_SIDEBAR = faArrowLeftFromLine; //faSidebar;
666
657
  this.isCollapsed = model(false);
667
658
  this.sideBarInstanceName = input('');
668
659
  }
@@ -679,7 +670,7 @@ class SdsProductHomeComponent {
679
670
  this.isCollapsed.set(!this.isCollapsed());
680
671
  }
681
672
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdsProductHomeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
682
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SdsProductHomeComponent, isStandalone: true, selector: "sds-product-home", inputs: { logoUrl: { classPropertyName: "logoUrl", publicName: "logoUrl", isSignal: false, isRequired: false, transformFunction: null }, logoAltText: { classPropertyName: "logoAltText", publicName: "logoAltText", isSignal: false, isRequired: false, transformFunction: null }, moduleTitle: { classPropertyName: "moduleTitle", publicName: "moduleTitle", isSignal: false, isRequired: false, transformFunction: null }, showAppSwitcher: { classPropertyName: "showAppSwitcher", publicName: "showAppSwitcher", isSignal: false, isRequired: false, transformFunction: null }, appSwitcherProductCode: { classPropertyName: "appSwitcherProductCode", publicName: "appSwitcherProductCode", isSignal: false, isRequired: false, transformFunction: null }, appSwitcherUserProductCodes: { classPropertyName: "appSwitcherUserProductCodes", publicName: "appSwitcherUserProductCodes", isSignal: false, isRequired: false, transformFunction: null }, appSwitcherTenantProducts: { classPropertyName: "appSwitcherTenantProducts", publicName: "appSwitcherTenantProducts", isSignal: false, isRequired: false, transformFunction: null }, appSwitcherSwitchText: { classPropertyName: "appSwitcherSwitchText", publicName: "appSwitcherSwitchText", isSignal: false, isRequired: false, transformFunction: null }, appSwitcherDiscoverText: { classPropertyName: "appSwitcherDiscoverText", publicName: "appSwitcherDiscoverText", isSignal: false, isRequired: false, transformFunction: null }, textOpen: { classPropertyName: "textOpen", publicName: "textOpen", isSignal: true, isRequired: false, transformFunction: null }, textClose: { classPropertyName: "textClose", publicName: "textClose", isSignal: true, isRequired: false, transformFunction: null }, allowHeaderClick: { classPropertyName: "allowHeaderClick", publicName: "allowHeaderClick", isSignal: false, isRequired: false, transformFunction: null }, isCollapsed: { classPropertyName: "isCollapsed", publicName: "isCollapsed", isSignal: true, isRequired: false, transformFunction: null }, sideBarInstanceName: { classPropertyName: "sideBarInstanceName", publicName: "sideBarInstanceName", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { productSwitched: "productSwitched", headerClick: "headerClick", isCollapsed: "isCollapsedChange" }, ngImport: i0, template: "<div \n class=\"product-header pb-2 mb-2 align-items-start gap-2\"\n >\n @if(!isCollapsed()) {\n <sds-app-switcher\n *ngIf=\"showAppSwitcher\"\n class=\"app-switcher text-gray-800 sds-fs-93 sds-hoverable sds-rounded-2 p-1 d-flex align-items-center justify-content-center\"\n [productCode]=\"appSwitcherProductCode\"\n [userProductCodes]=\"appSwitcherUserProductCodes\"\n [tenantProducts]=\"appSwitcherTenantProducts\"\n [switchText]=\"appSwitcherSwitchText\"\n [discoverText]=\"appSwitcherDiscoverText\"\n (productClick)=\"onProductClick($event)\"\n >\n </sds-app-switcher>\n \n <div \n class=\"sds-flex-grow-shrink product-title\"\n (click)=\"onHeaderClick()\"\n [class.sds-cursor-pointer]=\"allowHeaderClick\"\n [title]=\"moduleTitle && isCollapsed() ? moduleTitle : ''\"\n >\n <div \n class=\"product-logo-container\"\n [class.collapsed]=\"isCollapsed()\"\n >\n <img\n class=\"product-logo\"\n [src]=\"logoUrl\" \n [alt]=\"logoAltText\"\n > \n </div>\n\n @if(moduleTitle && !isCollapsed()) {\n <h6 class=\"mt-2\">\n {{moduleTitle}}\n </h6>\n }\n </div>\n }\n\n <button\n type=\"button\"\n class=\"\n toggle-collapsed-button \n text-gray-800 sds-fs-93 \n sds-hoverable sds-rounded-2 \n p-1 ml-2\n d-flex align-items-center justify-content-center\n sds-cursor-pointer\n \" \n (click)=\"toggleState()\" \n [attr.aria-label]=\"isCollapsed() ? textOpen() : textClose()\"\n [title]=\"isCollapsed() ? textOpen() : textClose()\" \n >\n <fa-icon \n class=\"static-icon\"\n [icon]=\"ICON_SIDEBAR\" \n [fixedWidth]=\"true\"\n >\n </fa-icon>\n\n <fa-icon \n class=\"hover-icon\"\n [icon]=\"isCollapsed() ? ICON_OPEN : ICON_CLOSE\" \n [fixedWidth]=\"true\"\n >\n </fa-icon>\n </button>\n \n</div>\n", styles: [".product-header{padding-left:.75rem!important}.product-header .app-switcher{height:2rem;width:2rem}.product-header .product-title{margin-top:.15rem}.product-header .product-logo-container{height:calc(1.5rem + 2px)}.product-header .product-logo-container.collapsed{width:calc(1.5rem + 2px);overflow-x:hidden}.product-header .product-logo{height:1.5rem}.product-header h6{font-size:.8rem}.product-header .toggle-collapsed-button{height:2rem;width:2rem;border:0;background:transparent;appearance:none}.product-header .toggle-collapsed-button .static-icon{display:block}.product-header .toggle-collapsed-button .hover-icon{display:none}.product-header .toggle-collapsed-button:focus-visible{outline:2px solid currentColor;outline-offset:2px}.product-header .toggle-collapsed-button:hover .static-icon{display:none}.product-header .toggle-collapsed-button:hover .hover-icon{display:block}:host{width:100%}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1$1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: SdsAppSwitcherComponent, selector: "sds-app-switcher", inputs: ["productCode", "userProductCodes", "tenantProducts", "switchText", "discoverText", "ariaLabel"], outputs: ["productClick"] }] }); }
673
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SdsProductHomeComponent, isStandalone: true, selector: "sds-product-home", inputs: { logoUrl: { classPropertyName: "logoUrl", publicName: "logoUrl", isSignal: false, isRequired: false, transformFunction: null }, logoAltText: { classPropertyName: "logoAltText", publicName: "logoAltText", isSignal: false, isRequired: false, transformFunction: null }, moduleTitle: { classPropertyName: "moduleTitle", publicName: "moduleTitle", isSignal: false, isRequired: false, transformFunction: null }, showAppSwitcher: { classPropertyName: "showAppSwitcher", publicName: "showAppSwitcher", isSignal: false, isRequired: false, transformFunction: null }, appSwitcherProductCode: { classPropertyName: "appSwitcherProductCode", publicName: "appSwitcherProductCode", isSignal: false, isRequired: false, transformFunction: null }, appSwitcherUserProductCodes: { classPropertyName: "appSwitcherUserProductCodes", publicName: "appSwitcherUserProductCodes", isSignal: false, isRequired: false, transformFunction: null }, appSwitcherTenantProducts: { classPropertyName: "appSwitcherTenantProducts", publicName: "appSwitcherTenantProducts", isSignal: false, isRequired: false, transformFunction: null }, appSwitcherSwitchText: { classPropertyName: "appSwitcherSwitchText", publicName: "appSwitcherSwitchText", isSignal: false, isRequired: false, transformFunction: null }, appSwitcherDiscoverText: { classPropertyName: "appSwitcherDiscoverText", publicName: "appSwitcherDiscoverText", isSignal: false, isRequired: false, transformFunction: null }, textOpen: { classPropertyName: "textOpen", publicName: "textOpen", isSignal: true, isRequired: false, transformFunction: null }, textClose: { classPropertyName: "textClose", publicName: "textClose", isSignal: true, isRequired: false, transformFunction: null }, allowHeaderClick: { classPropertyName: "allowHeaderClick", publicName: "allowHeaderClick", isSignal: false, isRequired: false, transformFunction: null }, isCollapsed: { classPropertyName: "isCollapsed", publicName: "isCollapsed", isSignal: true, isRequired: false, transformFunction: null }, sideBarInstanceName: { classPropertyName: "sideBarInstanceName", publicName: "sideBarInstanceName", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { productSwitched: "productSwitched", headerClick: "headerClick", isCollapsed: "isCollapsedChange" }, ngImport: i0, template: "<div \n class=\"product-header pb-2 mb-2 align-items-start gap-2\"\n >\n @if(!isCollapsed()) {\n <sds-app-switcher\n *ngIf=\"showAppSwitcher\"\n class=\"app-switcher text-gray-800 sds-fs-93 sds-hoverable sds-rounded-2 p-1 d-flex align-items-center justify-content-center\"\n [productCode]=\"appSwitcherProductCode\"\n [userProductCodes]=\"appSwitcherUserProductCodes\"\n [tenantProducts]=\"appSwitcherTenantProducts\"\n [switchText]=\"appSwitcherSwitchText\"\n [discoverText]=\"appSwitcherDiscoverText\"\n (productClick)=\"onProductClick($event)\"\n >\n </sds-app-switcher>\n \n <div \n class=\"sds-flex-grow-shrink product-title\"\n (click)=\"onHeaderClick()\"\n [class.sds-cursor-pointer]=\"allowHeaderClick\"\n [title]=\"moduleTitle && isCollapsed() ? moduleTitle : ''\"\n >\n <div \n class=\"product-logo-container\"\n [class.collapsed]=\"isCollapsed()\"\n >\n <img\n class=\"product-logo\"\n [src]=\"logoUrl\" \n [alt]=\"logoAltText\"\n > \n </div>\n\n @if(moduleTitle && !isCollapsed()) {\n <h6 class=\"mt-2\">\n {{moduleTitle}}\n </h6>\n }\n </div>\n }\n\n <button\n type=\"button\"\n class=\"\n toggle-collapsed-button \n text-gray-800 sds-fs-93 \n sds-hoverable sds-rounded-2 \n p-1 ml-2\n d-flex align-items-center justify-content-center\n sds-cursor-pointer\n \" \n (click)=\"toggleState()\" \n [attr.aria-label]=\"isCollapsed() ? textOpen() : textClose()\"\n [title]=\"isCollapsed() ? textOpen() : textClose()\" \n >\n <fa-icon \n [icon]=\"isCollapsed() ? ICON_OPEN : ICON_CLOSE\" \n [fixedWidth]=\"true\"\n >\n </fa-icon>\n </button>\n \n</div>\n", styles: [".product-header{padding-left:.75rem!important}.product-header .app-switcher{height:2rem;width:2rem}.product-header .product-title{margin-top:.15rem}.product-header .product-logo-container{height:calc(1.5rem + 2px)}.product-header .product-logo-container.collapsed{width:calc(1.5rem + 2px);overflow-x:hidden}.product-header .product-logo{height:1.5rem}.product-header h6{font-size:.8rem}.product-header .toggle-collapsed-button{height:2rem;width:2rem;border:0;background:transparent;appearance:none}.product-header .toggle-collapsed-button:focus-visible{outline:2px solid currentColor;outline-offset:2px}:host{width:100%}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1$1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: SdsAppSwitcherComponent, selector: "sds-app-switcher", inputs: ["productCode", "userProductCodes", "tenantProducts", "switchText", "discoverText", "ariaLabel"], outputs: ["productClick"] }] }); }
683
674
  }
684
675
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdsProductHomeComponent, decorators: [{
685
676
  type: Component,
@@ -687,7 +678,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
687
678
  NgIf,
688
679
  FontAwesomeModule,
689
680
  SdsAppSwitcherComponent
690
- ], template: "<div \n class=\"product-header pb-2 mb-2 align-items-start gap-2\"\n >\n @if(!isCollapsed()) {\n <sds-app-switcher\n *ngIf=\"showAppSwitcher\"\n class=\"app-switcher text-gray-800 sds-fs-93 sds-hoverable sds-rounded-2 p-1 d-flex align-items-center justify-content-center\"\n [productCode]=\"appSwitcherProductCode\"\n [userProductCodes]=\"appSwitcherUserProductCodes\"\n [tenantProducts]=\"appSwitcherTenantProducts\"\n [switchText]=\"appSwitcherSwitchText\"\n [discoverText]=\"appSwitcherDiscoverText\"\n (productClick)=\"onProductClick($event)\"\n >\n </sds-app-switcher>\n \n <div \n class=\"sds-flex-grow-shrink product-title\"\n (click)=\"onHeaderClick()\"\n [class.sds-cursor-pointer]=\"allowHeaderClick\"\n [title]=\"moduleTitle && isCollapsed() ? moduleTitle : ''\"\n >\n <div \n class=\"product-logo-container\"\n [class.collapsed]=\"isCollapsed()\"\n >\n <img\n class=\"product-logo\"\n [src]=\"logoUrl\" \n [alt]=\"logoAltText\"\n > \n </div>\n\n @if(moduleTitle && !isCollapsed()) {\n <h6 class=\"mt-2\">\n {{moduleTitle}}\n </h6>\n }\n </div>\n }\n\n <button\n type=\"button\"\n class=\"\n toggle-collapsed-button \n text-gray-800 sds-fs-93 \n sds-hoverable sds-rounded-2 \n p-1 ml-2\n d-flex align-items-center justify-content-center\n sds-cursor-pointer\n \" \n (click)=\"toggleState()\" \n [attr.aria-label]=\"isCollapsed() ? textOpen() : textClose()\"\n [title]=\"isCollapsed() ? textOpen() : textClose()\" \n >\n <fa-icon \n class=\"static-icon\"\n [icon]=\"ICON_SIDEBAR\" \n [fixedWidth]=\"true\"\n >\n </fa-icon>\n\n <fa-icon \n class=\"hover-icon\"\n [icon]=\"isCollapsed() ? ICON_OPEN : ICON_CLOSE\" \n [fixedWidth]=\"true\"\n >\n </fa-icon>\n </button>\n \n</div>\n", styles: [".product-header{padding-left:.75rem!important}.product-header .app-switcher{height:2rem;width:2rem}.product-header .product-title{margin-top:.15rem}.product-header .product-logo-container{height:calc(1.5rem + 2px)}.product-header .product-logo-container.collapsed{width:calc(1.5rem + 2px);overflow-x:hidden}.product-header .product-logo{height:1.5rem}.product-header h6{font-size:.8rem}.product-header .toggle-collapsed-button{height:2rem;width:2rem;border:0;background:transparent;appearance:none}.product-header .toggle-collapsed-button .static-icon{display:block}.product-header .toggle-collapsed-button .hover-icon{display:none}.product-header .toggle-collapsed-button:focus-visible{outline:2px solid currentColor;outline-offset:2px}.product-header .toggle-collapsed-button:hover .static-icon{display:none}.product-header .toggle-collapsed-button:hover .hover-icon{display:block}:host{width:100%}\n"] }]
681
+ ], template: "<div \n class=\"product-header pb-2 mb-2 align-items-start gap-2\"\n >\n @if(!isCollapsed()) {\n <sds-app-switcher\n *ngIf=\"showAppSwitcher\"\n class=\"app-switcher text-gray-800 sds-fs-93 sds-hoverable sds-rounded-2 p-1 d-flex align-items-center justify-content-center\"\n [productCode]=\"appSwitcherProductCode\"\n [userProductCodes]=\"appSwitcherUserProductCodes\"\n [tenantProducts]=\"appSwitcherTenantProducts\"\n [switchText]=\"appSwitcherSwitchText\"\n [discoverText]=\"appSwitcherDiscoverText\"\n (productClick)=\"onProductClick($event)\"\n >\n </sds-app-switcher>\n \n <div \n class=\"sds-flex-grow-shrink product-title\"\n (click)=\"onHeaderClick()\"\n [class.sds-cursor-pointer]=\"allowHeaderClick\"\n [title]=\"moduleTitle && isCollapsed() ? moduleTitle : ''\"\n >\n <div \n class=\"product-logo-container\"\n [class.collapsed]=\"isCollapsed()\"\n >\n <img\n class=\"product-logo\"\n [src]=\"logoUrl\" \n [alt]=\"logoAltText\"\n > \n </div>\n\n @if(moduleTitle && !isCollapsed()) {\n <h6 class=\"mt-2\">\n {{moduleTitle}}\n </h6>\n }\n </div>\n }\n\n <button\n type=\"button\"\n class=\"\n toggle-collapsed-button \n text-gray-800 sds-fs-93 \n sds-hoverable sds-rounded-2 \n p-1 ml-2\n d-flex align-items-center justify-content-center\n sds-cursor-pointer\n \" \n (click)=\"toggleState()\" \n [attr.aria-label]=\"isCollapsed() ? textOpen() : textClose()\"\n [title]=\"isCollapsed() ? textOpen() : textClose()\" \n >\n <fa-icon \n [icon]=\"isCollapsed() ? ICON_OPEN : ICON_CLOSE\" \n [fixedWidth]=\"true\"\n >\n </fa-icon>\n </button>\n \n</div>\n", styles: [".product-header{padding-left:.75rem!important}.product-header .app-switcher{height:2rem;width:2rem}.product-header .product-title{margin-top:.15rem}.product-header .product-logo-container{height:calc(1.5rem + 2px)}.product-header .product-logo-container.collapsed{width:calc(1.5rem + 2px);overflow-x:hidden}.product-header .product-logo{height:1.5rem}.product-header h6{font-size:.8rem}.product-header .toggle-collapsed-button{height:2rem;width:2rem;border:0;background:transparent;appearance:none}.product-header .toggle-collapsed-button:focus-visible{outline:2px solid currentColor;outline-offset:2px}:host{width:100%}\n"] }]
691
682
  }], ctorParameters: () => [], propDecorators: { logoUrl: [{
692
683
  type: Input
693
684
  }], logoAltText: [{