@siemens/element-ng 48.8.0 → 48.9.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.
- package/fesm2022/siemens-element-ng-application-header.mjs +2 -3
- package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filtered-search.mjs +135 -10
- package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-markdown-renderer.mjs +1 -3
- package/fesm2022/siemens-element-ng-markdown-renderer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-side-panel.mjs +2 -2
- package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
- package/filtered-search/index.d.ts +39 -2
- package/package.json +29 -29
- package/template-i18n.json +1 -0
- package/translate/index.d.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-markdown-renderer.mjs","sources":["../../../../projects/element-ng/markdown-renderer/markdown-renderer.ts","../../../../projects/element-ng/markdown-renderer/si-markdown-renderer.component.ts","../../../../projects/element-ng/markdown-renderer/index.ts","../../../../projects/element-ng/markdown-renderer/siemens-element-ng-markdown-renderer.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n/**\n * Returns a markdown renderer function which_\n * - Transforms markdown text into formatted HTML.\n * - Returns a DOM node containing the formatted content.\n *\n * **Warning:** The returned Node is inserted without additional sanitization.\n * Input content is sanitized before processing.\n *\n * @experimental\n * @param sanitizer - Angular DomSanitizer instance\n * @returns A function taking the markdown text to transform and returning a DOM div element containing the formatted HTML\n */\nexport const getMarkdownRenderer = (sanitizer: DomSanitizer): ((text: string) => Node) => {\n return (text: string): Node => {\n const div = document.createElement('div');\n div.className = 'markdown-content text-break';\n\n if (!text) {\n return div;\n }\n\n // Generate a random placeholder for newlines to preserve them during HTML sanitization\n const newlinePlaceholder = `--NEWLINE-${Math.random().toString(36).substring(2, 15)}--`;\n\n // Replace newlines with placeholder before sanitization\n const valueWithPlaceholders = text.replace(/\\n/g, newlinePlaceholder);\n\n // Sanitize the input using Angular's HTML sanitizer\n const sanitizedInput = sanitizer.sanitize(SecurityContext.HTML, valueWithPlaceholders) ?? '';\n\n // Restore newlines from placeholder for markdown processing.\n let html = sanitizedInput.replace(new RegExp(newlinePlaceholder, 'g'), '\\n');\n\n // Process tables first\n html = html\n // Remove table separator lines first\n .replace(/^\\|\\s*[-:]+.*\\|\\s*$/gm, '')\n // Process table rows\n .replace(/^\\|(.+)\\|\\s*$/gm, (_match, htmlContent) => {\n // Handle escaped pipes by temporarily replacing them\n const escapedPipePlaceholder = `--ESCAPED-PIPE-${Math.random().toString(36).substring(2, 15)}--`;\n const contentWithPlaceholders = htmlContent.replace(/\\\\\\|/g, escapedPipePlaceholder);\n const cells = contentWithPlaceholders.split('|').map((cell: string) => {\n const trimmedCell = cell.trim();\n // Restore escaped pipes\n const cellWithPipes = trimmedCell.replace(new RegExp(escapedPipePlaceholder, 'g'), '|');\n\n return cellWithPipes;\n });\n // Make cell ready for markdown processing by replacing code blocks with inline code and <br> with newlines\n const cellsWithNewlines = cells.map((cell: string) => {\n // Replace multiline code blocks with single line code blocks\n const cellWithoutMultilineCode = cell.replace(\n /```([\\s\\S]*?)```/g,\n (_innerMatch, inlineCodeContent) => {\n return '`' + inlineCodeContent.replace(/`/g, '') + '`';\n }\n );\n // Temporarily replace single line code blocks to avoid replacing <br> inside them\n const tableInlineCodeBrPlaceholder = `--INLINE-CODE-BR--${Math.random().toString(36).substring(2, 15)}--`;\n const cellWithPlaceholders = cellWithoutMultilineCode.replace(\n /(`[^`]*`)/g,\n inlineCodeMatch => {\n return inlineCodeMatch.replace(/<br>/g, tableInlineCodeBrPlaceholder);\n }\n );\n // Replace <br> with newlines\n const cellWithNewlines = cellWithPlaceholders.replace(/<br\\s*\\/?>/gi, '\\n');\n // Restore <br> in inline code placeholders\n const preProcessedCell = cellWithNewlines.replace(\n new RegExp(tableInlineCodeBrPlaceholder, 'g'),\n '<br>'\n );\n return preProcessedCell;\n });\n\n // Recursively process cell content for markdown formatting\n const processedCells = cellsWithNewlines.map((cell: string) => {\n return transformMarkdownText(cell, false, sanitizer);\n });\n\n return `<tr>${processedCells.map((cell: string) => `<td>${cell}</td>`).join('')}</tr>`;\n })\n // Wrap table rows in table elements\n .replace(/(<tr>.*?<\\/tr>)/gs, '<table class=\"table table-hover\">$1</table>')\n // Remove duplicate table tags\n .replace(/<\\/table>\\s*<table class=\"table table-hover\">/g, '');\n\n html = transformMarkdownText(html, true, sanitizer);\n\n div.innerHTML = html;\n return div;\n };\n};\n\nconst transformMarkdownText = (\n html: string,\n keepAdditionalNewlines = true,\n sanitizer: DomSanitizer\n): string => {\n // Generate a random placeholder for inner code blocks to prevent markdown processing inside them\n const innerCodeQuotePlaceholder = `--INNER-CODE-${Math.random().toString(36).substring(2, 15)}--`;\n const codeSectionPlaceholderMap = new Map<string, string>();\n\n const escapedAsteriskPlaceholder = `--ASTERISK-${Math.random().toString(36).substring(2, 15)}--`;\n const escapedUnderscorePlaceholder = `--UNDERSCORE-${Math.random().toString(36).substring(2, 15)}--`;\n\n // Apply markdown transformations to the sanitized content\n html = html\n // Multiline code blocks ```code``` with placeholder\n .replace(/```[^\\n]*\\n?([\\s\\S]*?)\\n?```/g, (match, content) => {\n // Escape HTML special characters in code blocks (not for security, but for correct display) and preserve inner backticks\n const code = `<pre><code>${content.replace(/</g, '<').replace(/>/g, '>').replace(/`/g, innerCodeQuotePlaceholder)}</code></pre>`;\n const codePlaceholder = `--CODE-BLOCK-${Math.random().toString(36).substring(2, 15)}--`;\n codeSectionPlaceholderMap.set(codePlaceholder, code);\n return codePlaceholder;\n })\n\n // Inline code `text`\n .replace(/`(.*?)`/g, (match, content) => {\n // Escape HTML special characters in inline code (not for security, but for correct display)\n const code = `<code>${content.replace(/</g, '<').replace(/>/g, '>')}</code>`;\n const codePlaceholder = `--INLINE-CODE-${Math.random().toString(36).substring(2, 15)}--`;\n codeSectionPlaceholderMap.set(codePlaceholder, code);\n return codePlaceholder;\n })\n\n // Images \n .replace(/!\\[([^\\]]*)\\]\\(([^)]+)\\)/g, (_match, alt, url) => {\n const sanitizedUrl = sanitizeUrl(url, sanitizer);\n const escapedAlt = alt\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n return `<img src=\"${sanitizedUrl}\" alt=\"${escapedAlt}\">`;\n })\n\n // Links [text](url)\n .replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, (_match, text, url) => {\n const sanitizedUrl = sanitizeUrl(url, sanitizer);\n return `<a href=\"${sanitizedUrl}\" target=\"_blank\" rel=\"noopener noreferrer\">${text}</a>`;\n })\n\n // Auto-detect URLs and convert to links\n .replace(/(?<![\"'=(])\\b(https?:\\/\\/[^\\s<]+[^\\s<.,;!?\"')\\]])/g, match => {\n const sanitizedUrl = sanitizeUrl(match, sanitizer);\n return `<a href=\"${sanitizedUrl}\" target=\"_blank\" rel=\"noopener noreferrer\">${match}</a>`;\n })\n\n .replace(/(?<!\\\\)\\\\\\*/g, escapedAsteriskPlaceholder)\n .replace(/(?<!\\\\)\\\\_/g, escapedUnderscorePlaceholder)\n\n // Bold **text** or __text__\n .replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>')\n .replace(/__(.*?)__/g, '<strong>$1</strong>')\n\n // Italic *text* or _text_\n .replace(/\\*(.*?)\\*/g, '<em>$1</em>')\n .replace(/_(.*?)_/g, '<em>$1</em>')\n\n .replace(new RegExp(escapedAsteriskPlaceholder, 'g'), '*')\n .replace(new RegExp(escapedUnderscorePlaceholder, 'g'), '_')\n\n // Headings #, ##, ###, etc.\n .replace(/^###### (.*$)/gm, '<strong>$1</strong>')\n .replace(/^##### (.*$)/gm, '<h5>$1</h5>')\n .replace(/^#### (.*$)/gm, '<h4>$1</h4>')\n .replace(/^### (.*$)/gm, '<h3>$1</h3>')\n .replace(/^## (.*$)/gm, '<h2>$1</h2>')\n .replace(/^# (.*$)/gm, '<h2><strong>$1</strong></h2>');\n\n html = html\n // Bullet points - handle each type separately (• gets converted to • by sanitizer)\n .replace(/^• (.*$)/gm, '<li class=\"unordered\">$1</li>')\n .replace(/^- (.*$)/gm, '<li class=\"unordered\">$1</li>')\n .replace(/^\\* (.*$)/gm, '<li class=\"unordered\">$1</li>')\n\n // Ordered list items (1., 2., 3., etc.)\n .replace(/^\\d+\\. (.*$)/gm, '<li class=\"ordered\">$1</li>');\n\n html = html.replace(/^\\s*(?:>|>)\\s*(.*)$/gm, '<blockquote>$1</blockquote>');\n\n // Generate a random placeholder for newlines to differentiate them from those used for paragraphs\n const finalNewlinePlaceholder = `--NEWLINE-${Math.random().toString(36).substring(2, 15)}--`;\n\n html = html\n // Wrap ordered lists\n .replace(/(<li class=\"ordered\">.*?<\\/li>)/gs, '<ol>$1</ol>')\n\n // Wrap unordered lists\n .replace(/(<li class=\"unordered\">.*?<\\/li>)/gs, '<ul>$1</ul>')\n\n // Remove duplicate ol/ul tags\n .replace(/<\\/ol>\\s*<ol>/g, '')\n .replace(/<\\/ul>\\s*<ul>/g, '')\n\n // Clean up class attributes\n .replace(/ class=\"ordered\"/g, '')\n .replace(/ class=\"unordered\"/g, '');\n\n html = html\n // Convert double newlines to paragraphs (before single line breaks)\n .split(/\\n{2}/g)\n // Wrap non-block elements in <p> tags\n .map(segment => {\n // If the segment starts with a block element, return as is\n if (!segment.trim() || /^\\s*<(h[1-6]|pre|blockquote|ul|ol)/.test(segment.trim())) {\n // Replace newlines inside blocks with the placeholder\n return segment.replace(/\\n/g, finalNewlinePlaceholder);\n }\n // Otherwise, wrap in <p> tags\n return `<p>${segment}</p>`;\n })\n // Use newline placeholder again so as not to replace newlines between blocks\n .join(finalNewlinePlaceholder)\n // Convert remaining newlines to line breaks (do this LAST)\n .replace(/\\n/g, '<br>')\n // Restore newline placeholders\n .replace(new RegExp(finalNewlinePlaceholder, 'g'), keepAdditionalNewlines ? '\\n' : ' ');\n\n // Restore code placeholders\n codeSectionPlaceholderMap.forEach((code, placeholder) => {\n html = html.replace(new RegExp(placeholder, 'g'), code);\n });\n\n // Restore inner code block placeholders\n html = html.replace(new RegExp(innerCodeQuotePlaceholder, 'g'), '`');\n\n return html;\n};\n\n/**\n * Sanitizes a URL to prevent XSS attacks\n * @param url - The URL to sanitize\n * @param sanitizer - Angular DomSanitizer instance\n * @returns The sanitized URL or '#' if invalid\n */\nconst sanitizeUrl = (url: string, sanitizer: DomSanitizer): string => {\n // Remove any whitespace\n url = url.trim();\n\n // Allow only http, https, and mailto protocols\n const allowed = /^(https?:\\/\\/|mailto:|\\/(?!\\/)|\\.{1,2}\\/|#)/i;\n\n // Sanitize the URL using Angular's sanitizer\n if (!allowed.test(url)) {\n return '#';\n }\n\n // Sanitize the URL using Angular's sanitizer\n const sanitized = sanitizer.sanitize(SecurityContext.URL, url);\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n return sanitized || '#';\n};\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { CommonModule } from '@angular/common';\nimport { Component, effect, inject, input, ElementRef } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { getMarkdownRenderer } from './markdown-renderer';\n\n/**\n * Component to display markdown text, uses the {@link getMarkdownRenderer} function internally, relies on `markdown-content` theme class.\n * @experimental\n */\n@Component({\n selector: 'si-markdown-renderer',\n imports: [CommonModule],\n template: ``\n})\nexport class SiMarkdownRendererComponent {\n private sanitizer = inject(DomSanitizer);\n private hostElement = inject(ElementRef<HTMLElement>);\n private markdownRenderer = getMarkdownRenderer(this.sanitizer);\n\n /**\n * The markdown text to transform and display\n * @defaultValue ''\n */\n readonly text = input<string>('');\n\n constructor() {\n effect(() => {\n const contentValue = this.text();\n const containerEl = this.hostElement.nativeElement;\n\n if (containerEl) {\n const formattedNode = this.markdownRenderer(contentValue);\n containerEl.innerHTML = '';\n containerEl.appendChild(formattedNode);\n }\n });\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-renderer.component';\nexport * from './markdown-renderer';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-markdown-renderer.mjs","sources":["../../../../projects/element-ng/markdown-renderer/markdown-renderer.ts","../../../../projects/element-ng/markdown-renderer/si-markdown-renderer.component.ts","../../../../projects/element-ng/markdown-renderer/index.ts","../../../../projects/element-ng/markdown-renderer/siemens-element-ng-markdown-renderer.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n/**\n * Returns a markdown renderer function which_\n * - Transforms markdown text into formatted HTML.\n * - Returns a DOM node containing the formatted content.\n *\n * **Warning:** The returned Node is inserted without additional sanitization.\n * Input content is sanitized before processing.\n *\n * @experimental\n * @param sanitizer - Angular DomSanitizer instance\n * @returns A function taking the markdown text to transform and returning a DOM div element containing the formatted HTML\n */\nexport const getMarkdownRenderer = (sanitizer: DomSanitizer): ((text: string) => Node) => {\n return (text: string): Node => {\n const div = document.createElement('div');\n div.className = 'markdown-content text-break';\n\n if (!text) {\n return div;\n }\n\n // Generate a random placeholder for newlines to preserve them during HTML sanitization\n const newlinePlaceholder = `--NEWLINE-${Math.random().toString(36).substring(2, 15)}--`;\n\n // Replace newlines with placeholder before sanitization\n const valueWithPlaceholders = text.replace(/\\n/g, newlinePlaceholder);\n\n // Sanitize the input using Angular's HTML sanitizer\n const sanitizedInput = sanitizer.sanitize(SecurityContext.HTML, valueWithPlaceholders) ?? '';\n\n // Restore newlines from placeholder for markdown processing.\n let html = sanitizedInput.replace(new RegExp(newlinePlaceholder, 'g'), '\\n');\n\n // Process tables first\n html = html\n // Remove table separator lines first\n .replace(/^\\|\\s*[-:]+.*\\|\\s*$/gm, '')\n // Process table rows\n .replace(/^\\|(.+)\\|\\s*$/gm, (_match, htmlContent) => {\n // Handle escaped pipes by temporarily replacing them\n const escapedPipePlaceholder = `--ESCAPED-PIPE-${Math.random().toString(36).substring(2, 15)}--`;\n const contentWithPlaceholders = htmlContent.replace(/\\\\\\|/g, escapedPipePlaceholder);\n const cells = contentWithPlaceholders.split('|').map((cell: string) => {\n const trimmedCell = cell.trim();\n // Restore escaped pipes\n const cellWithPipes = trimmedCell.replace(new RegExp(escapedPipePlaceholder, 'g'), '|');\n\n return cellWithPipes;\n });\n // Make cell ready for markdown processing by replacing code blocks with inline code and <br> with newlines\n const cellsWithNewlines = cells.map((cell: string) => {\n // Replace multiline code blocks with single line code blocks\n const cellWithoutMultilineCode = cell.replace(\n /```([\\s\\S]*?)```/g,\n (_innerMatch, inlineCodeContent) => {\n return '`' + inlineCodeContent.replace(/`/g, '') + '`';\n }\n );\n // Temporarily replace single line code blocks to avoid replacing <br> inside them\n const tableInlineCodeBrPlaceholder = `--INLINE-CODE-BR--${Math.random().toString(36).substring(2, 15)}--`;\n const cellWithPlaceholders = cellWithoutMultilineCode.replace(\n /(`[^`]*`)/g,\n inlineCodeMatch => {\n return inlineCodeMatch.replace(/<br>/g, tableInlineCodeBrPlaceholder);\n }\n );\n // Replace <br> with newlines\n const cellWithNewlines = cellWithPlaceholders.replace(/<br\\s*\\/?>/gi, '\\n');\n // Restore <br> in inline code placeholders\n const preProcessedCell = cellWithNewlines.replace(\n new RegExp(tableInlineCodeBrPlaceholder, 'g'),\n '<br>'\n );\n return preProcessedCell;\n });\n\n // Recursively process cell content for markdown formatting\n const processedCells = cellsWithNewlines.map((cell: string) => {\n return transformMarkdownText(cell, false, sanitizer);\n });\n\n return `<tr>${processedCells.map((cell: string) => `<td>${cell}</td>`).join('')}</tr>`;\n })\n // Wrap table rows in table elements\n .replace(/(<tr>.*?<\\/tr>)/gs, '<table class=\"table table-hover\">$1</table>')\n // Remove duplicate table tags\n .replace(/<\\/table>\\s*<table class=\"table table-hover\">/g, '');\n\n html = transformMarkdownText(html, true, sanitizer);\n\n div.innerHTML = html;\n return div;\n };\n};\n\nconst transformMarkdownText = (\n html: string,\n keepAdditionalNewlines = true,\n sanitizer: DomSanitizer\n): string => {\n // Generate a random placeholder for inner code blocks to prevent markdown processing inside them\n const innerCodeQuotePlaceholder = `--INNER-CODE-${Math.random().toString(36).substring(2, 15)}--`;\n const codeSectionPlaceholderMap = new Map<string, string>();\n\n const escapedAsteriskPlaceholder = `--ASTERISK-${Math.random().toString(36).substring(2, 15)}--`;\n const escapedUnderscorePlaceholder = `--UNDERSCORE-${Math.random().toString(36).substring(2, 15)}--`;\n\n // Apply markdown transformations to the sanitized content\n html = html\n // Multiline code blocks ```code``` with placeholder\n .replace(/```[^\\n]*\\n?([\\s\\S]*?)\\n?```/g, (match, content) => {\n // Escape HTML special characters in code blocks (not for security, but for correct display) and preserve inner backticks\n const code = `<pre><code>${content.replace(/</g, '<').replace(/>/g, '>').replace(/`/g, innerCodeQuotePlaceholder)}</code></pre>`;\n const codePlaceholder = `--CODE-BLOCK-${Math.random().toString(36).substring(2, 15)}--`;\n codeSectionPlaceholderMap.set(codePlaceholder, code);\n return codePlaceholder;\n })\n\n // Inline code `text`\n .replace(/`(.*?)`/g, (match, content) => {\n // Escape HTML special characters in inline code (not for security, but for correct display)\n const code = `<code>${content.replace(/</g, '<').replace(/>/g, '>')}</code>`;\n const codePlaceholder = `--INLINE-CODE-${Math.random().toString(36).substring(2, 15)}--`;\n codeSectionPlaceholderMap.set(codePlaceholder, code);\n return codePlaceholder;\n })\n\n // Images \n .replace(/!\\[([^\\]]*)\\]\\(([^)]+)\\)/g, (_match, alt, url) => {\n const sanitizedUrl = sanitizeUrl(url, sanitizer);\n const escapedAlt = alt\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n return `<img src=\"${sanitizedUrl}\" alt=\"${escapedAlt}\">`;\n })\n\n // Links [text](url)\n .replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, (_match, text, url) => {\n const sanitizedUrl = sanitizeUrl(url, sanitizer);\n return `<a href=\"${sanitizedUrl}\" target=\"_blank\" rel=\"noopener noreferrer\">${text}</a>`;\n })\n\n // Auto-detect URLs and convert to links\n .replace(/(?<![\"'=(])\\b(https?:\\/\\/[^\\s<]+[^\\s<.,;!?\"')\\]])/g, match => {\n const sanitizedUrl = sanitizeUrl(match, sanitizer);\n return `<a href=\"${sanitizedUrl}\" target=\"_blank\" rel=\"noopener noreferrer\">${match}</a>`;\n })\n\n .replace(/(?<!\\\\)\\\\\\*/g, escapedAsteriskPlaceholder)\n .replace(/(?<!\\\\)\\\\_/g, escapedUnderscorePlaceholder)\n\n // Bold **text** or __text__\n .replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>')\n .replace(/__(.*?)__/g, '<strong>$1</strong>')\n\n // Italic *text* or _text_\n .replace(/\\*(.*?)\\*/g, '<em>$1</em>')\n .replace(/_(.*?)_/g, '<em>$1</em>')\n\n .replace(new RegExp(escapedAsteriskPlaceholder, 'g'), '*')\n .replace(new RegExp(escapedUnderscorePlaceholder, 'g'), '_')\n\n // Headings #, ##, ###, etc.\n .replace(/^###### (.*$)/gm, '<strong>$1</strong>')\n .replace(/^##### (.*$)/gm, '<h5>$1</h5>')\n .replace(/^#### (.*$)/gm, '<h4>$1</h4>')\n .replace(/^### (.*$)/gm, '<h3>$1</h3>')\n .replace(/^## (.*$)/gm, '<h2>$1</h2>')\n .replace(/^# (.*$)/gm, '<h2><strong>$1</strong></h2>');\n\n html = html\n // Bullet points - handle each type separately (• gets converted to • by sanitizer)\n .replace(/^• (.*$)/gm, '<li class=\"unordered\">$1</li>')\n .replace(/^- (.*$)/gm, '<li class=\"unordered\">$1</li>')\n .replace(/^\\* (.*$)/gm, '<li class=\"unordered\">$1</li>')\n\n // Ordered list items (1., 2., 3., etc.)\n .replace(/^\\d+\\. (.*$)/gm, '<li class=\"ordered\">$1</li>');\n\n html = html.replace(/^\\s*(?:>|>)\\s*(.*)$/gm, '<blockquote>$1</blockquote>');\n\n // Generate a random placeholder for newlines to differentiate them from those used for paragraphs\n const finalNewlinePlaceholder = `--NEWLINE-${Math.random().toString(36).substring(2, 15)}--`;\n\n html = html\n // Wrap ordered lists\n .replace(/(<li class=\"ordered\">.*?<\\/li>)/gs, '<ol>$1</ol>')\n\n // Wrap unordered lists\n .replace(/(<li class=\"unordered\">.*?<\\/li>)/gs, '<ul>$1</ul>')\n\n // Remove duplicate ol/ul tags\n .replace(/<\\/ol>\\s*<ol>/g, '')\n .replace(/<\\/ul>\\s*<ul>/g, '')\n\n // Clean up class attributes\n .replace(/ class=\"ordered\"/g, '')\n .replace(/ class=\"unordered\"/g, '');\n\n html = html\n // Convert double newlines to paragraphs (before single line breaks)\n .split(/\\n{2}/g)\n // Wrap non-block elements in <p> tags\n .map(segment => {\n // If the segment starts with a block element, return as is\n if (!segment.trim() || /^\\s*<(h[1-6]|pre|blockquote|ul|ol)/.test(segment.trim())) {\n // Replace newlines inside blocks with the placeholder\n return segment.replace(/\\n/g, finalNewlinePlaceholder);\n }\n // Otherwise, wrap in <p> tags\n return `<p>${segment}</p>`;\n })\n // Use newline placeholder again so as not to replace newlines between blocks\n .join(finalNewlinePlaceholder)\n // Convert remaining newlines to line breaks (do this LAST)\n .replace(/\\n/g, '<br>')\n // Restore newline placeholders\n .replace(new RegExp(finalNewlinePlaceholder, 'g'), keepAdditionalNewlines ? '\\n' : ' ');\n\n // Restore code placeholders\n codeSectionPlaceholderMap.forEach((code, placeholder) => {\n html = html.replace(new RegExp(placeholder, 'g'), code);\n });\n\n // Restore inner code block placeholders\n html = html.replace(new RegExp(innerCodeQuotePlaceholder, 'g'), '`');\n\n return html;\n};\n\n/**\n * Sanitizes a URL to prevent XSS attacks\n * @param url - The URL to sanitize\n * @param sanitizer - Angular DomSanitizer instance\n * @returns The sanitized URL or '#' if invalid\n */\nconst sanitizeUrl = (url: string, sanitizer: DomSanitizer): string => {\n // Remove any whitespace\n url = url.trim();\n\n // Allow only http, https, and mailto protocols\n const allowed = /^(https?:\\/\\/|mailto:|\\/(?!\\/)|\\.{1,2}\\/|#)/i;\n\n // Sanitize the URL using Angular's sanitizer\n if (!allowed.test(url)) {\n return '#';\n }\n\n // Sanitize the URL using Angular's sanitizer\n const sanitized = sanitizer.sanitize(SecurityContext.URL, url);\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n return sanitized || '#';\n};\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Component, effect, inject, input, ElementRef } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { getMarkdownRenderer } from './markdown-renderer';\n\n/**\n * Component to display markdown text, uses the {@link getMarkdownRenderer} function internally, relies on `markdown-content` theme class.\n * @experimental\n */\n@Component({\n selector: 'si-markdown-renderer',\n template: ``\n})\nexport class SiMarkdownRendererComponent {\n private sanitizer = inject(DomSanitizer);\n private hostElement = inject(ElementRef<HTMLElement>);\n private markdownRenderer = getMarkdownRenderer(this.sanitizer);\n\n /**\n * The markdown text to transform and display\n * @defaultValue ''\n */\n readonly text = input<string>('');\n\n constructor() {\n effect(() => {\n const contentValue = this.text();\n const containerEl = this.hostElement.nativeElement;\n\n if (containerEl) {\n const formattedNode = this.markdownRenderer(contentValue);\n containerEl.innerHTML = '';\n containerEl.appendChild(formattedNode);\n }\n });\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-markdown-renderer.component';\nexport * from './markdown-renderer';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -602,7 +602,7 @@ class SiSidePanelContentComponent {
|
|
|
602
602
|
}
|
|
603
603
|
}
|
|
604
604
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiSidePanelContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
605
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: SiSidePanelContentComponent, isStandalone: true, selector: "si-side-panel-content", inputs: { collapsibleInput: { classPropertyName: "collapsibleInput", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: false, transformFunction: null }, primaryActions: { classPropertyName: "primaryActions", publicName: "primaryActions", isSignal: true, isRequired: false, transformFunction: null }, secondaryActions: { classPropertyName: "secondaryActions", publicName: "secondaryActions", isSignal: true, isRequired: false, transformFunction: null }, statusActions: { classPropertyName: "statusActions", publicName: "statusActions", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, closeButtonLabel: { classPropertyName: "closeButtonLabel", publicName: "closeButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, toggleItemLabel: { classPropertyName: "toggleItemLabel", publicName: "toggleItemLabel", isSignal: true, isRequired: false, transformFunction: null }, enterFullscreenLabel: { classPropertyName: "enterFullscreenLabel", publicName: "enterFullscreenLabel", isSignal: true, isRequired: false, transformFunction: null }, exitFullscreenLabel: { classPropertyName: "exitFullscreenLabel", publicName: "exitFullscreenLabel", isSignal: true, isRequired: false, transformFunction: null }, showMobileDrawerBadge: { classPropertyName: "showMobileDrawerBadge", publicName: "showMobileDrawerBadge", isSignal: true, isRequired: false, transformFunction: null }, displayMode: { classPropertyName: "displayMode", publicName: "displayMode", isSignal: true, isRequired: false, transformFunction: null }, navigateConfig: { classPropertyName: "navigateConfig", publicName: "navigateConfig", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchEvent: "searchEvent" }, host: { properties: { "class.collapsed": "isCollapsed()", "class.expanded": "isExpanded()", "class.enable-mobile": "enableMobile()", "class.rpanel-fullscreen-overlay": "isFullscreen()" } }, providers: [SiAccordionHCollapseService], ngImport: i0, template: "<div class=\"rpanel-header pt-5\">\n <p class=\"si-h5 my-0 ms-6 auto-hide text-truncate\">{{ heading() | translate }}</p>\n @if ((primaryActions().length || secondaryActions().length) && focusable()) {\n <si-content-action-bar\n class=\"auto-hide ms-auto\"\n viewType=\"expanded\"\n [primaryActions]=\"primaryActions()\"\n [secondaryActions]=\"secondaryActions()\"\n [toggleItemLabel]=\"toggleItemLabel()\"\n />\n }\n <div class=\"d-flex\">\n @let navigateConfig = this.navigateConfig();\n @if (displayMode() === 'navigate' && navigateConfig) {\n @if (navigateConfig.type === 'router-link') {\n <a\n class=\"btn btn-circle btn-sm btn-ghost auto-hide\"\n [class.ms-4]=\"collapsible()\"\n [class.mx-4]=\"!collapsible() || service.isTemporaryOpen()\"\n [routerLink]=\"navigateConfig.routerLink\"\n [queryParams]=\"navigateConfig.extras?.queryParams\"\n [queryParamsHandling]=\"navigateConfig.extras?.queryParamsHandling\"\n [fragment]=\"navigateConfig.extras?.fragment\"\n [state]=\"navigateConfig.extras?.state\"\n [relativeTo]=\"navigateConfig.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"navigateConfig.extras?.preserveFragment\"\n [skipLocationChange]=\"navigateConfig.extras?.skipLocationChange\"\n [replaceUrl]=\"navigateConfig.extras?.replaceUrl\"\n [attr.aria-label]=\"navigateConfig.label | translate\"\n >\n <si-icon class=\"icon\" icon=\"element-export\" />\n <span class=\"visually-hidden\">\n {{ navigateConfig.label | translate }}\n </span></a\n >\n } @else if (navigateConfig.type === 'link') {\n <a\n class=\"btn btn-circle btn-sm btn-ghost auto-hide\"\n [class.ms-4]=\"collapsible()\"\n [class.mx-4]=\"!collapsible()\"\n [href]=\"navigateConfig.href\"\n [target]=\"navigateConfig.target\"\n [attr.rel]=\"navigateConfig.target === '_blank' ? 'noopener noreferrer' : null\"\n [attr.aria-label]=\"navigateConfig.label | translate\"\n >\n <si-icon class=\"icon\" icon=\"element-export\" />\n <span class=\"visually-hidden\">\n {{ navigateConfig.label | translate }}\n </span></a\n >\n }\n }\n @if (displayMode() === 'overlay') {\n <button\n type=\"button\"\n class=\"fullscreen-button btn btn-circle btn-sm btn-ghost auto-hide\"\n [class.ms-4]=\"collapsible()\"\n [class.mx-4]=\"!collapsible() || service.isTemporaryOpen()\"\n [attr.aria-label]=\"\n (isFullscreen() ? exitFullscreenLabel() : enterFullscreenLabel()) | translate\n \"\n [tabindex]=\"focusable() ? '0' : '-1'\"\n (click)=\"toggleFullscreen()\"\n >\n <si-icon [icon]=\"isFullscreen() ? 'element-pinch' : 'element-zoom'\" />\n </button>\n }\n <button\n type=\"button\"\n class=\"close-button btn btn-circle btn-sm btn-ghost me-4\"\n [attr.aria-label]=\"closeButtonLabel() | translate\"\n [tabindex]=\"focusable() ? '0' : '-1'\"\n (click)=\"toggleSidePanel($event)\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n <div class=\"collapse-toggle\">\n <button\n type=\"button\"\n class=\"side-panel-collapse-toggle btn btn-circle btn-sm btn-ghost mx-4\"\n [attr.aria-label]=\"toggleItemLabel() | translate\"\n (click)=\"toggleSidePanel($event)\"\n >\n <si-icon\n class=\"flip-rtl\"\n [class.badge-dot]=\"showMobileDrawerBadge()\"\n [icon]=\"isCollapsed() ? icons.elementDoubleLeft : icons.elementDoubleRight\"\n />\n </button>\n </div>\n </div>\n</div>\n<div class=\"rpanel-wrapper d-flex flex-column\">\n @if (statusActions().length && focusable()) {\n <div class=\"rpanel-header rpanel-statusactions px-6\">\n @for (dp of statusActions(); track $index) {\n @if (!dp.disabled) {\n <a\n class=\"rpanel-statusaction position-relative focus-inside\"\n [attr.aria-label]=\"!isCollapsed ? '' : (dp.title | translate)\"\n [siLink]=\"dp\"\n >\n <si-icon class=\"icon\" [icon]=\"dp.icon!\" />\n @if (dp.overlayIcon) {\n <si-icon class=\"icon position-absolute\" [icon]=\"dp.overlayIcon\" />\n }\n <span class=\"ms-2 auto-hide\">{{ dp.title | translate }}</span>\n </a>\n } @else {\n <div class=\"rpanel-statusaction dot-outer\" aria-hidden=\"true\">\n <div class=\"dot text-muted text-center\">•</div>\n </div>\n }\n }\n </div>\n }\n @if (searchable() && focusable()) {\n <div class=\"nav-search px-6 auto-hide\">\n <si-search-bar\n #searchBar\n class=\"m-0\"\n colorVariant=\"base-0\"\n prohibitedCharacters=\"*?\"\n [placeholder]=\"searchPlaceholder() | translate\"\n [debounceTime]=\"400\"\n [showIcon]=\"true\"\n (searchChange)=\"searchEvent.emit($event)\"\n />\n </div>\n }\n @if (focusable()) {\n <div class=\"rpanel-content\">\n <ng-content />\n </div>\n }\n</div>\n", styles: [":host{--si-accordion-radius: 0;display:flex;flex-direction:column;flex:1;gap:12px}:host-context(.collapsible) .close-button{display:none}:host-context(.collapsible) .collapse-toggle{display:block}:host-context(.collapsible) .rpanel-wrapper{gap:12px}:host-context(.collapsible) :host.collapsed{gap:0}:host-context(.collapsible) :host.collapsed .auto-hide{display:none}:host-context(.collapsible) :host.collapsed .rpanel-wrapper{gap:0;inline-size:var(--rpanel-collapsed-width)}:host-context(.collapsible) :host.collapsed .rpanel-content{flex:0 0 auto;margin-block-start:8px}:host-context(.collapsible) :host.collapsed .rpanel-statusactions{order:3;flex-direction:column;align-items:flex-start;padding:0!important}:host-context(.collapsible) :host.collapsed .rpanel-statusaction{padding-block:8px;padding-inline:12px}:host-context(.collapsible) :host.collapsed .rpanel-statusaction:not(.dot-outer):hover{background:var(--element-base-1-hover)}.fullscreen-button{display:var(--fullscreen-button-display)}.collapse-toggle{display:none}.collapse-toggle i{vertical-align:bottom}.rpanel-header,.rpanel-statusaction{display:flex;align-items:center}.rpanel-header{justify-content:space-between}.rpanel-wrapper,.rpanel-content{min-block-size:0;flex:1 0 0;overflow-x:hidden;overflow-y:auto}.rpanel-statusaction{text-decoration:none}.rpanel-statusaction .dot{inline-size:24px;line-height:24px}.rpanel-statusaction span{font-size:12px;white-space:pre-wrap;color:var(--element-text-primary)}.rpanel-statusaction:hover span{color:var(--element-text-active)}@media (max-width: 575.98px){:host.enable-mobile:not(.collapsed):not(.expanded) si-content-action-bar{margin-inline-end:48px}:host.enable-mobile:not(.expanded) .collapse-toggle{position:fixed;border:0;text-align:end;padding-block:4px!important;margin-block-start:8px!important;inset-inline-end:0;inset-block-start:calc(48px + var(--element-titlebar-spacing, 0px) + var(--element-system-banner-spacing, 0px));border-start-start-radius:var(--element-radius-2);border-end-start-radius:var(--element-radius-2);border-start-end-radius:0!important;border-end-end-radius:0!important;background:var(--element-base-1);box-shadow:0 0 4px var(--element-box-shadow-color-1),0 4px 4px var(--element-box-shadow-color-2);z-index:2}}\n"], dependencies: [{ kind: "component", type: SiContentActionBarComponent, selector: "si-content-action-bar", inputs: ["primaryActions", "secondaryActions", "actionParam", "viewType", "toggleItemLabel", "preventIconsInDropdownMenus", "disabled"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: SiSearchBarComponent, selector: "si-search-bar", inputs: ["debounceTime", "prohibitedCharacters", "placeholder", "showIcon", "tabbable", "value", "readonly", "colorVariant", "disabled", "clearButtonAriaLabel"], outputs: ["searchChange"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
|
|
605
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: SiSidePanelContentComponent, isStandalone: true, selector: "si-side-panel-content", inputs: { collapsibleInput: { classPropertyName: "collapsibleInput", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: false, transformFunction: null }, primaryActions: { classPropertyName: "primaryActions", publicName: "primaryActions", isSignal: true, isRequired: false, transformFunction: null }, secondaryActions: { classPropertyName: "secondaryActions", publicName: "secondaryActions", isSignal: true, isRequired: false, transformFunction: null }, statusActions: { classPropertyName: "statusActions", publicName: "statusActions", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, closeButtonLabel: { classPropertyName: "closeButtonLabel", publicName: "closeButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, toggleItemLabel: { classPropertyName: "toggleItemLabel", publicName: "toggleItemLabel", isSignal: true, isRequired: false, transformFunction: null }, enterFullscreenLabel: { classPropertyName: "enterFullscreenLabel", publicName: "enterFullscreenLabel", isSignal: true, isRequired: false, transformFunction: null }, exitFullscreenLabel: { classPropertyName: "exitFullscreenLabel", publicName: "exitFullscreenLabel", isSignal: true, isRequired: false, transformFunction: null }, showMobileDrawerBadge: { classPropertyName: "showMobileDrawerBadge", publicName: "showMobileDrawerBadge", isSignal: true, isRequired: false, transformFunction: null }, displayMode: { classPropertyName: "displayMode", publicName: "displayMode", isSignal: true, isRequired: false, transformFunction: null }, navigateConfig: { classPropertyName: "navigateConfig", publicName: "navigateConfig", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchEvent: "searchEvent" }, host: { properties: { "class.collapsed": "isCollapsed()", "class.expanded": "isExpanded()", "class.enable-mobile": "enableMobile()", "class.rpanel-fullscreen-overlay": "isFullscreen()" } }, providers: [SiAccordionHCollapseService], ngImport: i0, template: "<div class=\"rpanel-header pt-5\">\n <p class=\"si-h5 my-0 ms-6 auto-hide text-truncate\">{{ heading() | translate }}</p>\n @if ((primaryActions().length || secondaryActions().length) && focusable()) {\n <si-content-action-bar\n class=\"auto-hide ms-auto\"\n viewType=\"expanded\"\n [primaryActions]=\"primaryActions()\"\n [secondaryActions]=\"secondaryActions()\"\n [toggleItemLabel]=\"toggleItemLabel()\"\n />\n }\n <div class=\"d-flex\">\n @let navigateConfig = this.navigateConfig();\n @if (displayMode() === 'navigate' && navigateConfig) {\n @if (navigateConfig.type === 'router-link') {\n <a\n class=\"btn btn-circle btn-sm btn-ghost auto-hide\"\n [class.ms-4]=\"collapsible()\"\n [class.mx-4]=\"!collapsible() || service.isTemporaryOpen()\"\n [routerLink]=\"navigateConfig.routerLink\"\n [queryParams]=\"navigateConfig.extras?.queryParams\"\n [queryParamsHandling]=\"navigateConfig.extras?.queryParamsHandling\"\n [fragment]=\"navigateConfig.extras?.fragment\"\n [state]=\"navigateConfig.extras?.state\"\n [relativeTo]=\"navigateConfig.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"navigateConfig.extras?.preserveFragment\"\n [skipLocationChange]=\"navigateConfig.extras?.skipLocationChange\"\n [replaceUrl]=\"navigateConfig.extras?.replaceUrl\"\n [attr.aria-label]=\"navigateConfig.label | translate\"\n >\n <si-icon class=\"icon\" icon=\"element-export\" />\n <span class=\"visually-hidden\">\n {{ navigateConfig.label | translate }}\n </span></a\n >\n } @else if (navigateConfig.type === 'link') {\n <a\n class=\"btn btn-circle btn-sm btn-ghost auto-hide\"\n [class.ms-4]=\"collapsible()\"\n [class.mx-4]=\"!collapsible()\"\n [href]=\"navigateConfig.href\"\n [target]=\"navigateConfig.target\"\n [attr.rel]=\"navigateConfig.target === '_blank' ? 'noopener noreferrer' : null\"\n [attr.aria-label]=\"navigateConfig.label | translate\"\n >\n <si-icon class=\"icon\" icon=\"element-export\" />\n <span class=\"visually-hidden\">\n {{ navigateConfig.label | translate }}\n </span></a\n >\n }\n }\n @if (displayMode() === 'overlay') {\n <button\n type=\"button\"\n class=\"fullscreen-button btn btn-circle btn-sm btn-ghost auto-hide\"\n [class.ms-4]=\"collapsible()\"\n [class.mx-4]=\"!collapsible() || service.isTemporaryOpen()\"\n [attr.aria-label]=\"\n (isFullscreen() ? exitFullscreenLabel() : enterFullscreenLabel()) | translate\n \"\n [tabindex]=\"focusable() ? '0' : '-1'\"\n (click)=\"toggleFullscreen()\"\n >\n <si-icon [icon]=\"isFullscreen() ? 'element-pinch' : 'element-zoom'\" />\n </button>\n }\n <button\n type=\"button\"\n class=\"close-button btn btn-circle btn-sm btn-ghost me-4\"\n [attr.aria-label]=\"closeButtonLabel() | translate\"\n [tabindex]=\"focusable() ? '0' : '-1'\"\n (click)=\"toggleSidePanel($event)\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n <div class=\"collapse-toggle\">\n <button\n type=\"button\"\n class=\"side-panel-collapse-toggle btn btn-circle btn-sm btn-ghost mx-4\"\n [attr.aria-label]=\"toggleItemLabel() | translate\"\n (click)=\"toggleSidePanel($event)\"\n >\n <si-icon\n class=\"flip-rtl\"\n [class.badge-dot]=\"showMobileDrawerBadge()\"\n [icon]=\"isCollapsed() ? icons.elementDoubleLeft : icons.elementDoubleRight\"\n />\n </button>\n </div>\n </div>\n</div>\n<div class=\"rpanel-wrapper d-flex flex-column\">\n @if (statusActions().length && focusable()) {\n <div class=\"rpanel-header rpanel-statusactions px-6\">\n @for (dp of statusActions(); track $index) {\n @if (!dp.disabled) {\n <a\n class=\"rpanel-statusaction position-relative focus-inside\"\n [attr.aria-label]=\"!isCollapsed ? '' : (dp.title | translate)\"\n [siLink]=\"dp\"\n >\n <si-icon class=\"icon\" [icon]=\"dp.icon!\" />\n @if (dp.overlayIcon) {\n <si-icon class=\"icon position-absolute\" [icon]=\"dp.overlayIcon\" />\n }\n <span class=\"ms-2 auto-hide\">{{ dp.title | translate }}</span>\n </a>\n } @else {\n <div class=\"rpanel-statusaction dot-outer\" aria-hidden=\"true\">\n <div class=\"dot text-muted text-center\">•</div>\n </div>\n }\n }\n </div>\n }\n @if (searchable() && focusable()) {\n <div class=\"nav-search px-6 auto-hide\">\n <si-search-bar\n #searchBar\n class=\"m-0\"\n colorVariant=\"base-0\"\n prohibitedCharacters=\"*?\"\n [placeholder]=\"searchPlaceholder() | translate\"\n [debounceTime]=\"400\"\n [showIcon]=\"true\"\n (searchChange)=\"searchEvent.emit($event)\"\n />\n </div>\n }\n @if (focusable()) {\n <div class=\"rpanel-content\">\n <ng-content />\n </div>\n }\n</div>\n", styles: [":host{--si-accordion-radius: 0;display:flex;flex-direction:column;flex:1}:host-context(.collapsible) .close-button{display:none}:host-context(.collapsible) .collapse-toggle{display:block}:host-context(.collapsible) .rpanel-wrapper{gap:12px}:host-context(.collapsible) :host.collapsed .auto-hide{display:none}:host-context(.collapsible) :host.collapsed .rpanel-wrapper{padding-block-start:0;gap:0;inline-size:var(--rpanel-collapsed-width)}:host-context(.collapsible) :host.collapsed .rpanel-content{flex:0 0 auto;margin-block-start:8px}:host-context(.collapsible) :host.collapsed .rpanel-statusactions{order:3;flex-direction:column;align-items:flex-start;padding:0!important}:host-context(.collapsible) :host.collapsed .rpanel-statusaction{padding-block:8px;padding-inline:12px}:host-context(.collapsible) :host.collapsed .rpanel-statusaction:not(.dot-outer):hover{background:var(--element-base-1-hover)}.fullscreen-button{display:var(--fullscreen-button-display)}.collapse-toggle{display:none}.collapse-toggle i{vertical-align:bottom}.rpanel-header,.rpanel-statusaction{display:flex;align-items:center}.rpanel-header{justify-content:space-between}.rpanel-wrapper{padding-block-start:12px}.rpanel-wrapper,.rpanel-content{min-block-size:0;flex:1 0 0;overflow-x:hidden;overflow-y:auto}.rpanel-statusaction{text-decoration:none}.rpanel-statusaction .dot{inline-size:24px;line-height:24px}.rpanel-statusaction span{font-size:12px;white-space:pre-wrap;color:var(--element-text-primary)}.rpanel-statusaction:hover span{color:var(--element-text-active)}@media (max-width: 575.98px){:host.enable-mobile:not(.collapsed):not(.expanded) si-content-action-bar{margin-inline-end:48px}:host.enable-mobile:not(.expanded) .collapse-toggle{position:fixed;border:0;text-align:end;padding-block:4px!important;margin-block-start:8px!important;inset-inline-end:0;inset-block-start:calc(48px + var(--element-titlebar-spacing, 0px) + var(--element-system-banner-spacing, 0px));border-start-start-radius:var(--element-radius-2);border-end-start-radius:var(--element-radius-2);border-start-end-radius:0!important;border-end-end-radius:0!important;background:var(--element-base-1);box-shadow:0 0 4px var(--element-box-shadow-color-1),0 4px 4px var(--element-box-shadow-color-2);z-index:2}}\n"], dependencies: [{ kind: "component", type: SiContentActionBarComponent, selector: "si-content-action-bar", inputs: ["primaryActions", "secondaryActions", "actionParam", "viewType", "toggleItemLabel", "preventIconsInDropdownMenus", "disabled"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: SiSearchBarComponent, selector: "si-search-bar", inputs: ["debounceTime", "prohibitedCharacters", "placeholder", "showIcon", "tabbable", "value", "readonly", "colorVariant", "disabled", "clearButtonAriaLabel"], outputs: ["searchChange"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
|
|
606
606
|
}
|
|
607
607
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiSidePanelContentComponent, decorators: [{
|
|
608
608
|
type: Component,
|
|
@@ -618,7 +618,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
618
618
|
'[class.expanded]': 'isExpanded()',
|
|
619
619
|
'[class.enable-mobile]': 'enableMobile()',
|
|
620
620
|
'[class.rpanel-fullscreen-overlay]': 'isFullscreen()'
|
|
621
|
-
}, template: "<div class=\"rpanel-header pt-5\">\n <p class=\"si-h5 my-0 ms-6 auto-hide text-truncate\">{{ heading() | translate }}</p>\n @if ((primaryActions().length || secondaryActions().length) && focusable()) {\n <si-content-action-bar\n class=\"auto-hide ms-auto\"\n viewType=\"expanded\"\n [primaryActions]=\"primaryActions()\"\n [secondaryActions]=\"secondaryActions()\"\n [toggleItemLabel]=\"toggleItemLabel()\"\n />\n }\n <div class=\"d-flex\">\n @let navigateConfig = this.navigateConfig();\n @if (displayMode() === 'navigate' && navigateConfig) {\n @if (navigateConfig.type === 'router-link') {\n <a\n class=\"btn btn-circle btn-sm btn-ghost auto-hide\"\n [class.ms-4]=\"collapsible()\"\n [class.mx-4]=\"!collapsible() || service.isTemporaryOpen()\"\n [routerLink]=\"navigateConfig.routerLink\"\n [queryParams]=\"navigateConfig.extras?.queryParams\"\n [queryParamsHandling]=\"navigateConfig.extras?.queryParamsHandling\"\n [fragment]=\"navigateConfig.extras?.fragment\"\n [state]=\"navigateConfig.extras?.state\"\n [relativeTo]=\"navigateConfig.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"navigateConfig.extras?.preserveFragment\"\n [skipLocationChange]=\"navigateConfig.extras?.skipLocationChange\"\n [replaceUrl]=\"navigateConfig.extras?.replaceUrl\"\n [attr.aria-label]=\"navigateConfig.label | translate\"\n >\n <si-icon class=\"icon\" icon=\"element-export\" />\n <span class=\"visually-hidden\">\n {{ navigateConfig.label | translate }}\n </span></a\n >\n } @else if (navigateConfig.type === 'link') {\n <a\n class=\"btn btn-circle btn-sm btn-ghost auto-hide\"\n [class.ms-4]=\"collapsible()\"\n [class.mx-4]=\"!collapsible()\"\n [href]=\"navigateConfig.href\"\n [target]=\"navigateConfig.target\"\n [attr.rel]=\"navigateConfig.target === '_blank' ? 'noopener noreferrer' : null\"\n [attr.aria-label]=\"navigateConfig.label | translate\"\n >\n <si-icon class=\"icon\" icon=\"element-export\" />\n <span class=\"visually-hidden\">\n {{ navigateConfig.label | translate }}\n </span></a\n >\n }\n }\n @if (displayMode() === 'overlay') {\n <button\n type=\"button\"\n class=\"fullscreen-button btn btn-circle btn-sm btn-ghost auto-hide\"\n [class.ms-4]=\"collapsible()\"\n [class.mx-4]=\"!collapsible() || service.isTemporaryOpen()\"\n [attr.aria-label]=\"\n (isFullscreen() ? exitFullscreenLabel() : enterFullscreenLabel()) | translate\n \"\n [tabindex]=\"focusable() ? '0' : '-1'\"\n (click)=\"toggleFullscreen()\"\n >\n <si-icon [icon]=\"isFullscreen() ? 'element-pinch' : 'element-zoom'\" />\n </button>\n }\n <button\n type=\"button\"\n class=\"close-button btn btn-circle btn-sm btn-ghost me-4\"\n [attr.aria-label]=\"closeButtonLabel() | translate\"\n [tabindex]=\"focusable() ? '0' : '-1'\"\n (click)=\"toggleSidePanel($event)\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n <div class=\"collapse-toggle\">\n <button\n type=\"button\"\n class=\"side-panel-collapse-toggle btn btn-circle btn-sm btn-ghost mx-4\"\n [attr.aria-label]=\"toggleItemLabel() | translate\"\n (click)=\"toggleSidePanel($event)\"\n >\n <si-icon\n class=\"flip-rtl\"\n [class.badge-dot]=\"showMobileDrawerBadge()\"\n [icon]=\"isCollapsed() ? icons.elementDoubleLeft : icons.elementDoubleRight\"\n />\n </button>\n </div>\n </div>\n</div>\n<div class=\"rpanel-wrapper d-flex flex-column\">\n @if (statusActions().length && focusable()) {\n <div class=\"rpanel-header rpanel-statusactions px-6\">\n @for (dp of statusActions(); track $index) {\n @if (!dp.disabled) {\n <a\n class=\"rpanel-statusaction position-relative focus-inside\"\n [attr.aria-label]=\"!isCollapsed ? '' : (dp.title | translate)\"\n [siLink]=\"dp\"\n >\n <si-icon class=\"icon\" [icon]=\"dp.icon!\" />\n @if (dp.overlayIcon) {\n <si-icon class=\"icon position-absolute\" [icon]=\"dp.overlayIcon\" />\n }\n <span class=\"ms-2 auto-hide\">{{ dp.title | translate }}</span>\n </a>\n } @else {\n <div class=\"rpanel-statusaction dot-outer\" aria-hidden=\"true\">\n <div class=\"dot text-muted text-center\">•</div>\n </div>\n }\n }\n </div>\n }\n @if (searchable() && focusable()) {\n <div class=\"nav-search px-6 auto-hide\">\n <si-search-bar\n #searchBar\n class=\"m-0\"\n colorVariant=\"base-0\"\n prohibitedCharacters=\"*?\"\n [placeholder]=\"searchPlaceholder() | translate\"\n [debounceTime]=\"400\"\n [showIcon]=\"true\"\n (searchChange)=\"searchEvent.emit($event)\"\n />\n </div>\n }\n @if (focusable()) {\n <div class=\"rpanel-content\">\n <ng-content />\n </div>\n }\n</div>\n", styles: [":host{--si-accordion-radius: 0;display:flex;flex-direction:column;flex:1
|
|
621
|
+
}, template: "<div class=\"rpanel-header pt-5\">\n <p class=\"si-h5 my-0 ms-6 auto-hide text-truncate\">{{ heading() | translate }}</p>\n @if ((primaryActions().length || secondaryActions().length) && focusable()) {\n <si-content-action-bar\n class=\"auto-hide ms-auto\"\n viewType=\"expanded\"\n [primaryActions]=\"primaryActions()\"\n [secondaryActions]=\"secondaryActions()\"\n [toggleItemLabel]=\"toggleItemLabel()\"\n />\n }\n <div class=\"d-flex\">\n @let navigateConfig = this.navigateConfig();\n @if (displayMode() === 'navigate' && navigateConfig) {\n @if (navigateConfig.type === 'router-link') {\n <a\n class=\"btn btn-circle btn-sm btn-ghost auto-hide\"\n [class.ms-4]=\"collapsible()\"\n [class.mx-4]=\"!collapsible() || service.isTemporaryOpen()\"\n [routerLink]=\"navigateConfig.routerLink\"\n [queryParams]=\"navigateConfig.extras?.queryParams\"\n [queryParamsHandling]=\"navigateConfig.extras?.queryParamsHandling\"\n [fragment]=\"navigateConfig.extras?.fragment\"\n [state]=\"navigateConfig.extras?.state\"\n [relativeTo]=\"navigateConfig.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"navigateConfig.extras?.preserveFragment\"\n [skipLocationChange]=\"navigateConfig.extras?.skipLocationChange\"\n [replaceUrl]=\"navigateConfig.extras?.replaceUrl\"\n [attr.aria-label]=\"navigateConfig.label | translate\"\n >\n <si-icon class=\"icon\" icon=\"element-export\" />\n <span class=\"visually-hidden\">\n {{ navigateConfig.label | translate }}\n </span></a\n >\n } @else if (navigateConfig.type === 'link') {\n <a\n class=\"btn btn-circle btn-sm btn-ghost auto-hide\"\n [class.ms-4]=\"collapsible()\"\n [class.mx-4]=\"!collapsible()\"\n [href]=\"navigateConfig.href\"\n [target]=\"navigateConfig.target\"\n [attr.rel]=\"navigateConfig.target === '_blank' ? 'noopener noreferrer' : null\"\n [attr.aria-label]=\"navigateConfig.label | translate\"\n >\n <si-icon class=\"icon\" icon=\"element-export\" />\n <span class=\"visually-hidden\">\n {{ navigateConfig.label | translate }}\n </span></a\n >\n }\n }\n @if (displayMode() === 'overlay') {\n <button\n type=\"button\"\n class=\"fullscreen-button btn btn-circle btn-sm btn-ghost auto-hide\"\n [class.ms-4]=\"collapsible()\"\n [class.mx-4]=\"!collapsible() || service.isTemporaryOpen()\"\n [attr.aria-label]=\"\n (isFullscreen() ? exitFullscreenLabel() : enterFullscreenLabel()) | translate\n \"\n [tabindex]=\"focusable() ? '0' : '-1'\"\n (click)=\"toggleFullscreen()\"\n >\n <si-icon [icon]=\"isFullscreen() ? 'element-pinch' : 'element-zoom'\" />\n </button>\n }\n <button\n type=\"button\"\n class=\"close-button btn btn-circle btn-sm btn-ghost me-4\"\n [attr.aria-label]=\"closeButtonLabel() | translate\"\n [tabindex]=\"focusable() ? '0' : '-1'\"\n (click)=\"toggleSidePanel($event)\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n <div class=\"collapse-toggle\">\n <button\n type=\"button\"\n class=\"side-panel-collapse-toggle btn btn-circle btn-sm btn-ghost mx-4\"\n [attr.aria-label]=\"toggleItemLabel() | translate\"\n (click)=\"toggleSidePanel($event)\"\n >\n <si-icon\n class=\"flip-rtl\"\n [class.badge-dot]=\"showMobileDrawerBadge()\"\n [icon]=\"isCollapsed() ? icons.elementDoubleLeft : icons.elementDoubleRight\"\n />\n </button>\n </div>\n </div>\n</div>\n<div class=\"rpanel-wrapper d-flex flex-column\">\n @if (statusActions().length && focusable()) {\n <div class=\"rpanel-header rpanel-statusactions px-6\">\n @for (dp of statusActions(); track $index) {\n @if (!dp.disabled) {\n <a\n class=\"rpanel-statusaction position-relative focus-inside\"\n [attr.aria-label]=\"!isCollapsed ? '' : (dp.title | translate)\"\n [siLink]=\"dp\"\n >\n <si-icon class=\"icon\" [icon]=\"dp.icon!\" />\n @if (dp.overlayIcon) {\n <si-icon class=\"icon position-absolute\" [icon]=\"dp.overlayIcon\" />\n }\n <span class=\"ms-2 auto-hide\">{{ dp.title | translate }}</span>\n </a>\n } @else {\n <div class=\"rpanel-statusaction dot-outer\" aria-hidden=\"true\">\n <div class=\"dot text-muted text-center\">•</div>\n </div>\n }\n }\n </div>\n }\n @if (searchable() && focusable()) {\n <div class=\"nav-search px-6 auto-hide\">\n <si-search-bar\n #searchBar\n class=\"m-0\"\n colorVariant=\"base-0\"\n prohibitedCharacters=\"*?\"\n [placeholder]=\"searchPlaceholder() | translate\"\n [debounceTime]=\"400\"\n [showIcon]=\"true\"\n (searchChange)=\"searchEvent.emit($event)\"\n />\n </div>\n }\n @if (focusable()) {\n <div class=\"rpanel-content\">\n <ng-content />\n </div>\n }\n</div>\n", styles: [":host{--si-accordion-radius: 0;display:flex;flex-direction:column;flex:1}:host-context(.collapsible) .close-button{display:none}:host-context(.collapsible) .collapse-toggle{display:block}:host-context(.collapsible) .rpanel-wrapper{gap:12px}:host-context(.collapsible) :host.collapsed .auto-hide{display:none}:host-context(.collapsible) :host.collapsed .rpanel-wrapper{padding-block-start:0;gap:0;inline-size:var(--rpanel-collapsed-width)}:host-context(.collapsible) :host.collapsed .rpanel-content{flex:0 0 auto;margin-block-start:8px}:host-context(.collapsible) :host.collapsed .rpanel-statusactions{order:3;flex-direction:column;align-items:flex-start;padding:0!important}:host-context(.collapsible) :host.collapsed .rpanel-statusaction{padding-block:8px;padding-inline:12px}:host-context(.collapsible) :host.collapsed .rpanel-statusaction:not(.dot-outer):hover{background:var(--element-base-1-hover)}.fullscreen-button{display:var(--fullscreen-button-display)}.collapse-toggle{display:none}.collapse-toggle i{vertical-align:bottom}.rpanel-header,.rpanel-statusaction{display:flex;align-items:center}.rpanel-header{justify-content:space-between}.rpanel-wrapper{padding-block-start:12px}.rpanel-wrapper,.rpanel-content{min-block-size:0;flex:1 0 0;overflow-x:hidden;overflow-y:auto}.rpanel-statusaction{text-decoration:none}.rpanel-statusaction .dot{inline-size:24px;line-height:24px}.rpanel-statusaction span{font-size:12px;white-space:pre-wrap;color:var(--element-text-primary)}.rpanel-statusaction:hover span{color:var(--element-text-active)}@media (max-width: 575.98px){:host.enable-mobile:not(.collapsed):not(.expanded) si-content-action-bar{margin-inline-end:48px}:host.enable-mobile:not(.expanded) .collapse-toggle{position:fixed;border:0;text-align:end;padding-block:4px!important;margin-block-start:8px!important;inset-inline-end:0;inset-block-start:calc(48px + var(--element-titlebar-spacing, 0px) + var(--element-system-banner-spacing, 0px));border-start-start-radius:var(--element-radius-2);border-end-start-radius:var(--element-radius-2);border-start-end-radius:0!important;border-end-end-radius:0!important;background:var(--element-base-1);box-shadow:0 0 4px var(--element-box-shadow-color-1),0 4px 4px var(--element-box-shadow-color-2);z-index:2}}\n"] }]
|
|
622
622
|
}], ctorParameters: () => [] });
|
|
623
623
|
|
|
624
624
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-side-panel.mjs","sources":["../../../../projects/element-ng/side-panel/si-side-panel.service.ts","../../../../projects/element-ng/side-panel/si-side-panel.component.ts","../../../../projects/element-ng/side-panel/si-side-panel.component.html","../../../../projects/element-ng/side-panel/si-side-panel-content.component.ts","../../../../projects/element-ng/side-panel/si-side-panel-content.component.html","../../../../projects/element-ng/side-panel/si-side-panel.module.ts","../../../../projects/element-ng/side-panel/side-panel.model.ts","../../../../projects/element-ng/side-panel/index.ts","../../../../projects/element-ng/side-panel/siemens-element-ng-side-panel.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Portal } from '@angular/cdk/portal';\nimport { Injectable, signal } from '@angular/core';\nimport { BehaviorSubject, EMPTY, Observable, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SiSidePanelService {\n private contentSubject = new BehaviorSubject<Portal<any> | undefined>(undefined);\n /** @internal */\n readonly content$ = this.contentSubject.asObservable();\n\n private openSubject = new BehaviorSubject<boolean>(false);\n /**\n * Emits on side panel is open or close.\n *\n * @defaultValue this.openSubject.asObservable()\n */\n readonly isOpen$ = this.openSubject.asObservable();\n\n private tempContentSubject = new BehaviorSubject<Portal<any> | undefined>(undefined);\n /** @internal */\n readonly tempContent$ = this.tempContentSubject.asObservable();\n\n private tempContentClosed?: Subject<void>;\n /** @internal */\n readonly enableMobile = signal(false);\n\n /** @internal */\n readonly collapsible = signal(false);\n\n private fullscreenSubject = new BehaviorSubject<boolean>(false);\n /**\n * Emits when fullscreen overlay mode is toggled.\n */\n readonly isFullscreen$ = this.fullscreenSubject.asObservable();\n\n /** Set or update displayed content. */\n setSidePanelContent(portal: Portal<any> | undefined): void {\n this.contentSubject.next(portal);\n }\n\n /** Open side panel. */\n open(): void {\n this.hideTemporaryContent();\n this.openSubject.next(true);\n }\n\n /** Close side panel. */\n close(): void {\n if (this.hideTemporaryContent()) {\n return;\n }\n this.openSubject.next(false);\n }\n\n /** Toggle side panel open/close. */\n toggle(): void {\n this.hideTemporaryContent();\n this.openSubject.next(!this.openSubject.value);\n }\n\n /** Indicate is side panel open. */\n isOpen(): boolean {\n return this.openSubject.value;\n }\n\n /** Toggle fullscreen overlay mode. */\n toggleFullscreen(): void {\n this.fullscreenSubject.next(!this.fullscreenSubject.value);\n }\n\n /** Set fullscreen overlay mode. */\n setFullscreen(fullscreen: boolean): void {\n this.fullscreenSubject.next(fullscreen);\n }\n\n /** Indicate if side panel is in fullscreen overlay mode. */\n isFullscreen(): boolean {\n return this.fullscreenSubject.value;\n }\n\n /**\n * Indicate that the side panel is open with temporary content.\n */\n isTemporaryOpen(): boolean {\n return !!this.tempContentSubject.value;\n }\n\n /** Show side panel temporary content, opening the side panel when necessary. */\n showTemporaryContent(portal: Portal<any> | undefined): Observable<void> {\n this.hideTemporaryContent();\n this.tempContentSubject.next(portal);\n\n if (portal) {\n this.tempContentClosed = new Subject();\n return this.tempContentClosed.asObservable();\n }\n return EMPTY;\n }\n\n /** Hide side panel temporary content, reverting to state before showing temporary content. */\n hideTemporaryContent(): boolean {\n if (!this.isTemporaryOpen()) {\n return false;\n }\n if (this.tempContentClosed) {\n const sub = this.tempContentClosed;\n this.tempContentClosed = undefined;\n sub.next();\n sub.complete();\n }\n this.tempContentSubject.next(undefined);\n return true;\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { CdkPortalOutlet, Portal, PortalModule } from '@angular/cdk/portal';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n DOCUMENT,\n ElementRef,\n inject,\n input,\n model,\n OnChanges,\n OnDestroy,\n OnInit,\n output,\n PLATFORM_ID,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n BOOTSTRAP_BREAKPOINTS,\n Breakpoints,\n ElementDimensions,\n ResizeObserverService\n} from '@siemens/element-ng/resize-observer';\nimport { t } from '@siemens/element-translate-ng/translate';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { SiSidePanelService } from './si-side-panel.service';\nimport { SidePanelMode, SidePanelSize } from './side-panel.model';\n\n@Component({\n selector: 'si-side-panel',\n imports: [PortalModule],\n templateUrl: './si-side-panel.component.html',\n styleUrl: './si-side-panel.component.scss',\n host: {\n class: 'si-layout-inner',\n '[class.enable-mobile]': 'enableMobile()',\n '[class.rpanel-size--regular]': 'this.size() === \"regular\"',\n '[class.rpanel-size--wide]': 'this.size() === \"wide\"',\n '[class.rpanel-size--extended]': 'this.size() === \"extended\"',\n '[class.rpanel-mode--over]': 'this.mode() === \"over\"',\n '[class.rpanel-mode--scroll]': 'isScrollMode()',\n '[class.rpanel-collapsed]': 'isCollapsed()',\n '[class.ready]': 'ready()',\n '[class.collapsible]': 'collapsible() && !this.showTempContent()',\n '[class.collapsible-temp]': 'collapsible() && this.showTempContent()',\n '[class.rpanel-hidden]': 'isHidden()',\n '[class.rpanel-fullscreen-overlay]': 'isFullscreenOverlay()',\n '[class.rpanel-resize-xs]': 'isXs()',\n '[class.rpanel-resize-sm]': 'isSm()',\n '[class.rpanel-resize-md]': 'isMd()',\n '[class.rpanel-resize-lg]': 'isLg()',\n '[class.rpanel-resize-xl]': 'isXl()',\n '[class.rpanel-resize-xxl]': 'isXxl()',\n '[class.rpanel-resize-xxxl]': 'isXxxl()'\n }\n})\nexport class SiSidePanelComponent implements OnInit, OnDestroy, OnChanges {\n /**\n * Custom breakpoint for ultra-wide screens (≥1920px)\n */\n private static readonly xxxlMinimum = 1920;\n\n /**\n * @defaultValue false\n */\n readonly collapsible = input(false, { transform: booleanAttribute });\n\n /**\n * Default state of navigation\n */\n readonly collapsed = model<boolean>();\n\n /**\n * Mode of side panel\n * (ignored below a certain width)\n *\n * @defaultValue 'over'\n */\n readonly mode = input<SidePanelMode>('over');\n\n /**\n * Size of side-panel\n *\n * @defaultValue 'regular'\n */\n readonly size = input<SidePanelSize>('regular');\n\n /**\n * Toggle icon aria-label, required for a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_SIDE_PANEL.TOGGLE:Toggle`)\n * ```\n */\n readonly toggleItemLabel = input(t(() => $localize`:@@SI_SIDE_PANEL.TOGGLE:Toggle`));\n\n /**\n * Specifies custom breakpoints to automatically switch mode.\n * The `smMinimum` specifies the breakpoint for the mobile view.\n * The `lgMinimum` specifies the breakpoint to allow scroll mode\n * (below automatically uses over mode).\n * The `xlMinimum` specifies the breakpoint to allow scroll mode\n * with wide size (below automatically uses over mode).\n */\n readonly breakpoints = input<Breakpoints>();\n\n /**\n * Enable mobile drawer for small screen sizes. Should not be used in conjunction with the vertical navbar.\n *\n * @defaultValue false\n */\n readonly enableMobile = input(false, { transform: booleanAttribute });\n\n /**\n * Emits when the panel is closed\n */\n readonly closed = output();\n\n /**\n * Emits whenever the content is resized due to opening and closing or parent resize.\n */\n readonly contentResize = output<ElementDimensions>();\n\n protected readonly isScrollMode = computed(() => this.mode() === 'scroll');\n protected readonly isXs = signal(false);\n protected readonly isSm = signal(false);\n protected readonly isMd = signal(true);\n protected readonly isLg = signal(false);\n protected readonly isXl = signal(false);\n protected readonly isXxl = signal(false);\n protected readonly isXxxl = signal(false);\n protected readonly isCollapsed = signal(false);\n protected readonly ready = signal(false);\n protected readonly isHidden = signal(false);\n protected readonly isFullscreenOverlay = signal(false);\n protected readonly showTempContent = signal(false);\n\n private readonly panelElement = viewChild.required<ElementRef>('sidePanel');\n private readonly contentElement = viewChild.required<ElementRef>('content');\n private readonly portalOutlet = viewChild.required<CdkPortalOutlet, CdkPortalOutlet>(\n 'portalOutlet',\n {\n read: CdkPortalOutlet\n }\n );\n private readonly tmpPortalOutlet = viewChild.required<CdkPortalOutlet, CdkPortalOutlet>(\n 'tmpPortalOutlet',\n {\n read: CdkPortalOutlet\n }\n );\n\n /**\n * The $rpanel-transition-duration in the style is 0.5 seconds.\n * Sending the resize event after resize need to wait until resize is done.\n */\n private readonly resizeEventDelay = 500;\n private resizeEvent = new Subject<void>();\n private openingOrClosing = false;\n private previousContentDimensions: ElementDimensions = { width: 0, height: 0 };\n private isCollapsedInternal = false; // same as the other one, except w/o timeout for animation\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n private readonly element = inject(ElementRef);\n private readonly resizeObserver = inject(ResizeObserverService);\n private readonly service = inject(SiSidePanelService);\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly document = inject(DOCUMENT);\n\n constructor() {\n this.service.isFullscreen$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(fullscreen => {\n this.isFullscreenOverlay.set(fullscreen);\n });\n\n if (this.isBrowser) {\n this.resizeEvent\n .asObservable()\n .pipe(takeUntilDestroyed(), debounceTime(this.resizeEventDelay))\n .subscribe(() => {\n this.openingOrClosing = false;\n this.emitResizeOutputs();\n this.service.setFullscreen(false);\n if (this.isCollapsedInternal && !this.collapsible()) {\n this.isHidden.set(true);\n }\n });\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.collapsed) {\n if (this.collapsed()) {\n this.service.close();\n } else {\n this.service.open();\n }\n }\n\n if (changes.enableMobile) {\n this.service.enableMobile.set(this.enableMobile());\n }\n\n if (changes.collapsible) {\n this.service.collapsible.set(this.collapsible());\n }\n }\n\n ngOnInit(): void {\n // handle initial state to avoid flicker\n const collapsed = this.collapsed() ?? !this.service.isOpen();\n this.isCollapsedInternal = collapsed;\n this.isHidden.set(collapsed);\n this.isCollapsed.set(collapsed);\n this.service.collapsible.set(this.collapsible());\n\n this.resizeObserver\n .observe(this.element.nativeElement, 100, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(dim => {\n this.setBreakpoints(dim.width, dim.height);\n if (!this.ready()) {\n // delay because the initial sizing needs to settle\n setTimeout(() => {\n this.ready.set(true);\n }, 100);\n }\n if (!this.openingOrClosing) {\n this.emitResizeOutputs();\n }\n });\n\n this.service.content$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(portal => this.attachContent(portal));\n\n this.service.tempContent$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(portal => this.attachTempContent(portal));\n\n this.service.isOpen$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(state => this.openClose(state));\n }\n\n ngOnDestroy(): void {\n this.portalOutlet().detach();\n }\n /**\n * Toggle whether the side panel is expanded or not.\n */\n toggleSidePanel(): void {\n if (this.collapsible()) {\n this.service.toggle();\n } else {\n this.service.close();\n }\n }\n\n private emitResizeOutputs(): void {\n const contentDimensions = this.getContentDimensions();\n if (\n contentDimensions.width !== this.previousContentDimensions.width ||\n contentDimensions.height !== this.previousContentDimensions.height\n ) {\n this.previousContentDimensions = contentDimensions;\n this.contentResize.emit(contentDimensions);\n }\n }\n\n private getContentDimensions(): ElementDimensions {\n if (!this.isCollapsedInternal && this.isXs()) {\n return { width: 0, height: 0 };\n }\n const rect = this.contentElement().nativeElement.getBoundingClientRect();\n return { width: rect.width, height: rect.height };\n }\n\n private setBreakpoints(width: number, height: number): void {\n if (!width && !height) {\n // element is not visible, no point in changing anything\n return;\n }\n const breakpoints = this.breakpoints() ?? BOOTSTRAP_BREAKPOINTS;\n\n this.isXs.set(width < breakpoints.smMinimum);\n this.isSm.set(width >= breakpoints.smMinimum && width < breakpoints.mdMinimum);\n this.isMd.set(width >= breakpoints.mdMinimum && width < breakpoints.lgMinimum);\n this.isLg.set(width >= breakpoints.lgMinimum && width < breakpoints.xlMinimum);\n this.isXl.set(width >= breakpoints.xlMinimum && width < breakpoints.xxlMinimum);\n this.isXxl.set(width >= breakpoints.xxlMinimum && width < SiSidePanelComponent.xxxlMinimum);\n this.isXxxl.set(width >= SiSidePanelComponent.xxxlMinimum);\n }\n\n private sendResize(): void {\n if (this.isScrollMode() || this.element.nativeElement.style.paddingRight !== '0') {\n this.openingOrClosing = true;\n this.resizeEvent.next();\n }\n }\n\n private attachContent(portal?: Portal<any>): void {\n const portalOutlet = this.portalOutlet();\n portalOutlet.detach();\n if (portal) {\n portalOutlet.attach(portal);\n }\n this.cdRef.markForCheck();\n }\n\n private attachTempContent(portal: Portal<any> | undefined): void {\n const tmpPortalOutlet = this.tmpPortalOutlet();\n tmpPortalOutlet.detach();\n if (portal) {\n tmpPortalOutlet.attach(portal);\n this.showTempContent.set(true);\n this.openClose(true, true);\n } else if (this.showTempContent()) {\n this.showTempContent.set(false);\n this.openClose(this.service.isOpen(), true);\n }\n }\n\n private openClose(open: boolean, regainFocus = false): void {\n if (open !== this.isCollapsedInternal) {\n this.moveFocusInside(open && regainFocus);\n return;\n }\n this.isCollapsedInternal = !open;\n if (open) {\n this.isHidden.set(false);\n }\n setTimeout(() => this.doOpenClose(open));\n }\n\n private doOpenClose(open: boolean): void {\n this.moveFocusInside(open);\n this.isCollapsed.set(!open);\n this.collapsed.set(this.isCollapsed());\n if (this.isCollapsedInternal) {\n this.closed.emit();\n }\n this.sendResize();\n }\n\n private moveFocusInside(open: boolean): void {\n if (\n open &&\n !this.document.activeElement?.parentElement?.classList.contains(\n 'side-panel-collapse-toggle'\n ) &&\n !this.document.activeElement?.classList.contains('side-panel-collapse-toggle')\n ) {\n // moves the keyboard focus inside the panel so that the next tab is somewhere useful\n this.panelElement().nativeElement.focus();\n queueMicrotask(() => this.panelElement().nativeElement.blur());\n }\n }\n}\n","<div #sidePanel class=\"side-panel focus-none\" tabindex=\"-1\">\n <div class=\"inner\" [class.d-none]=\"showTempContent()\">\n <ng-content select=\"si-side-panel-content, element-side-panel-content\" />\n <ng-container #portalOutlet cdkPortalOutlet />\n </div>\n <div class=\"inner\" [class.d-none]=\"!showTempContent()\">\n <ng-container #tmpPortalOutlet cdkPortalOutlet />\n </div>\n</div>\n<div #content class=\"main-content si-layout-inner\">\n <ng-content />\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n booleanAttribute,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n OnInit,\n output,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, RouterLink } from '@angular/router';\nimport { SiAccordionHCollapseService } from '@siemens/element-ng/accordion';\nimport { MenuItem as MenuItemLegacy } from '@siemens/element-ng/common';\nimport {\n ContentActionBarMainItem,\n SiContentActionBarComponent\n} from '@siemens/element-ng/content-action-bar';\nimport {\n addIcons,\n elementCancel,\n elementDoubleLeft,\n elementDoubleRight,\n SiIconComponent\n} from '@siemens/element-ng/icon';\nimport { SiLinkDirective } from '@siemens/element-ng/link';\nimport { MenuItem } from '@siemens/element-ng/menu';\nimport { BOOTSTRAP_BREAKPOINTS } from '@siemens/element-ng/resize-observer';\nimport { SiSearchBarComponent } from '@siemens/element-ng/search-bar';\nimport { SiTranslatePipe, t, TranslatableString } from '@siemens/element-translate-ng/translate';\nimport { timer } from 'rxjs';\n\nimport { SiSidePanelService } from './si-side-panel.service';\nimport { SidePanelDisplayMode, SidePanelNavigateConfig } from './side-panel.model';\n\n/**\n * An extension of MenuItem to support combined icons\n */\nexport interface StatusItem extends MenuItemLegacy {\n overlayIcon?: string;\n}\n\n@Component({\n selector: 'si-side-panel-content',\n imports: [\n SiContentActionBarComponent,\n SiIconComponent,\n SiLinkDirective,\n RouterLink,\n SiSearchBarComponent,\n SiTranslatePipe\n ],\n templateUrl: './si-side-panel-content.component.html',\n styleUrl: './si-side-panel-content.component.scss',\n providers: [SiAccordionHCollapseService],\n host: {\n '[class.collapsed]': 'isCollapsed()',\n '[class.expanded]': 'isExpanded()',\n '[class.enable-mobile]': 'enableMobile()',\n '[class.rpanel-fullscreen-overlay]': 'isFullscreen()'\n }\n})\nexport class SiSidePanelContentComponent implements OnInit {\n /**\n * @deprecated This input is no longer used. The collapsible state is managed by the SiSidePanelService.\n * This input will be removed in a future major version.\n * @defaultValue undefined\n */\n readonly collapsibleInput = input(undefined, {\n // eslint-disable-next-line @angular-eslint/no-input-rename\n alias: 'collapsible',\n transform: booleanAttribute\n });\n /**\n * Header of side panel\n *\n * @defaultValue ''\n */\n readonly heading = input<TranslatableString>('');\n\n /**\n * Input list of primary action items\n *\n * @defaultValue []\n */\n readonly primaryActions = input<(MenuItemLegacy | ContentActionBarMainItem)[]>([]);\n\n /**\n * Input list of secondary action items.\n *\n * @defaultValue []\n */\n readonly secondaryActions = input<(MenuItemLegacy | MenuItem)[]>([]);\n\n /**\n * Status icons/actions\n *\n * @defaultValue []\n */\n readonly statusActions = input<StatusItem[]>([]);\n\n /**\n * Toggles search bar\n *\n * @defaultValue false\n */\n readonly searchable = input(false, { transform: booleanAttribute });\n\n /**\n * Placeholder text for search\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_SIDE_PANEL.SEARCH_PLACEHOLDER:Search...`)\n * ```\n */\n readonly searchPlaceholder = input(\n t(() => $localize`:@@SI_SIDE_PANEL.SEARCH_PLACEHOLDER:Search...`)\n );\n\n /**\n * Aria label for close button. Needed for a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_SIDE_PANEL.CLOSE:Close`)\n * ```\n */\n readonly closeButtonLabel = input(t(() => $localize`:@@SI_SIDE_PANEL.CLOSE:Close`));\n\n /**\n * Toggle icon aria-label, required for a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_SIDE_PANEL.TOGGLE:Toggle`)\n * ```\n */\n readonly toggleItemLabel = input(t(() => $localize`:@@SI_SIDE_PANEL.TOGGLE:Toggle`));\n\n /**\n * Enter fullscreen aria-label, required for a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_SIDE_PANEL.ENTER_FULLSCREEN:Enter fullscreen`)\n * ```\n */\n readonly enterFullscreenLabel = input(\n t(() => $localize`:@@SI_SIDE_PANEL.ENTER_FULLSCREEN:Enter fullscreen`)\n );\n\n /**\n * Exit fullscreen aria-label, required for a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_SIDE_PANEL.EXIT_FULLSCREEN:Exit fullscreen`)\n * ```\n */\n readonly exitFullscreenLabel = input(\n t(() => $localize`:@@SI_SIDE_PANEL.EXIT_FULLSCREEN:Exit fullscreen`)\n );\n\n /**\n * Show a badge on the mobile drawer indicating a new alert or notification\n *\n * @defaultValue false\n */\n readonly showMobileDrawerBadge = input(false, { transform: booleanAttribute });\n\n /**\n * Display mode for side panel - enables navigate or overlay functionality\n */\n readonly displayMode = input<SidePanelDisplayMode>();\n\n /**\n * Configuration for navigate mode\n */\n readonly navigateConfig = input<SidePanelNavigateConfig>();\n\n /**\n * Output for search bar input\n */\n readonly searchEvent = output<string>();\n\n protected readonly activatedRoute = inject(ActivatedRoute, { optional: true });\n protected readonly service = inject(SiSidePanelService);\n protected readonly isCollapsed = signal(false);\n protected readonly isExpanded = signal(true);\n protected readonly isFullscreen = signal(false);\n protected readonly enableMobile = computed(() => this.service?.enableMobile() ?? false);\n protected readonly collapsible = computed(() => {\n return this.collapsibleInput() ?? this.service?.collapsible() ?? false;\n });\n protected readonly mobileSize = signal(false);\n protected readonly focusable = computed(\n () => !this.mobileSize() || !this.enableMobile() || !this.isCollapsed()\n );\n protected readonly icons = addIcons({ elementCancel, elementDoubleLeft, elementDoubleRight });\n /**\n * The $rpanel-transition-duration in the style is 0.5 seconds.\n * For the animation we need to wait until the resize is done.\n */\n private readonly resizeAnimationDelay = 500;\n private readonly destroyRef = inject(DestroyRef);\n private readonly breakpointObserver = inject(BreakpointObserver);\n\n private expandedTimeout: any;\n\n constructor() {\n const accordionHcollapse = inject(SiAccordionHCollapseService);\n\n this.service.isFullscreen$.pipe(takeUntilDestroyed()).subscribe(fullscreen => {\n this.isFullscreen.set(fullscreen);\n });\n\n this.service.isOpen$.pipe(takeUntilDestroyed()).subscribe(state => {\n this.isCollapsed.set(!state);\n clearTimeout(this.expandedTimeout);\n this.expandedTimeout = undefined;\n if (!state) {\n this.isExpanded.set(false);\n } else {\n this.expandedTimeout = setTimeout(() => {\n this.isExpanded.set(true);\n }, this.resizeAnimationDelay / 2);\n }\n });\n\n effect(() => {\n if (this.collapsible()) {\n accordionHcollapse.hcollapsed.set(this.isCollapsed());\n }\n });\n\n effect(() => {\n if (this.isCollapsed() && !this.service.isTemporaryOpen() && this.isFullscreen()) {\n timer(this.resizeAnimationDelay)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.service.setFullscreen(false);\n });\n }\n });\n\n accordionHcollapse.open$.pipe(takeUntilDestroyed()).subscribe(() => this.service.open());\n }\n\n ngOnInit(): void {\n this.breakpointObserver\n .observe('(max-width: ' + BOOTSTRAP_BREAKPOINTS.smMinimum + 'px)')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(({ matches }) => {\n this.mobileSize.set(matches);\n });\n }\n\n /**\n * Toggle fullscreen overlay mode\n */\n toggleFullscreen(): void {\n if (this.isCollapsed() && !this.service.isTemporaryOpen()) {\n return;\n }\n this.service.toggleFullscreen();\n }\n\n protected toggleSidePanel(event?: MouseEvent): void {\n if (event?.detail !== 0) {\n // Blur except if triggered by keyboard\n (document?.activeElement as HTMLElement)?.blur();\n }\n if (this.service.isTemporaryOpen()) {\n this.service.hideTemporaryContent();\n } else {\n this.service.toggle();\n }\n }\n}\n","<div class=\"rpanel-header pt-5\">\n <p class=\"si-h5 my-0 ms-6 auto-hide text-truncate\">{{ heading() | translate }}</p>\n @if ((primaryActions().length || secondaryActions().length) && focusable()) {\n <si-content-action-bar\n class=\"auto-hide ms-auto\"\n viewType=\"expanded\"\n [primaryActions]=\"primaryActions()\"\n [secondaryActions]=\"secondaryActions()\"\n [toggleItemLabel]=\"toggleItemLabel()\"\n />\n }\n <div class=\"d-flex\">\n @let navigateConfig = this.navigateConfig();\n @if (displayMode() === 'navigate' && navigateConfig) {\n @if (navigateConfig.type === 'router-link') {\n <a\n class=\"btn btn-circle btn-sm btn-ghost auto-hide\"\n [class.ms-4]=\"collapsible()\"\n [class.mx-4]=\"!collapsible() || service.isTemporaryOpen()\"\n [routerLink]=\"navigateConfig.routerLink\"\n [queryParams]=\"navigateConfig.extras?.queryParams\"\n [queryParamsHandling]=\"navigateConfig.extras?.queryParamsHandling\"\n [fragment]=\"navigateConfig.extras?.fragment\"\n [state]=\"navigateConfig.extras?.state\"\n [relativeTo]=\"navigateConfig.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"navigateConfig.extras?.preserveFragment\"\n [skipLocationChange]=\"navigateConfig.extras?.skipLocationChange\"\n [replaceUrl]=\"navigateConfig.extras?.replaceUrl\"\n [attr.aria-label]=\"navigateConfig.label | translate\"\n >\n <si-icon class=\"icon\" icon=\"element-export\" />\n <span class=\"visually-hidden\">\n {{ navigateConfig.label | translate }}\n </span></a\n >\n } @else if (navigateConfig.type === 'link') {\n <a\n class=\"btn btn-circle btn-sm btn-ghost auto-hide\"\n [class.ms-4]=\"collapsible()\"\n [class.mx-4]=\"!collapsible()\"\n [href]=\"navigateConfig.href\"\n [target]=\"navigateConfig.target\"\n [attr.rel]=\"navigateConfig.target === '_blank' ? 'noopener noreferrer' : null\"\n [attr.aria-label]=\"navigateConfig.label | translate\"\n >\n <si-icon class=\"icon\" icon=\"element-export\" />\n <span class=\"visually-hidden\">\n {{ navigateConfig.label | translate }}\n </span></a\n >\n }\n }\n @if (displayMode() === 'overlay') {\n <button\n type=\"button\"\n class=\"fullscreen-button btn btn-circle btn-sm btn-ghost auto-hide\"\n [class.ms-4]=\"collapsible()\"\n [class.mx-4]=\"!collapsible() || service.isTemporaryOpen()\"\n [attr.aria-label]=\"\n (isFullscreen() ? exitFullscreenLabel() : enterFullscreenLabel()) | translate\n \"\n [tabindex]=\"focusable() ? '0' : '-1'\"\n (click)=\"toggleFullscreen()\"\n >\n <si-icon [icon]=\"isFullscreen() ? 'element-pinch' : 'element-zoom'\" />\n </button>\n }\n <button\n type=\"button\"\n class=\"close-button btn btn-circle btn-sm btn-ghost me-4\"\n [attr.aria-label]=\"closeButtonLabel() | translate\"\n [tabindex]=\"focusable() ? '0' : '-1'\"\n (click)=\"toggleSidePanel($event)\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n <div class=\"collapse-toggle\">\n <button\n type=\"button\"\n class=\"side-panel-collapse-toggle btn btn-circle btn-sm btn-ghost mx-4\"\n [attr.aria-label]=\"toggleItemLabel() | translate\"\n (click)=\"toggleSidePanel($event)\"\n >\n <si-icon\n class=\"flip-rtl\"\n [class.badge-dot]=\"showMobileDrawerBadge()\"\n [icon]=\"isCollapsed() ? icons.elementDoubleLeft : icons.elementDoubleRight\"\n />\n </button>\n </div>\n </div>\n</div>\n<div class=\"rpanel-wrapper d-flex flex-column\">\n @if (statusActions().length && focusable()) {\n <div class=\"rpanel-header rpanel-statusactions px-6\">\n @for (dp of statusActions(); track $index) {\n @if (!dp.disabled) {\n <a\n class=\"rpanel-statusaction position-relative focus-inside\"\n [attr.aria-label]=\"!isCollapsed ? '' : (dp.title | translate)\"\n [siLink]=\"dp\"\n >\n <si-icon class=\"icon\" [icon]=\"dp.icon!\" />\n @if (dp.overlayIcon) {\n <si-icon class=\"icon position-absolute\" [icon]=\"dp.overlayIcon\" />\n }\n <span class=\"ms-2 auto-hide\">{{ dp.title | translate }}</span>\n </a>\n } @else {\n <div class=\"rpanel-statusaction dot-outer\" aria-hidden=\"true\">\n <div class=\"dot text-muted text-center\">•</div>\n </div>\n }\n }\n </div>\n }\n @if (searchable() && focusable()) {\n <div class=\"nav-search px-6 auto-hide\">\n <si-search-bar\n #searchBar\n class=\"m-0\"\n colorVariant=\"base-0\"\n prohibitedCharacters=\"*?\"\n [placeholder]=\"searchPlaceholder() | translate\"\n [debounceTime]=\"400\"\n [showIcon]=\"true\"\n (searchChange)=\"searchEvent.emit($event)\"\n />\n </div>\n }\n @if (focusable()) {\n <div class=\"rpanel-content\">\n <ng-content />\n </div>\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiSidePanelContentComponent } from './si-side-panel-content.component';\nimport { SiSidePanelComponent } from './si-side-panel.component';\n\n@NgModule({\n imports: [SiSidePanelComponent, SiSidePanelContentComponent],\n exports: [SiSidePanelComponent, SiSidePanelContentComponent]\n})\nexport class SiSidePanelModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\n\nimport { NavigationExtras } from '@angular/router';\nimport { TranslatableString } from '@siemens/element-translate-ng/translate';\n\n/**\n * Side panel mode options.\n * - scroll: pushes content when side panel opens/closes,\n * - over: Opens as an overlay on existing content. Just like modal.\n */\nexport type SidePanelMode = 'scroll' | 'over';\n\n/**\n * Side panel size options.\n * - regular: 390px,\n * - wide: 500px,\n * - extended: responsive width that adapts to screen size. Full width on small/medium screens,\n * scales from 480px to 912px (max) on larger screens for optimal content display\n */\nexport type SidePanelSize = 'regular' | 'wide' | 'extended';\n\n/**\n * Side panel display mode options.\n * - navigate: allows navigation to dedicated page\n * - overlay: allows full-screen overlay toggle\n */\nexport type SidePanelDisplayMode = 'navigate' | 'overlay';\n\n/**\n * Interface representing a router link item in the side panel.\n */\nexport interface SidePanelNavigateRouterLink {\n type: 'router-link';\n /** Label that is shown to the user. */\n label: TranslatableString;\n /** Link for the angular router. Accepts the same values as {@link RouterLink}. */\n routerLink: string | any[];\n /** Navigation extras that are passed to the {@link RouterLink}. */\n extras?: NavigationExtras;\n}\n\n/**\n * Interface representing a link item in the side panel.\n */\nexport interface SidePanelNavigateLink {\n type: 'link';\n /** Label that is shown to the user. */\n label: TranslatableString;\n /** The href property of the anchor. */\n href: string;\n /** The target property of the anchor. */\n target?: string;\n}\n\n/**\n * Configuration for side panel navigation.\n */\nexport type SidePanelNavigateConfig = SidePanelNavigateRouterLink | SidePanelNavigateLink;\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-side-panel.service';\nexport * from './si-side-panel.component';\nexport * from './si-side-panel-content.component';\nexport * from './si-side-panel.module';\nexport * from './side-panel.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-side-panel.mjs","sources":["../../../../projects/element-ng/side-panel/si-side-panel.service.ts","../../../../projects/element-ng/side-panel/si-side-panel.component.ts","../../../../projects/element-ng/side-panel/si-side-panel.component.html","../../../../projects/element-ng/side-panel/si-side-panel-content.component.ts","../../../../projects/element-ng/side-panel/si-side-panel-content.component.html","../../../../projects/element-ng/side-panel/si-side-panel.module.ts","../../../../projects/element-ng/side-panel/side-panel.model.ts","../../../../projects/element-ng/side-panel/index.ts","../../../../projects/element-ng/side-panel/siemens-element-ng-side-panel.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Portal } from '@angular/cdk/portal';\nimport { Injectable, signal } from '@angular/core';\nimport { BehaviorSubject, EMPTY, Observable, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SiSidePanelService {\n private contentSubject = new BehaviorSubject<Portal<any> | undefined>(undefined);\n /** @internal */\n readonly content$ = this.contentSubject.asObservable();\n\n private openSubject = new BehaviorSubject<boolean>(false);\n /**\n * Emits on side panel is open or close.\n *\n * @defaultValue this.openSubject.asObservable()\n */\n readonly isOpen$ = this.openSubject.asObservable();\n\n private tempContentSubject = new BehaviorSubject<Portal<any> | undefined>(undefined);\n /** @internal */\n readonly tempContent$ = this.tempContentSubject.asObservable();\n\n private tempContentClosed?: Subject<void>;\n /** @internal */\n readonly enableMobile = signal(false);\n\n /** @internal */\n readonly collapsible = signal(false);\n\n private fullscreenSubject = new BehaviorSubject<boolean>(false);\n /**\n * Emits when fullscreen overlay mode is toggled.\n */\n readonly isFullscreen$ = this.fullscreenSubject.asObservable();\n\n /** Set or update displayed content. */\n setSidePanelContent(portal: Portal<any> | undefined): void {\n this.contentSubject.next(portal);\n }\n\n /** Open side panel. */\n open(): void {\n this.hideTemporaryContent();\n this.openSubject.next(true);\n }\n\n /** Close side panel. */\n close(): void {\n if (this.hideTemporaryContent()) {\n return;\n }\n this.openSubject.next(false);\n }\n\n /** Toggle side panel open/close. */\n toggle(): void {\n this.hideTemporaryContent();\n this.openSubject.next(!this.openSubject.value);\n }\n\n /** Indicate is side panel open. */\n isOpen(): boolean {\n return this.openSubject.value;\n }\n\n /** Toggle fullscreen overlay mode. */\n toggleFullscreen(): void {\n this.fullscreenSubject.next(!this.fullscreenSubject.value);\n }\n\n /** Set fullscreen overlay mode. */\n setFullscreen(fullscreen: boolean): void {\n this.fullscreenSubject.next(fullscreen);\n }\n\n /** Indicate if side panel is in fullscreen overlay mode. */\n isFullscreen(): boolean {\n return this.fullscreenSubject.value;\n }\n\n /**\n * Indicate that the side panel is open with temporary content.\n */\n isTemporaryOpen(): boolean {\n return !!this.tempContentSubject.value;\n }\n\n /** Show side panel temporary content, opening the side panel when necessary. */\n showTemporaryContent(portal: Portal<any> | undefined): Observable<void> {\n this.hideTemporaryContent();\n this.tempContentSubject.next(portal);\n\n if (portal) {\n this.tempContentClosed = new Subject();\n return this.tempContentClosed.asObservable();\n }\n return EMPTY;\n }\n\n /** Hide side panel temporary content, reverting to state before showing temporary content. */\n hideTemporaryContent(): boolean {\n if (!this.isTemporaryOpen()) {\n return false;\n }\n if (this.tempContentClosed) {\n const sub = this.tempContentClosed;\n this.tempContentClosed = undefined;\n sub.next();\n sub.complete();\n }\n this.tempContentSubject.next(undefined);\n return true;\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { CdkPortalOutlet, Portal, PortalModule } from '@angular/cdk/portal';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n DOCUMENT,\n ElementRef,\n inject,\n input,\n model,\n OnChanges,\n OnDestroy,\n OnInit,\n output,\n PLATFORM_ID,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n BOOTSTRAP_BREAKPOINTS,\n Breakpoints,\n ElementDimensions,\n ResizeObserverService\n} from '@siemens/element-ng/resize-observer';\nimport { t } from '@siemens/element-translate-ng/translate';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { SiSidePanelService } from './si-side-panel.service';\nimport { SidePanelMode, SidePanelSize } from './side-panel.model';\n\n@Component({\n selector: 'si-side-panel',\n imports: [PortalModule],\n templateUrl: './si-side-panel.component.html',\n styleUrl: './si-side-panel.component.scss',\n host: {\n class: 'si-layout-inner',\n '[class.enable-mobile]': 'enableMobile()',\n '[class.rpanel-size--regular]': 'this.size() === \"regular\"',\n '[class.rpanel-size--wide]': 'this.size() === \"wide\"',\n '[class.rpanel-size--extended]': 'this.size() === \"extended\"',\n '[class.rpanel-mode--over]': 'this.mode() === \"over\"',\n '[class.rpanel-mode--scroll]': 'isScrollMode()',\n '[class.rpanel-collapsed]': 'isCollapsed()',\n '[class.ready]': 'ready()',\n '[class.collapsible]': 'collapsible() && !this.showTempContent()',\n '[class.collapsible-temp]': 'collapsible() && this.showTempContent()',\n '[class.rpanel-hidden]': 'isHidden()',\n '[class.rpanel-fullscreen-overlay]': 'isFullscreenOverlay()',\n '[class.rpanel-resize-xs]': 'isXs()',\n '[class.rpanel-resize-sm]': 'isSm()',\n '[class.rpanel-resize-md]': 'isMd()',\n '[class.rpanel-resize-lg]': 'isLg()',\n '[class.rpanel-resize-xl]': 'isXl()',\n '[class.rpanel-resize-xxl]': 'isXxl()',\n '[class.rpanel-resize-xxxl]': 'isXxxl()'\n }\n})\nexport class SiSidePanelComponent implements OnInit, OnDestroy, OnChanges {\n /**\n * Custom breakpoint for ultra-wide screens (≥1920px)\n */\n private static readonly xxxlMinimum = 1920;\n\n /**\n * @defaultValue false\n */\n readonly collapsible = input(false, { transform: booleanAttribute });\n\n /**\n * Default state of navigation\n */\n readonly collapsed = model<boolean>();\n\n /**\n * Mode of side panel\n * (ignored below a certain width)\n *\n * @defaultValue 'over'\n */\n readonly mode = input<SidePanelMode>('over');\n\n /**\n * Size of side-panel\n *\n * @defaultValue 'regular'\n */\n readonly size = input<SidePanelSize>('regular');\n\n /**\n * Toggle icon aria-label, required for a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_SIDE_PANEL.TOGGLE:Toggle`)\n * ```\n */\n readonly toggleItemLabel = input(t(() => $localize`:@@SI_SIDE_PANEL.TOGGLE:Toggle`));\n\n /**\n * Specifies custom breakpoints to automatically switch mode.\n * The `smMinimum` specifies the breakpoint for the mobile view.\n * The `lgMinimum` specifies the breakpoint to allow scroll mode\n * (below automatically uses over mode).\n * The `xlMinimum` specifies the breakpoint to allow scroll mode\n * with wide size (below automatically uses over mode).\n */\n readonly breakpoints = input<Breakpoints>();\n\n /**\n * Enable mobile drawer for small screen sizes. Should not be used in conjunction with the vertical navbar.\n *\n * @defaultValue false\n */\n readonly enableMobile = input(false, { transform: booleanAttribute });\n\n /**\n * Emits when the panel is closed\n */\n readonly closed = output();\n\n /**\n * Emits whenever the content is resized due to opening and closing or parent resize.\n */\n readonly contentResize = output<ElementDimensions>();\n\n protected readonly isScrollMode = computed(() => this.mode() === 'scroll');\n protected readonly isXs = signal(false);\n protected readonly isSm = signal(false);\n protected readonly isMd = signal(true);\n protected readonly isLg = signal(false);\n protected readonly isXl = signal(false);\n protected readonly isXxl = signal(false);\n protected readonly isXxxl = signal(false);\n protected readonly isCollapsed = signal(false);\n protected readonly ready = signal(false);\n protected readonly isHidden = signal(false);\n protected readonly isFullscreenOverlay = signal(false);\n protected readonly showTempContent = signal(false);\n\n private readonly panelElement = viewChild.required<ElementRef>('sidePanel');\n private readonly contentElement = viewChild.required<ElementRef>('content');\n private readonly portalOutlet = viewChild.required<CdkPortalOutlet, CdkPortalOutlet>(\n 'portalOutlet',\n {\n read: CdkPortalOutlet\n }\n );\n private readonly tmpPortalOutlet = viewChild.required<CdkPortalOutlet, CdkPortalOutlet>(\n 'tmpPortalOutlet',\n {\n read: CdkPortalOutlet\n }\n );\n\n /**\n * The $rpanel-transition-duration in the style is 0.5 seconds.\n * Sending the resize event after resize need to wait until resize is done.\n */\n private readonly resizeEventDelay = 500;\n private resizeEvent = new Subject<void>();\n private openingOrClosing = false;\n private previousContentDimensions: ElementDimensions = { width: 0, height: 0 };\n private isCollapsedInternal = false; // same as the other one, except w/o timeout for animation\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n private readonly element = inject(ElementRef);\n private readonly resizeObserver = inject(ResizeObserverService);\n private readonly service = inject(SiSidePanelService);\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly document = inject(DOCUMENT);\n\n constructor() {\n this.service.isFullscreen$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(fullscreen => {\n this.isFullscreenOverlay.set(fullscreen);\n });\n\n if (this.isBrowser) {\n this.resizeEvent\n .asObservable()\n .pipe(takeUntilDestroyed(), debounceTime(this.resizeEventDelay))\n .subscribe(() => {\n this.openingOrClosing = false;\n this.emitResizeOutputs();\n this.service.setFullscreen(false);\n if (this.isCollapsedInternal && !this.collapsible()) {\n this.isHidden.set(true);\n }\n });\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.collapsed) {\n if (this.collapsed()) {\n this.service.close();\n } else {\n this.service.open();\n }\n }\n\n if (changes.enableMobile) {\n this.service.enableMobile.set(this.enableMobile());\n }\n\n if (changes.collapsible) {\n this.service.collapsible.set(this.collapsible());\n }\n }\n\n ngOnInit(): void {\n // handle initial state to avoid flicker\n const collapsed = this.collapsed() ?? !this.service.isOpen();\n this.isCollapsedInternal = collapsed;\n this.isHidden.set(collapsed);\n this.isCollapsed.set(collapsed);\n this.service.collapsible.set(this.collapsible());\n\n this.resizeObserver\n .observe(this.element.nativeElement, 100, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(dim => {\n this.setBreakpoints(dim.width, dim.height);\n if (!this.ready()) {\n // delay because the initial sizing needs to settle\n setTimeout(() => {\n this.ready.set(true);\n }, 100);\n }\n if (!this.openingOrClosing) {\n this.emitResizeOutputs();\n }\n });\n\n this.service.content$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(portal => this.attachContent(portal));\n\n this.service.tempContent$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(portal => this.attachTempContent(portal));\n\n this.service.isOpen$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(state => this.openClose(state));\n }\n\n ngOnDestroy(): void {\n this.portalOutlet().detach();\n }\n /**\n * Toggle whether the side panel is expanded or not.\n */\n toggleSidePanel(): void {\n if (this.collapsible()) {\n this.service.toggle();\n } else {\n this.service.close();\n }\n }\n\n private emitResizeOutputs(): void {\n const contentDimensions = this.getContentDimensions();\n if (\n contentDimensions.width !== this.previousContentDimensions.width ||\n contentDimensions.height !== this.previousContentDimensions.height\n ) {\n this.previousContentDimensions = contentDimensions;\n this.contentResize.emit(contentDimensions);\n }\n }\n\n private getContentDimensions(): ElementDimensions {\n if (!this.isCollapsedInternal && this.isXs()) {\n return { width: 0, height: 0 };\n }\n const rect = this.contentElement().nativeElement.getBoundingClientRect();\n return { width: rect.width, height: rect.height };\n }\n\n private setBreakpoints(width: number, height: number): void {\n if (!width && !height) {\n // element is not visible, no point in changing anything\n return;\n }\n const breakpoints = this.breakpoints() ?? BOOTSTRAP_BREAKPOINTS;\n\n this.isXs.set(width < breakpoints.smMinimum);\n this.isSm.set(width >= breakpoints.smMinimum && width < breakpoints.mdMinimum);\n this.isMd.set(width >= breakpoints.mdMinimum && width < breakpoints.lgMinimum);\n this.isLg.set(width >= breakpoints.lgMinimum && width < breakpoints.xlMinimum);\n this.isXl.set(width >= breakpoints.xlMinimum && width < breakpoints.xxlMinimum);\n this.isXxl.set(width >= breakpoints.xxlMinimum && width < SiSidePanelComponent.xxxlMinimum);\n this.isXxxl.set(width >= SiSidePanelComponent.xxxlMinimum);\n }\n\n private sendResize(): void {\n if (this.isScrollMode() || this.element.nativeElement.style.paddingRight !== '0') {\n this.openingOrClosing = true;\n this.resizeEvent.next();\n }\n }\n\n private attachContent(portal?: Portal<any>): void {\n const portalOutlet = this.portalOutlet();\n portalOutlet.detach();\n if (portal) {\n portalOutlet.attach(portal);\n }\n this.cdRef.markForCheck();\n }\n\n private attachTempContent(portal: Portal<any> | undefined): void {\n const tmpPortalOutlet = this.tmpPortalOutlet();\n tmpPortalOutlet.detach();\n if (portal) {\n tmpPortalOutlet.attach(portal);\n this.showTempContent.set(true);\n this.openClose(true, true);\n } else if (this.showTempContent()) {\n this.showTempContent.set(false);\n this.openClose(this.service.isOpen(), true);\n }\n }\n\n private openClose(open: boolean, regainFocus = false): void {\n if (open !== this.isCollapsedInternal) {\n this.moveFocusInside(open && regainFocus);\n return;\n }\n this.isCollapsedInternal = !open;\n if (open) {\n this.isHidden.set(false);\n }\n setTimeout(() => this.doOpenClose(open));\n }\n\n private doOpenClose(open: boolean): void {\n this.moveFocusInside(open);\n this.isCollapsed.set(!open);\n this.collapsed.set(this.isCollapsed());\n if (this.isCollapsedInternal) {\n this.closed.emit();\n }\n this.sendResize();\n }\n\n private moveFocusInside(open: boolean): void {\n if (\n open &&\n !this.document.activeElement?.parentElement?.classList.contains(\n 'side-panel-collapse-toggle'\n ) &&\n !this.document.activeElement?.classList.contains('side-panel-collapse-toggle')\n ) {\n // moves the keyboard focus inside the panel so that the next tab is somewhere useful\n this.panelElement().nativeElement.focus();\n queueMicrotask(() => this.panelElement().nativeElement.blur());\n }\n }\n}\n","<div #sidePanel class=\"side-panel focus-none\" tabindex=\"-1\">\n <div class=\"inner\" [class.d-none]=\"showTempContent()\">\n <ng-content select=\"si-side-panel-content, element-side-panel-content\" />\n <ng-container #portalOutlet cdkPortalOutlet />\n </div>\n <div class=\"inner\" [class.d-none]=\"!showTempContent()\">\n <ng-container #tmpPortalOutlet cdkPortalOutlet />\n </div>\n</div>\n<div #content class=\"main-content si-layout-inner\">\n <ng-content />\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n booleanAttribute,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n OnInit,\n output,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, RouterLink } from '@angular/router';\nimport { SiAccordionHCollapseService } from '@siemens/element-ng/accordion';\nimport { MenuItem as MenuItemLegacy } from '@siemens/element-ng/common';\nimport {\n ContentActionBarMainItem,\n SiContentActionBarComponent\n} from '@siemens/element-ng/content-action-bar';\nimport {\n addIcons,\n elementCancel,\n elementDoubleLeft,\n elementDoubleRight,\n SiIconComponent\n} from '@siemens/element-ng/icon';\nimport { SiLinkDirective } from '@siemens/element-ng/link';\nimport { MenuItem } from '@siemens/element-ng/menu';\nimport { BOOTSTRAP_BREAKPOINTS } from '@siemens/element-ng/resize-observer';\nimport { SiSearchBarComponent } from '@siemens/element-ng/search-bar';\nimport { SiTranslatePipe, t, TranslatableString } from '@siemens/element-translate-ng/translate';\nimport { timer } from 'rxjs';\n\nimport { SiSidePanelService } from './si-side-panel.service';\nimport { SidePanelDisplayMode, SidePanelNavigateConfig } from './side-panel.model';\n\n/**\n * An extension of MenuItem to support combined icons\n */\nexport interface StatusItem extends MenuItemLegacy {\n overlayIcon?: string;\n}\n\n@Component({\n selector: 'si-side-panel-content',\n imports: [\n SiContentActionBarComponent,\n SiIconComponent,\n SiLinkDirective,\n RouterLink,\n SiSearchBarComponent,\n SiTranslatePipe\n ],\n templateUrl: './si-side-panel-content.component.html',\n styleUrl: './si-side-panel-content.component.scss',\n providers: [SiAccordionHCollapseService],\n host: {\n '[class.collapsed]': 'isCollapsed()',\n '[class.expanded]': 'isExpanded()',\n '[class.enable-mobile]': 'enableMobile()',\n '[class.rpanel-fullscreen-overlay]': 'isFullscreen()'\n }\n})\nexport class SiSidePanelContentComponent implements OnInit {\n /**\n * @deprecated This input is no longer used. The collapsible state is managed by the SiSidePanelService.\n * This input will be removed in a future major version.\n * @defaultValue undefined\n */\n readonly collapsibleInput = input(undefined, {\n // eslint-disable-next-line @angular-eslint/no-input-rename\n alias: 'collapsible',\n transform: booleanAttribute\n });\n /**\n * Header of side panel\n *\n * @defaultValue ''\n */\n readonly heading = input<TranslatableString>('');\n\n /**\n * Input list of primary action items\n *\n * @defaultValue []\n */\n readonly primaryActions = input<(MenuItemLegacy | ContentActionBarMainItem)[]>([]);\n\n /**\n * Input list of secondary action items.\n *\n * @defaultValue []\n */\n readonly secondaryActions = input<(MenuItemLegacy | MenuItem)[]>([]);\n\n /**\n * Status icons/actions\n *\n * @defaultValue []\n */\n readonly statusActions = input<StatusItem[]>([]);\n\n /**\n * Toggles search bar\n *\n * @defaultValue false\n */\n readonly searchable = input(false, { transform: booleanAttribute });\n\n /**\n * Placeholder text for search\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_SIDE_PANEL.SEARCH_PLACEHOLDER:Search...`)\n * ```\n */\n readonly searchPlaceholder = input(\n t(() => $localize`:@@SI_SIDE_PANEL.SEARCH_PLACEHOLDER:Search...`)\n );\n\n /**\n * Aria label for close button. Needed for a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_SIDE_PANEL.CLOSE:Close`)\n * ```\n */\n readonly closeButtonLabel = input(t(() => $localize`:@@SI_SIDE_PANEL.CLOSE:Close`));\n\n /**\n * Toggle icon aria-label, required for a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_SIDE_PANEL.TOGGLE:Toggle`)\n * ```\n */\n readonly toggleItemLabel = input(t(() => $localize`:@@SI_SIDE_PANEL.TOGGLE:Toggle`));\n\n /**\n * Enter fullscreen aria-label, required for a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_SIDE_PANEL.ENTER_FULLSCREEN:Enter fullscreen`)\n * ```\n */\n readonly enterFullscreenLabel = input(\n t(() => $localize`:@@SI_SIDE_PANEL.ENTER_FULLSCREEN:Enter fullscreen`)\n );\n\n /**\n * Exit fullscreen aria-label, required for a11y\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_SIDE_PANEL.EXIT_FULLSCREEN:Exit fullscreen`)\n * ```\n */\n readonly exitFullscreenLabel = input(\n t(() => $localize`:@@SI_SIDE_PANEL.EXIT_FULLSCREEN:Exit fullscreen`)\n );\n\n /**\n * Show a badge on the mobile drawer indicating a new alert or notification\n *\n * @defaultValue false\n */\n readonly showMobileDrawerBadge = input(false, { transform: booleanAttribute });\n\n /**\n * Display mode for side panel - enables navigate or overlay functionality\n */\n readonly displayMode = input<SidePanelDisplayMode>();\n\n /**\n * Configuration for navigate mode\n */\n readonly navigateConfig = input<SidePanelNavigateConfig>();\n\n /**\n * Output for search bar input\n */\n readonly searchEvent = output<string>();\n\n protected readonly activatedRoute = inject(ActivatedRoute, { optional: true });\n protected readonly service = inject(SiSidePanelService);\n protected readonly isCollapsed = signal(false);\n protected readonly isExpanded = signal(true);\n protected readonly isFullscreen = signal(false);\n protected readonly enableMobile = computed(() => this.service?.enableMobile() ?? false);\n protected readonly collapsible = computed(() => {\n return this.collapsibleInput() ?? this.service?.collapsible() ?? false;\n });\n protected readonly mobileSize = signal(false);\n protected readonly focusable = computed(\n () => !this.mobileSize() || !this.enableMobile() || !this.isCollapsed()\n );\n protected readonly icons = addIcons({ elementCancel, elementDoubleLeft, elementDoubleRight });\n /**\n * The $rpanel-transition-duration in the style is 0.5 seconds.\n * For the animation we need to wait until the resize is done.\n */\n private readonly resizeAnimationDelay = 500;\n private readonly destroyRef = inject(DestroyRef);\n private readonly breakpointObserver = inject(BreakpointObserver);\n\n private expandedTimeout: any;\n\n constructor() {\n const accordionHcollapse = inject(SiAccordionHCollapseService);\n\n this.service.isFullscreen$.pipe(takeUntilDestroyed()).subscribe(fullscreen => {\n this.isFullscreen.set(fullscreen);\n });\n\n this.service.isOpen$.pipe(takeUntilDestroyed()).subscribe(state => {\n this.isCollapsed.set(!state);\n clearTimeout(this.expandedTimeout);\n this.expandedTimeout = undefined;\n if (!state) {\n this.isExpanded.set(false);\n } else {\n this.expandedTimeout = setTimeout(() => {\n this.isExpanded.set(true);\n }, this.resizeAnimationDelay / 2);\n }\n });\n\n effect(() => {\n if (this.collapsible()) {\n accordionHcollapse.hcollapsed.set(this.isCollapsed());\n }\n });\n\n effect(() => {\n if (this.isCollapsed() && !this.service.isTemporaryOpen() && this.isFullscreen()) {\n timer(this.resizeAnimationDelay)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.service.setFullscreen(false);\n });\n }\n });\n\n accordionHcollapse.open$.pipe(takeUntilDestroyed()).subscribe(() => this.service.open());\n }\n\n ngOnInit(): void {\n this.breakpointObserver\n .observe('(max-width: ' + BOOTSTRAP_BREAKPOINTS.smMinimum + 'px)')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(({ matches }) => {\n this.mobileSize.set(matches);\n });\n }\n\n /**\n * Toggle fullscreen overlay mode\n */\n toggleFullscreen(): void {\n if (this.isCollapsed() && !this.service.isTemporaryOpen()) {\n return;\n }\n this.service.toggleFullscreen();\n }\n\n protected toggleSidePanel(event?: MouseEvent): void {\n if (event?.detail !== 0) {\n // Blur except if triggered by keyboard\n (document?.activeElement as HTMLElement)?.blur();\n }\n if (this.service.isTemporaryOpen()) {\n this.service.hideTemporaryContent();\n } else {\n this.service.toggle();\n }\n }\n}\n","<div class=\"rpanel-header pt-5\">\n <p class=\"si-h5 my-0 ms-6 auto-hide text-truncate\">{{ heading() | translate }}</p>\n @if ((primaryActions().length || secondaryActions().length) && focusable()) {\n <si-content-action-bar\n class=\"auto-hide ms-auto\"\n viewType=\"expanded\"\n [primaryActions]=\"primaryActions()\"\n [secondaryActions]=\"secondaryActions()\"\n [toggleItemLabel]=\"toggleItemLabel()\"\n />\n }\n <div class=\"d-flex\">\n @let navigateConfig = this.navigateConfig();\n @if (displayMode() === 'navigate' && navigateConfig) {\n @if (navigateConfig.type === 'router-link') {\n <a\n class=\"btn btn-circle btn-sm btn-ghost auto-hide\"\n [class.ms-4]=\"collapsible()\"\n [class.mx-4]=\"!collapsible() || service.isTemporaryOpen()\"\n [routerLink]=\"navigateConfig.routerLink\"\n [queryParams]=\"navigateConfig.extras?.queryParams\"\n [queryParamsHandling]=\"navigateConfig.extras?.queryParamsHandling\"\n [fragment]=\"navigateConfig.extras?.fragment\"\n [state]=\"navigateConfig.extras?.state\"\n [relativeTo]=\"navigateConfig.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"navigateConfig.extras?.preserveFragment\"\n [skipLocationChange]=\"navigateConfig.extras?.skipLocationChange\"\n [replaceUrl]=\"navigateConfig.extras?.replaceUrl\"\n [attr.aria-label]=\"navigateConfig.label | translate\"\n >\n <si-icon class=\"icon\" icon=\"element-export\" />\n <span class=\"visually-hidden\">\n {{ navigateConfig.label | translate }}\n </span></a\n >\n } @else if (navigateConfig.type === 'link') {\n <a\n class=\"btn btn-circle btn-sm btn-ghost auto-hide\"\n [class.ms-4]=\"collapsible()\"\n [class.mx-4]=\"!collapsible()\"\n [href]=\"navigateConfig.href\"\n [target]=\"navigateConfig.target\"\n [attr.rel]=\"navigateConfig.target === '_blank' ? 'noopener noreferrer' : null\"\n [attr.aria-label]=\"navigateConfig.label | translate\"\n >\n <si-icon class=\"icon\" icon=\"element-export\" />\n <span class=\"visually-hidden\">\n {{ navigateConfig.label | translate }}\n </span></a\n >\n }\n }\n @if (displayMode() === 'overlay') {\n <button\n type=\"button\"\n class=\"fullscreen-button btn btn-circle btn-sm btn-ghost auto-hide\"\n [class.ms-4]=\"collapsible()\"\n [class.mx-4]=\"!collapsible() || service.isTemporaryOpen()\"\n [attr.aria-label]=\"\n (isFullscreen() ? exitFullscreenLabel() : enterFullscreenLabel()) | translate\n \"\n [tabindex]=\"focusable() ? '0' : '-1'\"\n (click)=\"toggleFullscreen()\"\n >\n <si-icon [icon]=\"isFullscreen() ? 'element-pinch' : 'element-zoom'\" />\n </button>\n }\n <button\n type=\"button\"\n class=\"close-button btn btn-circle btn-sm btn-ghost me-4\"\n [attr.aria-label]=\"closeButtonLabel() | translate\"\n [tabindex]=\"focusable() ? '0' : '-1'\"\n (click)=\"toggleSidePanel($event)\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n <div class=\"collapse-toggle\">\n <button\n type=\"button\"\n class=\"side-panel-collapse-toggle btn btn-circle btn-sm btn-ghost mx-4\"\n [attr.aria-label]=\"toggleItemLabel() | translate\"\n (click)=\"toggleSidePanel($event)\"\n >\n <si-icon\n class=\"flip-rtl\"\n [class.badge-dot]=\"showMobileDrawerBadge()\"\n [icon]=\"isCollapsed() ? icons.elementDoubleLeft : icons.elementDoubleRight\"\n />\n </button>\n </div>\n </div>\n</div>\n<div class=\"rpanel-wrapper d-flex flex-column\">\n @if (statusActions().length && focusable()) {\n <div class=\"rpanel-header rpanel-statusactions px-6\">\n @for (dp of statusActions(); track $index) {\n @if (!dp.disabled) {\n <a\n class=\"rpanel-statusaction position-relative focus-inside\"\n [attr.aria-label]=\"!isCollapsed ? '' : (dp.title | translate)\"\n [siLink]=\"dp\"\n >\n <si-icon class=\"icon\" [icon]=\"dp.icon!\" />\n @if (dp.overlayIcon) {\n <si-icon class=\"icon position-absolute\" [icon]=\"dp.overlayIcon\" />\n }\n <span class=\"ms-2 auto-hide\">{{ dp.title | translate }}</span>\n </a>\n } @else {\n <div class=\"rpanel-statusaction dot-outer\" aria-hidden=\"true\">\n <div class=\"dot text-muted text-center\">•</div>\n </div>\n }\n }\n </div>\n }\n @if (searchable() && focusable()) {\n <div class=\"nav-search px-6 auto-hide\">\n <si-search-bar\n #searchBar\n class=\"m-0\"\n colorVariant=\"base-0\"\n prohibitedCharacters=\"*?\"\n [placeholder]=\"searchPlaceholder() | translate\"\n [debounceTime]=\"400\"\n [showIcon]=\"true\"\n (searchChange)=\"searchEvent.emit($event)\"\n />\n </div>\n }\n @if (focusable()) {\n <div class=\"rpanel-content\">\n <ng-content />\n </div>\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiSidePanelContentComponent } from './si-side-panel-content.component';\nimport { SiSidePanelComponent } from './si-side-panel.component';\n\n@NgModule({\n imports: [SiSidePanelComponent, SiSidePanelContentComponent],\n exports: [SiSidePanelComponent, SiSidePanelContentComponent]\n})\nexport class SiSidePanelModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\n\nimport { NavigationExtras } from '@angular/router';\nimport { TranslatableString } from '@siemens/element-translate-ng/translate';\n\n/**\n * Side panel mode options.\n * - scroll: pushes content when side panel opens/closes,\n * - over: Opens as an overlay on existing content. Just like modal.\n */\nexport type SidePanelMode = 'scroll' | 'over';\n\n/**\n * Side panel size options.\n * - regular: 390px,\n * - wide: 500px,\n * - extended: responsive width that adapts to screen size. Full width on small/medium screens,\n * scales from 480px to 912px (max) on larger screens for optimal content display\n */\nexport type SidePanelSize = 'regular' | 'wide' | 'extended';\n\n/**\n * Side panel display mode options.\n * - navigate: allows navigation to dedicated page\n * - overlay: allows full-screen overlay toggle\n */\nexport type SidePanelDisplayMode = 'navigate' | 'overlay';\n\n/**\n * Interface representing a router link item in the side panel.\n */\nexport interface SidePanelNavigateRouterLink {\n type: 'router-link';\n /** Label that is shown to the user. */\n label: TranslatableString;\n /** Link for the angular router. Accepts the same values as {@link RouterLink}. */\n routerLink: string | any[];\n /** Navigation extras that are passed to the {@link RouterLink}. */\n extras?: NavigationExtras;\n}\n\n/**\n * Interface representing a link item in the side panel.\n */\nexport interface SidePanelNavigateLink {\n type: 'link';\n /** Label that is shown to the user. */\n label: TranslatableString;\n /** The href property of the anchor. */\n href: string;\n /** The target property of the anchor. */\n target?: string;\n}\n\n/**\n * Configuration for side panel navigation.\n */\nexport type SidePanelNavigateConfig = SidePanelNavigateRouterLink | SidePanelNavigateLink;\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-side-panel.service';\nexport * from './si-side-panel.component';\nexport * from './si-side-panel-content.component';\nexport * from './si-side-panel.module';\nexport * from './side-panel.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-translate.mjs","sources":["../../../../projects/element-ng/translate/si-translatable-keys.interface.ts","../../../../projects/element-ng/translate/si-translatable-overrides.provider.ts","../../../../projects/element-ng/translate/index.ts","../../../../projects/element-ng/translate/siemens-element-ng-translate.ts"],"sourcesContent":["/* eslint-disable */\n\n// Auto-generated file. Run 'npx update-translatable-keys' to update.\n\nexport interface SiTranslatableKeys {\n 'SI_AI_MESSAGE.SECONDARY_ACTIONS'?: string;\n 'SI_ALERT_DIALOG.OK'?: string;\n 'SI_APPLICATION_HEADER.LAUNCHPAD'?: string;\n 'SI_APPLICATION_HEADER.TOGGLE_ACTIONS'?: string;\n 'SI_APPLICATION_HEADER.TOGGLE_NAVIGATION'?: string;\n 'SI_ATTACHMENT_LIST.REMOVE_ATTACHMENT'?: string;\n 'SI_BREADCRUMB'?: string;\n 'SI_CHANGE_PASSWORD.BACK'?: string;\n 'SI_CHANGE_PASSWORD.CHANGE'?: string;\n 'SI_CHANGE_PASSWORD.CHANGE_FACTORY_PASSWORD'?: string;\n 'SI_CHANGE_PASSWORD.CHANGE_PASSWORD'?: string;\n 'SI_CHANGE_PASSWORD.CONFIRM_PASSWORD'?: string;\n 'SI_CHANGE_PASSWORD.NEW_PASSWORD'?: string;\n 'SI_CHANGE_PASSWORD.PASSWORD_POLICY'?: string;\n 'SI_CHAT_INPUT.ATTACH_FILE'?: string;\n 'SI_CHAT_INPUT.INTERRUPT'?: string;\n 'SI_CHAT_INPUT.LABEL'?: string;\n 'SI_CHAT_INPUT.PLACEHOLDER'?: string;\n 'SI_CHAT_INPUT.SECONDARY_ACTIONS'?: string;\n 'SI_CHAT_INPUT.SEND'?: string;\n 'SI_COLUMN_SELECTION_DIALOG.CANCEL'?: string;\n 'SI_COLUMN_SELECTION_DIALOG.HIDDEN'?: string;\n 'SI_COLUMN_SELECTION_DIALOG.ITEM_MOVED'?: string;\n 'SI_COLUMN_SELECTION_DIALOG.ITEM_NOT_MOVED'?: string;\n 'SI_COLUMN_SELECTION_DIALOG.LIST_ARIA_LABEL'?: string;\n 'SI_COLUMN_SELECTION_DIALOG.RENAME_INPUT_ARIA_LABEL'?: string;\n 'SI_COLUMN_SELECTION_DIALOG.RESTORE_TO_DEFAULT'?: string;\n 'SI_COLUMN_SELECTION_DIALOG.SUBMIT'?: string;\n 'SI_COLUMN_SELECTION_DIALOG.VISIBLE'?: string;\n 'SI_CONFIRMATION_DIALOG.NO'?: string;\n 'SI_CONFIRMATION_DIALOG.YES'?: string;\n 'SI_CONTENT_ACTION_BAR.TOGGLE'?: string;\n 'SI_DASHBOARD.EXPAND'?: string;\n 'SI_DASHBOARD.EXPAND_WIDGET_ACTIONS'?: string;\n 'SI_DASHBOARD.RESTORE'?: string;\n 'SI_DATEPICKER.CALENDAR_TOGGLE_BUTTON'?: string;\n 'SI_DATEPICKER.CALENDAR_WEEK_LABEL'?: string;\n 'SI_DATEPICKER.DISABLED_TIME_TEXT'?: string;\n 'SI_DATEPICKER.ENABLED_TIME_TEXT'?: string;\n 'SI_DATEPICKER.END_DATE_PLACEHOLDER'?: string;\n 'SI_DATEPICKER.END_TIME_LABEL'?: string;\n 'SI_DATEPICKER.HOURS'?: string;\n 'SI_DATEPICKER.MILLISECONDS'?: string;\n 'SI_DATEPICKER.MINUTES'?: string;\n 'SI_DATEPICKER.NEXT'?: string;\n 'SI_DATEPICKER.PERIOD'?: string;\n 'SI_DATEPICKER.PREVIOUS'?: string;\n 'SI_DATEPICKER.SECONDS'?: string;\n 'SI_DATEPICKER.START_DATE_PLACEHOLDER'?: string;\n 'SI_DATEPICKER.START_TIME_LABEL'?: string;\n 'SI_DATEPICKER.TODAY'?: string;\n 'SI_DATE_RANGE_FILTER.ADVANCED'?: string;\n 'SI_DATE_RANGE_FILTER.AFTER'?: string;\n 'SI_DATE_RANGE_FILTER.APPLY'?: string;\n 'SI_DATE_RANGE_FILTER.BEFORE'?: string;\n 'SI_DATE_RANGE_FILTER.DATE'?: string;\n 'SI_DATE_RANGE_FILTER.DATE_PLACEHOLDER'?: string;\n 'SI_DATE_RANGE_FILTER.DAYS'?: string;\n 'SI_DATE_RANGE_FILTER.FROM'?: string;\n 'SI_DATE_RANGE_FILTER.HOURS'?: string;\n 'SI_DATE_RANGE_FILTER.MINUTES'?: string;\n 'SI_DATE_RANGE_FILTER.MONTHS'?: string;\n 'SI_DATE_RANGE_FILTER.NOW'?: string;\n 'SI_DATE_RANGE_FILTER.PRESETS'?: string;\n 'SI_DATE_RANGE_FILTER.PREVIEW'?: string;\n 'SI_DATE_RANGE_FILTER.RANGE'?: string;\n 'SI_DATE_RANGE_FILTER.REF_POINT'?: string;\n 'SI_DATE_RANGE_FILTER.SEARCH'?: string;\n 'SI_DATE_RANGE_FILTER.TO'?: string;\n 'SI_DATE_RANGE_FILTER.TODAY'?: string;\n 'SI_DATE_RANGE_FILTER.UNIT'?: string;\n 'SI_DATE_RANGE_FILTER.VALUE'?: string;\n 'SI_DATE_RANGE_FILTER.WEEKS'?: string;\n 'SI_DATE_RANGE_FILTER.WITHIN'?: string;\n 'SI_DATE_RANGE_FILTER.YEARS'?: string;\n 'SI_DELETE_CONFIRMATION_DIALOG.CANCEL_BTN'?: string;\n 'SI_DELETE_CONFIRMATION_DIALOG.DELETE_BTN'?: string;\n 'SI_DELETE_CONFIRMATION_DIALOG.MESSAGE'?: string;\n 'SI_EDIT_DISCARD_DIALOG.CANCEL_BTN'?: string;\n 'SI_EDIT_DISCARD_DIALOG.DISABLE_SAVE_DISCARD_BTN'?: string;\n 'SI_EDIT_DISCARD_DIALOG.DISABLE_SAVE_MESSAGE'?: string;\n 'SI_EDIT_DISCARD_DIALOG.DISCARD_BTN'?: string;\n 'SI_EDIT_DISCARD_DIALOG.MESSAGE'?: string;\n 'SI_EDIT_DISCARD_DIALOG.SAVE_BTN'?: string;\n 'SI_ELECTRON_TITLEBAR.BACK'?: string;\n 'SI_ELECTRON_TITLEBAR.FORWARD'?: string;\n 'SI_ELECTRON_TITLEBAR.MENU'?: string;\n 'SI_EXPLICIT_LEGAL_ACKNOWLEDGE.ACCEPT'?: string;\n 'SI_EXPLICIT_LEGAL_ACKNOWLEDGE.BACK'?: string;\n 'SI_FILE_UPLOADER.ACCEPTED_FILE_TYPES'?: string;\n 'SI_FILE_UPLOADER.CANCEL'?: string;\n 'SI_FILE_UPLOADER.CLEAR'?: string;\n 'SI_FILE_UPLOADER.DROP'?: string;\n 'SI_FILE_UPLOADER.ERROR_FILE_SIZE_EXCEEDED'?: string;\n 'SI_FILE_UPLOADER.ERROR_FILE_TYPE'?: string;\n 'SI_FILE_UPLOADER.FILE_SELECT'?: string;\n 'SI_FILE_UPLOADER.MAX_FILE_REACHED'?: string;\n 'SI_FILE_UPLOADER.MAX_SIZE'?: string;\n 'SI_FILE_UPLOADER.REMOVE'?: string;\n 'SI_FILE_UPLOADER.UPLOAD'?: string;\n 'SI_FILE_UPLOADER.UPLOADING'?: string;\n 'SI_FILE_UPLOADER.UPLOAD_COMPLETED'?: string;\n 'SI_FILE_UPLOADER.UPLOAD_FAILED'?: string;\n 'SI_FILTERED_SEARCH.CLEAR'?: string;\n 'SI_FILTERED_SEARCH.ITEM_COUNT'?: string;\n 'SI_FILTERED_SEARCH.SEARCH'?: string;\n 'SI_FILTERED_SEARCH.SUBMIT_BUTTON'?: string;\n 'SI_FILTER_BAR.COLLAPSED_FILTERS_DESCRIPTION'?: string;\n 'SI_FILTER_BAR.NO_FILTERS'?: string;\n 'SI_FILTER_BAR.RESET_FILTERS'?: string;\n 'SI_FORM_CONTAINER.ERROR.DATE_FORMAT'?: string;\n 'SI_FORM_CONTAINER.ERROR.EMAIL'?: string;\n 'SI_FORM_CONTAINER.ERROR.HOURS'?: string;\n 'SI_FORM_CONTAINER.ERROR.IPV4'?: string;\n 'SI_FORM_CONTAINER.ERROR.IPV6'?: string;\n 'SI_FORM_CONTAINER.ERROR.MAX'?: string;\n 'SI_FORM_CONTAINER.ERROR.MAX_DATE'?: string;\n 'SI_FORM_CONTAINER.ERROR.MAX_LENGTH'?: string;\n 'SI_FORM_CONTAINER.ERROR.MAX_TIME'?: string;\n 'SI_FORM_CONTAINER.ERROR.MILLISECONDS'?: string;\n 'SI_FORM_CONTAINER.ERROR.MIN'?: string;\n 'SI_FORM_CONTAINER.ERROR.MINUTES'?: string;\n 'SI_FORM_CONTAINER.ERROR.MIN_DATE'?: string;\n 'SI_FORM_CONTAINER.ERROR.MIN_LENGTH'?: string;\n 'SI_FORM_CONTAINER.ERROR.MIN_TIME'?: string;\n 'SI_FORM_CONTAINER.ERROR.NUMBER_FORMAT'?: string;\n 'SI_FORM_CONTAINER.ERROR.PATTERN'?: string;\n 'SI_FORM_CONTAINER.ERROR.REQUIRED'?: string;\n 'SI_FORM_CONTAINER.ERROR.REQUIRED_TRUE'?: string;\n 'SI_FORM_CONTAINER.ERROR.SECONDS'?: string;\n 'SI_ICON_STATUS.CAUTION'?: string;\n 'SI_ICON_STATUS.CRITICAL'?: string;\n 'SI_ICON_STATUS.DANGER'?: string;\n 'SI_ICON_STATUS.INFO'?: string;\n 'SI_ICON_STATUS.PENDING'?: string;\n 'SI_ICON_STATUS.PROGRESS'?: string;\n 'SI_ICON_STATUS.SUCCESS'?: string;\n 'SI_ICON_STATUS.UNKNOWN'?: string;\n 'SI_ICON_STATUS.WARNING'?: string;\n 'SI_LANGUAGE_SWITCHER.LABEL'?: string;\n 'SI_LAUNCHPAD.CLOSE'?: string;\n 'SI_LAUNCHPAD.DEFAULT_CATEGORY_TITLE'?: string;\n 'SI_LAUNCHPAD.FAVORITE_APPS'?: string;\n 'SI_LAUNCHPAD.SHOW_LESS'?: string;\n 'SI_LAUNCHPAD.SHOW_MORE'?: string;\n 'SI_LAUNCHPAD.SUBTITLE'?: string;\n 'SI_LAUNCHPAD.SUB_TITLE'?: string;\n 'SI_LAUNCHPAD.TITLE'?: string;\n 'SI_LIST_DETAILS.BACK'?: string;\n 'SI_LIST_WIDGET.SEARCH_PLACEHOLDER'?: string;\n 'SI_LIST_WIDGET.SORT_ASCENDING'?: string;\n 'SI_LIST_WIDGET.SORT_DESCENDING'?: string;\n 'SI_LOADING_SPINNER.LABEL'?: string;\n 'SI_LOGIN_BASIC.BACK'?: string;\n 'SI_LOGIN_BASIC.LOGIN'?: string;\n 'SI_LOGIN_BASIC.NEXT'?: string;\n 'SI_LOGIN_BASIC.PASSWORD'?: string;\n 'SI_LOGIN_BASIC.REGISTER_NOW_INTRO'?: string;\n 'SI_LOGIN_BASIC.USERNAME'?: string;\n 'SI_LOGIN_SINGLE-SIGN-ON.LOGIN_SIGN_UP'?: string;\n 'SI_MAIN_DETAIL_CONTAINER.BACK'?: string;\n 'SI_NAVBAR.OPEN_LAUNCHPAD'?: string;\n 'SI_NAVBAR.TOGGLE_NAVIGATION'?: string;\n 'SI_NAVBAR_VERTICAL.COLLAPSE'?: string;\n 'SI_NAVBAR_VERTICAL.EXPAND'?: string;\n 'SI_NAVBAR_VERTICAL.SEARCH_PLACEHOLDER'?: string;\n 'SI_NAVBAR_VERTICAL.SKIP_LINK.MAIN_LABEL'?: string;\n 'SI_NAVBAR_VERTICAL.SKIP_LINK.NAVIGATION_LABEL'?: string;\n 'SI_PAGINATION.BACK'?: string;\n 'SI_PAGINATION.FORWARD'?: string;\n 'SI_PAGINATION.NAV_LABEL'?: string;\n 'SI_PASSWORD_TOGGLE.HIDE'?: string;\n 'SI_PASSWORD_TOGGLE.SHOW'?: string;\n 'SI_PHONE_NUMBER_INPUT.PHONE_NUMBER_INPUT_LABEL'?: string;\n 'SI_PHONE_NUMBER_INPUT.SEARCH_NO-RESULTS_FOUND'?: string;\n 'SI_PHONE_NUMBER_INPUT.SEARCH_PLACEHOLDER'?: string;\n 'SI_PHONE_NUMBER_INPUT.SELECT_COUNTRY'?: string;\n 'SI_PHOTO_UPLOAD.APPLY_PHOTO'?: string;\n 'SI_PHOTO_UPLOAD.CANCEL'?: string;\n 'SI_PHOTO_UPLOAD.CHANGE_PHOTO'?: string;\n 'SI_PHOTO_UPLOAD.CROPPER_FRAME_LABEL'?: string;\n 'SI_PHOTO_UPLOAD.ERROR_FILE_SIZE_EXCEEDED'?: string;\n 'SI_PHOTO_UPLOAD.ERROR_FILE_TYPE'?: string;\n 'SI_PHOTO_UPLOAD.MODAL_TITLE'?: string;\n 'SI_PHOTO_UPLOAD.REMOVE'?: string;\n 'SI_PHOTO_UPLOAD.UPLOAD_PHOTO'?: string;\n 'SI_PILLS_INPUT.INPUT_ELEMENT_ARIA_LABEL'?: string;\n 'SI_PROGRESSBAR.LABEL'?: string;\n 'SI_SEARCH_BAR.CLEAR_BUTTON'?: string;\n 'SI_SELECT.NO-RESULTS-FOUND'?: string;\n 'SI_SELECT.SEARCH-PLACEHOLDER'?: string;\n 'SI_SIDE_PANEL.CLOSE'?: string;\n 'SI_SIDE_PANEL.ENTER_FULLSCREEN'?: string;\n 'SI_SIDE_PANEL.EXIT_FULLSCREEN'?: string;\n 'SI_SIDE_PANEL.SEARCH_PLACEHOLDER'?: string;\n 'SI_SIDE_PANEL.TOGGLE'?: string;\n 'SI_SKIP_LINKS.JUMP_TO'?: string;\n 'SI_SLIDER.DECREMENT'?: string;\n 'SI_SLIDER.INCREMENT'?: string;\n 'SI_SLIDER.LABEL'?: string;\n 'SI_SORT_BAR.TITLE'?: string;\n 'SI_STATUS_BAR.ALL_OK'?: string;\n 'SI_STATUS_BAR.COLLAPSE'?: string;\n 'SI_STATUS_BAR.EXPAND'?: string;\n 'SI_STATUS_BAR.MUTE'?: string;\n 'SI_THRESHOLD.ADD'?: string;\n 'SI_THRESHOLD.DELETE'?: string;\n 'SI_THRESHOLD.INPUT_LABEL'?: string;\n 'SI_THRESHOLD.STATUS'?: string;\n 'SI_TOAST.CLOSE'?: string;\n 'SI_TOUR.BACK'?: string;\n 'SI_TOUR.CLOSE'?: string;\n 'SI_TOUR.DONE'?: string;\n 'SI_TOUR.NEXT'?: string;\n 'SI_TOUR.PROGRESS'?: string;\n 'SI_TOUR.SKIP'?: string;\n 'SI_TREE_VIEW.COLLAPSE_ALL'?: string;\n 'SI_TREE_VIEW.EXPAND_ALL'?: string;\n 'SI_TYPEAHEAD.AUTOCOMPLETE_LIST_LABEL'?: string;\n 'SI_USER_MESSAGE.SECONDARY_ACTIONS'?: string;\n 'SI_WIZARD.BACK'?: string;\n 'SI_WIZARD.CANCEL'?: string;\n 'SI_WIZARD.COMPLETED'?: string;\n 'SI_WIZARD.NEXT'?: string;\n 'SI_WIZARD.SAVE'?: string;\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Provider } from '@angular/core';\nimport { SI_TRANSLATABLE_VALUES } from '@siemens/element-translate-ng/translate';\n\nimport { SiTranslatableKeys } from './si-translatable-keys.interface';\n\nexport const provideSiTranslatableOverrides: (values: SiTranslatableKeys) => Provider = values => ({\n useValue: values,\n multi: true,\n provide: SI_TRANSLATABLE_VALUES\n});\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-translatable-keys.interface';\nexport * from './si-translatable-overrides.provider';\n// @deprecated use @simpl-labs/element-translate-ng/translate directly\nexport * from '@siemens/element-translate-ng/translate';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAAA;;MCSa,8BAA8B,GAA6C,MAAM,KAAK;AACjG,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,OAAO,EAAE;AACV,CAAA;;ACbD;;;AAGG;;ACHH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-translate.mjs","sources":["../../../../projects/element-ng/translate/si-translatable-keys.interface.ts","../../../../projects/element-ng/translate/si-translatable-overrides.provider.ts","../../../../projects/element-ng/translate/index.ts","../../../../projects/element-ng/translate/siemens-element-ng-translate.ts"],"sourcesContent":["/* eslint-disable */\n\n// Auto-generated file. Run 'npx update-translatable-keys' to update.\n\nexport interface SiTranslatableKeys {\n 'SI_AI_MESSAGE.SECONDARY_ACTIONS'?: string;\n 'SI_ALERT_DIALOG.OK'?: string;\n 'SI_APPLICATION_HEADER.LAUNCHPAD'?: string;\n 'SI_APPLICATION_HEADER.TOGGLE_ACTIONS'?: string;\n 'SI_APPLICATION_HEADER.TOGGLE_NAVIGATION'?: string;\n 'SI_ATTACHMENT_LIST.REMOVE_ATTACHMENT'?: string;\n 'SI_BREADCRUMB'?: string;\n 'SI_CHANGE_PASSWORD.BACK'?: string;\n 'SI_CHANGE_PASSWORD.CHANGE'?: string;\n 'SI_CHANGE_PASSWORD.CHANGE_FACTORY_PASSWORD'?: string;\n 'SI_CHANGE_PASSWORD.CHANGE_PASSWORD'?: string;\n 'SI_CHANGE_PASSWORD.CONFIRM_PASSWORD'?: string;\n 'SI_CHANGE_PASSWORD.NEW_PASSWORD'?: string;\n 'SI_CHANGE_PASSWORD.PASSWORD_POLICY'?: string;\n 'SI_CHAT_INPUT.ATTACH_FILE'?: string;\n 'SI_CHAT_INPUT.INTERRUPT'?: string;\n 'SI_CHAT_INPUT.LABEL'?: string;\n 'SI_CHAT_INPUT.PLACEHOLDER'?: string;\n 'SI_CHAT_INPUT.SECONDARY_ACTIONS'?: string;\n 'SI_CHAT_INPUT.SEND'?: string;\n 'SI_COLUMN_SELECTION_DIALOG.CANCEL'?: string;\n 'SI_COLUMN_SELECTION_DIALOG.HIDDEN'?: string;\n 'SI_COLUMN_SELECTION_DIALOG.ITEM_MOVED'?: string;\n 'SI_COLUMN_SELECTION_DIALOG.ITEM_NOT_MOVED'?: string;\n 'SI_COLUMN_SELECTION_DIALOG.LIST_ARIA_LABEL'?: string;\n 'SI_COLUMN_SELECTION_DIALOG.RENAME_INPUT_ARIA_LABEL'?: string;\n 'SI_COLUMN_SELECTION_DIALOG.RESTORE_TO_DEFAULT'?: string;\n 'SI_COLUMN_SELECTION_DIALOG.SUBMIT'?: string;\n 'SI_COLUMN_SELECTION_DIALOG.VISIBLE'?: string;\n 'SI_CONFIRMATION_DIALOG.NO'?: string;\n 'SI_CONFIRMATION_DIALOG.YES'?: string;\n 'SI_CONTENT_ACTION_BAR.TOGGLE'?: string;\n 'SI_DASHBOARD.EXPAND'?: string;\n 'SI_DASHBOARD.EXPAND_WIDGET_ACTIONS'?: string;\n 'SI_DASHBOARD.RESTORE'?: string;\n 'SI_DATEPICKER.CALENDAR_TOGGLE_BUTTON'?: string;\n 'SI_DATEPICKER.CALENDAR_WEEK_LABEL'?: string;\n 'SI_DATEPICKER.DISABLED_TIME_TEXT'?: string;\n 'SI_DATEPICKER.ENABLED_TIME_TEXT'?: string;\n 'SI_DATEPICKER.END_DATE_PLACEHOLDER'?: string;\n 'SI_DATEPICKER.END_TIME_LABEL'?: string;\n 'SI_DATEPICKER.HOURS'?: string;\n 'SI_DATEPICKER.MILLISECONDS'?: string;\n 'SI_DATEPICKER.MINUTES'?: string;\n 'SI_DATEPICKER.NEXT'?: string;\n 'SI_DATEPICKER.PERIOD'?: string;\n 'SI_DATEPICKER.PREVIOUS'?: string;\n 'SI_DATEPICKER.SECONDS'?: string;\n 'SI_DATEPICKER.START_DATE_PLACEHOLDER'?: string;\n 'SI_DATEPICKER.START_TIME_LABEL'?: string;\n 'SI_DATEPICKER.TODAY'?: string;\n 'SI_DATE_RANGE_FILTER.ADVANCED'?: string;\n 'SI_DATE_RANGE_FILTER.AFTER'?: string;\n 'SI_DATE_RANGE_FILTER.APPLY'?: string;\n 'SI_DATE_RANGE_FILTER.BEFORE'?: string;\n 'SI_DATE_RANGE_FILTER.DATE'?: string;\n 'SI_DATE_RANGE_FILTER.DATE_PLACEHOLDER'?: string;\n 'SI_DATE_RANGE_FILTER.DAYS'?: string;\n 'SI_DATE_RANGE_FILTER.FROM'?: string;\n 'SI_DATE_RANGE_FILTER.HOURS'?: string;\n 'SI_DATE_RANGE_FILTER.MINUTES'?: string;\n 'SI_DATE_RANGE_FILTER.MONTHS'?: string;\n 'SI_DATE_RANGE_FILTER.NOW'?: string;\n 'SI_DATE_RANGE_FILTER.PRESETS'?: string;\n 'SI_DATE_RANGE_FILTER.PREVIEW'?: string;\n 'SI_DATE_RANGE_FILTER.RANGE'?: string;\n 'SI_DATE_RANGE_FILTER.REF_POINT'?: string;\n 'SI_DATE_RANGE_FILTER.SEARCH'?: string;\n 'SI_DATE_RANGE_FILTER.TO'?: string;\n 'SI_DATE_RANGE_FILTER.TODAY'?: string;\n 'SI_DATE_RANGE_FILTER.UNIT'?: string;\n 'SI_DATE_RANGE_FILTER.VALUE'?: string;\n 'SI_DATE_RANGE_FILTER.WEEKS'?: string;\n 'SI_DATE_RANGE_FILTER.WITHIN'?: string;\n 'SI_DATE_RANGE_FILTER.YEARS'?: string;\n 'SI_DELETE_CONFIRMATION_DIALOG.CANCEL_BTN'?: string;\n 'SI_DELETE_CONFIRMATION_DIALOG.DELETE_BTN'?: string;\n 'SI_DELETE_CONFIRMATION_DIALOG.MESSAGE'?: string;\n 'SI_EDIT_DISCARD_DIALOG.CANCEL_BTN'?: string;\n 'SI_EDIT_DISCARD_DIALOG.DISABLE_SAVE_DISCARD_BTN'?: string;\n 'SI_EDIT_DISCARD_DIALOG.DISABLE_SAVE_MESSAGE'?: string;\n 'SI_EDIT_DISCARD_DIALOG.DISCARD_BTN'?: string;\n 'SI_EDIT_DISCARD_DIALOG.MESSAGE'?: string;\n 'SI_EDIT_DISCARD_DIALOG.SAVE_BTN'?: string;\n 'SI_ELECTRON_TITLEBAR.BACK'?: string;\n 'SI_ELECTRON_TITLEBAR.FORWARD'?: string;\n 'SI_ELECTRON_TITLEBAR.MENU'?: string;\n 'SI_EXPLICIT_LEGAL_ACKNOWLEDGE.ACCEPT'?: string;\n 'SI_EXPLICIT_LEGAL_ACKNOWLEDGE.BACK'?: string;\n 'SI_FILE_UPLOADER.ACCEPTED_FILE_TYPES'?: string;\n 'SI_FILE_UPLOADER.CANCEL'?: string;\n 'SI_FILE_UPLOADER.CLEAR'?: string;\n 'SI_FILE_UPLOADER.DROP'?: string;\n 'SI_FILE_UPLOADER.ERROR_FILE_SIZE_EXCEEDED'?: string;\n 'SI_FILE_UPLOADER.ERROR_FILE_TYPE'?: string;\n 'SI_FILE_UPLOADER.FILE_SELECT'?: string;\n 'SI_FILE_UPLOADER.MAX_FILE_REACHED'?: string;\n 'SI_FILE_UPLOADER.MAX_SIZE'?: string;\n 'SI_FILE_UPLOADER.REMOVE'?: string;\n 'SI_FILE_UPLOADER.UPLOAD'?: string;\n 'SI_FILE_UPLOADER.UPLOADING'?: string;\n 'SI_FILE_UPLOADER.UPLOAD_COMPLETED'?: string;\n 'SI_FILE_UPLOADER.UPLOAD_FAILED'?: string;\n 'SI_FILTERED_SEARCH.CLEAR'?: string;\n 'SI_FILTERED_SEARCH.ITEM_COUNT'?: string;\n 'SI_FILTERED_SEARCH.SEARCH'?: string;\n 'SI_FILTERED_SEARCH.SEARCH_FOR_FREE_TEXT'?: string;\n 'SI_FILTERED_SEARCH.SUBMIT_BUTTON'?: string;\n 'SI_FILTER_BAR.COLLAPSED_FILTERS_DESCRIPTION'?: string;\n 'SI_FILTER_BAR.NO_FILTERS'?: string;\n 'SI_FILTER_BAR.RESET_FILTERS'?: string;\n 'SI_FORM_CONTAINER.ERROR.DATE_FORMAT'?: string;\n 'SI_FORM_CONTAINER.ERROR.EMAIL'?: string;\n 'SI_FORM_CONTAINER.ERROR.HOURS'?: string;\n 'SI_FORM_CONTAINER.ERROR.IPV4'?: string;\n 'SI_FORM_CONTAINER.ERROR.IPV6'?: string;\n 'SI_FORM_CONTAINER.ERROR.MAX'?: string;\n 'SI_FORM_CONTAINER.ERROR.MAX_DATE'?: string;\n 'SI_FORM_CONTAINER.ERROR.MAX_LENGTH'?: string;\n 'SI_FORM_CONTAINER.ERROR.MAX_TIME'?: string;\n 'SI_FORM_CONTAINER.ERROR.MILLISECONDS'?: string;\n 'SI_FORM_CONTAINER.ERROR.MIN'?: string;\n 'SI_FORM_CONTAINER.ERROR.MINUTES'?: string;\n 'SI_FORM_CONTAINER.ERROR.MIN_DATE'?: string;\n 'SI_FORM_CONTAINER.ERROR.MIN_LENGTH'?: string;\n 'SI_FORM_CONTAINER.ERROR.MIN_TIME'?: string;\n 'SI_FORM_CONTAINER.ERROR.NUMBER_FORMAT'?: string;\n 'SI_FORM_CONTAINER.ERROR.PATTERN'?: string;\n 'SI_FORM_CONTAINER.ERROR.REQUIRED'?: string;\n 'SI_FORM_CONTAINER.ERROR.REQUIRED_TRUE'?: string;\n 'SI_FORM_CONTAINER.ERROR.SECONDS'?: string;\n 'SI_ICON_STATUS.CAUTION'?: string;\n 'SI_ICON_STATUS.CRITICAL'?: string;\n 'SI_ICON_STATUS.DANGER'?: string;\n 'SI_ICON_STATUS.INFO'?: string;\n 'SI_ICON_STATUS.PENDING'?: string;\n 'SI_ICON_STATUS.PROGRESS'?: string;\n 'SI_ICON_STATUS.SUCCESS'?: string;\n 'SI_ICON_STATUS.UNKNOWN'?: string;\n 'SI_ICON_STATUS.WARNING'?: string;\n 'SI_LANGUAGE_SWITCHER.LABEL'?: string;\n 'SI_LAUNCHPAD.CLOSE'?: string;\n 'SI_LAUNCHPAD.DEFAULT_CATEGORY_TITLE'?: string;\n 'SI_LAUNCHPAD.FAVORITE_APPS'?: string;\n 'SI_LAUNCHPAD.SHOW_LESS'?: string;\n 'SI_LAUNCHPAD.SHOW_MORE'?: string;\n 'SI_LAUNCHPAD.SUBTITLE'?: string;\n 'SI_LAUNCHPAD.SUB_TITLE'?: string;\n 'SI_LAUNCHPAD.TITLE'?: string;\n 'SI_LIST_DETAILS.BACK'?: string;\n 'SI_LIST_WIDGET.SEARCH_PLACEHOLDER'?: string;\n 'SI_LIST_WIDGET.SORT_ASCENDING'?: string;\n 'SI_LIST_WIDGET.SORT_DESCENDING'?: string;\n 'SI_LOADING_SPINNER.LABEL'?: string;\n 'SI_LOGIN_BASIC.BACK'?: string;\n 'SI_LOGIN_BASIC.LOGIN'?: string;\n 'SI_LOGIN_BASIC.NEXT'?: string;\n 'SI_LOGIN_BASIC.PASSWORD'?: string;\n 'SI_LOGIN_BASIC.REGISTER_NOW_INTRO'?: string;\n 'SI_LOGIN_BASIC.USERNAME'?: string;\n 'SI_LOGIN_SINGLE-SIGN-ON.LOGIN_SIGN_UP'?: string;\n 'SI_MAIN_DETAIL_CONTAINER.BACK'?: string;\n 'SI_NAVBAR.OPEN_LAUNCHPAD'?: string;\n 'SI_NAVBAR.TOGGLE_NAVIGATION'?: string;\n 'SI_NAVBAR_VERTICAL.COLLAPSE'?: string;\n 'SI_NAVBAR_VERTICAL.EXPAND'?: string;\n 'SI_NAVBAR_VERTICAL.SEARCH_PLACEHOLDER'?: string;\n 'SI_NAVBAR_VERTICAL.SKIP_LINK.MAIN_LABEL'?: string;\n 'SI_NAVBAR_VERTICAL.SKIP_LINK.NAVIGATION_LABEL'?: string;\n 'SI_PAGINATION.BACK'?: string;\n 'SI_PAGINATION.FORWARD'?: string;\n 'SI_PAGINATION.NAV_LABEL'?: string;\n 'SI_PASSWORD_TOGGLE.HIDE'?: string;\n 'SI_PASSWORD_TOGGLE.SHOW'?: string;\n 'SI_PHONE_NUMBER_INPUT.PHONE_NUMBER_INPUT_LABEL'?: string;\n 'SI_PHONE_NUMBER_INPUT.SEARCH_NO-RESULTS_FOUND'?: string;\n 'SI_PHONE_NUMBER_INPUT.SEARCH_PLACEHOLDER'?: string;\n 'SI_PHONE_NUMBER_INPUT.SELECT_COUNTRY'?: string;\n 'SI_PHOTO_UPLOAD.APPLY_PHOTO'?: string;\n 'SI_PHOTO_UPLOAD.CANCEL'?: string;\n 'SI_PHOTO_UPLOAD.CHANGE_PHOTO'?: string;\n 'SI_PHOTO_UPLOAD.CROPPER_FRAME_LABEL'?: string;\n 'SI_PHOTO_UPLOAD.ERROR_FILE_SIZE_EXCEEDED'?: string;\n 'SI_PHOTO_UPLOAD.ERROR_FILE_TYPE'?: string;\n 'SI_PHOTO_UPLOAD.MODAL_TITLE'?: string;\n 'SI_PHOTO_UPLOAD.REMOVE'?: string;\n 'SI_PHOTO_UPLOAD.UPLOAD_PHOTO'?: string;\n 'SI_PILLS_INPUT.INPUT_ELEMENT_ARIA_LABEL'?: string;\n 'SI_PROGRESSBAR.LABEL'?: string;\n 'SI_SEARCH_BAR.CLEAR_BUTTON'?: string;\n 'SI_SELECT.NO-RESULTS-FOUND'?: string;\n 'SI_SELECT.SEARCH-PLACEHOLDER'?: string;\n 'SI_SIDE_PANEL.CLOSE'?: string;\n 'SI_SIDE_PANEL.ENTER_FULLSCREEN'?: string;\n 'SI_SIDE_PANEL.EXIT_FULLSCREEN'?: string;\n 'SI_SIDE_PANEL.SEARCH_PLACEHOLDER'?: string;\n 'SI_SIDE_PANEL.TOGGLE'?: string;\n 'SI_SKIP_LINKS.JUMP_TO'?: string;\n 'SI_SLIDER.DECREMENT'?: string;\n 'SI_SLIDER.INCREMENT'?: string;\n 'SI_SLIDER.LABEL'?: string;\n 'SI_SORT_BAR.TITLE'?: string;\n 'SI_STATUS_BAR.ALL_OK'?: string;\n 'SI_STATUS_BAR.COLLAPSE'?: string;\n 'SI_STATUS_BAR.EXPAND'?: string;\n 'SI_STATUS_BAR.MUTE'?: string;\n 'SI_THRESHOLD.ADD'?: string;\n 'SI_THRESHOLD.DELETE'?: string;\n 'SI_THRESHOLD.INPUT_LABEL'?: string;\n 'SI_THRESHOLD.STATUS'?: string;\n 'SI_TOAST.CLOSE'?: string;\n 'SI_TOUR.BACK'?: string;\n 'SI_TOUR.CLOSE'?: string;\n 'SI_TOUR.DONE'?: string;\n 'SI_TOUR.NEXT'?: string;\n 'SI_TOUR.PROGRESS'?: string;\n 'SI_TOUR.SKIP'?: string;\n 'SI_TREE_VIEW.COLLAPSE_ALL'?: string;\n 'SI_TREE_VIEW.EXPAND_ALL'?: string;\n 'SI_TYPEAHEAD.AUTOCOMPLETE_LIST_LABEL'?: string;\n 'SI_USER_MESSAGE.SECONDARY_ACTIONS'?: string;\n 'SI_WIZARD.BACK'?: string;\n 'SI_WIZARD.CANCEL'?: string;\n 'SI_WIZARD.COMPLETED'?: string;\n 'SI_WIZARD.NEXT'?: string;\n 'SI_WIZARD.SAVE'?: string;\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Provider } from '@angular/core';\nimport { SI_TRANSLATABLE_VALUES } from '@siemens/element-translate-ng/translate';\n\nimport { SiTranslatableKeys } from './si-translatable-keys.interface';\n\nexport const provideSiTranslatableOverrides: (values: SiTranslatableKeys) => Provider = values => ({\n useValue: values,\n multi: true,\n provide: SI_TRANSLATABLE_VALUES\n});\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-translatable-keys.interface';\nexport * from './si-translatable-overrides.provider';\n// @deprecated use @simpl-labs/element-translate-ng/translate directly\nexport * from '@siemens/element-translate-ng/translate';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAAA;;MCSa,8BAA8B,GAA6C,MAAM,KAAK;AACjG,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,OAAO,EAAE;AACV,CAAA;;ACbD;;;AAGG;;ACHH;;AAEG;;;;"}
|