@softheon/armature 21.2.0 → 21.2.2
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/assets/styles/material-override/_tooltip.scss +4 -4
- package/b2b/README.md +255 -0
- package/fesm2022/softheon-armature-b2b.mjs +1198 -0
- package/fesm2022/softheon-armature-b2b.mjs.map +1 -0
- package/fesm2022/softheon-armature.mjs +36 -7
- package/fesm2022/softheon-armature.mjs.map +1 -1
- package/package.json +10 -2
- package/types/softheon-armature-b2b.d.ts +584 -0
- package/types/softheon-armature.d.ts +13 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"softheon-armature-b2b.mjs","sources":["../../../../projects/armature/b2b/src/json-editor/utils/json-path.utils.ts","../../../../projects/armature/b2b/src/json-editor/utils/json-tree.utils.ts","../../../../projects/armature/b2b/src/json-editor/utils/json-filter.utils.ts","../../../../projects/armature/b2b/src/json-editor/utils/json-editor.utils.ts","../../../../projects/armature/b2b/src/json-editor/utils/json-schema.utils.ts","../../../../projects/armature/b2b/src/json-editor/sof-b2b-json-node/sof-b2b-json-node.component.ts","../../../../projects/armature/b2b/src/json-editor/sof-b2b-json-node/sof-b2b-json-node.component.html","../../../../projects/armature/b2b/src/json-editor/sof-b2b-json-editor/sof-b2b-json-editor.component.ts","../../../../projects/armature/b2b/src/json-editor/sof-b2b-json-editor/sof-b2b-json-editor.component.html","../../../../projects/armature/b2b/src/b2b.module.ts","../../../../projects/armature/b2b/src/json-editor/json-editor-api.ts","../../../../projects/armature/b2b/public-api.ts","../../../../projects/armature/b2b/softheon-armature-b2b.ts"],"sourcesContent":["/**\r\n * @fileoverview Path parsing, flatten/unflatten, and normalization utilities.\r\n *\r\n * Converts between nested JSON objects and flat JsonEntry[] arrays using\r\n * dot-notation and bracket-notation path strings.\r\n *\r\n * All functions are stateless and side-effect free.\r\n * No Angular dependencies — fully unit-testable in isolation.\r\n *\r\n * Round-trip guarantee: unflattenJson(flattenJson(data)) deep-equals data\r\n */\r\n\r\nimport { JsonEntry, JsonObject, JsonValue } from './json-editor.models';\r\n\r\n// ── Constants ─────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Keys requiring bracket notation in path strings.\r\n * Catches spaces, hyphens, brackets, dots, and quotes —\r\n * any character that would break standard dot-notation parsing.\r\n *\r\n * Examples that need brackets:\r\n * \"Discount Amount\" → [\"Discount Amount\"]\r\n * \"Corrected1095-B\" → [\"Corrected1095-B\"]\r\n * \"some.nested.key\" → [\"some.nested.key\"]\r\n */\r\nconst NEEDS_BRACKETS_REGEX = /[\\s\\-\\[\\].\"']/;\r\n\r\n// ── Path parsing ──────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Parses a path string into an array of typed segments.\r\n *\r\n * Handles:\r\n * \"a.b.c\" → ['a', 'b', 'c']\r\n * \"a.b[0].c\" → ['a', 'b', 0, 'c']\r\n * '[\"Discount Amount\"]' → ['Discount Amount']\r\n * 'a[\"Corrected1095-B\"].val' → ['a', 'Corrected1095-B', 'val']\r\n *\r\n * Three capture groups:\r\n * 1 — plain key segment: word chars only (no dots, brackets, quotes)\r\n * 2 — numeric array index: [0], [1], [42]\r\n * 3 — quoted bracket key: [\"any string here\"]\r\n */\r\nexport function parsePath(path: string): (string | number)[] {\r\n const segments: (string | number)[] = [];\r\n const regex = /([^.[\\]\"]+)|(?:\\[(\\d+)\\])|(?:\\[\"([^\"]+)\"\\])/g;\r\n let match: RegExpExecArray | null;\r\n\r\n while ((match = regex.exec(path)) !== null) {\r\n if (match[1] !== undefined) segments.push(match[1]);\r\n else if (match[2] !== undefined) segments.push(Number(match[2]));\r\n else if (match[3] !== undefined) segments.push(match[3]);\r\n }\r\n\r\n return segments;\r\n}\r\n\r\n// ── Flatten ───────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Flattens a nested object into JsonEntry[] using path notation.\r\n * Objects use dot notation: billing.amount\r\n * Arrays use bracket notation: items[0].name\r\n * Special keys use quoted brackets: [\"Discount Amount\"], [\"Corrected1095-B\"]\r\n *\r\n * Preserves: null, [], {}\r\n * Guarantees: unflattenJson(flattenJson(data)) deep-equals data\r\n *\r\n * @param obj The raw nested JSON object to flatten\r\n * @param prefix Optional path prefix — used internally for recursion\r\n */\r\nexport function flattenJson(obj: JsonValue, prefix = ''): JsonEntry[] {\r\n const entries: JsonEntry[] = [];\r\n\r\n function walk(current: JsonValue | undefined, path: string): void {\r\n if (current === undefined) {\r\n // undefined is not valid JSON — skip silently\r\n // consumers should normalize undefined to null before passing data in\r\n return;\r\n }\r\n\r\n // Preserve null as a leaf value\r\n if (current === null) {\r\n entries.push({ key: path, value: null });\r\n return;\r\n }\r\n\r\n // Preserve empty array as a leaf — no children to recurse into\r\n // Skip at root level (path === '') since there are no entries to produce\r\n if (Array.isArray(current) && current.length === 0) {\r\n if (path) entries.push({ key: path, value: [] });\r\n return;\r\n }\r\n\r\n // Preserve empty object as a leaf — no children to recurse into\r\n // Skip at root level (path === '') since there are no entries to produce\r\n if (typeof current === 'object' && !Array.isArray(current) && Object.keys(current).length === 0) {\r\n if (path) entries.push({ key: path, value: {} });\r\n return;\r\n }\r\n\r\n // Recurse into array — each item becomes path[i]\r\n if (Array.isArray(current)) {\r\n current.forEach((item, i) => {\r\n walk(item, `${path}[${i}]`);\r\n });\r\n return;\r\n }\r\n\r\n // Recurse into object — each key becomes path.key or path[\"key\"]\r\n if (typeof current === 'object') {\r\n Object.entries(current).forEach(([key, val]) => {\r\n const needsBrackets = NEEDS_BRACKETS_REGEX.test(key);\r\n const segment = needsBrackets ? `[\"${key}\"]` : `.${key}`;\r\n walk(val, path ? `${path}${segment}` : key);\r\n });\r\n return;\r\n }\r\n\r\n // Scalar leaf — string, number, boolean\r\n entries.push({ key: path, value: current });\r\n }\r\n\r\n walk(obj, prefix);\r\n return entries;\r\n}\r\n\r\n// ── Unflatten ─────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Reconstructs a nested object from JsonEntry[].\r\n * Parses both dot notation and bracket notation paths.\r\n *\r\n * Inverse of flattenJson — guarantees round-trip fidelity.\r\n *\r\n * @param entries Flat JsonEntry[] produced by flattenJson()\r\n */\r\nexport function unflattenJson(entries: JsonEntry[]): JsonObject {\r\n const root: JsonObject = {};\r\n for (const entry of entries) {\r\n setPath(root, entry.key, entry.value);\r\n }\r\n return root;\r\n}\r\n\r\n/**\r\n * Sets a value at a parsed path on a target object.\r\n * Creates intermediate objects and arrays as needed.\r\n *\r\n * @param target The root object to write into\r\n * @param path Path string (dot/bracket notation)\r\n * @param value The value to set at the path\r\n */\r\nfunction setPath(target: JsonObject, path: string, value: JsonValue): void {\r\n const segments = parsePath(path);\r\n let current: any = target;\r\n\r\n for (let i = 0; i < segments.length - 1; i++) {\r\n const seg = segments[i];\r\n const nextSeg = segments[i + 1];\r\n const nextIsIndex = typeof nextSeg === 'number';\r\n\r\n if (current[seg] === null || current[seg] === undefined || typeof current[seg] !== 'object') {\r\n current[seg] = nextIsIndex ? [] : {};\r\n }\r\n\r\n current = current[seg];\r\n }\r\n\r\n const lastSeg = segments[segments.length - 1];\r\n current[lastSeg] = value;\r\n}\r\n\r\n// ── Normalize ─────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Flattens a raw nested JSON object into JsonEntry[].\r\n * Convenience wrapper around flattenJson() — used by SofB2BJsonEditorComponent\r\n * to convert its JsonObject input into flat entries for tree building.\r\n *\r\n * @example\r\n * normalizeToEntries({ BillingInformation: { APTCAmount: '0.00' } })\r\n * // → [{ key: 'BillingInformation.APTCAmount', value: '0.00' }]\r\n */\r\nexport function normalizeToEntries(input: JsonObject): JsonEntry[] {\r\n return flattenJson(input);\r\n}\r\n\r\n// ── Deep clone ────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Deep clones a value using JSON serialisation.\r\n * Prevents edits inside the editor from mutating the consumer's\r\n * original input data.\r\n */\r\nexport function deepClone<T>(value: T): T {\r\n if (value === null || typeof value !== 'object') return value;\r\n return JSON.parse(JSON.stringify(value));\r\n}\r\n","/**\r\n * @fileoverview Tree construction, value reconstruction, and namespace emission.\r\n *\r\n * Builds a JsonNode tree from flat JsonEntry[] for rendering, and reconstructs\r\n * flat JsonEntry[] from the tree for emission back to the consumer.\r\n *\r\n * Also includes type inference, field config resolution, and validation.\r\n *\r\n * All functions are stateless and side-effect free (except console warnings).\r\n * No Angular dependencies — fully unit-testable in isolation.\r\n *\r\n * Guardrails:\r\n * Max depth cap — MAX_DEPTH constant in buildNodesFromEntries()\r\n * Duplicate key warning — Set check in validateDuplicateKeys()\r\n * Undefined output guard — null coalesce in flattenNamespaces()\r\n */\r\n\r\nimport {\r\n FieldConfig,\r\n FieldInputType,\r\n JsonEntry,\r\n JsonNamespace,\r\n JsonNode,\r\n JsonNodeType,\r\n JsonObject,\r\n JsonValue,\r\n} from './json-editor.models';\r\nimport { deepClone, parsePath } from './json-path.utils';\r\n\r\n// ── Constants ─────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * MAX_DEPTH guardrail.\r\n * Nodes beyond this depth are skipped rather than recursed into.\r\n * Prevents call-stack overflow on pathologically deep structures.\r\n */\r\nexport const MAX_DEPTH = 20;\r\n\r\n// ── Type inference ────────────────────────────────────────────────────────────\r\n\r\n/** Date pattern: MM/DD/YYYY */\r\nconst DATE_PATTERN = /^\\d{2}\\/\\d{2}\\/\\d{4}$/;\r\n\r\n/**\r\n * Infers the most appropriate FieldInputType for a scalar value.\r\n * Used as a fallback when no explicit FieldConfig is provided.\r\n *\r\n * @param value The raw scalar value to infer a type from\r\n */\r\nexport function inferInputType(value: JsonValue): FieldInputType {\r\n if (value === null || value === undefined || value === '') return 'text';\r\n if (typeof value === 'boolean') return 'toggle';\r\n if (typeof value === 'string') {\r\n if (DATE_PATTERN.test(value)) return 'date';\r\n }\r\n if (typeof value === 'number') return 'number';\r\n return 'text';\r\n}\r\n\r\n// ── Validation ────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Duplicate key guardrail.\r\n * Warns when two entries share the same key. The second occurrence\r\n * silently overwrites the first, producing incorrect emitted data.\r\n *\r\n * @param entries The JsonEntry[] to check for duplicate keys\r\n */\r\nexport function validateDuplicateKeys(entries: JsonEntry[]): void {\r\n const seen = new Set<string>();\r\n entries.forEach((entry) => {\r\n if (seen.has(entry.key)) {\r\n console.warn(\r\n `[JsonEditor] Duplicate key detected: \"${entry.key}\". ` +\r\n `Only the last occurrence will be rendered and emitted.`\r\n );\r\n }\r\n seen.add(entry.key);\r\n });\r\n}\r\n\r\n// ── Field config resolution ───────────────────────────────────────────────────\r\n\r\n/**\r\n * Builds a complete FieldConfig for a scalar field.\r\n *\r\n * Priority chain (highest wins):\r\n * 1. Schema lookup by full dot-notation path\r\n * 2. Value-based inference via inferInputType()\r\n *\r\n * When a schema entry exists, all its fields (label, options, placeholder,\r\n * readOnly) are included. inputType falls back to inference only when the\r\n * schema entry omits it.\r\n *\r\n * @param schema The companion schema map (or undefined if no schema)\r\n * @param fullKey The full dot-notation path of the field\r\n * @param value The raw scalar value (used for type inference fallback)\r\n */\r\nfunction buildFieldConfig(\r\n schema: Record<string, FieldConfig> | undefined,\r\n fullKey: string,\r\n value: JsonValue\r\n): FieldConfig {\r\n const schemaConfig = schema?.[fullKey];\r\n if (!schemaConfig) {\r\n return { inputType: inferInputType(value) };\r\n }\r\n return {\r\n ...schemaConfig,\r\n inputType: schemaConfig.inputType ?? inferInputType(value),\r\n };\r\n}\r\n\r\n// ── Tree construction ─────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Builds a JsonNode tree from flat JsonEntry[] by grouping path segments\r\n * into their natural hierarchy.\r\n *\r\n * This is the core tree-building function. It takes fully-flattened entries\r\n * (e.g. \"AdjustmentReasons[0].Code\") and reconstructs the nested structure\r\n * that the template renders as collapsible expansion panels.\r\n *\r\n * Handles three value shapes:\r\n * 1. Empty [] or {} — object/array with zero length, render as empty container\r\n * 2. Scalar / primitive — null, string, number, boolean — render as input\r\n * 3. Container — multiple children or deeper path — recurse\r\n *\r\n * Depth guardrail — stops recursing beyond MAX_DEPTH.\r\n *\r\n * @param entries Flat JsonEntry[] with namespace prefix already stripped\r\n * @param schema Optional companion schema for field config\r\n * @param depth Current nesting depth (0 = top level within namespace)\r\n */\r\nexport function buildNodesFromEntries(\r\n entries: JsonEntry[],\r\n schema?: Record<string, FieldConfig>,\r\n depth = 0\r\n): JsonNode[] {\r\n // Depth guardrail\r\n if (depth > MAX_DEPTH) {\r\n console.warn(`[JsonEditor] Max depth (${MAX_DEPTH}) exceeded at depth ${depth}.`);\r\n return [];\r\n }\r\n\r\n const groups = new Map<string, { numericKey: boolean; children: JsonEntry[] }>();\r\n\r\n for (const entry of entries) {\r\n const segments = parsePath(entry.key);\r\n if (segments.length === 0) continue;\r\n\r\n const firstSeg = segments[0];\r\n const firstSegStr = String(firstSeg);\r\n const isNumeric = typeof firstSeg === 'number';\r\n\r\n if (!groups.has(firstSegStr)) {\r\n groups.set(firstSegStr, { numericKey: isNumeric, children: [] });\r\n }\r\n\r\n const remainder = stripFirstSegment(entry.key, firstSeg);\r\n groups.get(firstSegStr)!.children.push(remainder !== '' ? { ...entry, key: remainder } : { ...entry, key: '' });\r\n }\r\n\r\n // Sort numeric keys numerically, not alphabetically\r\n // Fixes \"0, 1, 10, 11\" → \"0, 1, 2, 3...\"\r\n const sortedGroups = Array.from(groups.entries()).sort(([a], [b]) => {\r\n const aNum = Number(a);\r\n const bNum = Number(b);\r\n if (!isNaN(aNum) && !isNaN(bNum)) return aNum - bNum;\r\n return 0; // preserve insertion order for non-numeric keys\r\n });\r\n\r\n const nodes: JsonNode[] = [];\r\n\r\n for (const [segStr, { numericKey, children }] of sortedGroups) {\r\n // ── Case 1: Empty array or object leaf ──────────────────────────────────\r\n if (\r\n children.length === 1 &&\r\n children[0].key === '' &&\r\n children[0].value !== null &&\r\n typeof children[0].value === 'object' &&\r\n (Array.isArray(children[0].value) ? children[0].value.length === 0 : Object.keys(children[0].value).length === 0)\r\n ) {\r\n const entry = children[0];\r\n nodes.push({\r\n key: segStr,\r\n fullKey: entry.key || segStr,\r\n type: Array.isArray(entry.value) ? 'array' : 'object',\r\n depth,\r\n children: [],\r\n config: {},\r\n });\r\n continue;\r\n }\r\n\r\n // ── Case 2: Scalar leaf ─────────────────────────────────────────────────\r\n if (\r\n children.length === 1 &&\r\n children[0].key === '' &&\r\n (children[0].value === null || typeof children[0].value !== 'object')\r\n ) {\r\n const entry = children[0];\r\n nodes.push({\r\n key: segStr,\r\n fullKey: entry.key || segStr,\r\n type: 'scalar',\r\n depth,\r\n originalValue: deepClone(entry.value),\r\n editableValue: deepClone(entry.value),\r\n config: buildFieldConfig(schema, entry.key, entry.value),\r\n });\r\n continue;\r\n }\r\n\r\n // ── Case 3: Container node ──────────────────────────────────────────────\r\n const childNodes = buildNodesFromEntries(children, schema, depth + 1);\r\n const allNumericKeys = childNodes.every((n) => /^\\d+$/.test(n.key));\r\n const type: JsonNodeType = allNumericKeys ? 'array' : 'object';\r\n\r\n // fullKey for container nodes is just the segment name — NOT a child path.\r\n // reconstructValue() already rebuilds the entire subtree, so when\r\n // flattenNamespaces() emits {key: prefix.fullKey, value: reconstructed},\r\n // the key must point to the container itself, not into a child.\r\n nodes.push({\r\n key: segStr,\r\n fullKey: segStr,\r\n type,\r\n depth,\r\n children: childNodes,\r\n config: {},\r\n });\r\n }\r\n\r\n return nodes;\r\n}\r\n\r\n/**\r\n * Strips the first path segment from a key, returning the remainder.\r\n *\r\n * Examples:\r\n * \"AdjustmentReasons[0].Code\" with first='AdjustmentReasons' → \"[0].Code\"\r\n * \"[0].Code\" with first=0 → \"Code\"\r\n * \"Code\" with first='Code' → \"\" (leaf)\r\n * '[\"Discount Amount\"].val' with first='Discount Amount' → \"val\"\r\n */\r\nfunction stripFirstSegment(key: string, first: string | number): string {\r\n if (typeof first === 'number') {\r\n // Strip leading [N] and optional following dot\r\n return key.replace(/^\\[\\d+\\]\\.?/, '');\r\n }\r\n // Strip leading quoted bracket key e.g. [\"Discount Amount\"]\r\n if (key.startsWith('[\"')) {\r\n return key.replace(/^\\[\"[^\"]+\"\\]\\.?/, '');\r\n }\r\n // Strip plain leading key and optional following dot\r\n const escaped = first.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n return key.replace(new RegExp(`^${escaped}\\\\.?`), '');\r\n}\r\n\r\n// ── Array item manipulation ───────────────────────────────────────────────────\r\n\r\n/**\r\n * Naive English singularization — strips trailing \"s\" when safe.\r\n * Handles ~80% of common plural nouns (Members → Member, Payments → Payment).\r\n * Does NOT strip \"ss\" endings (Address, Class) since those aren't plurals.\r\n *\r\n * Used by the template to build \"Add [Singular]\" button labels.\r\n *\r\n * @param word The word to singularize\r\n */\r\nexport function singularize(word: string): string {\r\n if (word.length > 1 && word.endsWith('s') && !word.endsWith('ss')) {\r\n return word.slice(0, -1);\r\n }\r\n return word;\r\n}\r\n\r\n/**\r\n * Deep-clones an array item node (typically the first child of an array)\r\n * and reindexes it to a new position. Recursively clones the entire subtree.\r\n *\r\n * For scalar descendants, sets `originalValue = deepClone(editableValue)` so\r\n * newly added items don't appear dirty (they haven't been \"edited\" yet).\r\n *\r\n * @param templateNode The node to clone (usually `arrayNode.children[0]`)\r\n * @param newIndex The numeric index for the new item\r\n */\r\nexport function cloneArrayItem(templateNode: JsonNode, newIndex: number): JsonNode {\r\n return cloneNodeSubtree(templateNode, String(newIndex));\r\n}\r\n\r\n/**\r\n * Recursively clones a JsonNode and all its descendants.\r\n * The cloned root gets a new `key`; descendants keep their original keys.\r\n * All scalar nodes get `originalValue = deepClone(editableValue)`.\r\n */\r\nfunction cloneNodeSubtree(node: JsonNode, newKey: string): JsonNode {\r\n const cloned: JsonNode = {\r\n key: newKey,\r\n fullKey: newKey,\r\n type: node.type,\r\n depth: node.depth,\r\n config: { ...node.config, ...(node.config.options ? { options: [...node.config.options] } : {}) },\r\n };\r\n\r\n if (node.type === 'scalar') {\r\n cloned.editableValue = deepClone(node.editableValue);\r\n cloned.originalValue = deepClone(node.editableValue);\r\n }\r\n\r\n if (node.children) {\r\n cloned.children = node.children.map((child) =>\r\n cloneNodeSubtree(child, child.key)\r\n );\r\n }\r\n\r\n return cloned;\r\n}\r\n\r\n/**\r\n * Reindexes the `key` property of each child in an array node's children\r\n * to match its position (0, 1, 2, ...). Called after add/remove operations\r\n * to keep display keys sequential.\r\n *\r\n * Only updates `key` (the display index). Does NOT recursively update\r\n * deep `fullKey` paths because `reconstructValue()` for arrays is\r\n * position-based (`.map()`), not key-based — correctness is guaranteed\r\n * by child ordering, not by key values.\r\n *\r\n * @param children The array node's children to reindex\r\n */\r\nexport function reindexArrayChildren(children: JsonNode[]): void {\r\n for (let i = 0; i < children.length; i++) {\r\n children[i].key = String(i);\r\n children[i].fullKey = String(i);\r\n }\r\n}\r\n\r\n// ── Value reconstruction ──────────────────────────────────────────────────────\r\n\r\n/**\r\n * Recursively reconstructs the original value shape from a JsonNode.\r\n * Called by flattenNamespaces() when emitting changes to the consumer.\r\n *\r\n * scalar → editableValue\r\n * array → children mapped recursively into []\r\n * object → children reduced recursively into {}\r\n */\r\nexport function reconstructValue(node: JsonNode): JsonValue {\r\n if (node.type === 'scalar') return node.editableValue ?? null;\r\n\r\n if (node.type === 'array') {\r\n return (node.children ?? []).map((child) => reconstructValue(child));\r\n }\r\n\r\n // Object\r\n return (node.children ?? []).reduce<JsonObject>((acc, child) => {\r\n acc[child.key] = reconstructValue(child);\r\n return acc;\r\n }, {});\r\n}\r\n\r\n/**\r\n * Flattens JsonNamespace[] back into JsonEntry[] for emission.\r\n *\r\n * Undefined output guardrail — reconstructValue() returning undefined\r\n * is coalesced to null rather than emitting undefined to the consumer.\r\n *\r\n * @param namespaces The current namespace tree to flatten\r\n */\r\nexport function flattenNamespaces(namespaces: JsonNamespace[]): JsonEntry[] {\r\n return namespaces.flatMap((ns) =>\r\n ns.nodes.map((node) => {\r\n const value = reconstructValue(node);\r\n\r\n // Guard against emitting undefined — coerce to null\r\n if (value === undefined) {\r\n console.warn(\r\n `[JsonEditor] reconstructValue() returned undefined for \"${node.fullKey}\". Emitting null instead.`\r\n );\r\n }\r\n\r\n // Reconstruct the full path key with namespace prefix\r\n const fullPath = ns.prefix === '—' ? node.fullKey : `${ns.prefix}.${node.fullKey}`;\r\n\r\n return {\r\n key: fullPath,\r\n value: value ?? null,\r\n };\r\n })\r\n );\r\n}\r\n","/**\r\n * @fileoverview Search filtering and tree pruning utilities.\r\n *\r\n * Filters a JsonNamespace[] tree to only nodes matching a search term.\r\n * Uses recursive tree pruning — non-matching branches are removed,\r\n * matching ancestors are preserved.\r\n *\r\n * All functions are stateless and side-effect free.\r\n * No Angular dependencies — fully unit-testable in isolation.\r\n */\r\n\r\nimport { JsonNamespace, JsonNode } from './json-editor.models';\r\n\r\n// ── Search / Filter ───────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Recursively filters a single JsonNode against a search term.\r\n * Returns null if neither the node nor any of its descendants match.\r\n * Returns a shallow copy with only matching children if any match.\r\n *\r\n * Safe without additional guardrails — operates on an already-built\r\n * tree that was depth-capped by buildNodesFromEntries().\r\n *\r\n * @param node The JsonNode to filter\r\n * @param term Already lowercased and trimmed search term\r\n */\r\nfunction filterNode(node: JsonNode, term: string): JsonNode | null {\r\n if (node.type === 'scalar') {\r\n const keyMatch = node.key.toLowerCase().includes(term);\r\n const valueMatch =\r\n node.editableValue !== null &&\r\n node.editableValue !== undefined &&\r\n String(node.editableValue).toLowerCase().includes(term);\r\n\r\n return keyMatch || valueMatch ? node : null;\r\n }\r\n\r\n const matchingChildren = (node.children ?? [])\r\n .map((child) => filterNode(child, term))\r\n .filter((child): child is JsonNode => child !== null);\r\n\r\n if (matchingChildren.length === 0) return null;\r\n\r\n return { ...node, children: matchingChildren };\r\n}\r\n\r\n/**\r\n * Filters a JsonNamespace[] tree to only namespaces and nodes\r\n * matching the search term. Uses tree pruning — non-matching branches\r\n * are removed, matching ancestors are preserved.\r\n *\r\n * Returns the original array reference unchanged if term is below\r\n * the minimum length — no filtering overhead on short terms.\r\n *\r\n * @param namespaces The full namespace tree to filter\r\n * @param term The search string (case-insensitive, min 2 chars)\r\n */\r\nexport function filterNamespaces(namespaces: JsonNamespace[], term: string): JsonNamespace[] {\r\n const trimmed = term.trim();\r\n\r\n // Return full tree if empty or below minimum length —\r\n // single char matches too broadly and runs the full recursive\r\n // walk on every keystroke for minimal benefit\r\n if (trimmed.length < 2) return namespaces;\r\n\r\n const normalized = trimmed.toLowerCase();\r\n\r\n return namespaces\r\n .map((ns) => {\r\n // Namespace prefix match — return entire namespace\r\n if (ns.prefix.toLowerCase().includes(normalized)) {\r\n return ns;\r\n }\r\n\r\n const matchingNodes = ns.nodes\r\n .map((node) => filterNode(node, normalized))\r\n .filter((node): node is JsonNode => node !== null);\r\n\r\n return matchingNodes.length > 0 ? { ...ns, nodes: matchingNodes } : null;\r\n })\r\n .filter((ns): ns is JsonNamespace => ns !== null);\r\n}\r\n","/**\r\n * @fileoverview Barrel re-export for json-editor utilities.\r\n *\r\n * All utility logic has been split into domain-focused files:\r\n * json-path.utils.ts — path parsing, flatten/unflatten, normalization\r\n * json-tree.utils.ts — tree construction, reconstruction, validation\r\n * json-filter.utils.ts — search filtering and tree pruning\r\n * json-schema.utils.ts — JSON Schema parsing (internal to SofB2BJsonEditorComponent)\r\n *\r\n * This barrel exports only what production components import.\r\n * Test files import directly from their source file instead.\r\n */\r\n\r\n// ── Path parsing, flatten/unflatten, normalization ────────────────────────────\r\nexport { parsePath, unflattenJson, normalizeToEntries } from './json-path.utils';\r\n\r\n// ── Tree construction, validation, emission, array manipulation ───────────────\r\nexport { MAX_DEPTH, validateDuplicateKeys, buildNodesFromEntries, flattenNamespaces, singularize, cloneArrayItem, reindexArrayChildren } from './json-tree.utils';\r\n\r\n// ── Search filtering and tree pruning ─────────────────────────────────────────\r\nexport { filterNamespaces } from './json-filter.utils';\r\n\r\n// ── JSON Schema type (re-exported for consumer convenience) ──────────────────\r\n// Aliased to a project-scoped name so consumers don't need to know about @types/json-schema.\r\n// Internal parser code (json-schema.utils.ts) still uses JSONSchema7 / JSONSchema7Definition directly.\r\nexport type { JSONSchema7 as JsonSchema } from 'json-schema';\r\n","/**\r\n * @fileoverview JSON Schema → FieldConfig parser.\r\n *\r\n * Converts a standard JSON Schema (Draft 7+) into a flat\r\n * Record<string, FieldConfig> keyed by dot-notation paths.\r\n * The output plugs directly into SofB2BJsonEditorComponent's [schema] input\r\n * and is consumed by buildFieldConfig() at tree-build time.\r\n *\r\n * Supported JSON Schema keywords:\r\n * type → maps to FieldInputType ('text', 'number', 'toggle', 'select')\r\n * enum → options[] + inputType 'select'\r\n * $id / title → label override\r\n * properties → recursed into, building dot-notation paths\r\n * items → recursed into for array element schemas\r\n *\r\n * Intentionally ignored (Tier 1 — basic support):\r\n * pattern, format, minLength, maxLength, minimum, maximum,\r\n * additionalProperties, required, allOf, anyOf, oneOf, $ref\r\n *\r\n * All functions are stateless and side-effect free.\r\n * No Angular dependencies — fully unit-testable in isolation.\r\n */\r\n\r\nimport { JSONSchema7, JSONSchema7Definition } from 'json-schema';\r\n\r\nimport { FieldConfig, FieldInputType } from './json-editor.models';\r\n\r\n// ── Constants ─────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Maximum recursion depth for schema walking.\r\n * Matches the tree-builder's MAX_DEPTH to keep behaviour consistent.\r\n */\r\nconst MAX_SCHEMA_DEPTH = 20;\r\n\r\n// ── Helpers ───────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Maps a JSON Schema `type` string to the closest FieldInputType.\r\n *\r\n * Returns undefined for types that don't map to a scalar input\r\n * (object, array) — those are containers, not leaf fields.\r\n */\r\nfunction mapSchemaType(schemaType: string): FieldInputType | undefined {\r\n switch (schemaType) {\r\n case 'string':\r\n return 'text';\r\n case 'number':\r\n case 'integer':\r\n return 'number';\r\n case 'boolean':\r\n return 'toggle';\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\n/**\r\n * Resolves the primary type from a JSON Schema `type` field.\r\n * Handles both single string and array-of-strings forms.\r\n * When the type is an array, returns the first non-null type.\r\n */\r\nfunction resolvePrimaryType(type: string | string[] | undefined): string | undefined {\r\n if (!type) return undefined;\r\n if (typeof type === 'string') return type;\r\n if (Array.isArray(type)) {\r\n return type.find((t) => t !== 'null') ?? type[0];\r\n }\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Extracts a human-readable label from schema metadata.\r\n * Prefers $id, then title. Returns undefined if neither is present.\r\n */\r\nfunction extractLabel(node: JSONSchema7): string | undefined {\r\n // $id is often a full URI — extract the fragment or last segment\r\n if (node.$id) {\r\n const fragment = node.$id.split('#').pop();\r\n const lastSegment = (fragment || node.$id).split('/').pop();\r\n return lastSegment || node.$id;\r\n }\r\n return node.title ?? undefined;\r\n}\r\n\r\n/**\r\n * Builds a dot-notation path by appending a segment to an existing prefix.\r\n */\r\nfunction buildPath(prefix: string, segment: string): string {\r\n return prefix ? `${prefix}.${segment}` : segment;\r\n}\r\n\r\n// ── Core parser ───────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Resolves a JSONSchema7Definition to a JSONSchema7 object.\r\n * In JSON Schema, property values and items can be `boolean`:\r\n * - `true` means \"allow anything\" → treat as empty schema `{}`\r\n * - `false` means \"deny everything\" → return undefined (skip)\r\n */\r\nfunction resolveDefinition(def: JSONSchema7Definition): JSONSchema7 | undefined {\r\n if (typeof def === 'boolean') {\r\n return def ? {} : undefined;\r\n }\r\n return def;\r\n}\r\n\r\n/**\r\n * Recursively walks a JSON Schema node, populating the result map with\r\n * FieldConfig entries keyed by their full dot-notation path.\r\n *\r\n * @param node The current JSON Schema node\r\n * @param prefix The dot-notation path prefix accumulated so far\r\n * @param result The accumulator map being built\r\n * @param depth Current recursion depth (for safety)\r\n */\r\nfunction walkSchema(node: JSONSchema7, prefix: string, result: Record<string, FieldConfig>, depth: number): void {\r\n if (depth > MAX_SCHEMA_DEPTH) {\r\n console.warn(`[JsonSchema] Max depth (${MAX_SCHEMA_DEPTH}) exceeded at \"${prefix}\". Stopping recursion.`);\r\n return;\r\n }\r\n\r\n const primaryType = resolvePrimaryType(node.type);\r\n\r\n // ── Enum field → select ──\r\n if (node.enum && node.enum.length > 0) {\r\n const config: FieldConfig = {\r\n inputType: 'select',\r\n options: node.enum.map((v) => String(v)),\r\n };\r\n const label = extractLabel(node);\r\n if (label) config.label = label;\r\n if (prefix) result[prefix] = config;\r\n return;\r\n }\r\n\r\n // ── Object with properties → recurse into children ──\r\n if (primaryType === 'object' || node.properties) {\r\n if (node.properties) {\r\n for (const [key, childDef] of Object.entries(node.properties)) {\r\n const childSchema = resolveDefinition(childDef);\r\n if (childSchema) {\r\n walkSchema(childSchema, buildPath(prefix, key), result, depth + 1);\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n\r\n // ── Array with items → recurse into items schema ──\r\n // We store the items schema config on the path itself so that\r\n // buildFieldConfig() can look up \"path[0].field\" style paths.\r\n // The items schema describes the element type, not the array container.\r\n // When items is an array (tuple validation), use only the first element.\r\n if (primaryType === 'array' && node.items) {\r\n const itemsDef = Array.isArray(node.items) ? node.items[0] : node.items;\r\n const itemsSchema = itemsDef ? resolveDefinition(itemsDef) : undefined;\r\n if (itemsSchema) {\r\n walkSchema(itemsSchema, prefix, result, depth + 1);\r\n }\r\n return;\r\n }\r\n\r\n // ── Scalar field → build a FieldConfig ──\r\n if (prefix) {\r\n const config: FieldConfig = {};\r\n const inputType = primaryType ? mapSchemaType(primaryType) : undefined;\r\n if (inputType) config.inputType = inputType;\r\n const label = extractLabel(node);\r\n if (label) config.label = label;\r\n if (node.description) config.placeholder = node.description;\r\n if (Object.keys(config).length > 0) {\r\n result[prefix] = config;\r\n }\r\n }\r\n}\r\n\r\n// ── Public API ────────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Parses a JSON Schema document into a flat Record<string, FieldConfig>\r\n * suitable for passing to SofB2BJsonEditorComponent's [schema] input.\r\n *\r\n * @param schema A JSON Schema object (Draft 7+ compatible).\r\n * Pass null/undefined for a no-op that returns {}.\r\n * @returns A flat map of dot-notation paths → FieldConfig.\r\n *\r\n * @example\r\n * const schema = await fetch('/api/schema').then(r => r.json());\r\n * const fieldConfigs = parseJsonSchema(schema);\r\n * // fieldConfigs = {\r\n * // 'Settings.Theme': { inputType: 'select', options: ['dark', 'light'] },\r\n * // 'Settings.MaxRetries': { inputType: 'number' },\r\n * // 'Settings.Enabled': { inputType: 'toggle' },\r\n * // }\r\n */\r\nexport function parseJsonSchema(schema: JSONSchema7 | null | undefined): Record<string, FieldConfig> {\r\n if (!schema) return {};\r\n\r\n const result: Record<string, FieldConfig> = {};\r\n walkSchema(schema, '', result, 0);\r\n return result;\r\n}\r\n","/**\r\n * @fileoverview Recursive tree-node component for the JsonEditor.\r\n *\r\n * Renders a single JsonNode and recursively renders its children.\r\n * Self-references via <sof-b2b-json-node> in the template for array\r\n * and object nodes.\r\n *\r\n * Not part of the public API — use SofB2BJsonEditorComponent directly.\r\n *\r\n * Guardrails:\r\n * 📏 Template depth check — renders a safe fallback beyond MAX_DEPTH\r\n */\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, effect, inject, input, output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { JsonNode } from '../utils/json-editor.models';\r\nimport { MAX_DEPTH, singularize, cloneArrayItem, reindexArrayChildren } from '../utils/json-editor.utils';\r\n\r\n/** The Sof B2B JSON Editor Node Component */\r\n@Component({\r\n selector: 'sof-b2b-json-node',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, MatExpansionModule, MatSelectModule, MatSlideToggleModule],\r\n templateUrl: './sof-b2b-json-node.component.html',\r\n styleUrls: ['./sof-b2b-json-node.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n/**\r\n * Recursive tree-node renderer for the JsonEditor.\r\n *\r\n * Renders a single {@link JsonNode} — scalars as form inputs (text, number, date,\r\n * toggle, select) and containers (array/object) as collapsible expansion panels\r\n * that recurse into `<sof-b2b-json-node>` for each child.\r\n *\r\n * This is an internal component — consumers interact with {@link SofB2BJsonEditorComponent}\r\n * which builds and owns the node tree. SofB2BJsonNodeComponent is not exported from the\r\n * public barrel.\r\n *\r\n * All inputs use Angular signals; `readOnly` propagates down from the root editor.\r\n * Value changes bubble up via the `valueChanged` output at every level of the tree,\r\n * eventually reaching SofB2BJsonEditorComponent's debounced change handler.\r\n */\r\nexport class SofB2BJsonNodeComponent {\r\n /**\r\n * ChangeDetectorRef is ONLY needed for addItem() and removeItem().\r\n * Those methods mutate node().children in place — the node signal reference\r\n * doesn't change, so OnPush won't re-evaluate the @for loop without an\r\n * explicit markForCheck(). All other reactivity in this component uses signals.\r\n */\r\n private readonly cdr = inject(ChangeDetectorRef);\r\n\r\n /** The JsonNode to render. Required input. */\r\n readonly node = input.required<JsonNode>();\r\n\r\n /** When true, all fields render as non-editable plaintext. Passed from SofB2BJsonEditorComponent. */\r\n readonly readOnly = input<boolean>(false);\r\n\r\n /** Bubbles up from any depth to the root SofB2BJsonEditorComponent. */\r\n readonly valueChanged = output<void>();\r\n\r\n /** Exposed to template for the 📏 depth guardrail check. */\r\n protected readonly maxDepth = MAX_DEPTH;\r\n\r\n /** Whether this node is an empty container (array/object with no children). */\r\n protected readonly isEmpty = computed<boolean>(() => {\r\n const n = this.node();\r\n return (n.type === 'array' || n.type === 'object') && (!n.children || n.children.length === 0);\r\n });\r\n\r\n /**\r\n * Whether the scalar field has been edited (current value differs from original).\r\n * Always false for non-scalar nodes. Updated imperatively on each ngModelChange\r\n * because the `node` signal reference doesn't change when `editableValue` is\r\n * mutated in place by ngModel — a computed() based on node() alone would never\r\n * re-evaluate.\r\n *\r\n * Also recalculated when the `node` input changes (via effect) so that the\r\n * initial render already reflects dirty state (e.g. when a parent rebuilds the\r\n * tree after external data changes).\r\n */\r\n protected isDirty = false;\r\n\r\n /**\r\n * Whether this array node supports add/remove operations.\r\n * True when: array type, has at least 1 child (provides template for cloning),\r\n * and not in readOnly mode. Empty arrays show \"(no schema)\" instead.\r\n */\r\n protected readonly canModifyArray = computed<boolean>(() => {\r\n const n = this.node();\r\n return n.type === 'array' && (n.children?.length ?? 0) > 0 && !this.readOnly();\r\n });\r\n\r\n /**\r\n * Label for the \"Add\" button, e.g. \"Add Member\" for an array named \"Members\".\r\n * Uses naive singularization (strip trailing \"s\") for a natural UX label.\r\n */\r\n protected readonly addButtonLabel = computed<string>(() => {\r\n return 'Add ' + singularize(this.node().key);\r\n });\r\n\r\n constructor() {\r\n // Recalculate isDirty whenever a new node is pushed in (e.g. initial render,\r\n // or when the parent replaces the tree). This covers the \"initial dirty\"\r\n // case that onValueChanged() cannot cover.\r\n effect(() => {\r\n const n = this.node();\r\n this.isDirty = n.type === 'scalar'\r\n && n.originalValue !== undefined\r\n && n.editableValue !== n.originalValue;\r\n });\r\n }\r\n\r\n /** Label describing the child count, e.g. \"3 items\" or \"2 fields\". */\r\n protected readonly childLabel = computed<string>(() => {\r\n const n = this.node();\r\n const count = n.children?.length ?? 0;\r\n const unit = n.type === 'array' ? `item${count !== 1 ? 's' : ''}` : `field${count !== 1 ? 's' : ''}`;\r\n return `${count} ${unit}`;\r\n });\r\n\r\n /**\r\n * Sanitized id safe for use in HTML id attributes and CSS selectors.\r\n * node.fullKey may contain brackets and quotes (e.g. [\"Discount Amount\"])\r\n * which are invalid in CSS selectors and break browser extension queries.\r\n */\r\n protected readonly safeId = computed<string>(() => this.node().fullKey.replace(/[^a-zA-Z0-9\\-_]/g, '_'));\r\n\r\n /** Relays child node value changes upward to the parent. Enables event bubbling through the recursive tree. */\r\n protected onChildChanged(): void {\r\n this.valueChanged.emit();\r\n }\r\n\r\n /**\r\n * Called from the template on every `(ngModelChange)` for scalar inputs.\r\n * Updates the dirty flag by comparing the current editableValue against the\r\n * original snapshot, then bubbles the change event upward.\r\n */\r\n protected onValueChanged(): void {\r\n const n = this.node();\r\n this.isDirty = n.type === 'scalar'\r\n && n.originalValue !== undefined\r\n && n.editableValue !== n.originalValue;\r\n this.valueChanged.emit();\r\n }\r\n\r\n /**\r\n * Adds a new item to this array node by cloning the first child as a template.\r\n * The cloned item's scalar descendants have originalValue = editableValue,\r\n * so they do not appear dirty. Replaces the children array reference and\r\n * marks the view for check since the node signal itself doesn't change.\r\n */\r\n protected addItem(): void {\r\n const children = this.node().children;\r\n if (!children || children.length === 0) return;\r\n\r\n const cloned = cloneArrayItem(children[0], children.length);\r\n this.node().children = [...children, cloned];\r\n this.cdr.markForCheck();\r\n this.valueChanged.emit();\r\n }\r\n\r\n /**\r\n * Removes an item from this array node at the given index.\r\n * Minimum items = 1 — cannot delete the last remaining item.\r\n * After removal, reindexes remaining children to keep display keys sequential.\r\n */\r\n protected removeItem(index: number): void {\r\n const children = this.node().children;\r\n if (!children || children.length <= 1) return;\r\n\r\n const updated = [...children];\r\n updated.splice(index, 1);\r\n reindexArrayChildren(updated);\r\n this.node().children = updated;\r\n this.cdr.markForCheck();\r\n this.valueChanged.emit();\r\n }\r\n}\r\n","@if (node().depth > maxDepth) {\r\n<div class=\"json-node-row\">\r\n <span class=\"json-node-key\">{{ node().key }}</span>\r\n <span class=\"json-node-empty\">Max depth reached</span>\r\n</div>\r\n} @else {\r\n<ng-container [ngSwitch]=\"node().type\">\r\n <!-- SCALAR -->\r\n <div *ngSwitchCase=\"'scalar'\" class=\"json-node-row\">\r\n <label [for]=\"safeId()\" class=\"json-node-key\" [class.json-node-key--dirty]=\"isDirty\">\r\n {{ node().config.label ?? node().key }}\r\n </label>\r\n\r\n <!-- READ-ONLY scalar rendering -->\r\n @if (readOnly()) {\r\n @if (node().editableValue === null || node().editableValue === undefined) {\r\n <span class=\"json-node-value json-node-value--null\">null</span>\r\n } @else if (node().editableValue === '') {\r\n <span class=\"json-node-value json-node-value--empty\">\"\"</span>\r\n } @else if (node().config.inputType === 'toggle') {\r\n <mat-slide-toggle [id]=\"safeId()\" class=\"sof-slide-toggle\" color=\"primary\" [attr.aria-label]=\"node().config.label ?? node().key\" [disabled]=\"true\" [ngModel]=\"node().editableValue\">\r\n </mat-slide-toggle>\r\n } @else {\r\n <span class=\"json-node-value\">{{ node().editableValue }}</span>\r\n }\r\n } @else {\r\n <!-- EDITABLE scalar rendering -->\r\n <ng-container [ngSwitch]=\"node().config.inputType\">\r\n <input *ngSwitchCase=\"'date'\" [id]=\"safeId()\" [attr.aria-label]=\"node().config.label ?? node().key\" [readOnly]=\"node().config.readOnly ?? false\" [placeholder]=\"node().config.placeholder ?? ''\"\r\n class=\"json-node-input\" type=\"date\" [(ngModel)]=\"node().editableValue\" (ngModelChange)=\"onValueChanged()\" />\r\n\r\n <input *ngSwitchCase=\"'number'\" [id]=\"safeId()\" [attr.aria-label]=\"node().config.label ?? node().key\" [readOnly]=\"node().config.readOnly ?? false\" [placeholder]=\"node().config.placeholder ?? ''\"\r\n class=\"json-node-input\" type=\"number\" [(ngModel)]=\"node().editableValue\" (ngModelChange)=\"onValueChanged()\" />\r\n\r\n <mat-slide-toggle *ngSwitchCase=\"'toggle'\" [id]=\"safeId()\" class=\"sof-slide-toggle\" color=\"primary\" [attr.aria-label]=\"node().config.label ?? node().key\"\r\n [disabled]=\"node().config.readOnly ?? false\" [(ngModel)]=\"node().editableValue\" (ngModelChange)=\"onValueChanged()\">\r\n </mat-slide-toggle>\r\n\r\n <mat-select *ngSwitchCase=\"'select'\" [id]=\"safeId()\" [attr.aria-label]=\"node().config.label ?? node().key\" [disabled]=\"node().config.readOnly ?? false\" [(ngModel)]=\"node().editableValue\"\r\n (ngModelChange)=\"onValueChanged()\" class=\"json-node-select\">\r\n @for (option of node().config.options; track option) {\r\n <mat-option [value]=\"option\">{{ option }}</mat-option>\r\n }\r\n </mat-select>\r\n\r\n <!-- Text / currency / default -->\r\n <input *ngSwitchDefault [id]=\"safeId()\" [attr.aria-label]=\"node().config.label ?? node().key\" [readOnly]=\"node().config.readOnly ?? false\" [placeholder]=\"node().config.placeholder ?? ''\"\r\n class=\"json-node-input\" type=\"text\" [(ngModel)]=\"node().editableValue\" (ngModelChange)=\"onValueChanged()\" />\r\n </ng-container>\r\n }\r\n </div>\r\n\r\n <!-- ARRAY / OBJECT -->\r\n <ng-container *ngSwitchDefault>\r\n <!-- Empty container -->\r\n @if (isEmpty()) {\r\n <div class=\"json-node-row\">\r\n <span class=\"json-node-key\">{{ node().config.label ?? node().key }}</span>\r\n @if (node().type === 'array') {\r\n <span class=\"json-node-empty json-node-empty--no-schema\">(no schema)</span>\r\n } @else {\r\n <span class=\"json-node-empty\">{{ '{' }} {{ '}' }}</span>\r\n }\r\n </div>\r\n } @else {\r\n <!-- Non-empty — expansion panel with recursive children -->\r\n <mat-expansion-panel class=\"json-node-panel\">\r\n <mat-expansion-panel-header collapsedHeight=\"36px\" expandedHeight=\"36px\">\r\n <mat-panel-title class=\"json-node-panel-title\">\r\n {{ node().config.label ?? node().key }}\r\n </mat-panel-title>\r\n <mat-panel-description>\r\n <span class=\"field-count\">{{ childLabel() }}</span>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n <!-- Recursion — renders itself for each child.\r\n depth increments on every level so the guardrail\r\n at the top of this template catches runaway nesting.\r\n -->\r\n @for (child of node().children; track child.fullKey; let idx = $index) {\r\n @if (node().type === 'array') {\r\n <div class=\"json-node-array-item\">\r\n <sof-b2b-json-node [node]=\"child\" [readOnly]=\"readOnly()\" (valueChanged)=\"onChildChanged()\"> </sof-b2b-json-node>\r\n @if (canModifyArray() && node().children!.length > 1) {\r\n <button class=\"json-node-remove-btn\" (click)=\"removeItem(idx)\" [attr.aria-label]=\"'Remove item ' + idx\">\r\n <i class=\"ph ph-trash\"></i>\r\n </button>\r\n }\r\n </div>\r\n } @else {\r\n <sof-b2b-json-node [node]=\"child\" [readOnly]=\"readOnly()\" (valueChanged)=\"onChildChanged()\"> </sof-b2b-json-node>\r\n }\r\n }\r\n\r\n <!-- Add button — only for non-empty arrays when not readOnly -->\r\n @if (canModifyArray()) {\r\n <button mat-flat-button class=\"sof-button-v2 mini json-node-add\" theme=\"primary\" emphasis=\"secondary\" (click)=\"addItem()\">\r\n <i class=\"ph ph-plus\"></i> {{ addButtonLabel() }}\r\n </button>\r\n }\r\n </mat-expansion-panel>\r\n }\r\n </ng-container>\r\n</ng-container>\r\n}","/**\r\n * @fileoverview Root JsonEditor component.\r\n *\r\n * Accepts a raw JSON object, internally flattens it into a JsonNode\r\n * tree grouped by dot-notation namespace, and emits the reconstructed\r\n * nested JSON object on debounced user edits.\r\n *\r\n * Public API:\r\n * data — JsonObject input (signal)\r\n * schema — optional companion schema (signal)\r\n * readOnly — renders all fields as non-editable plaintext (signal, default false)\r\n * debounceMs — debounce delay, default 1500 (signal)\r\n * searchTerm — search filter string (signal)\r\n * dataChanged — emits JsonObject after debounce (suppressed when readOnly)\r\n * parseError — emits error message string when parsing fails\r\n *\r\n * ⚠️ Signal input note:\r\n * Angular signals detect changes by reference equality.\r\n * Pass a new object reference to trigger re-computation.\r\n * Mutating the object in place will NOT update the editor.\r\n */\r\nimport { ChangeDetectionStrategy, Component, DestroyRef, OnInit, computed, inject, input, output, viewChildren } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatExpansionModule, MatExpansionPanel } from '@angular/material/expansion';\r\nimport { Subject, debounceTime } from 'rxjs';\r\n\r\nimport { JsonEntry, JsonNamespace, JsonObject } from '../utils/json-editor.models';\r\nimport { type JsonSchema, buildNodesFromEntries, filterNamespaces, flattenNamespaces, normalizeToEntries, parsePath, unflattenJson, validateDuplicateKeys } from '../utils/json-editor.utils';\r\nimport { parseJsonSchema } from '../utils/json-schema.utils';\r\nimport { SofB2BJsonNodeComponent } from '../sof-b2b-json-node/sof-b2b-json-node.component';\r\n\r\n/**\r\n * The Sof B2B JSON Editor Component\r\n Root JsonEditor template.\r\n Renders JsonNamespace[] as top-level expansion panels.\r\n All child node rendering is delegated to sof-b2b-json-node.\r\n */\r\n@Component({\r\n selector: 'sof-b2b-json-editor',\r\n standalone: true,\r\n imports: [MatExpansionModule, SofB2BJsonNodeComponent],\r\n templateUrl: './sof-b2b-json-editor.component.html',\r\n styleUrls: ['./sof-b2b-json-editor.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SofB2BJsonEditorComponent implements OnInit {\r\n\r\n /**\r\n * Raw nested JSON object to edit.\r\n * Internally flattened into JsonEntry[] for tree construction.\r\n * ⚠️ Pass a new object reference to trigger re-computation.\r\n */\r\n readonly data = input<JsonObject>({});\r\n\r\n /**\r\n * Optional JSON Schema (Draft 7+) describing the data shape.\r\n * When provided, the editor parses it internally and uses it to configure\r\n * field types, labels, and dropdown options at tree-build time.\r\n * Fields not found in the schema fall back to inferInputType().\r\n *\r\n * @example\r\n * const schema: JsonSchema = {\r\n * type: 'object',\r\n * properties: {\r\n * Theme: { type: 'string', enum: ['dark', 'light'] },\r\n * MaxRetries: { type: 'integer', title: 'Max Retries' },\r\n * },\r\n * };\r\n */\r\n readonly schema = input<JsonSchema | undefined>(undefined);\r\n\r\n /** Debounce delay in ms before dataChanged emits. Default: 1500. */\r\n readonly debounceMs = input<number>(1500);\r\n\r\n /** Message shown when data is empty. */\r\n readonly emptyMessage = input<string>('No data to display.');\r\n\r\n /** Message shown when search returns no matches. */\r\n readonly noResultsMessage = input<string>('No results found.');\r\n\r\n /**\r\n * Search term for filtering the tree.\r\n * Minimum 2 characters to trigger filtering — shorter terms\r\n * match too broadly and run the full recursive walk unnecessarily.\r\n */\r\n readonly searchTerm = input<string>('');\r\n\r\n /** Whether or not to render the json editor in read-only mode.\r\n * When true, all scalar fields display as plaintext, toggles are disabled,\r\n * and the change$/debounce subscription is never created. Default: false. */\r\n readonly readOnly = input<boolean>(false);\r\n\r\n /**\r\n * Emits the full reconstructed nested JSON object after debounce period.\r\n * Pass directly to any consumer expecting a JsonObject.\r\n * 🛡️ Suppressed when readOnly is true.\r\n */\r\n readonly dataChanged = output<JsonObject>();\r\n\r\n /**\r\n * Emits an error message string when a parsing or validation error occurs.\r\n * Consumers can subscribe to display errors in their own UI (snackbar, toast, etc.).\r\n */\r\n readonly parseError = output<string>();\r\n\r\n /** Top-level namespace panels only — not nested array/object panels. */\r\n readonly namespacePanels = viewChildren<MatExpansionPanel>('namespacePanel');\r\n\r\n /**\r\n * Parsed JSON Schema → flat Record<string, FieldConfig>.\r\n * Recomputes when the schema input changes. Used internally by\r\n * buildTree() for field config resolution. Consumers never see this.\r\n */\r\n private readonly parsedSchema = computed(() => parseJsonSchema(this.schema()));\r\n\r\n /**\r\n * Internal flat entries derived from the data input.\r\n * Recomputes automatically when data() changes.\r\n * Protected so the template can check entries().length for empty state.\r\n */\r\n protected readonly entries = computed<JsonEntry[]>(() => {\r\n const obj = this.data();\r\n if (!obj || Object.keys(obj).length === 0) return [];\r\n return normalizeToEntries(obj);\r\n });\r\n\r\n /**\r\n * Full namespace tree built from internal entries.\r\n * Recomputes automatically when data() or schema() changes.\r\n * 🔑 Duplicate key validation runs on every recomputation.\r\n */\r\n protected readonly namespaces = computed<JsonNamespace[]>(() => {\r\n const data = this.entries();\r\n if (!data?.length) return [];\r\n validateDuplicateKeys(data);\r\n return this.buildTree(data);\r\n });\r\n\r\n /**\r\n * Filtered namespace tree derived from namespaces + searchTerm.\r\n * Recomputes automatically when either signal changes.\r\n * No manual sync needed — computed() handles both inputs.\r\n *\r\n * This replaces the manual sync bug where filteredNamespaces\r\n * started as [] and wasn't populated until a search fired.\r\n */\r\n protected readonly filteredNamespaces = computed<JsonNamespace[]>(() =>\r\n filterNamespaces(this.namespaces(), this.searchTerm())\r\n );\r\n\r\n /** The Internal state changes */\r\n private readonly change$ = new Subject<void>();\r\n\r\n /**\r\n * 💾 DestroyRef — takeUntilDestroyed() auto-completes the debounce\r\n * subscription on component destroy, preventing memory leaks and\r\n * emissions to destroyed parent components.\r\n */\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n ngOnInit(): void {\r\n // 🛡️ Skip the change subscription entirely in readOnly mode —\r\n // no debounce timer, no emissions, no wasted cycles.\r\n if (this.readOnly()) return;\r\n\r\n // 💾 Subscription auto-completes on component destroy.\r\n // debounceMs() read once at init — if the input changes after init\r\n // the debounce interval won't update. Acceptable tradeoff;\r\n // debounceMs is not expected to change after component creation.\r\n this.change$.pipe(debounceTime(this.debounceMs()), takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n const flatEntries = flattenNamespaces(this.namespaces());\r\n this.dataChanged.emit(unflattenJson(flatEntries));\r\n });\r\n }\r\n\r\n /** Programmatically opens all top-level namespace panels. */\r\n openAll(): void {\r\n this.namespacePanels().forEach((p) => p.open());\r\n }\r\n\r\n /** Programmatically closes all top-level namespace panels. */\r\n closeAll(): void {\r\n this.namespacePanels().forEach((p) => p.close());\r\n }\r\n\r\n /** Handles value changes from any child SofB2BJsonNodeComponent. Pushes into the debounce stream. */\r\n protected onValueChanged(): void {\r\n this.change$.next();\r\n }\r\n\r\n /**\r\n * Groups flat JsonEntry[] into a namespace tree for rendering.\r\n *\r\n * Each entry's first path segment becomes the namespace prefix.\r\n * Entries whose keys start with `[` (bracket notation) are grouped\r\n * under a fallback \"—\" namespace and sorted to the top.\r\n *\r\n * Regex metacharacters in the prefix are escaped before stripping\r\n * it from child keys (e.g. `$Settings.Foo` won't break the RegExp).\r\n */\r\n private buildTree(data: JsonEntry[]): JsonNamespace[] {\r\n const namespaceMap = new Map<string, JsonEntry[]>();\r\n\r\n for (const entry of data) {\r\n const segments = parsePath(entry.key);\r\n const firstSeg = segments[0];\r\n\r\n // Determine namespace prefix — first segment if it's a plain string key\r\n // Keys that start with [ (e.g. [\"Discount Amount\"]) go to \"—\"\r\n const prefix = typeof firstSeg === 'string' && segments.length > 1 ? firstSeg : '—';\r\n\r\n // Strip prefix from key for within-namespace building\r\n // Escape regex metacharacters in the prefix (e.g. \"$Settings\" → \"\\\\$Settings\")\r\n const escaped = prefix !== '—' ? prefix.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') : '';\r\n const strippedKey = prefix !== '—' ? entry.key.replace(new RegExp(`^${escaped}\\\\.?`), '') : entry.key;\r\n\r\n if (!namespaceMap.has(prefix)) namespaceMap.set(prefix, []);\r\n namespaceMap.get(prefix)!.push({ ...entry, key: strippedKey });\r\n }\r\n\r\n return Array.from(namespaceMap.entries())\r\n .map(([prefix, entries]) => ({\r\n prefix,\r\n nodes: buildNodesFromEntries(entries, this.parsedSchema(), 0),\r\n }))\r\n .sort((a, b) => {\r\n if (a.prefix === '—') return -1;\r\n if (b.prefix === '—') return 1;\r\n return a.prefix.localeCompare(b.prefix);\r\n });\r\n }\r\n}\r\n","<div class=\"json-editor\">\r\n @if (!entries().length) {\r\n <div class=\"json-editor-empty\">\r\n <i class=\"ph ph-file-dashed json-editor-empty-icon\"></i>\r\n <span class=\"json-editor-empty-message\">{{ emptyMessage() }}</span>\r\n </div>\r\n } @else if (filteredNamespaces().length === 0 && searchTerm().length >= 2) {\r\n <div class=\"json-editor-empty\">\r\n <i class=\"ph ph-magnifying-glass json-editor-empty-icon\"></i>\r\n <span class=\"json-editor-empty-message\">\r\n {{ noResultsMessage() }} <span class=\"json-editor-empty-term\">\"{{ searchTerm() }}\"</span>\r\n </span>\r\n </div>\r\n } @else {\r\n @for (namespace of filteredNamespaces(); track namespace.prefix; let idx = $index) {\r\n <mat-expansion-panel #namespacePanel class=\"json-editor-namespace\" [expanded]=\"idx === 0 || !!searchTerm()\">\r\n <mat-expansion-panel-header collapsedHeight=\"40px\" expandedHeight=\"40px\">\r\n <mat-panel-title class=\"json-editor-namespace-title\">\r\n {{ namespace.prefix }}\r\n </mat-panel-title>\r\n <mat-panel-description class=\"json-editor-namespace-description\">\r\n <span class=\"field-count\">\r\n {{ namespace.nodes.length }} field{{ namespace.nodes.length !== 1 ? 's' : '' }}\r\n </span>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n <div class=\"json-editor-namespace-body\">\r\n @for (node of namespace.nodes; track node.fullKey) {\r\n <sof-b2b-json-node [node]=\"node\" [readOnly]=\"readOnly()\" (valueChanged)=\"onValueChanged()\"> </sof-b2b-json-node>\r\n }\r\n </div>\r\n </mat-expansion-panel>\r\n }\r\n }\r\n</div>","/**\r\n * SofB2BModule — NgModule wrapper for the B2B secondary entry point.\r\n *\r\n * Imports and re-exports all standalone B2B components so that consumers\r\n * can use a single module import instead of importing each component individually.\r\n *\r\n * example:\r\n * -- Option A — import the module\r\n * @NgModule({ imports: [SofB2BModule] })\r\n * export class MyModule {}\r\n *\r\n * -- Option B — import standalone components directly\r\n * @Component({ standalone: true, imports: [SofB2BJsonEditorComponent] })\r\n * export class MyComponent {}\r\n */\r\nimport { NgModule } from '@angular/core';\r\nimport { SofB2BJsonEditorComponent } from './json-editor/sof-b2b-json-editor/sof-b2b-json-editor.component';\r\nimport { SofB2BJsonNodeComponent } from './json-editor/sof-b2b-json-node/sof-b2b-json-node.component';\r\n\r\n@NgModule({\r\n imports: [SofB2BJsonEditorComponent, SofB2BJsonNodeComponent],\r\n exports: [SofB2BJsonEditorComponent, SofB2BJsonNodeComponent],\r\n})\r\nexport class SofB2BModule { }\r\n","// JSON Editor exports\r\n// Components\r\nexport { SofB2BJsonEditorComponent } from './sof-b2b-json-editor/sof-b2b-json-editor.component';\r\nexport { SofB2BJsonNodeComponent } from './sof-b2b-json-node/sof-b2b-json-node.component';\r\n\r\n// Models\r\nexport { JsonEntry, JsonNamespace, JsonNode, JsonObject, JsonValue, FieldConfig } from './utils/json-editor.models';\r\n\r\n// Utils\r\nexport {\r\n type JsonSchema,\r\n MAX_DEPTH,\r\n buildNodesFromEntries,\r\n filterNamespaces,\r\n flattenNamespaces,\r\n normalizeToEntries,\r\n parsePath,\r\n unflattenJson,\r\n validateDuplicateKeys,\r\n} from './utils/json-editor.utils';\r\n\r\nexport { parseJsonSchema } from './utils/json-schema.utils';\r\n","/**\r\n * @fileoverview Public API surface for `@softheon/armature/b2b`.\r\n *\r\n * This is the entry file referenced by ng-package.json.\r\n * Everything exported here is available to consumers via:\r\n *\r\n * import { SofB2BModule, SofB2BJsonEditorComponent, ... } from '@softheon/armature/b2b';\r\n */\r\n\r\n// ── Module ───────────────────────────────────────────────────────────────────\r\nexport { SofB2BModule } from './src/b2b.module';\r\n\r\n// ── JSON Editor domain ───────────────────────────────────────────────────────\r\nexport * from './src/json-editor/json-editor-api';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -7767,7 +7767,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
7767
7767
|
* @description
|
|
7768
7768
|
* - This component can be used as a single select or multi-select.
|
|
7769
7769
|
* - Can be used with a reactive formControlName.
|
|
7770
|
-
* - Can be used with [(
|
|
7770
|
+
* - Can be used with [(ngModel)] binding.
|
|
7771
7771
|
* - Can be used without a form using the (selectionChange) output event.
|
|
7772
7772
|
*/
|
|
7773
7773
|
class SofSelectComponent {
|
|
@@ -10717,6 +10717,12 @@ class SofSnackbarComponent {
|
|
|
10717
10717
|
this._snackbarService = inject(SnackbarService);
|
|
10718
10718
|
/** Snackbars array signal */
|
|
10719
10719
|
this.snackbars = this._snackbarService.snackbars;
|
|
10720
|
+
/** Position from top for the snackbar container */
|
|
10721
|
+
this.positionTop = undefined;
|
|
10722
|
+
/** Position from right for the snackbar container (default: 24px) */
|
|
10723
|
+
this.positionRight = '24px';
|
|
10724
|
+
/** Position from bottom for the snackbar container (default: 24px) */
|
|
10725
|
+
this.positionBottom = '24px';
|
|
10720
10726
|
/** Live announcer for screen reader wcag */
|
|
10721
10727
|
this._liveAnnouncerService = inject(LiveAnnouncer);
|
|
10722
10728
|
/** Translation service */
|
|
@@ -10759,7 +10765,7 @@ class SofSnackbarComponent {
|
|
|
10759
10765
|
this.dismiss(snackbar, true);
|
|
10760
10766
|
}
|
|
10761
10767
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SofSnackbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10762
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: SofSnackbarComponent, isStandalone: true, selector: "sof-snackbar", ngImport: i0, template: "@if (snackbars().length) {\r\n <ol \r\n @slideAndFade\r\n class=\"snackbar-container\"\r\n m-a-0 p-a-0\r\n role=\"region\"\r\n [attr.aria-label]=\"'armature.snackbar.container-aria-label' | translate\">\r\n @for (snackbar of snackbars(); track snackbar.id) {\r\n <li \r\n @slideAndFade \r\n class=\"snackbar\"\r\n [class.has-extended-message]=\"snackbar.extendedMessage?.length\"\r\n (mouseenter)=\"!snackbar.actionLabel?.length ? pause(snackbar.id) : null\"\r\n (mouseleave)=\"!snackbar.actionLabel?.length ? resume(snackbar.id, snackbar.duration) : null\"\r\n [attr.role]=\"(snackbar.actionLabel?.length || snackbar.type === 'error' || snackbar.type === 'warning') ? 'alert' : 'status'\">\r\n <div [class]=\"`icon icon--${snackbar.type}`\">\r\n @if (snackbar.iconClassOverride) {\r\n <i [class]=\"snackbar.iconClassOverride\" aria-hidden=\"true\"></i>\r\n } @else {\r\n @switch (snackbar.type) {\r\n @case ('success') {\r\n <i class=\"ph-bold ph-check-circle\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('error') {\r\n <i class=\"ph-bold ph-warning-circle\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('info') {\r\n <i class=\"ph-bold ph-info\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('warning') {\r\n <i class=\"ph-bold ph-warning\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('help') {\r\n <i class=\"ph-bold ph-sparkle\" aria-hidden=\"true\"></i>\r\n }\r\n }\r\n }\r\n </div>\r\n <div class=\"message-container\">\r\n <p class=\"body2 fw-500 m-a-0 text-inverse\">\r\n {{snackbar.message | translate : (snackbar.messageParams || {})}}\r\n </p>\r\n @if (snackbar.extendedMessage?.length) {\r\n <p class=\"body2 m-a-0 text-inverse\">\r\n {{snackbar.extendedMessage | translate : (snackbar.extendedMessageParams || {})}}\r\n </p>\r\n }\r\n </div>\r\n @if (snackbar.actionLabel?.length) {\r\n <button \r\n (click)=\"handleAction(snackbar)\"\r\n mat-flat-button class=\"sof-button-v2 mini\" \r\n theme=\"neutral\" emphasis=\"solid\"\r\n [id]=\"`snackbar-${snackbar.id}-action-button`\">\r\n {{snackbar.actionLabel | translate}}\r\n </button>\r\n }\r\n <button \r\n (click)=\"dismiss(snackbar)\"\r\n mat-flat-button class=\"sof-button-v2 mini dismiss-button\"\r\n [id]=\"`snackbar-${snackbar.id}-dismiss-button`\"\r\n [attr.aria-label]=\"'armature.snackbar.dismiss-button-aria-label' | translate\">\r\n <i class=\"ph-bold ph-x\" aria-hidden=\"true\"></i>\r\n </button>\r\n </li>\r\n }\r\n </ol>\r\n}\r\n", styles: ["@charset \"UTF-8\";:root{--primary-color-50-parts: #edf4ff;--primary-color-100-parts: #b9d4fc;--primary-color-200-parts: #8ab7fb;--primary-color-300-parts: #5b9af9;--primary-color-400-parts: #3784f7;--primary-color-500-parts: #146ef6;--primary-color-600-parts: #1266f5;--primary-color-700-parts: #0e5bf3;--primary-color-800-parts: #0b51f2;--primary-color-900-parts: #063fef;--primary-color-A50-parts: rgba(20, 110, 246, .04);--primary-color-A100-parts: rgba(20, 110, 246, .08);--primary-color-A200-parts: rgba(20, 110, 246, .16);--primary-color-A300-parts: rgba(20, 110, 246, .24);--primary-color-A400-parts: rgba(20, 110, 246, .32);--primary-color-A500-parts: rgba(20, 110, 246, .4);--primary-color-A600-parts: rgba(20, 110, 246, .48);--primary-color-A700-parts: rgba(20, 110, 246, .56);--primary-color-A800-parts: rgba(20, 110, 246, .64);--primary-color-A900-parts: rgba(20, 110, 246, .72);--primary-color-contrast-50-parts: rgba(0, 0, 0, .87);--primary-color-contrast-100-parts: rgba(0, 0, 0, .87);--primary-color-contrast-200-parts: rgba(0, 0, 0, .87);--primary-color-contrast-300-parts: rgba(0, 0, 0, .87);--primary-color-contrast-400-parts: rgba(0, 0, 0, .87);--primary-color-contrast-500-parts: rgba(255, 255, 255, 1);--primary-color-contrast-600-parts: rgba(255, 255, 255, 1);--primary-color-contrast-700-parts: rgba(255, 255, 255, 1);--primary-color-contrast-800-parts: rgba(255, 255, 255, 1);--primary-color-contrast-900-parts: rgba(255, 255, 255, 1);--primary-color-contrast-A50-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A100-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A200-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A300-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A400-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A500-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A600-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A700-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A800-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A900-parts: rgba(0, 0, 0, .87);--primary-color-50-parts-rgb: 237, 244, 255;--primary-color-100-parts-rgb: 185, 212, 252;--primary-color-200-parts-rgb: 138, 183, 251;--primary-color-300-parts-rgb: 91, 154, 249;--primary-color-400-parts-rgb: 55, 132, 247;--primary-color-500-parts-rgb: 20, 110, 246;--primary-color-600-parts-rgb: 18, 102, 245;--primary-color-700-parts-rgb: 14, 91, 243;--primary-color-800-parts-rgb: 11, 81, 242;--primary-color-900-parts-rgb: 6, 63, 239;--accent-color-50-parts: #e0f2f1;--accent-color-100-parts: #b2dfdb;--accent-color-200-parts: #80cbc4;--accent-color-300-parts: #4db6ac;--accent-color-400-parts: #26a69a;--accent-color-500-parts: #009688;--accent-color-600-parts: #00897b;--accent-color-700-parts: #00796b;--accent-color-800-parts: #00695c;--accent-color-900-parts: #004d40;--accent-color-A50-parts: rgba(0, 150, 136, .04);--accent-color-A100-parts: rgba(0, 150, 136, .08);--accent-color-A200-parts: rgba(0, 150, 136, .16);--accent-color-A300-parts: rgba(0, 150, 136, .24);--accent-color-A400-parts: rgba(0, 150, 136, .32);--accent-color-A500-parts: rgba(0, 150, 136, .4);--accent-color-A600-parts: rgba(0, 150, 136, .48);--accent-color-A700-parts: rgba(0, 150, 136, .56);--accent-color-A800-parts: rgba(0, 150, 136, .64);--accent-color-A900-parts: rgba(0, 150, 136, .72);--accent-color-contrast-50-parts: rgba(0, 0, 0, .87);--accent-color-contrast-100-parts: rgba(0, 0, 0, .87);--accent-color-contrast-200-parts: rgba(0, 0, 0, .87);--accent-color-contrast-300-parts: rgba(0, 0, 0, .87);--accent-color-contrast-400-parts: rgba(0, 0, 0, .87);--accent-color-contrast-500-parts: rgba(255, 255, 255, 1);--accent-color-contrast-600-parts: rgba(255, 255, 255, 1);--accent-color-contrast-700-parts: rgba(255, 255, 255, 1);--accent-color-contrast-800-parts: rgba(255, 255, 255, 1);--accent-color-contrast-900-parts: rgba(255, 255, 255, 1);--accent-color-contrast-A50-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A100-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A200-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A300-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A400-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A500-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A600-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A700-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A800-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A900-parts: rgba(0, 0, 0, .87);--accent-color-50-parts-rgb: 224, 242, 241;--accent-color-100-parts-rgb: 178, 223, 219;--accent-color-200-parts-rgb: 128, 203, 196;--accent-color-300-parts-rgb: 77, 182, 172;--accent-color-400-parts-rgb: 38, 166, 154;--accent-color-500-parts-rgb: 0, 150, 136;--accent-color-600-parts-rgb: 0, 137, 123;--accent-color-700-parts-rgb: 0, 121, 107;--accent-color-800-parts-rgb: 0, 105, 92;--accent-color-900-parts-rgb: 0, 77, 64;--warn-color-50-parts: #fceee3;--warn-color-100-parts: #f8d4b9;--warn-color-200-parts: #f4b78b;--warn-color-300-parts: #ef9a5d;--warn-color-400-parts: #eb843a;--warn-color-500-parts: #e86e17;--warn-color-600-parts: #e56614;--warn-color-700-parts: #e25b11;--warn-color-800-parts: #de510d;--warn-color-900-parts: #d83f07;--warn-color-A50-parts: rgba(232, 110, 23, .04);--warn-color-A100-parts: rgba(232, 110, 23, .08);--warn-color-A200-parts: rgba(232, 110, 23, .16);--warn-color-A300-parts: rgba(232, 110, 23, .24);--warn-color-A400-parts: rgba(232, 110, 23, .32);--warn-color-A500-parts: rgba(232, 110, 23, .4);--warn-color-A600-parts: rgba(232, 110, 23, .48);--warn-color-A700-parts: rgba(232, 110, 23, .56);--warn-color-A800-parts: rgba(232, 110, 23, .64);--warn-color-A900-parts: rgba(232, 110, 23, .72);--warn-color-contrast-50-parts: rgba(0, 0, 0, .87);--warn-color-contrast-100-parts: rgba(0, 0, 0, .87);--warn-color-contrast-200-parts: rgba(0, 0, 0, .87);--warn-color-contrast-300-parts: rgba(0, 0, 0, .87);--warn-color-contrast-400-parts: rgba(0, 0, 0, .87);--warn-color-contrast-500-parts: rgba(0, 0, 0, .87);--warn-color-contrast-600-parts: rgba(0, 0, 0, .87);--warn-color-contrast-700-parts: rgba(0, 0, 0, .87);--warn-color-contrast-800-parts: rgba(0, 0, 0, .87);--warn-color-contrast-900-parts: rgba(255, 255, 255, 1);--warn-color-contrast-A50-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A100-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A200-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A300-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A400-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A500-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A600-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A700-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A800-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A900-parts: rgba(0, 0, 0, .87);--warn-color-50-parts-rgb: 252, 238, 227;--warn-color-100-parts-rgb: 248, 212, 185;--warn-color-200-parts-rgb: 244, 183, 139;--warn-color-300-parts-rgb: 239, 154, 93;--warn-color-400-parts-rgb: 235, 132, 58;--warn-color-500-parts-rgb: 232, 110, 23;--warn-color-600-parts-rgb: 229, 102, 20;--warn-color-700-parts-rgb: 226, 91, 17;--warn-color-800-parts-rgb: 222, 81, 13;--warn-color-900-parts-rgb: 216, 63, 7;--info-color-50-parts: #edf4ff;--info-color-100-parts: #b9d4fc;--info-color-200-parts: #8ab7fb;--info-color-300-parts: #5b9af9;--info-color-400-parts: #3784f7;--info-color-500-parts: #146ef6;--info-color-600-parts: #1266f5;--info-color-700-parts: #0e5bf3;--info-color-800-parts: #0b51f2;--info-color-900-parts: #063fef;--info-color-A50-parts: rgba(20, 110, 246, .04);--info-color-A100-parts: rgba(20, 110, 246, .08);--info-color-A200-parts: rgba(20, 110, 246, .16);--info-color-A300-parts: rgba(20, 110, 246, .24);--info-color-A400-parts: rgba(20, 110, 246, .32);--info-color-A500-parts: rgba(20, 110, 246, .4);--info-color-A600-parts: rgba(20, 110, 246, .48);--info-color-A700-parts: rgba(20, 110, 246, .56);--info-color-A800-parts: rgba(20, 110, 246, .64);--info-color-A900-parts: rgba(20, 110, 246, .72);--info-color-contrast-50-parts: rgba(0, 0, 0, .87);--info-color-contrast-100-parts: rgba(0, 0, 0, .87);--info-color-contrast-200-parts: rgba(0, 0, 0, .87);--info-color-contrast-300-parts: rgba(0, 0, 0, .87);--info-color-contrast-400-parts: rgba(0, 0, 0, .87);--info-color-contrast-500-parts: rgba(255, 255, 255, 1);--info-color-contrast-600-parts: rgba(255, 255, 255, 1);--info-color-contrast-700-parts: rgba(255, 255, 255, 1);--info-color-contrast-800-parts: rgba(255, 255, 255, 1);--info-color-contrast-900-parts: rgba(255, 255, 255, 1);--info-color-contrast-A50-parts: rgba(0, 0, 0, .87);--info-color-contrast-A100-parts: rgba(0, 0, 0, .87);--info-color-contrast-A200-parts: rgba(0, 0, 0, .87);--info-color-contrast-A300-parts: rgba(0, 0, 0, .87);--info-color-contrast-A400-parts: rgba(0, 0, 0, .87);--info-color-contrast-A500-parts: rgba(0, 0, 0, .87);--info-color-contrast-A600-parts: rgba(0, 0, 0, .87);--info-color-contrast-A700-parts: rgba(0, 0, 0, .87);--info-color-contrast-A800-parts: rgba(0, 0, 0, .87);--info-color-contrast-A900-parts: rgba(0, 0, 0, .87);--info-color-50-parts-rgb: 237, 244, 255;--info-color-100-parts-rgb: 185, 212, 252;--info-color-200-parts-rgb: 138, 183, 251;--info-color-300-parts-rgb: 91, 154, 249;--info-color-400-parts-rgb: 55, 132, 247;--info-color-500-parts-rgb: 20, 110, 246;--info-color-600-parts-rgb: 18, 102, 245;--info-color-700-parts-rgb: 14, 91, 243;--info-color-800-parts-rgb: 11, 81, 242;--info-color-900-parts-rgb: 6, 63, 239;--success-color-50-parts: #e7f0e6;--success-color-100-parts: #c4dac1;--success-color-200-parts: #9cc198;--success-color-300-parts: #74a86e;--success-color-400-parts: #57954f;--success-color-500-parts: #398230;--success-color-600-parts: #337a2b;--success-color-700-parts: #2c6f24;--success-color-800-parts: #24651e;--success-color-900-parts: #175213;--success-color-A50-parts: rgba(57, 130, 48, .04);--success-color-A100-parts: rgba(57, 130, 48, .08);--success-color-A200-parts: rgba(57, 130, 48, .16);--success-color-A300-parts: rgba(57, 130, 48, .24);--success-color-A400-parts: rgba(57, 130, 48, .32);--success-color-A500-parts: rgba(57, 130, 48, .4);--success-color-A600-parts: rgba(57, 130, 48, .48);--success-color-A700-parts: rgba(57, 130, 48, .56);--success-color-A800-parts: rgba(57, 130, 48, .64);--success-color-A900-parts: rgba(57, 130, 48, .72);--success-color-contrast-50-parts: rgba(0, 0, 0, .87);--success-color-contrast-100-parts: rgba(0, 0, 0, .87);--success-color-contrast-200-parts: rgba(0, 0, 0, .87);--success-color-contrast-300-parts: rgba(0, 0, 0, .87);--success-color-contrast-400-parts: rgba(0, 0, 0, .87);--success-color-contrast-500-parts: rgba(255, 255, 255, 1);--success-color-contrast-600-parts: rgba(255, 255, 255, 1);--success-color-contrast-700-parts: rgba(255, 255, 255, 1);--success-color-contrast-800-parts: rgba(255, 255, 255, 1);--success-color-contrast-900-parts: rgba(255, 255, 255, 1);--success-color-contrast-A50-parts: rgba(0, 0, 0, .87);--success-color-contrast-A100-parts: rgba(0, 0, 0, .87);--success-color-contrast-A200-parts: rgba(0, 0, 0, .87);--success-color-contrast-A300-parts: rgba(0, 0, 0, .87);--success-color-contrast-A400-parts: rgba(0, 0, 0, .87);--success-color-contrast-A500-parts: rgba(0, 0, 0, .87);--success-color-contrast-A600-parts: rgba(0, 0, 0, .87);--success-color-contrast-A700-parts: rgba(0, 0, 0, .87);--success-color-contrast-A800-parts: rgba(0, 0, 0, .87);--success-color-contrast-A900-parts: rgba(0, 0, 0, .87);--success-color-50-parts-rgb: 231, 240, 230;--success-color-100-parts-rgb: 196, 218, 193;--success-color-200-parts-rgb: 156, 193, 152;--success-color-300-parts-rgb: 116, 168, 110;--success-color-400-parts-rgb: 87, 149, 79;--success-color-500-parts-rgb: 57, 130, 48;--success-color-600-parts-rgb: 51, 122, 43;--success-color-700-parts-rgb: 44, 111, 36;--success-color-800-parts-rgb: 36, 101, 30;--success-color-900-parts-rgb: 23, 82, 19;--error-color-50-parts: #fae5e4;--error-color-100-parts: #f3bdba;--error-color-200-parts: #eb928d;--error-color-300-parts: #e3665f;--error-color-400-parts: #dd453c;--error-color-500-parts: #d7241a;--error-color-600-parts: #d32017;--error-color-700-parts: #cd1b13;--error-color-800-parts: #c7160f;--error-color-900-parts: #be0d08;--error-color-A50-parts: rgba(215, 36, 26, .04);--error-color-A100-parts: rgba(215, 36, 26, .08);--error-color-A200-parts: rgba(215, 36, 26, .16);--error-color-A300-parts: rgba(215, 36, 26, .24);--error-color-A400-parts: rgba(215, 36, 26, .32);--error-color-A500-parts: rgba(215, 36, 26, .4);--error-color-A600-parts: rgba(215, 36, 26, .48);--error-color-A700-parts: rgba(215, 36, 26, .56);--error-color-A800-parts: rgba(215, 36, 26, .64);--error-color-A900-parts: rgba(215, 36, 26, .72);--error-color-contrast-50-parts: rgba(0, 0, 0, .87);--error-color-contrast-100-parts: rgba(0, 0, 0, .87);--error-color-contrast-200-parts: rgba(0, 0, 0, .87);--error-color-contrast-300-parts: rgba(0, 0, 0, .87);--error-color-contrast-400-parts: rgba(0, 0, 0, .87);--error-color-contrast-500-parts: rgba(255, 255, 255, 1);--error-color-contrast-600-parts: rgba(255, 255, 255, 1);--error-color-contrast-700-parts: rgba(255, 255, 255, 1);--error-color-contrast-800-parts: rgba(255, 255, 255, 1);--error-color-contrast-900-parts: rgba(255, 255, 255, 1);--error-color-contrast-A50-parts: rgba(0, 0, 0, .87);--error-color-contrast-A100-parts: rgba(0, 0, 0, .87);--error-color-contrast-A200-parts: rgba(0, 0, 0, .87);--error-color-contrast-A300-parts: rgba(0, 0, 0, .87);--error-color-contrast-A400-parts: rgba(0, 0, 0, .87);--error-color-contrast-A500-parts: rgba(0, 0, 0, .87);--error-color-contrast-A600-parts: rgba(0, 0, 0, .87);--error-color-contrast-A700-parts: rgba(0, 0, 0, .87);--error-color-contrast-A800-parts: rgba(0, 0, 0, .87);--error-color-contrast-A900-parts: rgba(0, 0, 0, .87);--error-color-50-parts-rgb: 250, 229, 228;--error-color-100-parts-rgb: 243, 189, 186;--error-color-200-parts-rgb: 235, 146, 141;--error-color-300-parts-rgb: 227, 102, 95;--error-color-400-parts-rgb: 221, 69, 60;--error-color-500-parts-rgb: 215, 36, 26;--error-color-600-parts-rgb: 211, 32, 23;--error-color-700-parts-rgb: 205, 27, 19;--error-color-800-parts-rgb: 199, 22, 15;--error-color-900-parts-rgb: 190, 13, 8;--neutral-color-50-parts: #e9e9e9;--neutral-color-100-parts: #dddddd;--neutral-color-200-parts: #cccccc;--neutral-color-300-parts: #b0b0b0;--neutral-color-400-parts: #909090;--neutral-color-500-parts: #515151;--neutral-color-600-parts: #424242;--neutral-color-700-parts: #333333;--neutral-color-800-parts: #212121;--neutral-color-900-parts: #141414;--neutral-color-A50-parts: rgba(81, 81, 81, .04);--neutral-color-A100-parts: rgba(81, 81, 81, .08);--neutral-color-A200-parts: rgba(81, 81, 81, .16);--neutral-color-A300-parts: rgba(81, 81, 81, .24);--neutral-color-A400-parts: rgba(81, 81, 81, .32);--neutral-color-A500-parts: rgba(81, 81, 81, .4);--neutral-color-A600-parts: rgba(81, 81, 81, .48);--neutral-color-A700-parts: rgba(81, 81, 81, .56);--neutral-color-A800-parts: rgba(81, 81, 81, .64);--neutral-color-A900-parts: rgba(81, 81, 81, .72);--neutral-color-contrast-50-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-100-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-200-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-300-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-400-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-500-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-600-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-700-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-800-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-900-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-A50-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A100-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A200-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A300-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A400-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A500-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A600-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A700-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A800-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A900-parts: rgba(0, 0, 0, .87);--neutral-color-50-parts-rgb: 233, 233, 233;--neutral-color-100-parts-rgb: 221, 221, 221;--neutral-color-200-parts-rgb: 204, 204, 204;--neutral-color-300-parts-rgb: 176, 176, 176;--neutral-color-400-parts-rgb: 144, 144, 144;--neutral-color-500-parts-rgb: 81, 81, 81;--neutral-color-600-parts-rgb: 66, 66, 66;--neutral-color-700-parts-rgb: 51, 51, 51;--neutral-color-800-parts-rgb: 33, 33, 33;--neutral-color-900-parts-rgb: 20, 20, 20;--help-color-50-parts: #EFE3FE;--help-color-100-parts: #E0CAFD;--help-color-200-parts: #C194FB;--help-color-300-parts: #994FF8;--help-color-400-parts: #8831F7;--help-color-500-parts: #7714F6;--help-color-600-parts: #6809E3;--help-color-700-parts: #5B08C5;--help-color-800-parts: #4D06A8;--help-color-900-parts: #40058A;--help-color-A50-parts: rgba(119, 20, 246, .04);--help-color-A100-parts: rgba(119, 20, 246, .08);--help-color-A200-parts: rgba(119, 20, 246, .16);--help-color-A300-parts: rgba(119, 20, 246, .24);--help-color-A400-parts: rgba(119, 20, 246, .32);--help-color-A500-parts: rgba(119, 20, 246, .4);--help-color-A600-parts: rgba(119, 20, 246, .48);--help-color-A700-parts: rgba(119, 20, 246, .56);--help-color-A800-parts: rgba(119, 20, 246, .64);--help-color-A900-parts: rgba(119, 20, 246, .72);--help-color-contrast-50-parts: rgba(0, 0, 0, .87);--help-color-contrast-100-parts: rgba(0, 0, 0, .87);--help-color-contrast-200-parts: rgba(0, 0, 0, .87);--help-color-contrast-300-parts: rgba(255, 255, 255, 1);--help-color-contrast-400-parts: rgba(255, 255, 255, 1);--help-color-contrast-500-parts: rgba(255, 255, 255, 1);--help-color-contrast-600-parts: rgba(255, 255, 255, 1);--help-color-contrast-700-parts: rgba(255, 255, 255, 1);--help-color-contrast-800-parts: rgba(255, 255, 255, 1);--help-color-contrast-900-parts: rgba(255, 255, 255, 1);--help-color-contrast-A50-parts: rgba(0, 0, 0, .87);--help-color-contrast-A100-parts: rgba(0, 0, 0, .87);--help-color-contrast-A200-parts: rgba(0, 0, 0, .87);--help-color-contrast-A300-parts: rgba(0, 0, 0, .87);--help-color-contrast-A400-parts: rgba(0, 0, 0, .87);--help-color-contrast-A500-parts: rgba(0, 0, 0, .87);--help-color-contrast-A600-parts: rgba(0, 0, 0, .87);--help-color-contrast-A700-parts: rgba(0, 0, 0, .87);--help-color-contrast-A800-parts: rgba(0, 0, 0, .87);--help-color-contrast-A900-parts: rgba(0, 0, 0, .87);--help-color-50-parts-rgb: 239, 227, 254;--help-color-100-parts-rgb: 224, 202, 253;--help-color-200-parts-rgb: 193, 148, 251;--help-color-300-parts-rgb: 153, 79, 248;--help-color-400-parts-rgb: 136, 49, 247;--help-color-500-parts-rgb: 119, 20, 246;--help-color-600-parts-rgb: 104, 9, 227;--help-color-700-parts-rgb: 91, 8, 197;--help-color-800-parts-rgb: 77, 6, 168;--help-color-900-parts-rgb: 64, 5, 138}:host *{box-sizing:border-box}.snackbar-container{position:fixed;z-index:99999;bottom:24px;right:24px;display:flex;flex-direction:column;align-items:flex-end;gap:16px}.snackbar-container .snackbar{list-style:none;display:flex;flex-direction:row;align-items:center;gap:16px;padding:8px;min-width:213px;width:fit-content;max-width:400px;border-radius:8px;background-color:#333;box-shadow:0 4px 8px 0 var(--neutral-color-A200-parts)}.snackbar-container .snackbar.has-extended-message{align-items:flex-start}.snackbar-container .snackbar .icon{display:flex;align-items:center;justify-content:center;height:28px;width:28px;min-height:28px;min-width:28px;max-height:28px;max-width:28px;border-radius:6px}.snackbar-container .snackbar .icon i{color:#fff;font-size:20px}.snackbar-container .snackbar .icon--success{background-color:var(--success-color-A500-parts)}.snackbar-container .snackbar .icon--error{background-color:var(--error-color-A500-parts)}.snackbar-container .snackbar .icon--info{background-color:var(--info-color-A500-parts)}.snackbar-container .snackbar .icon--warning{background-color:var(--warn-color-A500-parts)}.snackbar-container .snackbar .icon--help{background-color:var(--help-color-A500-parts)}.snackbar-container .snackbar .message-container{display:flex;flex-direction:column;gap:4px}.snackbar-container .snackbar .dismiss-button{background-color:transparent!important;color:#fff!important}.snackbar-container .snackbar .dismiss-button:focus{outline:3px solid var(--primary-color-A500-parts)!important;outline-offset:2px!important}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }], animations: [
|
|
10768
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: SofSnackbarComponent, isStandalone: true, selector: "sof-snackbar", inputs: { positionTop: "positionTop", positionRight: "positionRight", positionBottom: "positionBottom" }, host: { properties: { "style.--snackbar-position-top": "positionTop", "style.--snackbar-position-right": "positionRight", "style.--snackbar-position-bottom": "positionBottom" } }, ngImport: i0, template: "@if (snackbars().length) {\r\n <ol \r\n @slideAndFade\r\n class=\"snackbar-container\"\r\n m-a-0 p-a-0\r\n role=\"region\"\r\n [attr.aria-label]=\"'armature.snackbar.container-aria-label' | translate\">\r\n @for (snackbar of snackbars(); track snackbar.id) {\r\n <li \r\n @slideAndFade \r\n class=\"snackbar\"\r\n [class.has-extended-message]=\"snackbar.extendedMessage?.length\"\r\n (mouseenter)=\"!snackbar.actionLabel?.length ? pause(snackbar.id) : null\"\r\n (mouseleave)=\"!snackbar.actionLabel?.length ? resume(snackbar.id, snackbar.duration) : null\"\r\n [attr.role]=\"(snackbar.actionLabel?.length || snackbar.type === 'error' || snackbar.type === 'warning') ? 'alert' : 'status'\">\r\n <div [class]=\"`icon icon--${snackbar.type}`\">\r\n @if (snackbar.iconClassOverride) {\r\n <i [class]=\"snackbar.iconClassOverride\" aria-hidden=\"true\"></i>\r\n } @else {\r\n @switch (snackbar.type) {\r\n @case ('success') {\r\n <i class=\"ph-bold ph-check-circle\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('error') {\r\n <i class=\"ph-bold ph-warning-circle\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('info') {\r\n <i class=\"ph-bold ph-info\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('warning') {\r\n <i class=\"ph-bold ph-warning\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('help') {\r\n <i class=\"ph-bold ph-sparkle\" aria-hidden=\"true\"></i>\r\n }\r\n }\r\n }\r\n </div>\r\n <div class=\"message-container\">\r\n <p class=\"body2 fw-500 m-a-0 text-inverse\">\r\n {{snackbar.message | translate : (snackbar.messageParams || {})}}\r\n </p>\r\n @if (snackbar.extendedMessage?.length) {\r\n <p class=\"body2 m-a-0 text-inverse\">\r\n {{snackbar.extendedMessage | translate : (snackbar.extendedMessageParams || {})}}\r\n </p>\r\n }\r\n </div>\r\n @if (snackbar.actionLabel?.length) {\r\n <button \r\n (click)=\"handleAction(snackbar)\"\r\n mat-flat-button class=\"sof-button-v2 mini\" \r\n theme=\"neutral\" emphasis=\"solid\"\r\n [id]=\"`snackbar-${snackbar.id}-action-button`\">\r\n {{snackbar.actionLabel | translate}}\r\n </button>\r\n }\r\n <button \r\n (click)=\"dismiss(snackbar)\"\r\n mat-flat-button class=\"sof-button-v2 mini dismiss-button\"\r\n [id]=\"`snackbar-${snackbar.id}-dismiss-button`\"\r\n [attr.aria-label]=\"'armature.snackbar.dismiss-button-aria-label' | translate\">\r\n <i class=\"ph-bold ph-x\" aria-hidden=\"true\"></i>\r\n </button>\r\n </li>\r\n }\r\n </ol>\r\n}\r\n", styles: ["@charset \"UTF-8\";:root{--primary-color-50-parts: #edf4ff;--primary-color-100-parts: #b9d4fc;--primary-color-200-parts: #8ab7fb;--primary-color-300-parts: #5b9af9;--primary-color-400-parts: #3784f7;--primary-color-500-parts: #146ef6;--primary-color-600-parts: #1266f5;--primary-color-700-parts: #0e5bf3;--primary-color-800-parts: #0b51f2;--primary-color-900-parts: #063fef;--primary-color-A50-parts: rgba(20, 110, 246, .04);--primary-color-A100-parts: rgba(20, 110, 246, .08);--primary-color-A200-parts: rgba(20, 110, 246, .16);--primary-color-A300-parts: rgba(20, 110, 246, .24);--primary-color-A400-parts: rgba(20, 110, 246, .32);--primary-color-A500-parts: rgba(20, 110, 246, .4);--primary-color-A600-parts: rgba(20, 110, 246, .48);--primary-color-A700-parts: rgba(20, 110, 246, .56);--primary-color-A800-parts: rgba(20, 110, 246, .64);--primary-color-A900-parts: rgba(20, 110, 246, .72);--primary-color-contrast-50-parts: rgba(0, 0, 0, .87);--primary-color-contrast-100-parts: rgba(0, 0, 0, .87);--primary-color-contrast-200-parts: rgba(0, 0, 0, .87);--primary-color-contrast-300-parts: rgba(0, 0, 0, .87);--primary-color-contrast-400-parts: rgba(0, 0, 0, .87);--primary-color-contrast-500-parts: rgba(255, 255, 255, 1);--primary-color-contrast-600-parts: rgba(255, 255, 255, 1);--primary-color-contrast-700-parts: rgba(255, 255, 255, 1);--primary-color-contrast-800-parts: rgba(255, 255, 255, 1);--primary-color-contrast-900-parts: rgba(255, 255, 255, 1);--primary-color-contrast-A50-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A100-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A200-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A300-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A400-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A500-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A600-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A700-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A800-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A900-parts: rgba(0, 0, 0, .87);--primary-color-50-parts-rgb: 237, 244, 255;--primary-color-100-parts-rgb: 185, 212, 252;--primary-color-200-parts-rgb: 138, 183, 251;--primary-color-300-parts-rgb: 91, 154, 249;--primary-color-400-parts-rgb: 55, 132, 247;--primary-color-500-parts-rgb: 20, 110, 246;--primary-color-600-parts-rgb: 18, 102, 245;--primary-color-700-parts-rgb: 14, 91, 243;--primary-color-800-parts-rgb: 11, 81, 242;--primary-color-900-parts-rgb: 6, 63, 239;--accent-color-50-parts: #e0f2f1;--accent-color-100-parts: #b2dfdb;--accent-color-200-parts: #80cbc4;--accent-color-300-parts: #4db6ac;--accent-color-400-parts: #26a69a;--accent-color-500-parts: #009688;--accent-color-600-parts: #00897b;--accent-color-700-parts: #00796b;--accent-color-800-parts: #00695c;--accent-color-900-parts: #004d40;--accent-color-A50-parts: rgba(0, 150, 136, .04);--accent-color-A100-parts: rgba(0, 150, 136, .08);--accent-color-A200-parts: rgba(0, 150, 136, .16);--accent-color-A300-parts: rgba(0, 150, 136, .24);--accent-color-A400-parts: rgba(0, 150, 136, .32);--accent-color-A500-parts: rgba(0, 150, 136, .4);--accent-color-A600-parts: rgba(0, 150, 136, .48);--accent-color-A700-parts: rgba(0, 150, 136, .56);--accent-color-A800-parts: rgba(0, 150, 136, .64);--accent-color-A900-parts: rgba(0, 150, 136, .72);--accent-color-contrast-50-parts: rgba(0, 0, 0, .87);--accent-color-contrast-100-parts: rgba(0, 0, 0, .87);--accent-color-contrast-200-parts: rgba(0, 0, 0, .87);--accent-color-contrast-300-parts: rgba(0, 0, 0, .87);--accent-color-contrast-400-parts: rgba(0, 0, 0, .87);--accent-color-contrast-500-parts: rgba(255, 255, 255, 1);--accent-color-contrast-600-parts: rgba(255, 255, 255, 1);--accent-color-contrast-700-parts: rgba(255, 255, 255, 1);--accent-color-contrast-800-parts: rgba(255, 255, 255, 1);--accent-color-contrast-900-parts: rgba(255, 255, 255, 1);--accent-color-contrast-A50-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A100-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A200-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A300-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A400-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A500-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A600-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A700-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A800-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A900-parts: rgba(0, 0, 0, .87);--accent-color-50-parts-rgb: 224, 242, 241;--accent-color-100-parts-rgb: 178, 223, 219;--accent-color-200-parts-rgb: 128, 203, 196;--accent-color-300-parts-rgb: 77, 182, 172;--accent-color-400-parts-rgb: 38, 166, 154;--accent-color-500-parts-rgb: 0, 150, 136;--accent-color-600-parts-rgb: 0, 137, 123;--accent-color-700-parts-rgb: 0, 121, 107;--accent-color-800-parts-rgb: 0, 105, 92;--accent-color-900-parts-rgb: 0, 77, 64;--warn-color-50-parts: #fceee3;--warn-color-100-parts: #f8d4b9;--warn-color-200-parts: #f4b78b;--warn-color-300-parts: #ef9a5d;--warn-color-400-parts: #eb843a;--warn-color-500-parts: #e86e17;--warn-color-600-parts: #e56614;--warn-color-700-parts: #e25b11;--warn-color-800-parts: #de510d;--warn-color-900-parts: #d83f07;--warn-color-A50-parts: rgba(232, 110, 23, .04);--warn-color-A100-parts: rgba(232, 110, 23, .08);--warn-color-A200-parts: rgba(232, 110, 23, .16);--warn-color-A300-parts: rgba(232, 110, 23, .24);--warn-color-A400-parts: rgba(232, 110, 23, .32);--warn-color-A500-parts: rgba(232, 110, 23, .4);--warn-color-A600-parts: rgba(232, 110, 23, .48);--warn-color-A700-parts: rgba(232, 110, 23, .56);--warn-color-A800-parts: rgba(232, 110, 23, .64);--warn-color-A900-parts: rgba(232, 110, 23, .72);--warn-color-contrast-50-parts: rgba(0, 0, 0, .87);--warn-color-contrast-100-parts: rgba(0, 0, 0, .87);--warn-color-contrast-200-parts: rgba(0, 0, 0, .87);--warn-color-contrast-300-parts: rgba(0, 0, 0, .87);--warn-color-contrast-400-parts: rgba(0, 0, 0, .87);--warn-color-contrast-500-parts: rgba(0, 0, 0, .87);--warn-color-contrast-600-parts: rgba(0, 0, 0, .87);--warn-color-contrast-700-parts: rgba(0, 0, 0, .87);--warn-color-contrast-800-parts: rgba(0, 0, 0, .87);--warn-color-contrast-900-parts: rgba(255, 255, 255, 1);--warn-color-contrast-A50-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A100-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A200-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A300-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A400-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A500-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A600-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A700-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A800-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A900-parts: rgba(0, 0, 0, .87);--warn-color-50-parts-rgb: 252, 238, 227;--warn-color-100-parts-rgb: 248, 212, 185;--warn-color-200-parts-rgb: 244, 183, 139;--warn-color-300-parts-rgb: 239, 154, 93;--warn-color-400-parts-rgb: 235, 132, 58;--warn-color-500-parts-rgb: 232, 110, 23;--warn-color-600-parts-rgb: 229, 102, 20;--warn-color-700-parts-rgb: 226, 91, 17;--warn-color-800-parts-rgb: 222, 81, 13;--warn-color-900-parts-rgb: 216, 63, 7;--info-color-50-parts: #edf4ff;--info-color-100-parts: #b9d4fc;--info-color-200-parts: #8ab7fb;--info-color-300-parts: #5b9af9;--info-color-400-parts: #3784f7;--info-color-500-parts: #146ef6;--info-color-600-parts: #1266f5;--info-color-700-parts: #0e5bf3;--info-color-800-parts: #0b51f2;--info-color-900-parts: #063fef;--info-color-A50-parts: rgba(20, 110, 246, .04);--info-color-A100-parts: rgba(20, 110, 246, .08);--info-color-A200-parts: rgba(20, 110, 246, .16);--info-color-A300-parts: rgba(20, 110, 246, .24);--info-color-A400-parts: rgba(20, 110, 246, .32);--info-color-A500-parts: rgba(20, 110, 246, .4);--info-color-A600-parts: rgba(20, 110, 246, .48);--info-color-A700-parts: rgba(20, 110, 246, .56);--info-color-A800-parts: rgba(20, 110, 246, .64);--info-color-A900-parts: rgba(20, 110, 246, .72);--info-color-contrast-50-parts: rgba(0, 0, 0, .87);--info-color-contrast-100-parts: rgba(0, 0, 0, .87);--info-color-contrast-200-parts: rgba(0, 0, 0, .87);--info-color-contrast-300-parts: rgba(0, 0, 0, .87);--info-color-contrast-400-parts: rgba(0, 0, 0, .87);--info-color-contrast-500-parts: rgba(255, 255, 255, 1);--info-color-contrast-600-parts: rgba(255, 255, 255, 1);--info-color-contrast-700-parts: rgba(255, 255, 255, 1);--info-color-contrast-800-parts: rgba(255, 255, 255, 1);--info-color-contrast-900-parts: rgba(255, 255, 255, 1);--info-color-contrast-A50-parts: rgba(0, 0, 0, .87);--info-color-contrast-A100-parts: rgba(0, 0, 0, .87);--info-color-contrast-A200-parts: rgba(0, 0, 0, .87);--info-color-contrast-A300-parts: rgba(0, 0, 0, .87);--info-color-contrast-A400-parts: rgba(0, 0, 0, .87);--info-color-contrast-A500-parts: rgba(0, 0, 0, .87);--info-color-contrast-A600-parts: rgba(0, 0, 0, .87);--info-color-contrast-A700-parts: rgba(0, 0, 0, .87);--info-color-contrast-A800-parts: rgba(0, 0, 0, .87);--info-color-contrast-A900-parts: rgba(0, 0, 0, .87);--info-color-50-parts-rgb: 237, 244, 255;--info-color-100-parts-rgb: 185, 212, 252;--info-color-200-parts-rgb: 138, 183, 251;--info-color-300-parts-rgb: 91, 154, 249;--info-color-400-parts-rgb: 55, 132, 247;--info-color-500-parts-rgb: 20, 110, 246;--info-color-600-parts-rgb: 18, 102, 245;--info-color-700-parts-rgb: 14, 91, 243;--info-color-800-parts-rgb: 11, 81, 242;--info-color-900-parts-rgb: 6, 63, 239;--success-color-50-parts: #e7f0e6;--success-color-100-parts: #c4dac1;--success-color-200-parts: #9cc198;--success-color-300-parts: #74a86e;--success-color-400-parts: #57954f;--success-color-500-parts: #398230;--success-color-600-parts: #337a2b;--success-color-700-parts: #2c6f24;--success-color-800-parts: #24651e;--success-color-900-parts: #175213;--success-color-A50-parts: rgba(57, 130, 48, .04);--success-color-A100-parts: rgba(57, 130, 48, .08);--success-color-A200-parts: rgba(57, 130, 48, .16);--success-color-A300-parts: rgba(57, 130, 48, .24);--success-color-A400-parts: rgba(57, 130, 48, .32);--success-color-A500-parts: rgba(57, 130, 48, .4);--success-color-A600-parts: rgba(57, 130, 48, .48);--success-color-A700-parts: rgba(57, 130, 48, .56);--success-color-A800-parts: rgba(57, 130, 48, .64);--success-color-A900-parts: rgba(57, 130, 48, .72);--success-color-contrast-50-parts: rgba(0, 0, 0, .87);--success-color-contrast-100-parts: rgba(0, 0, 0, .87);--success-color-contrast-200-parts: rgba(0, 0, 0, .87);--success-color-contrast-300-parts: rgba(0, 0, 0, .87);--success-color-contrast-400-parts: rgba(0, 0, 0, .87);--success-color-contrast-500-parts: rgba(255, 255, 255, 1);--success-color-contrast-600-parts: rgba(255, 255, 255, 1);--success-color-contrast-700-parts: rgba(255, 255, 255, 1);--success-color-contrast-800-parts: rgba(255, 255, 255, 1);--success-color-contrast-900-parts: rgba(255, 255, 255, 1);--success-color-contrast-A50-parts: rgba(0, 0, 0, .87);--success-color-contrast-A100-parts: rgba(0, 0, 0, .87);--success-color-contrast-A200-parts: rgba(0, 0, 0, .87);--success-color-contrast-A300-parts: rgba(0, 0, 0, .87);--success-color-contrast-A400-parts: rgba(0, 0, 0, .87);--success-color-contrast-A500-parts: rgba(0, 0, 0, .87);--success-color-contrast-A600-parts: rgba(0, 0, 0, .87);--success-color-contrast-A700-parts: rgba(0, 0, 0, .87);--success-color-contrast-A800-parts: rgba(0, 0, 0, .87);--success-color-contrast-A900-parts: rgba(0, 0, 0, .87);--success-color-50-parts-rgb: 231, 240, 230;--success-color-100-parts-rgb: 196, 218, 193;--success-color-200-parts-rgb: 156, 193, 152;--success-color-300-parts-rgb: 116, 168, 110;--success-color-400-parts-rgb: 87, 149, 79;--success-color-500-parts-rgb: 57, 130, 48;--success-color-600-parts-rgb: 51, 122, 43;--success-color-700-parts-rgb: 44, 111, 36;--success-color-800-parts-rgb: 36, 101, 30;--success-color-900-parts-rgb: 23, 82, 19;--error-color-50-parts: #fae5e4;--error-color-100-parts: #f3bdba;--error-color-200-parts: #eb928d;--error-color-300-parts: #e3665f;--error-color-400-parts: #dd453c;--error-color-500-parts: #d7241a;--error-color-600-parts: #d32017;--error-color-700-parts: #cd1b13;--error-color-800-parts: #c7160f;--error-color-900-parts: #be0d08;--error-color-A50-parts: rgba(215, 36, 26, .04);--error-color-A100-parts: rgba(215, 36, 26, .08);--error-color-A200-parts: rgba(215, 36, 26, .16);--error-color-A300-parts: rgba(215, 36, 26, .24);--error-color-A400-parts: rgba(215, 36, 26, .32);--error-color-A500-parts: rgba(215, 36, 26, .4);--error-color-A600-parts: rgba(215, 36, 26, .48);--error-color-A700-parts: rgba(215, 36, 26, .56);--error-color-A800-parts: rgba(215, 36, 26, .64);--error-color-A900-parts: rgba(215, 36, 26, .72);--error-color-contrast-50-parts: rgba(0, 0, 0, .87);--error-color-contrast-100-parts: rgba(0, 0, 0, .87);--error-color-contrast-200-parts: rgba(0, 0, 0, .87);--error-color-contrast-300-parts: rgba(0, 0, 0, .87);--error-color-contrast-400-parts: rgba(0, 0, 0, .87);--error-color-contrast-500-parts: rgba(255, 255, 255, 1);--error-color-contrast-600-parts: rgba(255, 255, 255, 1);--error-color-contrast-700-parts: rgba(255, 255, 255, 1);--error-color-contrast-800-parts: rgba(255, 255, 255, 1);--error-color-contrast-900-parts: rgba(255, 255, 255, 1);--error-color-contrast-A50-parts: rgba(0, 0, 0, .87);--error-color-contrast-A100-parts: rgba(0, 0, 0, .87);--error-color-contrast-A200-parts: rgba(0, 0, 0, .87);--error-color-contrast-A300-parts: rgba(0, 0, 0, .87);--error-color-contrast-A400-parts: rgba(0, 0, 0, .87);--error-color-contrast-A500-parts: rgba(0, 0, 0, .87);--error-color-contrast-A600-parts: rgba(0, 0, 0, .87);--error-color-contrast-A700-parts: rgba(0, 0, 0, .87);--error-color-contrast-A800-parts: rgba(0, 0, 0, .87);--error-color-contrast-A900-parts: rgba(0, 0, 0, .87);--error-color-50-parts-rgb: 250, 229, 228;--error-color-100-parts-rgb: 243, 189, 186;--error-color-200-parts-rgb: 235, 146, 141;--error-color-300-parts-rgb: 227, 102, 95;--error-color-400-parts-rgb: 221, 69, 60;--error-color-500-parts-rgb: 215, 36, 26;--error-color-600-parts-rgb: 211, 32, 23;--error-color-700-parts-rgb: 205, 27, 19;--error-color-800-parts-rgb: 199, 22, 15;--error-color-900-parts-rgb: 190, 13, 8;--neutral-color-50-parts: #e9e9e9;--neutral-color-100-parts: #dddddd;--neutral-color-200-parts: #cccccc;--neutral-color-300-parts: #b0b0b0;--neutral-color-400-parts: #909090;--neutral-color-500-parts: #515151;--neutral-color-600-parts: #424242;--neutral-color-700-parts: #333333;--neutral-color-800-parts: #212121;--neutral-color-900-parts: #141414;--neutral-color-A50-parts: rgba(81, 81, 81, .04);--neutral-color-A100-parts: rgba(81, 81, 81, .08);--neutral-color-A200-parts: rgba(81, 81, 81, .16);--neutral-color-A300-parts: rgba(81, 81, 81, .24);--neutral-color-A400-parts: rgba(81, 81, 81, .32);--neutral-color-A500-parts: rgba(81, 81, 81, .4);--neutral-color-A600-parts: rgba(81, 81, 81, .48);--neutral-color-A700-parts: rgba(81, 81, 81, .56);--neutral-color-A800-parts: rgba(81, 81, 81, .64);--neutral-color-A900-parts: rgba(81, 81, 81, .72);--neutral-color-contrast-50-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-100-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-200-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-300-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-400-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-500-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-600-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-700-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-800-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-900-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-A50-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A100-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A200-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A300-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A400-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A500-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A600-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A700-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A800-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A900-parts: rgba(0, 0, 0, .87);--neutral-color-50-parts-rgb: 233, 233, 233;--neutral-color-100-parts-rgb: 221, 221, 221;--neutral-color-200-parts-rgb: 204, 204, 204;--neutral-color-300-parts-rgb: 176, 176, 176;--neutral-color-400-parts-rgb: 144, 144, 144;--neutral-color-500-parts-rgb: 81, 81, 81;--neutral-color-600-parts-rgb: 66, 66, 66;--neutral-color-700-parts-rgb: 51, 51, 51;--neutral-color-800-parts-rgb: 33, 33, 33;--neutral-color-900-parts-rgb: 20, 20, 20;--help-color-50-parts: #EFE3FE;--help-color-100-parts: #E0CAFD;--help-color-200-parts: #C194FB;--help-color-300-parts: #994FF8;--help-color-400-parts: #8831F7;--help-color-500-parts: #7714F6;--help-color-600-parts: #6809E3;--help-color-700-parts: #5B08C5;--help-color-800-parts: #4D06A8;--help-color-900-parts: #40058A;--help-color-A50-parts: rgba(119, 20, 246, .04);--help-color-A100-parts: rgba(119, 20, 246, .08);--help-color-A200-parts: rgba(119, 20, 246, .16);--help-color-A300-parts: rgba(119, 20, 246, .24);--help-color-A400-parts: rgba(119, 20, 246, .32);--help-color-A500-parts: rgba(119, 20, 246, .4);--help-color-A600-parts: rgba(119, 20, 246, .48);--help-color-A700-parts: rgba(119, 20, 246, .56);--help-color-A800-parts: rgba(119, 20, 246, .64);--help-color-A900-parts: rgba(119, 20, 246, .72);--help-color-contrast-50-parts: rgba(0, 0, 0, .87);--help-color-contrast-100-parts: rgba(0, 0, 0, .87);--help-color-contrast-200-parts: rgba(0, 0, 0, .87);--help-color-contrast-300-parts: rgba(255, 255, 255, 1);--help-color-contrast-400-parts: rgba(255, 255, 255, 1);--help-color-contrast-500-parts: rgba(255, 255, 255, 1);--help-color-contrast-600-parts: rgba(255, 255, 255, 1);--help-color-contrast-700-parts: rgba(255, 255, 255, 1);--help-color-contrast-800-parts: rgba(255, 255, 255, 1);--help-color-contrast-900-parts: rgba(255, 255, 255, 1);--help-color-contrast-A50-parts: rgba(0, 0, 0, .87);--help-color-contrast-A100-parts: rgba(0, 0, 0, .87);--help-color-contrast-A200-parts: rgba(0, 0, 0, .87);--help-color-contrast-A300-parts: rgba(0, 0, 0, .87);--help-color-contrast-A400-parts: rgba(0, 0, 0, .87);--help-color-contrast-A500-parts: rgba(0, 0, 0, .87);--help-color-contrast-A600-parts: rgba(0, 0, 0, .87);--help-color-contrast-A700-parts: rgba(0, 0, 0, .87);--help-color-contrast-A800-parts: rgba(0, 0, 0, .87);--help-color-contrast-A900-parts: rgba(0, 0, 0, .87);--help-color-50-parts-rgb: 239, 227, 254;--help-color-100-parts-rgb: 224, 202, 253;--help-color-200-parts-rgb: 193, 148, 251;--help-color-300-parts-rgb: 153, 79, 248;--help-color-400-parts-rgb: 136, 49, 247;--help-color-500-parts-rgb: 119, 20, 246;--help-color-600-parts-rgb: 104, 9, 227;--help-color-700-parts-rgb: 91, 8, 197;--help-color-800-parts-rgb: 77, 6, 168;--help-color-900-parts-rgb: 64, 5, 138}:host *{box-sizing:border-box}.snackbar-container{position:fixed;z-index:99999;top:var(--snackbar-position-top);bottom:var(--snackbar-position-bottom, 24px);right:var(--snackbar-position-right, 24px);display:flex;flex-direction:column;align-items:flex-end;gap:16px}.snackbar-container .snackbar{list-style:none;display:flex;flex-direction:row;align-items:center;gap:16px;padding:8px;min-width:213px;width:fit-content;max-width:400px;border-radius:8px;background-color:#333;box-shadow:0 4px 8px 0 var(--neutral-color-A200-parts)}.snackbar-container .snackbar.has-extended-message{align-items:flex-start}.snackbar-container .snackbar .icon{display:flex;align-items:center;justify-content:center;height:28px;width:28px;min-height:28px;min-width:28px;max-height:28px;max-width:28px;border-radius:6px}.snackbar-container .snackbar .icon i{color:#fff;font-size:20px}.snackbar-container .snackbar .icon--success{background-color:var(--success-color-A500-parts)}.snackbar-container .snackbar .icon--error{background-color:var(--error-color-A500-parts)}.snackbar-container .snackbar .icon--info{background-color:var(--info-color-A500-parts)}.snackbar-container .snackbar .icon--warning{background-color:var(--warn-color-A500-parts)}.snackbar-container .snackbar .icon--help{background-color:var(--help-color-A500-parts)}.snackbar-container .snackbar .message-container{display:flex;flex-direction:column;gap:4px}.snackbar-container .snackbar .dismiss-button{background-color:transparent!important;color:#fff!important}.snackbar-container .snackbar .dismiss-button:focus{outline:3px solid var(--primary-color-A500-parts)!important;outline-offset:2px!important}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }], animations: [
|
|
10763
10769
|
trigger('slideAndFade', [
|
|
10764
10770
|
transition(':enter', [
|
|
10765
10771
|
style({ transform: 'translateX(100%) translateY(100%)', opacity: 0 }),
|
|
@@ -10773,7 +10779,11 @@ class SofSnackbarComponent {
|
|
|
10773
10779
|
}
|
|
10774
10780
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SofSnackbarComponent, decorators: [{
|
|
10775
10781
|
type: Component,
|
|
10776
|
-
args: [{ selector: 'sof-snackbar', imports: [TranslateModule, MatButtonModule], changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10782
|
+
args: [{ selector: 'sof-snackbar', imports: [TranslateModule, MatButtonModule], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
10783
|
+
'[style.--snackbar-position-top]': 'positionTop',
|
|
10784
|
+
'[style.--snackbar-position-right]': 'positionRight',
|
|
10785
|
+
'[style.--snackbar-position-bottom]': 'positionBottom'
|
|
10786
|
+
}, animations: [
|
|
10777
10787
|
trigger('slideAndFade', [
|
|
10778
10788
|
transition(':enter', [
|
|
10779
10789
|
style({ transform: 'translateX(100%) translateY(100%)', opacity: 0 }),
|
|
@@ -10783,8 +10793,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
10783
10793
|
animate('200ms ease-in', style({ transform: 'translateX(100%) translateY(100%)', opacity: 0 }))
|
|
10784
10794
|
])
|
|
10785
10795
|
])
|
|
10786
|
-
], template: "@if (snackbars().length) {\r\n <ol \r\n @slideAndFade\r\n class=\"snackbar-container\"\r\n m-a-0 p-a-0\r\n role=\"region\"\r\n [attr.aria-label]=\"'armature.snackbar.container-aria-label' | translate\">\r\n @for (snackbar of snackbars(); track snackbar.id) {\r\n <li \r\n @slideAndFade \r\n class=\"snackbar\"\r\n [class.has-extended-message]=\"snackbar.extendedMessage?.length\"\r\n (mouseenter)=\"!snackbar.actionLabel?.length ? pause(snackbar.id) : null\"\r\n (mouseleave)=\"!snackbar.actionLabel?.length ? resume(snackbar.id, snackbar.duration) : null\"\r\n [attr.role]=\"(snackbar.actionLabel?.length || snackbar.type === 'error' || snackbar.type === 'warning') ? 'alert' : 'status'\">\r\n <div [class]=\"`icon icon--${snackbar.type}`\">\r\n @if (snackbar.iconClassOverride) {\r\n <i [class]=\"snackbar.iconClassOverride\" aria-hidden=\"true\"></i>\r\n } @else {\r\n @switch (snackbar.type) {\r\n @case ('success') {\r\n <i class=\"ph-bold ph-check-circle\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('error') {\r\n <i class=\"ph-bold ph-warning-circle\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('info') {\r\n <i class=\"ph-bold ph-info\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('warning') {\r\n <i class=\"ph-bold ph-warning\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('help') {\r\n <i class=\"ph-bold ph-sparkle\" aria-hidden=\"true\"></i>\r\n }\r\n }\r\n }\r\n </div>\r\n <div class=\"message-container\">\r\n <p class=\"body2 fw-500 m-a-0 text-inverse\">\r\n {{snackbar.message | translate : (snackbar.messageParams || {})}}\r\n </p>\r\n @if (snackbar.extendedMessage?.length) {\r\n <p class=\"body2 m-a-0 text-inverse\">\r\n {{snackbar.extendedMessage | translate : (snackbar.extendedMessageParams || {})}}\r\n </p>\r\n }\r\n </div>\r\n @if (snackbar.actionLabel?.length) {\r\n <button \r\n (click)=\"handleAction(snackbar)\"\r\n mat-flat-button class=\"sof-button-v2 mini\" \r\n theme=\"neutral\" emphasis=\"solid\"\r\n [id]=\"`snackbar-${snackbar.id}-action-button`\">\r\n {{snackbar.actionLabel | translate}}\r\n </button>\r\n }\r\n <button \r\n (click)=\"dismiss(snackbar)\"\r\n mat-flat-button class=\"sof-button-v2 mini dismiss-button\"\r\n [id]=\"`snackbar-${snackbar.id}-dismiss-button`\"\r\n [attr.aria-label]=\"'armature.snackbar.dismiss-button-aria-label' | translate\">\r\n <i class=\"ph-bold ph-x\" aria-hidden=\"true\"></i>\r\n </button>\r\n </li>\r\n }\r\n </ol>\r\n}\r\n", styles: ["@charset \"UTF-8\";:root{--primary-color-50-parts: #edf4ff;--primary-color-100-parts: #b9d4fc;--primary-color-200-parts: #8ab7fb;--primary-color-300-parts: #5b9af9;--primary-color-400-parts: #3784f7;--primary-color-500-parts: #146ef6;--primary-color-600-parts: #1266f5;--primary-color-700-parts: #0e5bf3;--primary-color-800-parts: #0b51f2;--primary-color-900-parts: #063fef;--primary-color-A50-parts: rgba(20, 110, 246, .04);--primary-color-A100-parts: rgba(20, 110, 246, .08);--primary-color-A200-parts: rgba(20, 110, 246, .16);--primary-color-A300-parts: rgba(20, 110, 246, .24);--primary-color-A400-parts: rgba(20, 110, 246, .32);--primary-color-A500-parts: rgba(20, 110, 246, .4);--primary-color-A600-parts: rgba(20, 110, 246, .48);--primary-color-A700-parts: rgba(20, 110, 246, .56);--primary-color-A800-parts: rgba(20, 110, 246, .64);--primary-color-A900-parts: rgba(20, 110, 246, .72);--primary-color-contrast-50-parts: rgba(0, 0, 0, .87);--primary-color-contrast-100-parts: rgba(0, 0, 0, .87);--primary-color-contrast-200-parts: rgba(0, 0, 0, .87);--primary-color-contrast-300-parts: rgba(0, 0, 0, .87);--primary-color-contrast-400-parts: rgba(0, 0, 0, .87);--primary-color-contrast-500-parts: rgba(255, 255, 255, 1);--primary-color-contrast-600-parts: rgba(255, 255, 255, 1);--primary-color-contrast-700-parts: rgba(255, 255, 255, 1);--primary-color-contrast-800-parts: rgba(255, 255, 255, 1);--primary-color-contrast-900-parts: rgba(255, 255, 255, 1);--primary-color-contrast-A50-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A100-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A200-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A300-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A400-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A500-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A600-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A700-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A800-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A900-parts: rgba(0, 0, 0, .87);--primary-color-50-parts-rgb: 237, 244, 255;--primary-color-100-parts-rgb: 185, 212, 252;--primary-color-200-parts-rgb: 138, 183, 251;--primary-color-300-parts-rgb: 91, 154, 249;--primary-color-400-parts-rgb: 55, 132, 247;--primary-color-500-parts-rgb: 20, 110, 246;--primary-color-600-parts-rgb: 18, 102, 245;--primary-color-700-parts-rgb: 14, 91, 243;--primary-color-800-parts-rgb: 11, 81, 242;--primary-color-900-parts-rgb: 6, 63, 239;--accent-color-50-parts: #e0f2f1;--accent-color-100-parts: #b2dfdb;--accent-color-200-parts: #80cbc4;--accent-color-300-parts: #4db6ac;--accent-color-400-parts: #26a69a;--accent-color-500-parts: #009688;--accent-color-600-parts: #00897b;--accent-color-700-parts: #00796b;--accent-color-800-parts: #00695c;--accent-color-900-parts: #004d40;--accent-color-A50-parts: rgba(0, 150, 136, .04);--accent-color-A100-parts: rgba(0, 150, 136, .08);--accent-color-A200-parts: rgba(0, 150, 136, .16);--accent-color-A300-parts: rgba(0, 150, 136, .24);--accent-color-A400-parts: rgba(0, 150, 136, .32);--accent-color-A500-parts: rgba(0, 150, 136, .4);--accent-color-A600-parts: rgba(0, 150, 136, .48);--accent-color-A700-parts: rgba(0, 150, 136, .56);--accent-color-A800-parts: rgba(0, 150, 136, .64);--accent-color-A900-parts: rgba(0, 150, 136, .72);--accent-color-contrast-50-parts: rgba(0, 0, 0, .87);--accent-color-contrast-100-parts: rgba(0, 0, 0, .87);--accent-color-contrast-200-parts: rgba(0, 0, 0, .87);--accent-color-contrast-300-parts: rgba(0, 0, 0, .87);--accent-color-contrast-400-parts: rgba(0, 0, 0, .87);--accent-color-contrast-500-parts: rgba(255, 255, 255, 1);--accent-color-contrast-600-parts: rgba(255, 255, 255, 1);--accent-color-contrast-700-parts: rgba(255, 255, 255, 1);--accent-color-contrast-800-parts: rgba(255, 255, 255, 1);--accent-color-contrast-900-parts: rgba(255, 255, 255, 1);--accent-color-contrast-A50-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A100-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A200-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A300-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A400-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A500-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A600-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A700-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A800-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A900-parts: rgba(0, 0, 0, .87);--accent-color-50-parts-rgb: 224, 242, 241;--accent-color-100-parts-rgb: 178, 223, 219;--accent-color-200-parts-rgb: 128, 203, 196;--accent-color-300-parts-rgb: 77, 182, 172;--accent-color-400-parts-rgb: 38, 166, 154;--accent-color-500-parts-rgb: 0, 150, 136;--accent-color-600-parts-rgb: 0, 137, 123;--accent-color-700-parts-rgb: 0, 121, 107;--accent-color-800-parts-rgb: 0, 105, 92;--accent-color-900-parts-rgb: 0, 77, 64;--warn-color-50-parts: #fceee3;--warn-color-100-parts: #f8d4b9;--warn-color-200-parts: #f4b78b;--warn-color-300-parts: #ef9a5d;--warn-color-400-parts: #eb843a;--warn-color-500-parts: #e86e17;--warn-color-600-parts: #e56614;--warn-color-700-parts: #e25b11;--warn-color-800-parts: #de510d;--warn-color-900-parts: #d83f07;--warn-color-A50-parts: rgba(232, 110, 23, .04);--warn-color-A100-parts: rgba(232, 110, 23, .08);--warn-color-A200-parts: rgba(232, 110, 23, .16);--warn-color-A300-parts: rgba(232, 110, 23, .24);--warn-color-A400-parts: rgba(232, 110, 23, .32);--warn-color-A500-parts: rgba(232, 110, 23, .4);--warn-color-A600-parts: rgba(232, 110, 23, .48);--warn-color-A700-parts: rgba(232, 110, 23, .56);--warn-color-A800-parts: rgba(232, 110, 23, .64);--warn-color-A900-parts: rgba(232, 110, 23, .72);--warn-color-contrast-50-parts: rgba(0, 0, 0, .87);--warn-color-contrast-100-parts: rgba(0, 0, 0, .87);--warn-color-contrast-200-parts: rgba(0, 0, 0, .87);--warn-color-contrast-300-parts: rgba(0, 0, 0, .87);--warn-color-contrast-400-parts: rgba(0, 0, 0, .87);--warn-color-contrast-500-parts: rgba(0, 0, 0, .87);--warn-color-contrast-600-parts: rgba(0, 0, 0, .87);--warn-color-contrast-700-parts: rgba(0, 0, 0, .87);--warn-color-contrast-800-parts: rgba(0, 0, 0, .87);--warn-color-contrast-900-parts: rgba(255, 255, 255, 1);--warn-color-contrast-A50-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A100-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A200-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A300-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A400-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A500-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A600-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A700-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A800-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A900-parts: rgba(0, 0, 0, .87);--warn-color-50-parts-rgb: 252, 238, 227;--warn-color-100-parts-rgb: 248, 212, 185;--warn-color-200-parts-rgb: 244, 183, 139;--warn-color-300-parts-rgb: 239, 154, 93;--warn-color-400-parts-rgb: 235, 132, 58;--warn-color-500-parts-rgb: 232, 110, 23;--warn-color-600-parts-rgb: 229, 102, 20;--warn-color-700-parts-rgb: 226, 91, 17;--warn-color-800-parts-rgb: 222, 81, 13;--warn-color-900-parts-rgb: 216, 63, 7;--info-color-50-parts: #edf4ff;--info-color-100-parts: #b9d4fc;--info-color-200-parts: #8ab7fb;--info-color-300-parts: #5b9af9;--info-color-400-parts: #3784f7;--info-color-500-parts: #146ef6;--info-color-600-parts: #1266f5;--info-color-700-parts: #0e5bf3;--info-color-800-parts: #0b51f2;--info-color-900-parts: #063fef;--info-color-A50-parts: rgba(20, 110, 246, .04);--info-color-A100-parts: rgba(20, 110, 246, .08);--info-color-A200-parts: rgba(20, 110, 246, .16);--info-color-A300-parts: rgba(20, 110, 246, .24);--info-color-A400-parts: rgba(20, 110, 246, .32);--info-color-A500-parts: rgba(20, 110, 246, .4);--info-color-A600-parts: rgba(20, 110, 246, .48);--info-color-A700-parts: rgba(20, 110, 246, .56);--info-color-A800-parts: rgba(20, 110, 246, .64);--info-color-A900-parts: rgba(20, 110, 246, .72);--info-color-contrast-50-parts: rgba(0, 0, 0, .87);--info-color-contrast-100-parts: rgba(0, 0, 0, .87);--info-color-contrast-200-parts: rgba(0, 0, 0, .87);--info-color-contrast-300-parts: rgba(0, 0, 0, .87);--info-color-contrast-400-parts: rgba(0, 0, 0, .87);--info-color-contrast-500-parts: rgba(255, 255, 255, 1);--info-color-contrast-600-parts: rgba(255, 255, 255, 1);--info-color-contrast-700-parts: rgba(255, 255, 255, 1);--info-color-contrast-800-parts: rgba(255, 255, 255, 1);--info-color-contrast-900-parts: rgba(255, 255, 255, 1);--info-color-contrast-A50-parts: rgba(0, 0, 0, .87);--info-color-contrast-A100-parts: rgba(0, 0, 0, .87);--info-color-contrast-A200-parts: rgba(0, 0, 0, .87);--info-color-contrast-A300-parts: rgba(0, 0, 0, .87);--info-color-contrast-A400-parts: rgba(0, 0, 0, .87);--info-color-contrast-A500-parts: rgba(0, 0, 0, .87);--info-color-contrast-A600-parts: rgba(0, 0, 0, .87);--info-color-contrast-A700-parts: rgba(0, 0, 0, .87);--info-color-contrast-A800-parts: rgba(0, 0, 0, .87);--info-color-contrast-A900-parts: rgba(0, 0, 0, .87);--info-color-50-parts-rgb: 237, 244, 255;--info-color-100-parts-rgb: 185, 212, 252;--info-color-200-parts-rgb: 138, 183, 251;--info-color-300-parts-rgb: 91, 154, 249;--info-color-400-parts-rgb: 55, 132, 247;--info-color-500-parts-rgb: 20, 110, 246;--info-color-600-parts-rgb: 18, 102, 245;--info-color-700-parts-rgb: 14, 91, 243;--info-color-800-parts-rgb: 11, 81, 242;--info-color-900-parts-rgb: 6, 63, 239;--success-color-50-parts: #e7f0e6;--success-color-100-parts: #c4dac1;--success-color-200-parts: #9cc198;--success-color-300-parts: #74a86e;--success-color-400-parts: #57954f;--success-color-500-parts: #398230;--success-color-600-parts: #337a2b;--success-color-700-parts: #2c6f24;--success-color-800-parts: #24651e;--success-color-900-parts: #175213;--success-color-A50-parts: rgba(57, 130, 48, .04);--success-color-A100-parts: rgba(57, 130, 48, .08);--success-color-A200-parts: rgba(57, 130, 48, .16);--success-color-A300-parts: rgba(57, 130, 48, .24);--success-color-A400-parts: rgba(57, 130, 48, .32);--success-color-A500-parts: rgba(57, 130, 48, .4);--success-color-A600-parts: rgba(57, 130, 48, .48);--success-color-A700-parts: rgba(57, 130, 48, .56);--success-color-A800-parts: rgba(57, 130, 48, .64);--success-color-A900-parts: rgba(57, 130, 48, .72);--success-color-contrast-50-parts: rgba(0, 0, 0, .87);--success-color-contrast-100-parts: rgba(0, 0, 0, .87);--success-color-contrast-200-parts: rgba(0, 0, 0, .87);--success-color-contrast-300-parts: rgba(0, 0, 0, .87);--success-color-contrast-400-parts: rgba(0, 0, 0, .87);--success-color-contrast-500-parts: rgba(255, 255, 255, 1);--success-color-contrast-600-parts: rgba(255, 255, 255, 1);--success-color-contrast-700-parts: rgba(255, 255, 255, 1);--success-color-contrast-800-parts: rgba(255, 255, 255, 1);--success-color-contrast-900-parts: rgba(255, 255, 255, 1);--success-color-contrast-A50-parts: rgba(0, 0, 0, .87);--success-color-contrast-A100-parts: rgba(0, 0, 0, .87);--success-color-contrast-A200-parts: rgba(0, 0, 0, .87);--success-color-contrast-A300-parts: rgba(0, 0, 0, .87);--success-color-contrast-A400-parts: rgba(0, 0, 0, .87);--success-color-contrast-A500-parts: rgba(0, 0, 0, .87);--success-color-contrast-A600-parts: rgba(0, 0, 0, .87);--success-color-contrast-A700-parts: rgba(0, 0, 0, .87);--success-color-contrast-A800-parts: rgba(0, 0, 0, .87);--success-color-contrast-A900-parts: rgba(0, 0, 0, .87);--success-color-50-parts-rgb: 231, 240, 230;--success-color-100-parts-rgb: 196, 218, 193;--success-color-200-parts-rgb: 156, 193, 152;--success-color-300-parts-rgb: 116, 168, 110;--success-color-400-parts-rgb: 87, 149, 79;--success-color-500-parts-rgb: 57, 130, 48;--success-color-600-parts-rgb: 51, 122, 43;--success-color-700-parts-rgb: 44, 111, 36;--success-color-800-parts-rgb: 36, 101, 30;--success-color-900-parts-rgb: 23, 82, 19;--error-color-50-parts: #fae5e4;--error-color-100-parts: #f3bdba;--error-color-200-parts: #eb928d;--error-color-300-parts: #e3665f;--error-color-400-parts: #dd453c;--error-color-500-parts: #d7241a;--error-color-600-parts: #d32017;--error-color-700-parts: #cd1b13;--error-color-800-parts: #c7160f;--error-color-900-parts: #be0d08;--error-color-A50-parts: rgba(215, 36, 26, .04);--error-color-A100-parts: rgba(215, 36, 26, .08);--error-color-A200-parts: rgba(215, 36, 26, .16);--error-color-A300-parts: rgba(215, 36, 26, .24);--error-color-A400-parts: rgba(215, 36, 26, .32);--error-color-A500-parts: rgba(215, 36, 26, .4);--error-color-A600-parts: rgba(215, 36, 26, .48);--error-color-A700-parts: rgba(215, 36, 26, .56);--error-color-A800-parts: rgba(215, 36, 26, .64);--error-color-A900-parts: rgba(215, 36, 26, .72);--error-color-contrast-50-parts: rgba(0, 0, 0, .87);--error-color-contrast-100-parts: rgba(0, 0, 0, .87);--error-color-contrast-200-parts: rgba(0, 0, 0, .87);--error-color-contrast-300-parts: rgba(0, 0, 0, .87);--error-color-contrast-400-parts: rgba(0, 0, 0, .87);--error-color-contrast-500-parts: rgba(255, 255, 255, 1);--error-color-contrast-600-parts: rgba(255, 255, 255, 1);--error-color-contrast-700-parts: rgba(255, 255, 255, 1);--error-color-contrast-800-parts: rgba(255, 255, 255, 1);--error-color-contrast-900-parts: rgba(255, 255, 255, 1);--error-color-contrast-A50-parts: rgba(0, 0, 0, .87);--error-color-contrast-A100-parts: rgba(0, 0, 0, .87);--error-color-contrast-A200-parts: rgba(0, 0, 0, .87);--error-color-contrast-A300-parts: rgba(0, 0, 0, .87);--error-color-contrast-A400-parts: rgba(0, 0, 0, .87);--error-color-contrast-A500-parts: rgba(0, 0, 0, .87);--error-color-contrast-A600-parts: rgba(0, 0, 0, .87);--error-color-contrast-A700-parts: rgba(0, 0, 0, .87);--error-color-contrast-A800-parts: rgba(0, 0, 0, .87);--error-color-contrast-A900-parts: rgba(0, 0, 0, .87);--error-color-50-parts-rgb: 250, 229, 228;--error-color-100-parts-rgb: 243, 189, 186;--error-color-200-parts-rgb: 235, 146, 141;--error-color-300-parts-rgb: 227, 102, 95;--error-color-400-parts-rgb: 221, 69, 60;--error-color-500-parts-rgb: 215, 36, 26;--error-color-600-parts-rgb: 211, 32, 23;--error-color-700-parts-rgb: 205, 27, 19;--error-color-800-parts-rgb: 199, 22, 15;--error-color-900-parts-rgb: 190, 13, 8;--neutral-color-50-parts: #e9e9e9;--neutral-color-100-parts: #dddddd;--neutral-color-200-parts: #cccccc;--neutral-color-300-parts: #b0b0b0;--neutral-color-400-parts: #909090;--neutral-color-500-parts: #515151;--neutral-color-600-parts: #424242;--neutral-color-700-parts: #333333;--neutral-color-800-parts: #212121;--neutral-color-900-parts: #141414;--neutral-color-A50-parts: rgba(81, 81, 81, .04);--neutral-color-A100-parts: rgba(81, 81, 81, .08);--neutral-color-A200-parts: rgba(81, 81, 81, .16);--neutral-color-A300-parts: rgba(81, 81, 81, .24);--neutral-color-A400-parts: rgba(81, 81, 81, .32);--neutral-color-A500-parts: rgba(81, 81, 81, .4);--neutral-color-A600-parts: rgba(81, 81, 81, .48);--neutral-color-A700-parts: rgba(81, 81, 81, .56);--neutral-color-A800-parts: rgba(81, 81, 81, .64);--neutral-color-A900-parts: rgba(81, 81, 81, .72);--neutral-color-contrast-50-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-100-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-200-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-300-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-400-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-500-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-600-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-700-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-800-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-900-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-A50-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A100-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A200-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A300-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A400-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A500-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A600-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A700-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A800-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A900-parts: rgba(0, 0, 0, .87);--neutral-color-50-parts-rgb: 233, 233, 233;--neutral-color-100-parts-rgb: 221, 221, 221;--neutral-color-200-parts-rgb: 204, 204, 204;--neutral-color-300-parts-rgb: 176, 176, 176;--neutral-color-400-parts-rgb: 144, 144, 144;--neutral-color-500-parts-rgb: 81, 81, 81;--neutral-color-600-parts-rgb: 66, 66, 66;--neutral-color-700-parts-rgb: 51, 51, 51;--neutral-color-800-parts-rgb: 33, 33, 33;--neutral-color-900-parts-rgb: 20, 20, 20;--help-color-50-parts: #EFE3FE;--help-color-100-parts: #E0CAFD;--help-color-200-parts: #C194FB;--help-color-300-parts: #994FF8;--help-color-400-parts: #8831F7;--help-color-500-parts: #7714F6;--help-color-600-parts: #6809E3;--help-color-700-parts: #5B08C5;--help-color-800-parts: #4D06A8;--help-color-900-parts: #40058A;--help-color-A50-parts: rgba(119, 20, 246, .04);--help-color-A100-parts: rgba(119, 20, 246, .08);--help-color-A200-parts: rgba(119, 20, 246, .16);--help-color-A300-parts: rgba(119, 20, 246, .24);--help-color-A400-parts: rgba(119, 20, 246, .32);--help-color-A500-parts: rgba(119, 20, 246, .4);--help-color-A600-parts: rgba(119, 20, 246, .48);--help-color-A700-parts: rgba(119, 20, 246, .56);--help-color-A800-parts: rgba(119, 20, 246, .64);--help-color-A900-parts: rgba(119, 20, 246, .72);--help-color-contrast-50-parts: rgba(0, 0, 0, .87);--help-color-contrast-100-parts: rgba(0, 0, 0, .87);--help-color-contrast-200-parts: rgba(0, 0, 0, .87);--help-color-contrast-300-parts: rgba(255, 255, 255, 1);--help-color-contrast-400-parts: rgba(255, 255, 255, 1);--help-color-contrast-500-parts: rgba(255, 255, 255, 1);--help-color-contrast-600-parts: rgba(255, 255, 255, 1);--help-color-contrast-700-parts: rgba(255, 255, 255, 1);--help-color-contrast-800-parts: rgba(255, 255, 255, 1);--help-color-contrast-900-parts: rgba(255, 255, 255, 1);--help-color-contrast-A50-parts: rgba(0, 0, 0, .87);--help-color-contrast-A100-parts: rgba(0, 0, 0, .87);--help-color-contrast-A200-parts: rgba(0, 0, 0, .87);--help-color-contrast-A300-parts: rgba(0, 0, 0, .87);--help-color-contrast-A400-parts: rgba(0, 0, 0, .87);--help-color-contrast-A500-parts: rgba(0, 0, 0, .87);--help-color-contrast-A600-parts: rgba(0, 0, 0, .87);--help-color-contrast-A700-parts: rgba(0, 0, 0, .87);--help-color-contrast-A800-parts: rgba(0, 0, 0, .87);--help-color-contrast-A900-parts: rgba(0, 0, 0, .87);--help-color-50-parts-rgb: 239, 227, 254;--help-color-100-parts-rgb: 224, 202, 253;--help-color-200-parts-rgb: 193, 148, 251;--help-color-300-parts-rgb: 153, 79, 248;--help-color-400-parts-rgb: 136, 49, 247;--help-color-500-parts-rgb: 119, 20, 246;--help-color-600-parts-rgb: 104, 9, 227;--help-color-700-parts-rgb: 91, 8, 197;--help-color-800-parts-rgb: 77, 6, 168;--help-color-900-parts-rgb: 64, 5, 138}:host *{box-sizing:border-box}.snackbar-container{position:fixed;z-index:99999;bottom:24px;right:24px;display:flex;flex-direction:column;align-items:flex-end;gap:16px}.snackbar-container .snackbar{list-style:none;display:flex;flex-direction:row;align-items:center;gap:16px;padding:8px;min-width:213px;width:fit-content;max-width:400px;border-radius:8px;background-color:#333;box-shadow:0 4px 8px 0 var(--neutral-color-A200-parts)}.snackbar-container .snackbar.has-extended-message{align-items:flex-start}.snackbar-container .snackbar .icon{display:flex;align-items:center;justify-content:center;height:28px;width:28px;min-height:28px;min-width:28px;max-height:28px;max-width:28px;border-radius:6px}.snackbar-container .snackbar .icon i{color:#fff;font-size:20px}.snackbar-container .snackbar .icon--success{background-color:var(--success-color-A500-parts)}.snackbar-container .snackbar .icon--error{background-color:var(--error-color-A500-parts)}.snackbar-container .snackbar .icon--info{background-color:var(--info-color-A500-parts)}.snackbar-container .snackbar .icon--warning{background-color:var(--warn-color-A500-parts)}.snackbar-container .snackbar .icon--help{background-color:var(--help-color-A500-parts)}.snackbar-container .snackbar .message-container{display:flex;flex-direction:column;gap:4px}.snackbar-container .snackbar .dismiss-button{background-color:transparent!important;color:#fff!important}.snackbar-container .snackbar .dismiss-button:focus{outline:3px solid var(--primary-color-A500-parts)!important;outline-offset:2px!important}\n"] }]
|
|
10787
|
-
}]
|
|
10796
|
+
], template: "@if (snackbars().length) {\r\n <ol \r\n @slideAndFade\r\n class=\"snackbar-container\"\r\n m-a-0 p-a-0\r\n role=\"region\"\r\n [attr.aria-label]=\"'armature.snackbar.container-aria-label' | translate\">\r\n @for (snackbar of snackbars(); track snackbar.id) {\r\n <li \r\n @slideAndFade \r\n class=\"snackbar\"\r\n [class.has-extended-message]=\"snackbar.extendedMessage?.length\"\r\n (mouseenter)=\"!snackbar.actionLabel?.length ? pause(snackbar.id) : null\"\r\n (mouseleave)=\"!snackbar.actionLabel?.length ? resume(snackbar.id, snackbar.duration) : null\"\r\n [attr.role]=\"(snackbar.actionLabel?.length || snackbar.type === 'error' || snackbar.type === 'warning') ? 'alert' : 'status'\">\r\n <div [class]=\"`icon icon--${snackbar.type}`\">\r\n @if (snackbar.iconClassOverride) {\r\n <i [class]=\"snackbar.iconClassOverride\" aria-hidden=\"true\"></i>\r\n } @else {\r\n @switch (snackbar.type) {\r\n @case ('success') {\r\n <i class=\"ph-bold ph-check-circle\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('error') {\r\n <i class=\"ph-bold ph-warning-circle\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('info') {\r\n <i class=\"ph-bold ph-info\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('warning') {\r\n <i class=\"ph-bold ph-warning\" aria-hidden=\"true\"></i>\r\n }\r\n @case ('help') {\r\n <i class=\"ph-bold ph-sparkle\" aria-hidden=\"true\"></i>\r\n }\r\n }\r\n }\r\n </div>\r\n <div class=\"message-container\">\r\n <p class=\"body2 fw-500 m-a-0 text-inverse\">\r\n {{snackbar.message | translate : (snackbar.messageParams || {})}}\r\n </p>\r\n @if (snackbar.extendedMessage?.length) {\r\n <p class=\"body2 m-a-0 text-inverse\">\r\n {{snackbar.extendedMessage | translate : (snackbar.extendedMessageParams || {})}}\r\n </p>\r\n }\r\n </div>\r\n @if (snackbar.actionLabel?.length) {\r\n <button \r\n (click)=\"handleAction(snackbar)\"\r\n mat-flat-button class=\"sof-button-v2 mini\" \r\n theme=\"neutral\" emphasis=\"solid\"\r\n [id]=\"`snackbar-${snackbar.id}-action-button`\">\r\n {{snackbar.actionLabel | translate}}\r\n </button>\r\n }\r\n <button \r\n (click)=\"dismiss(snackbar)\"\r\n mat-flat-button class=\"sof-button-v2 mini dismiss-button\"\r\n [id]=\"`snackbar-${snackbar.id}-dismiss-button`\"\r\n [attr.aria-label]=\"'armature.snackbar.dismiss-button-aria-label' | translate\">\r\n <i class=\"ph-bold ph-x\" aria-hidden=\"true\"></i>\r\n </button>\r\n </li>\r\n }\r\n </ol>\r\n}\r\n", styles: ["@charset \"UTF-8\";:root{--primary-color-50-parts: #edf4ff;--primary-color-100-parts: #b9d4fc;--primary-color-200-parts: #8ab7fb;--primary-color-300-parts: #5b9af9;--primary-color-400-parts: #3784f7;--primary-color-500-parts: #146ef6;--primary-color-600-parts: #1266f5;--primary-color-700-parts: #0e5bf3;--primary-color-800-parts: #0b51f2;--primary-color-900-parts: #063fef;--primary-color-A50-parts: rgba(20, 110, 246, .04);--primary-color-A100-parts: rgba(20, 110, 246, .08);--primary-color-A200-parts: rgba(20, 110, 246, .16);--primary-color-A300-parts: rgba(20, 110, 246, .24);--primary-color-A400-parts: rgba(20, 110, 246, .32);--primary-color-A500-parts: rgba(20, 110, 246, .4);--primary-color-A600-parts: rgba(20, 110, 246, .48);--primary-color-A700-parts: rgba(20, 110, 246, .56);--primary-color-A800-parts: rgba(20, 110, 246, .64);--primary-color-A900-parts: rgba(20, 110, 246, .72);--primary-color-contrast-50-parts: rgba(0, 0, 0, .87);--primary-color-contrast-100-parts: rgba(0, 0, 0, .87);--primary-color-contrast-200-parts: rgba(0, 0, 0, .87);--primary-color-contrast-300-parts: rgba(0, 0, 0, .87);--primary-color-contrast-400-parts: rgba(0, 0, 0, .87);--primary-color-contrast-500-parts: rgba(255, 255, 255, 1);--primary-color-contrast-600-parts: rgba(255, 255, 255, 1);--primary-color-contrast-700-parts: rgba(255, 255, 255, 1);--primary-color-contrast-800-parts: rgba(255, 255, 255, 1);--primary-color-contrast-900-parts: rgba(255, 255, 255, 1);--primary-color-contrast-A50-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A100-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A200-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A300-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A400-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A500-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A600-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A700-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A800-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A900-parts: rgba(0, 0, 0, .87);--primary-color-50-parts-rgb: 237, 244, 255;--primary-color-100-parts-rgb: 185, 212, 252;--primary-color-200-parts-rgb: 138, 183, 251;--primary-color-300-parts-rgb: 91, 154, 249;--primary-color-400-parts-rgb: 55, 132, 247;--primary-color-500-parts-rgb: 20, 110, 246;--primary-color-600-parts-rgb: 18, 102, 245;--primary-color-700-parts-rgb: 14, 91, 243;--primary-color-800-parts-rgb: 11, 81, 242;--primary-color-900-parts-rgb: 6, 63, 239;--accent-color-50-parts: #e0f2f1;--accent-color-100-parts: #b2dfdb;--accent-color-200-parts: #80cbc4;--accent-color-300-parts: #4db6ac;--accent-color-400-parts: #26a69a;--accent-color-500-parts: #009688;--accent-color-600-parts: #00897b;--accent-color-700-parts: #00796b;--accent-color-800-parts: #00695c;--accent-color-900-parts: #004d40;--accent-color-A50-parts: rgba(0, 150, 136, .04);--accent-color-A100-parts: rgba(0, 150, 136, .08);--accent-color-A200-parts: rgba(0, 150, 136, .16);--accent-color-A300-parts: rgba(0, 150, 136, .24);--accent-color-A400-parts: rgba(0, 150, 136, .32);--accent-color-A500-parts: rgba(0, 150, 136, .4);--accent-color-A600-parts: rgba(0, 150, 136, .48);--accent-color-A700-parts: rgba(0, 150, 136, .56);--accent-color-A800-parts: rgba(0, 150, 136, .64);--accent-color-A900-parts: rgba(0, 150, 136, .72);--accent-color-contrast-50-parts: rgba(0, 0, 0, .87);--accent-color-contrast-100-parts: rgba(0, 0, 0, .87);--accent-color-contrast-200-parts: rgba(0, 0, 0, .87);--accent-color-contrast-300-parts: rgba(0, 0, 0, .87);--accent-color-contrast-400-parts: rgba(0, 0, 0, .87);--accent-color-contrast-500-parts: rgba(255, 255, 255, 1);--accent-color-contrast-600-parts: rgba(255, 255, 255, 1);--accent-color-contrast-700-parts: rgba(255, 255, 255, 1);--accent-color-contrast-800-parts: rgba(255, 255, 255, 1);--accent-color-contrast-900-parts: rgba(255, 255, 255, 1);--accent-color-contrast-A50-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A100-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A200-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A300-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A400-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A500-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A600-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A700-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A800-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A900-parts: rgba(0, 0, 0, .87);--accent-color-50-parts-rgb: 224, 242, 241;--accent-color-100-parts-rgb: 178, 223, 219;--accent-color-200-parts-rgb: 128, 203, 196;--accent-color-300-parts-rgb: 77, 182, 172;--accent-color-400-parts-rgb: 38, 166, 154;--accent-color-500-parts-rgb: 0, 150, 136;--accent-color-600-parts-rgb: 0, 137, 123;--accent-color-700-parts-rgb: 0, 121, 107;--accent-color-800-parts-rgb: 0, 105, 92;--accent-color-900-parts-rgb: 0, 77, 64;--warn-color-50-parts: #fceee3;--warn-color-100-parts: #f8d4b9;--warn-color-200-parts: #f4b78b;--warn-color-300-parts: #ef9a5d;--warn-color-400-parts: #eb843a;--warn-color-500-parts: #e86e17;--warn-color-600-parts: #e56614;--warn-color-700-parts: #e25b11;--warn-color-800-parts: #de510d;--warn-color-900-parts: #d83f07;--warn-color-A50-parts: rgba(232, 110, 23, .04);--warn-color-A100-parts: rgba(232, 110, 23, .08);--warn-color-A200-parts: rgba(232, 110, 23, .16);--warn-color-A300-parts: rgba(232, 110, 23, .24);--warn-color-A400-parts: rgba(232, 110, 23, .32);--warn-color-A500-parts: rgba(232, 110, 23, .4);--warn-color-A600-parts: rgba(232, 110, 23, .48);--warn-color-A700-parts: rgba(232, 110, 23, .56);--warn-color-A800-parts: rgba(232, 110, 23, .64);--warn-color-A900-parts: rgba(232, 110, 23, .72);--warn-color-contrast-50-parts: rgba(0, 0, 0, .87);--warn-color-contrast-100-parts: rgba(0, 0, 0, .87);--warn-color-contrast-200-parts: rgba(0, 0, 0, .87);--warn-color-contrast-300-parts: rgba(0, 0, 0, .87);--warn-color-contrast-400-parts: rgba(0, 0, 0, .87);--warn-color-contrast-500-parts: rgba(0, 0, 0, .87);--warn-color-contrast-600-parts: rgba(0, 0, 0, .87);--warn-color-contrast-700-parts: rgba(0, 0, 0, .87);--warn-color-contrast-800-parts: rgba(0, 0, 0, .87);--warn-color-contrast-900-parts: rgba(255, 255, 255, 1);--warn-color-contrast-A50-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A100-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A200-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A300-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A400-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A500-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A600-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A700-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A800-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A900-parts: rgba(0, 0, 0, .87);--warn-color-50-parts-rgb: 252, 238, 227;--warn-color-100-parts-rgb: 248, 212, 185;--warn-color-200-parts-rgb: 244, 183, 139;--warn-color-300-parts-rgb: 239, 154, 93;--warn-color-400-parts-rgb: 235, 132, 58;--warn-color-500-parts-rgb: 232, 110, 23;--warn-color-600-parts-rgb: 229, 102, 20;--warn-color-700-parts-rgb: 226, 91, 17;--warn-color-800-parts-rgb: 222, 81, 13;--warn-color-900-parts-rgb: 216, 63, 7;--info-color-50-parts: #edf4ff;--info-color-100-parts: #b9d4fc;--info-color-200-parts: #8ab7fb;--info-color-300-parts: #5b9af9;--info-color-400-parts: #3784f7;--info-color-500-parts: #146ef6;--info-color-600-parts: #1266f5;--info-color-700-parts: #0e5bf3;--info-color-800-parts: #0b51f2;--info-color-900-parts: #063fef;--info-color-A50-parts: rgba(20, 110, 246, .04);--info-color-A100-parts: rgba(20, 110, 246, .08);--info-color-A200-parts: rgba(20, 110, 246, .16);--info-color-A300-parts: rgba(20, 110, 246, .24);--info-color-A400-parts: rgba(20, 110, 246, .32);--info-color-A500-parts: rgba(20, 110, 246, .4);--info-color-A600-parts: rgba(20, 110, 246, .48);--info-color-A700-parts: rgba(20, 110, 246, .56);--info-color-A800-parts: rgba(20, 110, 246, .64);--info-color-A900-parts: rgba(20, 110, 246, .72);--info-color-contrast-50-parts: rgba(0, 0, 0, .87);--info-color-contrast-100-parts: rgba(0, 0, 0, .87);--info-color-contrast-200-parts: rgba(0, 0, 0, .87);--info-color-contrast-300-parts: rgba(0, 0, 0, .87);--info-color-contrast-400-parts: rgba(0, 0, 0, .87);--info-color-contrast-500-parts: rgba(255, 255, 255, 1);--info-color-contrast-600-parts: rgba(255, 255, 255, 1);--info-color-contrast-700-parts: rgba(255, 255, 255, 1);--info-color-contrast-800-parts: rgba(255, 255, 255, 1);--info-color-contrast-900-parts: rgba(255, 255, 255, 1);--info-color-contrast-A50-parts: rgba(0, 0, 0, .87);--info-color-contrast-A100-parts: rgba(0, 0, 0, .87);--info-color-contrast-A200-parts: rgba(0, 0, 0, .87);--info-color-contrast-A300-parts: rgba(0, 0, 0, .87);--info-color-contrast-A400-parts: rgba(0, 0, 0, .87);--info-color-contrast-A500-parts: rgba(0, 0, 0, .87);--info-color-contrast-A600-parts: rgba(0, 0, 0, .87);--info-color-contrast-A700-parts: rgba(0, 0, 0, .87);--info-color-contrast-A800-parts: rgba(0, 0, 0, .87);--info-color-contrast-A900-parts: rgba(0, 0, 0, .87);--info-color-50-parts-rgb: 237, 244, 255;--info-color-100-parts-rgb: 185, 212, 252;--info-color-200-parts-rgb: 138, 183, 251;--info-color-300-parts-rgb: 91, 154, 249;--info-color-400-parts-rgb: 55, 132, 247;--info-color-500-parts-rgb: 20, 110, 246;--info-color-600-parts-rgb: 18, 102, 245;--info-color-700-parts-rgb: 14, 91, 243;--info-color-800-parts-rgb: 11, 81, 242;--info-color-900-parts-rgb: 6, 63, 239;--success-color-50-parts: #e7f0e6;--success-color-100-parts: #c4dac1;--success-color-200-parts: #9cc198;--success-color-300-parts: #74a86e;--success-color-400-parts: #57954f;--success-color-500-parts: #398230;--success-color-600-parts: #337a2b;--success-color-700-parts: #2c6f24;--success-color-800-parts: #24651e;--success-color-900-parts: #175213;--success-color-A50-parts: rgba(57, 130, 48, .04);--success-color-A100-parts: rgba(57, 130, 48, .08);--success-color-A200-parts: rgba(57, 130, 48, .16);--success-color-A300-parts: rgba(57, 130, 48, .24);--success-color-A400-parts: rgba(57, 130, 48, .32);--success-color-A500-parts: rgba(57, 130, 48, .4);--success-color-A600-parts: rgba(57, 130, 48, .48);--success-color-A700-parts: rgba(57, 130, 48, .56);--success-color-A800-parts: rgba(57, 130, 48, .64);--success-color-A900-parts: rgba(57, 130, 48, .72);--success-color-contrast-50-parts: rgba(0, 0, 0, .87);--success-color-contrast-100-parts: rgba(0, 0, 0, .87);--success-color-contrast-200-parts: rgba(0, 0, 0, .87);--success-color-contrast-300-parts: rgba(0, 0, 0, .87);--success-color-contrast-400-parts: rgba(0, 0, 0, .87);--success-color-contrast-500-parts: rgba(255, 255, 255, 1);--success-color-contrast-600-parts: rgba(255, 255, 255, 1);--success-color-contrast-700-parts: rgba(255, 255, 255, 1);--success-color-contrast-800-parts: rgba(255, 255, 255, 1);--success-color-contrast-900-parts: rgba(255, 255, 255, 1);--success-color-contrast-A50-parts: rgba(0, 0, 0, .87);--success-color-contrast-A100-parts: rgba(0, 0, 0, .87);--success-color-contrast-A200-parts: rgba(0, 0, 0, .87);--success-color-contrast-A300-parts: rgba(0, 0, 0, .87);--success-color-contrast-A400-parts: rgba(0, 0, 0, .87);--success-color-contrast-A500-parts: rgba(0, 0, 0, .87);--success-color-contrast-A600-parts: rgba(0, 0, 0, .87);--success-color-contrast-A700-parts: rgba(0, 0, 0, .87);--success-color-contrast-A800-parts: rgba(0, 0, 0, .87);--success-color-contrast-A900-parts: rgba(0, 0, 0, .87);--success-color-50-parts-rgb: 231, 240, 230;--success-color-100-parts-rgb: 196, 218, 193;--success-color-200-parts-rgb: 156, 193, 152;--success-color-300-parts-rgb: 116, 168, 110;--success-color-400-parts-rgb: 87, 149, 79;--success-color-500-parts-rgb: 57, 130, 48;--success-color-600-parts-rgb: 51, 122, 43;--success-color-700-parts-rgb: 44, 111, 36;--success-color-800-parts-rgb: 36, 101, 30;--success-color-900-parts-rgb: 23, 82, 19;--error-color-50-parts: #fae5e4;--error-color-100-parts: #f3bdba;--error-color-200-parts: #eb928d;--error-color-300-parts: #e3665f;--error-color-400-parts: #dd453c;--error-color-500-parts: #d7241a;--error-color-600-parts: #d32017;--error-color-700-parts: #cd1b13;--error-color-800-parts: #c7160f;--error-color-900-parts: #be0d08;--error-color-A50-parts: rgba(215, 36, 26, .04);--error-color-A100-parts: rgba(215, 36, 26, .08);--error-color-A200-parts: rgba(215, 36, 26, .16);--error-color-A300-parts: rgba(215, 36, 26, .24);--error-color-A400-parts: rgba(215, 36, 26, .32);--error-color-A500-parts: rgba(215, 36, 26, .4);--error-color-A600-parts: rgba(215, 36, 26, .48);--error-color-A700-parts: rgba(215, 36, 26, .56);--error-color-A800-parts: rgba(215, 36, 26, .64);--error-color-A900-parts: rgba(215, 36, 26, .72);--error-color-contrast-50-parts: rgba(0, 0, 0, .87);--error-color-contrast-100-parts: rgba(0, 0, 0, .87);--error-color-contrast-200-parts: rgba(0, 0, 0, .87);--error-color-contrast-300-parts: rgba(0, 0, 0, .87);--error-color-contrast-400-parts: rgba(0, 0, 0, .87);--error-color-contrast-500-parts: rgba(255, 255, 255, 1);--error-color-contrast-600-parts: rgba(255, 255, 255, 1);--error-color-contrast-700-parts: rgba(255, 255, 255, 1);--error-color-contrast-800-parts: rgba(255, 255, 255, 1);--error-color-contrast-900-parts: rgba(255, 255, 255, 1);--error-color-contrast-A50-parts: rgba(0, 0, 0, .87);--error-color-contrast-A100-parts: rgba(0, 0, 0, .87);--error-color-contrast-A200-parts: rgba(0, 0, 0, .87);--error-color-contrast-A300-parts: rgba(0, 0, 0, .87);--error-color-contrast-A400-parts: rgba(0, 0, 0, .87);--error-color-contrast-A500-parts: rgba(0, 0, 0, .87);--error-color-contrast-A600-parts: rgba(0, 0, 0, .87);--error-color-contrast-A700-parts: rgba(0, 0, 0, .87);--error-color-contrast-A800-parts: rgba(0, 0, 0, .87);--error-color-contrast-A900-parts: rgba(0, 0, 0, .87);--error-color-50-parts-rgb: 250, 229, 228;--error-color-100-parts-rgb: 243, 189, 186;--error-color-200-parts-rgb: 235, 146, 141;--error-color-300-parts-rgb: 227, 102, 95;--error-color-400-parts-rgb: 221, 69, 60;--error-color-500-parts-rgb: 215, 36, 26;--error-color-600-parts-rgb: 211, 32, 23;--error-color-700-parts-rgb: 205, 27, 19;--error-color-800-parts-rgb: 199, 22, 15;--error-color-900-parts-rgb: 190, 13, 8;--neutral-color-50-parts: #e9e9e9;--neutral-color-100-parts: #dddddd;--neutral-color-200-parts: #cccccc;--neutral-color-300-parts: #b0b0b0;--neutral-color-400-parts: #909090;--neutral-color-500-parts: #515151;--neutral-color-600-parts: #424242;--neutral-color-700-parts: #333333;--neutral-color-800-parts: #212121;--neutral-color-900-parts: #141414;--neutral-color-A50-parts: rgba(81, 81, 81, .04);--neutral-color-A100-parts: rgba(81, 81, 81, .08);--neutral-color-A200-parts: rgba(81, 81, 81, .16);--neutral-color-A300-parts: rgba(81, 81, 81, .24);--neutral-color-A400-parts: rgba(81, 81, 81, .32);--neutral-color-A500-parts: rgba(81, 81, 81, .4);--neutral-color-A600-parts: rgba(81, 81, 81, .48);--neutral-color-A700-parts: rgba(81, 81, 81, .56);--neutral-color-A800-parts: rgba(81, 81, 81, .64);--neutral-color-A900-parts: rgba(81, 81, 81, .72);--neutral-color-contrast-50-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-100-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-200-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-300-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-400-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-500-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-600-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-700-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-800-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-900-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-A50-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A100-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A200-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A300-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A400-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A500-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A600-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A700-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A800-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A900-parts: rgba(0, 0, 0, .87);--neutral-color-50-parts-rgb: 233, 233, 233;--neutral-color-100-parts-rgb: 221, 221, 221;--neutral-color-200-parts-rgb: 204, 204, 204;--neutral-color-300-parts-rgb: 176, 176, 176;--neutral-color-400-parts-rgb: 144, 144, 144;--neutral-color-500-parts-rgb: 81, 81, 81;--neutral-color-600-parts-rgb: 66, 66, 66;--neutral-color-700-parts-rgb: 51, 51, 51;--neutral-color-800-parts-rgb: 33, 33, 33;--neutral-color-900-parts-rgb: 20, 20, 20;--help-color-50-parts: #EFE3FE;--help-color-100-parts: #E0CAFD;--help-color-200-parts: #C194FB;--help-color-300-parts: #994FF8;--help-color-400-parts: #8831F7;--help-color-500-parts: #7714F6;--help-color-600-parts: #6809E3;--help-color-700-parts: #5B08C5;--help-color-800-parts: #4D06A8;--help-color-900-parts: #40058A;--help-color-A50-parts: rgba(119, 20, 246, .04);--help-color-A100-parts: rgba(119, 20, 246, .08);--help-color-A200-parts: rgba(119, 20, 246, .16);--help-color-A300-parts: rgba(119, 20, 246, .24);--help-color-A400-parts: rgba(119, 20, 246, .32);--help-color-A500-parts: rgba(119, 20, 246, .4);--help-color-A600-parts: rgba(119, 20, 246, .48);--help-color-A700-parts: rgba(119, 20, 246, .56);--help-color-A800-parts: rgba(119, 20, 246, .64);--help-color-A900-parts: rgba(119, 20, 246, .72);--help-color-contrast-50-parts: rgba(0, 0, 0, .87);--help-color-contrast-100-parts: rgba(0, 0, 0, .87);--help-color-contrast-200-parts: rgba(0, 0, 0, .87);--help-color-contrast-300-parts: rgba(255, 255, 255, 1);--help-color-contrast-400-parts: rgba(255, 255, 255, 1);--help-color-contrast-500-parts: rgba(255, 255, 255, 1);--help-color-contrast-600-parts: rgba(255, 255, 255, 1);--help-color-contrast-700-parts: rgba(255, 255, 255, 1);--help-color-contrast-800-parts: rgba(255, 255, 255, 1);--help-color-contrast-900-parts: rgba(255, 255, 255, 1);--help-color-contrast-A50-parts: rgba(0, 0, 0, .87);--help-color-contrast-A100-parts: rgba(0, 0, 0, .87);--help-color-contrast-A200-parts: rgba(0, 0, 0, .87);--help-color-contrast-A300-parts: rgba(0, 0, 0, .87);--help-color-contrast-A400-parts: rgba(0, 0, 0, .87);--help-color-contrast-A500-parts: rgba(0, 0, 0, .87);--help-color-contrast-A600-parts: rgba(0, 0, 0, .87);--help-color-contrast-A700-parts: rgba(0, 0, 0, .87);--help-color-contrast-A800-parts: rgba(0, 0, 0, .87);--help-color-contrast-A900-parts: rgba(0, 0, 0, .87);--help-color-50-parts-rgb: 239, 227, 254;--help-color-100-parts-rgb: 224, 202, 253;--help-color-200-parts-rgb: 193, 148, 251;--help-color-300-parts-rgb: 153, 79, 248;--help-color-400-parts-rgb: 136, 49, 247;--help-color-500-parts-rgb: 119, 20, 246;--help-color-600-parts-rgb: 104, 9, 227;--help-color-700-parts-rgb: 91, 8, 197;--help-color-800-parts-rgb: 77, 6, 168;--help-color-900-parts-rgb: 64, 5, 138}:host *{box-sizing:border-box}.snackbar-container{position:fixed;z-index:99999;top:var(--snackbar-position-top);bottom:var(--snackbar-position-bottom, 24px);right:var(--snackbar-position-right, 24px);display:flex;flex-direction:column;align-items:flex-end;gap:16px}.snackbar-container .snackbar{list-style:none;display:flex;flex-direction:row;align-items:center;gap:16px;padding:8px;min-width:213px;width:fit-content;max-width:400px;border-radius:8px;background-color:#333;box-shadow:0 4px 8px 0 var(--neutral-color-A200-parts)}.snackbar-container .snackbar.has-extended-message{align-items:flex-start}.snackbar-container .snackbar .icon{display:flex;align-items:center;justify-content:center;height:28px;width:28px;min-height:28px;min-width:28px;max-height:28px;max-width:28px;border-radius:6px}.snackbar-container .snackbar .icon i{color:#fff;font-size:20px}.snackbar-container .snackbar .icon--success{background-color:var(--success-color-A500-parts)}.snackbar-container .snackbar .icon--error{background-color:var(--error-color-A500-parts)}.snackbar-container .snackbar .icon--info{background-color:var(--info-color-A500-parts)}.snackbar-container .snackbar .icon--warning{background-color:var(--warn-color-A500-parts)}.snackbar-container .snackbar .icon--help{background-color:var(--help-color-A500-parts)}.snackbar-container .snackbar .message-container{display:flex;flex-direction:column;gap:4px}.snackbar-container .snackbar .dismiss-button{background-color:transparent!important;color:#fff!important}.snackbar-container .snackbar .dismiss-button:focus{outline:3px solid var(--primary-color-A500-parts)!important;outline-offset:2px!important}\n"] }]
|
|
10797
|
+
}], propDecorators: { positionTop: [{
|
|
10798
|
+
type: Input
|
|
10799
|
+
}], positionRight: [{
|
|
10800
|
+
type: Input
|
|
10801
|
+
}], positionBottom: [{
|
|
10802
|
+
type: Input
|
|
10803
|
+
}] } });
|
|
10788
10804
|
|
|
10789
10805
|
/** Toast service */
|
|
10790
10806
|
class ToastService {
|
|
@@ -10915,6 +10931,10 @@ class TextOverflowEllipsisTooltipDirective {
|
|
|
10915
10931
|
* @note If no tooltip text provided, will use the elements 'textContent'
|
|
10916
10932
|
*/
|
|
10917
10933
|
this.tooltipText = "";
|
|
10934
|
+
/** Custom classes for the tooltip */
|
|
10935
|
+
this.tooltipClass = "";
|
|
10936
|
+
/** Possible positions for a tooltip : "left" | "right" | "above" | "below" | "before" | "after" */
|
|
10937
|
+
this.tooltipPosition = null;
|
|
10918
10938
|
/** Is the element overflowing */
|
|
10919
10939
|
this.isOverflowing = false;
|
|
10920
10940
|
}
|
|
@@ -10945,8 +10965,11 @@ class TextOverflowEllipsisTooltipDirective {
|
|
|
10945
10965
|
const el = this.elRef.nativeElement;
|
|
10946
10966
|
this.isOverflowing = el.scrollWidth > el.clientWidth;
|
|
10947
10967
|
if (this.isOverflowing) {
|
|
10968
|
+
this.tooltip.tooltipClass = this.tooltipClass;
|
|
10948
10969
|
this.tooltip.message = this.tooltipText.length ? this.tooltipText : el.textContent;
|
|
10949
|
-
this.
|
|
10970
|
+
if (!!this.tooltipPosition) {
|
|
10971
|
+
this.tooltip.position = this.tooltipPosition;
|
|
10972
|
+
}
|
|
10950
10973
|
this.tooltip.disabled = false;
|
|
10951
10974
|
}
|
|
10952
10975
|
else {
|
|
@@ -10964,7 +10987,7 @@ class TextOverflowEllipsisTooltipDirective {
|
|
|
10964
10987
|
this.tooltip.hide();
|
|
10965
10988
|
}
|
|
10966
10989
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TextOverflowEllipsisTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i1$6.MatTooltip }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
10967
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: TextOverflowEllipsisTooltipDirective, isStandalone: true, selector: "[textOverflowEllipsisTooltip]", inputs: { tooltipText: ["textOverflowEllipsisTooltip", "tooltipText"] }, host: { listeners: { "mouseover": "onMouseOver()", "mouseleave": "onMouseLeave()" } }, providers: [MatTooltip], ngImport: i0 }); }
|
|
10990
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: TextOverflowEllipsisTooltipDirective, isStandalone: true, selector: "[textOverflowEllipsisTooltip]", inputs: { tooltipText: ["textOverflowEllipsisTooltip", "tooltipText"], tooltipClass: ["ellipsisTooltipClass", "tooltipClass"], tooltipPosition: ["ellipsisTooltipPosition", "tooltipPosition"] }, host: { listeners: { "mouseover": "onMouseOver()", "mouseleave": "onMouseLeave()" } }, providers: [MatTooltip], ngImport: i0 }); }
|
|
10968
10991
|
}
|
|
10969
10992
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TextOverflowEllipsisTooltipDirective, decorators: [{
|
|
10970
10993
|
type: Directive,
|
|
@@ -10975,6 +10998,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
10975
10998
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1$6.MatTooltip }, { type: i0.Renderer2 }, { type: i0.NgZone }], propDecorators: { tooltipText: [{
|
|
10976
10999
|
type: Input,
|
|
10977
11000
|
args: ['textOverflowEllipsisTooltip']
|
|
11001
|
+
}], tooltipClass: [{
|
|
11002
|
+
type: Input,
|
|
11003
|
+
args: ['ellipsisTooltipClass']
|
|
11004
|
+
}], tooltipPosition: [{
|
|
11005
|
+
type: Input,
|
|
11006
|
+
args: ['ellipsisTooltipPosition']
|
|
10978
11007
|
}], onMouseOver: [{
|
|
10979
11008
|
type: HostListener,
|
|
10980
11009
|
args: ['mouseover']
|