@eui/ecl 22.0.0-alpha.5 → 22.0.0-alpha.7

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.
Files changed (40) hide show
  1. package/docs/changelog.html +121 -0
  2. package/docs/components/EclDescriptionListDefinitionComponent.html +6 -44
  3. package/docs/components/EclListIllustrationComponent.html +0 -171
  4. package/docs/components/EclListIllustrationItemComponent.html +77 -83
  5. package/docs/components/EclLoadingIndicatorComponent.html +4 -91
  6. package/docs/directives/EclDescriptionListDefinitionItemDirective.html +6 -47
  7. package/docs/directives/EclDescriptionListDefinitionListDirective.html +0 -116
  8. package/docs/directives/EclLabelDirective.html +0 -46
  9. package/docs/directives/EclLoadingIndicatorLabelDirective.html +0 -61
  10. package/docs/directives/EclLoadingIndicatorOverlayDirective.html +0 -45
  11. package/docs/directives/EclMediaContainerCaptionDirective.html +0 -39
  12. package/docs/directives/EclMediaContainerCreditDirective.html +0 -39
  13. package/docs/directives/EclMediaContainerIframeDirective.html +13 -19
  14. package/docs/directives/EclMediaContainerItemAudioDescriptionDirective.html +0 -39
  15. package/docs/directives/EclMediaContainerItemDirective.html +0 -39
  16. package/docs/directives/EclMediaContainerPictureDirective.html +0 -39
  17. package/docs/js/search/search_index.js +2 -2
  18. package/docs/json/EclMediaContainerIframeDirective.md +0 -1
  19. package/docs/json/documentation.json +182 -468
  20. package/docs/llms.txt +6 -9
  21. package/docs/properties.html +1 -1
  22. package/fesm2022/eui-ecl-components-ecl-label.mjs +6 -6
  23. package/fesm2022/eui-ecl-components-ecl-label.mjs.map +1 -1
  24. package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs +19 -30
  25. package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs.map +1 -1
  26. package/fesm2022/eui-ecl-components-ecl-list.mjs +44 -41
  27. package/fesm2022/eui-ecl-components-ecl-list.mjs.map +1 -1
  28. package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs +17 -20
  29. package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs.map +1 -1
  30. package/fesm2022/eui-ecl-components-ecl-media-container.mjs +36 -33
  31. package/fesm2022/eui-ecl-components-ecl-media-container.mjs.map +1 -1
  32. package/package.json +1 -1
  33. package/types/eui-ecl-components-ecl-label.d.ts.map +1 -1
  34. package/types/eui-ecl-components-ecl-list-illustration.d.ts +3 -3
  35. package/types/eui-ecl-components-ecl-list-illustration.d.ts.map +1 -1
  36. package/types/eui-ecl-components-ecl-list.d.ts +9 -12
  37. package/types/eui-ecl-components-ecl-list.d.ts.map +1 -1
  38. package/types/eui-ecl-components-ecl-loading-indicator.d.ts.map +1 -1
  39. package/types/eui-ecl-components-ecl-media-container.d.ts +7 -2
  40. package/types/eui-ecl-components-ecl-media-container.d.ts.map +1 -1
@@ -17281,12 +17281,12 @@
17281
17281
  },
17282
17282
  {
17283
17283
  "name": "EclDescriptionListDefinitionItemDirective",
17284
- "id": "directive-EclDescriptionListDefinitionItemDirective-fc40220de31177a2dea6fa119107b00bd0082dc3d12e1024ddc9698f4576a056aaa9acd67fc73674f50455461787d9e94fcaaef0d0e765cb8bad05cb42d4de96",
17284
+ "id": "directive-EclDescriptionListDefinitionItemDirective-a5b79a474de70418841c2b7c289fde4ee7297407f61a77dda587317d58ef219eedf6127dd2f6a706d095d4ecb41a18e8e29aabeb41f9b5ebc1cb26aaded13470",
17285
17285
  "file": "packages/ecl/components/ecl-list/ecl-description-list-definition-item.directive.ts",
17286
17286
  "type": "directive",
17287
17287
  "description": "<p>Directive representing a single item in an ECL description list definition.</p>\n<p>Applies the appropriate styling classes and allows visibility control for &quot;see all&quot; behavior.</p>\n",
17288
17288
  "rawdescription": "\n\nDirective representing a single item in an ECL description list definition.\n\nApplies the appropriate styling classes and allows visibility control for \"see all\" behavior.\n",
17289
- "sourceCode": "import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive representing a single item in an ECL description list definition.\n *\n * Applies the appropriate styling classes and allows visibility control for \"see all\" behavior.\n */\n@Directive({\n selector: '[eclDescriptionListDefinitionItem]',\n})\nexport class EclDescriptionListDefinitionItemDirective extends ECLBaseDirective {\n /**\n * Applies appropriate ECL classes based on visibility state.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-description-list__definition-item'),\n this.isHidden ? 'ecl-description-list__definition-item--hidden' : '',\n this.isLastVisible ? 'ecl-description-list__definition-item--last-visible' : '',\n ].join(' ');\n }\n\n /**\n * Internal state used to hide the item when exceeding the visible limit.\n */\n isHidden = false;\n\n /**\n * Indicates whether this is the last item visible before the \"see all\" action is triggered.\n */\n isLastVisible = false;\n}\n\n/**\n * Directive representing a container for definition list items within an ECL description list.\n *\n * Applies the ECL-specific class for the list wrapper.\n */\n@Directive({\n selector: '[eclDescriptionListDefinitionList]',\n})\nexport class EclDescriptionListDefinitionListDirective extends ECLBaseDirective {\n /**\n * Applies the ECL list container class.\n */\n @HostBinding('class.ecl-description-list__definition-list') cmpClass = true;\n}\n",
17289
+ "sourceCode": "import { Directive, signal } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive representing a single item in an ECL description list definition.\n *\n * Applies the appropriate styling classes and allows visibility control for \"see all\" behavior.\n */\n@Directive({\n selector: '[eclDescriptionListDefinitionItem]',\n host: {\n '[class]': 'cssClasses',\n },\n})\nexport class EclDescriptionListDefinitionItemDirective extends ECLBaseDirective {\n /**\n * Internal state used to hide the item when exceeding the visible limit.\n */\n readonly isHidden = signal(false);\n\n /**\n * Indicates whether this is the last item visible before the \"see all\" action is triggered.\n */\n readonly isLastVisible = signal(false);\n\n /**\n * Applies appropriate ECL classes based on visibility state.\n */\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-description-list__definition-item'),\n this.isHidden() ? 'ecl-description-list__definition-item--hidden' : '',\n this.isLastVisible() ? 'ecl-description-list__definition-item--last-visible' : '',\n ].join(' ');\n }\n}\n\n/**\n * Directive representing a container for definition list items within an ECL description list.\n *\n * Applies the ECL-specific class for the list wrapper.\n */\n@Directive({\n selector: '[eclDescriptionListDefinitionList]',\n host: {\n class: 'ecl-description-list__definition-list',\n },\n})\nexport class EclDescriptionListDefinitionListDirective extends ECLBaseDirective {}\n",
17290
17290
  "selector": "[eclDescriptionListDefinitionItem]",
17291
17291
  "providers": [],
17292
17292
  "hostDirectives": [],
@@ -17339,47 +17339,40 @@
17339
17339
  "outputsClass": [],
17340
17340
  "deprecated": false,
17341
17341
  "deprecationMessage": "",
17342
- "hostBindings": [
17343
- {
17344
- "coverageIgnore": false,
17345
- "name": "class",
17346
- "actualName": "cssClasses",
17347
- "deprecated": false,
17348
- "deprecationMessage": "",
17349
- "rawdescription": "\n\nApplies appropriate ECL classes based on visibility state.\n",
17350
- "description": "<p>Applies appropriate ECL classes based on visibility state.</p>\n",
17351
- "line": 17,
17352
- "type": "string",
17353
- "decorators": []
17354
- }
17355
- ],
17342
+ "hostBindings": [],
17356
17343
  "hostListeners": [],
17357
17344
  "propertiesClass": [
17358
17345
  {
17359
17346
  "name": "isHidden",
17360
17347
  "coverageIgnore": false,
17361
- "defaultValue": "false",
17348
+ "defaultValue": "signal(false)",
17362
17349
  "deprecated": false,
17363
17350
  "deprecationMessage": "",
17364
17351
  "type": "unknown",
17365
17352
  "indexKey": "",
17366
17353
  "optional": false,
17367
17354
  "description": "<p>Internal state used to hide the item when exceeding the visible limit.</p>\n",
17368
- "line": 28,
17369
- "rawdescription": "\n\nInternal state used to hide the item when exceeding the visible limit.\n"
17355
+ "line": 19,
17356
+ "rawdescription": "\n\nInternal state used to hide the item when exceeding the visible limit.\n",
17357
+ "modifierKind": [
17358
+ 148
17359
+ ]
17370
17360
  },
17371
17361
  {
17372
17362
  "name": "isLastVisible",
17373
17363
  "coverageIgnore": false,
17374
- "defaultValue": "false",
17364
+ "defaultValue": "signal(false)",
17375
17365
  "deprecated": false,
17376
17366
  "deprecationMessage": "",
17377
17367
  "type": "unknown",
17378
17368
  "indexKey": "",
17379
17369
  "optional": false,
17380
17370
  "description": "<p>Indicates whether this is the last item visible before the &quot;see all&quot; action is triggered.</p>\n",
17381
- "line": 33,
17382
- "rawdescription": "\n\nIndicates whether this is the last item visible before the \"see all\" action is triggered.\n"
17371
+ "line": 24,
17372
+ "rawdescription": "\n\nIndicates whether this is the last item visible before the \"see all\" action is triggered.\n",
17373
+ "modifierKind": [
17374
+ 148
17375
+ ]
17383
17376
  }
17384
17377
  ],
17385
17378
  "methodsClass": [
@@ -17425,8 +17418,8 @@
17425
17418
  "coverageIgnore": false,
17426
17419
  "jsdoctags": [
17427
17420
  {
17428
- "pos": 107,
17429
- "end": 293,
17421
+ "pos": 102,
17422
+ "end": 288,
17430
17423
  "kind": 321,
17431
17424
  "id": 0,
17432
17425
  "flags": 16777216,
@@ -17445,7 +17438,7 @@
17445
17438
  "name": "cssClasses",
17446
17439
  "type": "string",
17447
17440
  "returnType": "string",
17448
- "line": 17,
17441
+ "line": 29,
17449
17442
  "rawdescription": "\n\nApplies appropriate ECL classes based on visibility state.\n",
17450
17443
  "description": "<p>Applies appropriate ECL classes based on visibility state.</p>\n"
17451
17444
  }
@@ -17463,12 +17456,12 @@
17463
17456
  },
17464
17457
  {
17465
17458
  "name": "EclDescriptionListDefinitionListDirective",
17466
- "id": "directive-EclDescriptionListDefinitionListDirective-fc40220de31177a2dea6fa119107b00bd0082dc3d12e1024ddc9698f4576a056aaa9acd67fc73674f50455461787d9e94fcaaef0d0e765cb8bad05cb42d4de96",
17459
+ "id": "directive-EclDescriptionListDefinitionListDirective-a5b79a474de70418841c2b7c289fde4ee7297407f61a77dda587317d58ef219eedf6127dd2f6a706d095d4ecb41a18e8e29aabeb41f9b5ebc1cb26aaded13470",
17467
17460
  "file": "packages/ecl/components/ecl-list/ecl-description-list-definition-item.directive.ts",
17468
17461
  "type": "directive",
17469
17462
  "description": "<p>Directive representing a container for definition list items within an ECL description list.</p>\n<p>Applies the ECL-specific class for the list wrapper.</p>\n",
17470
17463
  "rawdescription": "\n\nDirective representing a container for definition list items within an ECL description list.\n\nApplies the ECL-specific class for the list wrapper.\n",
17471
- "sourceCode": "import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive representing a single item in an ECL description list definition.\n *\n * Applies the appropriate styling classes and allows visibility control for \"see all\" behavior.\n */\n@Directive({\n selector: '[eclDescriptionListDefinitionItem]',\n})\nexport class EclDescriptionListDefinitionItemDirective extends ECLBaseDirective {\n /**\n * Applies appropriate ECL classes based on visibility state.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-description-list__definition-item'),\n this.isHidden ? 'ecl-description-list__definition-item--hidden' : '',\n this.isLastVisible ? 'ecl-description-list__definition-item--last-visible' : '',\n ].join(' ');\n }\n\n /**\n * Internal state used to hide the item when exceeding the visible limit.\n */\n isHidden = false;\n\n /**\n * Indicates whether this is the last item visible before the \"see all\" action is triggered.\n */\n isLastVisible = false;\n}\n\n/**\n * Directive representing a container for definition list items within an ECL description list.\n *\n * Applies the ECL-specific class for the list wrapper.\n */\n@Directive({\n selector: '[eclDescriptionListDefinitionList]',\n})\nexport class EclDescriptionListDefinitionListDirective extends ECLBaseDirective {\n /**\n * Applies the ECL list container class.\n */\n @HostBinding('class.ecl-description-list__definition-list') cmpClass = true;\n}\n",
17464
+ "sourceCode": "import { Directive, signal } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive representing a single item in an ECL description list definition.\n *\n * Applies the appropriate styling classes and allows visibility control for \"see all\" behavior.\n */\n@Directive({\n selector: '[eclDescriptionListDefinitionItem]',\n host: {\n '[class]': 'cssClasses',\n },\n})\nexport class EclDescriptionListDefinitionItemDirective extends ECLBaseDirective {\n /**\n * Internal state used to hide the item when exceeding the visible limit.\n */\n readonly isHidden = signal(false);\n\n /**\n * Indicates whether this is the last item visible before the \"see all\" action is triggered.\n */\n readonly isLastVisible = signal(false);\n\n /**\n * Applies appropriate ECL classes based on visibility state.\n */\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-description-list__definition-item'),\n this.isHidden() ? 'ecl-description-list__definition-item--hidden' : '',\n this.isLastVisible() ? 'ecl-description-list__definition-item--last-visible' : '',\n ].join(' ');\n }\n}\n\n/**\n * Directive representing a container for definition list items within an ECL description list.\n *\n * Applies the ECL-specific class for the list wrapper.\n */\n@Directive({\n selector: '[eclDescriptionListDefinitionList]',\n host: {\n class: 'ecl-description-list__definition-list',\n },\n})\nexport class EclDescriptionListDefinitionListDirective extends ECLBaseDirective {}\n",
17472
17465
  "selector": "[eclDescriptionListDefinitionList]",
17473
17466
  "providers": [],
17474
17467
  "hostDirectives": [],
@@ -17521,46 +17514,9 @@
17521
17514
  "outputsClass": [],
17522
17515
  "deprecated": false,
17523
17516
  "deprecationMessage": "",
17524
- "hostBindings": [
17525
- {
17526
- "coverageIgnore": false,
17527
- "name": "class.ecl-description-list__definition-list",
17528
- "actualName": "cmpClass",
17529
- "defaultValue": "true",
17530
- "deprecated": false,
17531
- "deprecationMessage": "",
17532
- "rawdescription": "\n\nApplies the ECL list container class.\n",
17533
- "description": "<p>Applies the ECL list container class.</p>\n",
17534
- "line": 48,
17535
- "type": "boolean",
17536
- "decorators": []
17537
- }
17538
- ],
17517
+ "hostBindings": [],
17539
17518
  "hostListeners": [],
17540
- "propertiesClass": [
17541
- {
17542
- "name": "cmpClass",
17543
- "coverageIgnore": false,
17544
- "defaultValue": "true",
17545
- "deprecated": false,
17546
- "deprecationMessage": "",
17547
- "type": "unknown",
17548
- "indexKey": "",
17549
- "optional": false,
17550
- "description": "<p>Applies the ECL list container class.</p>\n",
17551
- "line": 48,
17552
- "rawdescription": "\n\nApplies the ECL list container class.\n",
17553
- "decorators": [
17554
- {
17555
- "name": "HostBinding",
17556
- "stringifiedArguments": "'class.ecl-description-list__definition-list'"
17557
- }
17558
- ],
17559
- "modifierKind": [
17560
- 171
17561
- ]
17562
- }
17563
- ],
17519
+ "propertiesClass": [],
17564
17520
  "methodsClass": [
17565
17521
  {
17566
17522
  "name": "getCssClasses",
@@ -17604,8 +17560,8 @@
17604
17560
  "coverageIgnore": false,
17605
17561
  "jsdoctags": [
17606
17562
  {
17607
- "pos": 1137,
17608
- "end": 1299,
17563
+ "pos": 1196,
17564
+ "end": 1358,
17609
17565
  "kind": 321,
17610
17566
  "id": 0,
17611
17567
  "flags": 16777216,
@@ -22186,12 +22142,12 @@
22186
22142
  },
22187
22143
  {
22188
22144
  "name": "EclLabelDirective",
22189
- "id": "directive-EclLabelDirective-87b7bcc0e9fade6e9ad2b3819d411a9ce7034aafc8f630b873bb2423b9e76886c092a0c0e55a92b101b721b316ce6e0d64c47f74047beacf72814feacdf20d37",
22145
+ "id": "directive-EclLabelDirective-1d4333f6129baa7b2cd079990628f7696c131397449388ed0807ea786303a5bd744ee268444bcd218b131494895f217e591960f1b00c660c1376e8ed3be90388",
22190
22146
  "file": "packages/ecl/components/ecl-label/ecl-label.directive.ts",
22191
22147
  "type": "directive",
22192
22148
  "description": "<p>Directive for applying ECL label styles.</p>\n<p>Supports multiple visual variants based on importance or context.\nAdds appropriate ECL classes dynamically.</p>\n",
22193
22149
  "rawdescription": "\n\nDirective for applying ECL label styles.\n\nSupports multiple visual variants based on importance or context.\nAdds appropriate ECL classes dynamically.\n",
22194
- "sourceCode": "import { Directive, HostBinding, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive for applying ECL label styles.\n *\n * Supports multiple visual variants based on importance or context.\n * Adds appropriate ECL classes dynamically.\n */\n@Directive({\n selector: '[eclLabel]',\n})\nexport class EclLabelDirective extends ECLBaseDirective {\n /**\n * Defines the visual variant of the label.\n * \n * - `'low'` – default styling\n * - `'medium'` – medium emphasis\n * - `'high'` – high emphasis\n * - `'highlight'` – special highlight\n *\n * @default 'low'\n */\n readonly variant = input<'low' | 'medium' | 'high' | 'highlight'>('low');\n\n /**\n * CSS classes applied to the host element.\n * Combines base ECL label class with the variant modifier.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-label'), `ecl-label--${this.variant()}`].join(' ').trim();\n }\n}\n",
22150
+ "sourceCode": "import { Directive, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive for applying ECL label styles.\n *\n * Supports multiple visual variants based on importance or context.\n * Adds appropriate ECL classes dynamically.\n */\n@Directive({\n selector: '[eclLabel]',\n host: {\n '[class]': 'cssClasses',\n },\n})\nexport class EclLabelDirective extends ECLBaseDirective {\n /**\n * Defines the visual variant of the label.\n * \n * - `'low'` – default styling\n * - `'medium'` – medium emphasis\n * - `'high'` – high emphasis\n * - `'highlight'` – special highlight\n *\n * @default 'low'\n */\n readonly variant = input<'low' | 'medium' | 'high' | 'highlight'>('low');\n\n /**\n * CSS classes applied to the host element.\n * Combines base ECL label class with the variant modifier.\n */\n get cssClasses(): string {\n return [super.getCssClasses('ecl-label'), `ecl-label--${this.variant()}`].join(' ').trim();\n }\n}\n",
22195
22151
  "selector": "[eclLabel]",
22196
22152
  "providers": [],
22197
22153
  "hostDirectives": [],
@@ -22207,23 +22163,23 @@
22207
22163
  "indexKey": "",
22208
22164
  "optional": false,
22209
22165
  "description": "<p>Defines the visual variant of the label.</p>\n<ul>\n<li><code>&#39;low&#39;</code> – default styling</li>\n<li><code>&#39;medium&#39;</code> – medium emphasis</li>\n<li><code>&#39;high&#39;</code> – high emphasis</li>\n<li><code>&#39;highlight&#39;</code> – special highlight</li>\n</ul>\n<p>&#39;low&#39;</p>\n",
22210
- "line": 24,
22166
+ "line": 27,
22211
22167
  "rawdescription": "\n\nDefines the visual variant of the label.\n\n- `'low'` – default styling\n- `'medium'` – medium emphasis\n- `'high'` – high emphasis\n- `'highlight'` – special highlight\n\n'low'\n",
22212
22168
  "modifierKind": [
22213
22169
  148
22214
22170
  ],
22215
22171
  "jsdoctags": [
22216
22172
  {
22217
- "pos": 613,
22218
- "end": 633,
22173
+ "pos": 652,
22174
+ "end": 672,
22219
22175
  "kind": 328,
22220
22176
  "id": 0,
22221
22177
  "flags": 16842752,
22222
22178
  "modifierFlagsCache": 0,
22223
22179
  "transformFlags": 0,
22224
22180
  "tagName": {
22225
- "pos": 614,
22226
- "end": 621,
22181
+ "pos": 653,
22182
+ "end": 660,
22227
22183
  "kind": 80,
22228
22184
  "id": 0,
22229
22185
  "flags": 16842752,
@@ -22282,20 +22238,7 @@
22282
22238
  "outputsClass": [],
22283
22239
  "deprecated": false,
22284
22240
  "deprecationMessage": "",
22285
- "hostBindings": [
22286
- {
22287
- "coverageIgnore": false,
22288
- "name": "class",
22289
- "actualName": "cssClasses",
22290
- "deprecated": false,
22291
- "deprecationMessage": "",
22292
- "rawdescription": "\n\nCSS classes applied to the host element.\nCombines base ECL label class with the variant modifier.\n",
22293
- "description": "<p>CSS classes applied to the host element.\nCombines base ECL label class with the variant modifier.</p>\n",
22294
- "line": 31,
22295
- "type": "string",
22296
- "decorators": []
22297
- }
22298
- ],
22241
+ "hostBindings": [],
22299
22242
  "hostListeners": [],
22300
22243
  "propertiesClass": [],
22301
22244
  "methodsClass": [
@@ -22341,8 +22284,8 @@
22341
22284
  "coverageIgnore": false,
22342
22285
  "jsdoctags": [
22343
22286
  {
22344
- "pos": 114,
22345
- "end": 282,
22287
+ "pos": 101,
22288
+ "end": 269,
22346
22289
  "kind": 321,
22347
22290
  "id": 0,
22348
22291
  "flags": 16777216,
@@ -22361,7 +22304,7 @@
22361
22304
  "name": "cssClasses",
22362
22305
  "type": "string",
22363
22306
  "returnType": "string",
22364
- "line": 31,
22307
+ "line": 33,
22365
22308
  "rawdescription": "\n\nCSS classes applied to the host element.\nCombines base ECL label class with the variant modifier.\n",
22366
22309
  "description": "<p>CSS classes applied to the host element.\nCombines base ECL label class with the variant modifier.</p>\n"
22367
22310
  }
@@ -23845,12 +23788,12 @@
23845
23788
  },
23846
23789
  {
23847
23790
  "name": "EclLoadingIndicatorLabelDirective",
23848
- "id": "directive-EclLoadingIndicatorLabelDirective-09d80231d4325c423cc8c21058260306dbebcf16a541c486160192dcbcd3967800aada32b16609fc3195685fceb1866a754839bb8fddfb6fea442465873ae516",
23791
+ "id": "directive-EclLoadingIndicatorLabelDirective-105f4f16a23a68208bc6803868c3a673e2cb0abea445aaa46a19ebc7ce6d14ff4c574689621c8404aff41a107bf365c152478007496029528281429b372411f0",
23849
23792
  "file": "packages/ecl/components/ecl-loading-indicator/ecl-loading-indicator-label.directive.ts",
23850
23793
  "type": "directive",
23851
23794
  "description": "<p>Directive for styling the label text of an ECL loading indicator.</p>\n<p>Adds the <code>ecl-spinner__text</code> class to the host element.</p>\n",
23852
23795
  "rawdescription": "\n\nDirective for styling the label text of an ECL loading indicator.\n\nAdds the `ecl-spinner__text` class to the host element.\n",
23853
- "sourceCode": "import { Directive, HostBinding } from '@angular/core';\n\n/**\n * Directive for styling the label text of an ECL loading indicator.\n *\n * Adds the `ecl-spinner__text` class to the host element.\n */\n@Directive({\n selector: '[eclLoadingIndicatorLabel]',\n})\nexport class EclLoadingIndicatorLabelDirective {\n /**\n * Applies the ECL class for spinner label text.\n */\n @HostBinding('class.ecl-spinner__text') className = true;\n}\n",
23796
+ "sourceCode": "import { Directive } from '@angular/core';\n\n/**\n * Directive for styling the label text of an ECL loading indicator.\n *\n * Adds the `ecl-spinner__text` class to the host element.\n */\n@Directive({\n selector: '[eclLoadingIndicatorLabel]',\n host: {\n '[class.ecl-spinner__text]': 'className',\n },\n})\nexport class EclLoadingIndicatorLabelDirective {\n /**\n * Applies the ECL class for spinner label text.\n */\n className = true;\n}\n",
23854
23797
  "selector": "[eclLoadingIndicatorLabel]",
23855
23798
  "providers": [],
23856
23799
  "hostDirectives": [],
@@ -23859,21 +23802,7 @@
23859
23802
  "outputsClass": [],
23860
23803
  "deprecated": false,
23861
23804
  "deprecationMessage": "",
23862
- "hostBindings": [
23863
- {
23864
- "coverageIgnore": false,
23865
- "name": "class.ecl-spinner__text",
23866
- "actualName": "className",
23867
- "defaultValue": "true",
23868
- "deprecated": false,
23869
- "deprecationMessage": "",
23870
- "rawdescription": "\n\nApplies the ECL class for spinner label text.\n",
23871
- "description": "<p>Applies the ECL class for spinner label text.</p>\n",
23872
- "line": 15,
23873
- "type": "boolean",
23874
- "decorators": []
23875
- }
23876
- ],
23805
+ "hostBindings": [],
23877
23806
  "hostListeners": [],
23878
23807
  "propertiesClass": [
23879
23808
  {
@@ -23886,25 +23815,16 @@
23886
23815
  "indexKey": "",
23887
23816
  "optional": false,
23888
23817
  "description": "<p>Applies the ECL class for spinner label text.</p>\n",
23889
- "line": 15,
23890
- "rawdescription": "\n\nApplies the ECL class for spinner label text.\n",
23891
- "decorators": [
23892
- {
23893
- "name": "HostBinding",
23894
- "stringifiedArguments": "'class.ecl-spinner__text'"
23895
- }
23896
- ],
23897
- "modifierKind": [
23898
- 171
23899
- ]
23818
+ "line": 18,
23819
+ "rawdescription": "\n\nApplies the ECL class for spinner label text.\n"
23900
23820
  }
23901
23821
  ],
23902
23822
  "methodsClass": [],
23903
23823
  "coverageIgnore": false,
23904
23824
  "jsdoctags": [
23905
23825
  {
23906
- "pos": 57,
23907
- "end": 195,
23826
+ "pos": 44,
23827
+ "end": 182,
23908
23828
  "kind": 321,
23909
23829
  "id": 0,
23910
23830
  "flags": 16777216,
@@ -23921,12 +23841,12 @@
23921
23841
  },
23922
23842
  {
23923
23843
  "name": "EclLoadingIndicatorOverlayDirective",
23924
- "id": "directive-EclLoadingIndicatorOverlayDirective-2a745f05195ebf912b136b0b6b8d3b51b5fec2550ad0455e6e431230a7650b417ac225f4c6e6d1411f7b4f7f16b248633b90835434e490d98b467b23d2e2342c",
23844
+ "id": "directive-EclLoadingIndicatorOverlayDirective-f77d352395d27b2fbc37e7853c5f17b71a8a4077968fb655ababc246774f76ee2aa3cf6e9447c150b97dbebc15f19e1b2b9740a17b725ffe4ab628f86472f558",
23925
23845
  "file": "packages/ecl/components/ecl-loading-indicator/ecl-loading-indicator-overlay.directive.ts",
23926
23846
  "type": "directive",
23927
23847
  "description": "<p>Directive that adds an overlay layer to an ECL loading indicator.</p>\n<p>Automatically applies the ECL spinner overlay classes.</p>\n",
23928
23848
  "rawdescription": "\n\nDirective that adds an overlay layer to an ECL loading indicator.\n\nAutomatically applies the ECL spinner overlay classes.\n",
23929
- "sourceCode": "import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive that adds an overlay layer to an ECL loading indicator.\n *\n * Automatically applies the ECL spinner overlay classes.\n */\n@Directive({\n selector: '[eclLoadingIndicatorOverlay]',\n})\nexport class EclLoadingIndicatorOverlayDirective extends ECLBaseDirective {\n /**\n * Applies the CSS classes for the spinner overlay.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-spinner__overlay ecl-spinner__overlay--visible')].join(' ').trim();\n }\n}\n",
23849
+ "sourceCode": "import { Directive } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive that adds an overlay layer to an ECL loading indicator.\n *\n * Automatically applies the ECL spinner overlay classes.\n */\n@Directive({\n selector: '[eclLoadingIndicatorOverlay]',\n host: {\n '[class]': 'cssClasses',\n },\n})\nexport class EclLoadingIndicatorOverlayDirective extends ECLBaseDirective {\n /**\n * Applies the CSS classes for the spinner overlay.\n */\n get cssClasses(): string {\n return [super.getCssClasses('ecl-spinner__overlay ecl-spinner__overlay--visible')].join(' ').trim();\n }\n}\n",
23930
23850
  "selector": "[eclLoadingIndicatorOverlay]",
23931
23851
  "providers": [],
23932
23852
  "hostDirectives": [],
@@ -23979,20 +23899,7 @@
23979
23899
  "outputsClass": [],
23980
23900
  "deprecated": false,
23981
23901
  "deprecationMessage": "",
23982
- "hostBindings": [
23983
- {
23984
- "coverageIgnore": false,
23985
- "name": "class",
23986
- "actualName": "cssClasses",
23987
- "deprecated": false,
23988
- "deprecationMessage": "",
23989
- "rawdescription": "\n\nApplies the CSS classes for the spinner overlay.\n",
23990
- "description": "<p>Applies the CSS classes for the spinner overlay.</p>\n",
23991
- "line": 17,
23992
- "type": "string",
23993
- "decorators": []
23994
- }
23995
- ],
23902
+ "hostBindings": [],
23996
23903
  "hostListeners": [],
23997
23904
  "propertiesClass": [],
23998
23905
  "methodsClass": [
@@ -24038,8 +23945,8 @@
24038
23945
  "coverageIgnore": false,
24039
23946
  "jsdoctags": [
24040
23947
  {
24041
- "pos": 107,
24042
- "end": 244,
23948
+ "pos": 94,
23949
+ "end": 231,
24043
23950
  "kind": 321,
24044
23951
  "id": 0,
24045
23952
  "flags": 16777216,
@@ -24058,7 +23965,7 @@
24058
23965
  "name": "cssClasses",
24059
23966
  "type": "string",
24060
23967
  "returnType": "string",
24061
- "line": 17,
23968
+ "line": 19,
24062
23969
  "rawdescription": "\n\nApplies the CSS classes for the spinner overlay.\n",
24063
23970
  "description": "<p>Applies the CSS classes for the spinner overlay.</p>\n"
24064
23971
  }
@@ -24076,12 +23983,12 @@
24076
23983
  },
24077
23984
  {
24078
23985
  "name": "EclMediaContainerCaptionDirective",
24079
- "id": "directive-EclMediaContainerCaptionDirective-ef09225fb961071bf08418a542c37b7576b1c347143c2315f3bf21c91b877d1106b2e434e7b9bd741a74b29526c5bc11a60f689f538c791eb6aa1a57aab04a04",
23986
+ "id": "directive-EclMediaContainerCaptionDirective-8cbae748f044a2b10bf6ac742afd1f1c1aa09c84d98f0f39a369d2635efd4c173547de425b435980d154c2b59f0dcd64d047567527008d1ea0a075cc7d1f571f",
24080
23987
  "file": "packages/ecl/components/ecl-media-container/ecl-media-container-caption.directive.ts",
24081
23988
  "type": "directive",
24082
23989
  "description": "<p>Adds styling and attributes to the media container caption element.</p>\n",
24083
23990
  "rawdescription": "\n\nAdds styling and attributes to the media container caption element.\n",
24084
- "sourceCode": "import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Adds styling and attributes to the media container caption element.\n */\n@Directive({\n selector: 'figcaption[eclMediaContainerCaption]',\n})\nexport class EclMediaContainerCaptionDirective extends ECLBaseDirective {\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-media-container__caption')].join(' ').trim();\n }\n}\n",
23991
+ "sourceCode": "import { Directive } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Adds styling and attributes to the media container caption element.\n */\n@Directive({\n selector: 'figcaption[eclMediaContainerCaption]',\n host: {\n '[class]': 'cssClasses',\n },\n})\nexport class EclMediaContainerCaptionDirective extends ECLBaseDirective {\n get cssClasses(): string {\n return [super.getCssClasses('ecl-media-container__caption')].join(' ').trim();\n }\n}\n",
24085
23992
  "selector": "figcaption[eclMediaContainerCaption]",
24086
23993
  "providers": [],
24087
23994
  "hostDirectives": [],
@@ -24134,20 +24041,7 @@
24134
24041
  "outputsClass": [],
24135
24042
  "deprecated": false,
24136
24043
  "deprecationMessage": "",
24137
- "hostBindings": [
24138
- {
24139
- "coverageIgnore": false,
24140
- "name": "class",
24141
- "actualName": "cssClasses",
24142
- "deprecated": false,
24143
- "deprecationMessage": "",
24144
- "rawdescription": "\n",
24145
- "description": "",
24146
- "line": 12,
24147
- "type": "string",
24148
- "decorators": []
24149
- }
24150
- ],
24044
+ "hostBindings": [],
24151
24045
  "hostListeners": [],
24152
24046
  "propertiesClass": [],
24153
24047
  "methodsClass": [
@@ -24193,8 +24087,8 @@
24193
24087
  "coverageIgnore": false,
24194
24088
  "jsdoctags": [
24195
24089
  {
24196
- "pos": 107,
24197
- "end": 185,
24090
+ "pos": 94,
24091
+ "end": 172,
24198
24092
  "kind": 321,
24199
24093
  "id": 0,
24200
24094
  "flags": 16777216,
@@ -24213,7 +24107,7 @@
24213
24107
  "name": "cssClasses",
24214
24108
  "type": "string",
24215
24109
  "returnType": "string",
24216
- "line": 12,
24110
+ "line": 14,
24217
24111
  "rawdescription": "\n",
24218
24112
  "description": ""
24219
24113
  }
@@ -24231,12 +24125,12 @@
24231
24125
  },
24232
24126
  {
24233
24127
  "name": "EclMediaContainerCreditDirective",
24234
- "id": "directive-EclMediaContainerCreditDirective-fad43448fcb9c60b78c6ed51b4f6cb5995ef17f040acd4a364862f7275a7f026a7f285d23748201a9bb40e5d7270965e23576b636ec0578f84705d485f936cdc",
24128
+ "id": "directive-EclMediaContainerCreditDirective-46dff5a267e45c1ae989bacb6887afc00952df088052300f1af502f6ff875375266d0df406245d6d59b128782e892c2263ae003e6d1050b05730b97d914d1b64",
24235
24129
  "file": "packages/ecl/components/ecl-media-container/ecl-media-container-credit.directive.ts",
24236
24130
  "type": "directive",
24237
24131
  "description": "<p>Adds styling and attributes to the media container credit element.</p>\n",
24238
24132
  "rawdescription": "\n\nAdds styling and attributes to the media container credit element.\n",
24239
- "sourceCode": "import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Adds styling and attributes to the media container credit element.\n */\n@Directive({\n selector: 'footer[eclMediaContainerCredit]',\n})\nexport class EclMediaContainerCreditDirective extends ECLBaseDirective {\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-media-container__credit')].join(' ').trim();\n }\n}\n",
24133
+ "sourceCode": "import { Directive } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Adds styling and attributes to the media container credit element.\n */\n@Directive({\n selector: 'footer[eclMediaContainerCredit]',\n host: {\n '[class]': 'cssClasses',\n },\n})\nexport class EclMediaContainerCreditDirective extends ECLBaseDirective {\n get cssClasses(): string {\n return [super.getCssClasses('ecl-media-container__credit')].join(' ').trim();\n }\n}\n",
24240
24134
  "selector": "footer[eclMediaContainerCredit]",
24241
24135
  "providers": [],
24242
24136
  "hostDirectives": [],
@@ -24289,20 +24183,7 @@
24289
24183
  "outputsClass": [],
24290
24184
  "deprecated": false,
24291
24185
  "deprecationMessage": "",
24292
- "hostBindings": [
24293
- {
24294
- "coverageIgnore": false,
24295
- "name": "class",
24296
- "actualName": "cssClasses",
24297
- "deprecated": false,
24298
- "deprecationMessage": "",
24299
- "rawdescription": "\n",
24300
- "description": "",
24301
- "line": 12,
24302
- "type": "string",
24303
- "decorators": []
24304
- }
24305
- ],
24186
+ "hostBindings": [],
24306
24187
  "hostListeners": [],
24307
24188
  "propertiesClass": [],
24308
24189
  "methodsClass": [
@@ -24348,8 +24229,8 @@
24348
24229
  "coverageIgnore": false,
24349
24230
  "jsdoctags": [
24350
24231
  {
24351
- "pos": 107,
24352
- "end": 184,
24232
+ "pos": 94,
24233
+ "end": 171,
24353
24234
  "kind": 321,
24354
24235
  "id": 0,
24355
24236
  "flags": 16777216,
@@ -24368,7 +24249,7 @@
24368
24249
  "name": "cssClasses",
24369
24250
  "type": "string",
24370
24251
  "returnType": "string",
24371
- "line": 12,
24252
+ "line": 14,
24372
24253
  "rawdescription": "\n",
24373
24254
  "description": ""
24374
24255
  }
@@ -24386,28 +24267,17 @@
24386
24267
  },
24387
24268
  {
24388
24269
  "name": "EclMediaContainerIframeDirective",
24389
- "id": "directive-EclMediaContainerIframeDirective-1eda71da14ca8ab3c509f2717b4246e6406ca4d21a00ebad8f27c906e3c058099cda81e6dc7d9450cfb5e12d597e310eb445748176765568057c3b9564826bcc",
24270
+ "id": "directive-EclMediaContainerIframeDirective-838b18f9ffd6a551b3638d611f9034c2fbd3a8eee0dbd5a34cb184d1cfae5c1390bcee6e5f216f0497de35c6c2d13d118d80d49f97067d2be4d5d00489413a22",
24390
24271
  "file": "packages/ecl/components/ecl-media-container/ecl-media-container-iframe.directive.ts",
24391
24272
  "type": "directive",
24392
24273
  "description": "<p>Adds styling and attributes to the iframe element.</p>\n",
24393
24274
  "rawdescription": "\n\nAdds styling and attributes to the iframe element.\n",
24394
- "sourceCode": "import { Directive, ElementRef, HostBinding, Input, inject, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Adds styling and attributes to the iframe element.\n */\n@Directive({\n selector: 'iframe[eclMediaContainerIframe]',\n})\nexport class EclMediaContainerIframeDirective extends ECLBaseDirective {\n readonly width = input(undefined);\n readonly height = input(undefined);\n @Input()\n @HostBinding('style.aspect-ratio')\n get ratio(): string {\n return this.hasCustomRatio ? this.calculateCustomRatio() : null;\n }\n\n hasCustomRatio = false;\n private elem = inject(ElementRef);\n\n calculateCustomRatio(): string {\n let iframeHeight = this.height();\n let iframeWidth = this.width();\n if (!iframeWidth || !iframeHeight) {\n iframeWidth = this.elem.nativeElement.offsetWidth;\n iframeHeight = this.elem.nativeElement.offsetHeight;\n }\n return `${iframeWidth}/${iframeHeight}`;\n }\n}\n",
24275
+ "sourceCode": "import { Directive, ElementRef, inject, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Adds styling and attributes to the iframe element.\n */\n@Directive({\n selector: 'iframe[eclMediaContainerIframe]',\n host: {\n '[style.aspect-ratio]': 'ratio',\n },\n})\nexport class EclMediaContainerIframeDirective extends ECLBaseDirective {\n readonly width = input(undefined);\n readonly height = input(undefined);\n\n hasCustomRatio = false;\n private elem = inject(ElementRef);\n\n /**\n * Aspect ratio applied as a host style binding. Derived from the\n * `width`/`height` inputs (falling back to the element's measured size),\n * and only produced when a custom ratio is requested.\n */\n get ratio(): string | null {\n return this.hasCustomRatio ? this.calculateCustomRatio() : null;\n }\n\n calculateCustomRatio(): string {\n let iframeHeight = this.height();\n let iframeWidth = this.width();\n if (!iframeWidth || !iframeHeight) {\n iframeWidth = this.elem.nativeElement.offsetWidth;\n iframeHeight = this.elem.nativeElement.offsetHeight;\n }\n return `${iframeWidth}/${iframeHeight}`;\n }\n}\n",
24395
24276
  "selector": "iframe[eclMediaContainerIframe]",
24396
24277
  "providers": [],
24397
24278
  "hostDirectives": [],
24398
24279
  "standalone": false,
24399
24280
  "inputsClass": [
24400
- {
24401
- "coverageIgnore": false,
24402
- "name": "ratio",
24403
- "deprecated": false,
24404
- "deprecationMessage": "",
24405
- "rawdescription": "\n",
24406
- "description": "",
24407
- "line": 15,
24408
- "type": "string",
24409
- "decorators": []
24410
- },
24411
24281
  {
24412
24282
  "name": "height",
24413
24283
  "coverageIgnore": false,
@@ -24417,7 +24287,7 @@
24417
24287
  "indexKey": "",
24418
24288
  "optional": false,
24419
24289
  "description": "",
24420
- "line": 12,
24290
+ "line": 15,
24421
24291
  "rawdescription": "\n",
24422
24292
  "modifierKind": [
24423
24293
  148
@@ -24433,7 +24303,7 @@
24433
24303
  "indexKey": "",
24434
24304
  "optional": false,
24435
24305
  "description": "",
24436
- "line": 11,
24306
+ "line": 14,
24437
24307
  "rawdescription": "\n",
24438
24308
  "modifierKind": [
24439
24309
  148
@@ -24500,7 +24370,7 @@
24500
24370
  "indexKey": "",
24501
24371
  "optional": false,
24502
24372
  "description": "",
24503
- "line": 19,
24373
+ "line": 17,
24504
24374
  "rawdescription": "\n"
24505
24375
  }
24506
24376
  ],
@@ -24512,7 +24382,7 @@
24512
24382
  "optional": false,
24513
24383
  "returnType": "string",
24514
24384
  "typeParameters": [],
24515
- "line": 22,
24385
+ "line": 29,
24516
24386
  "deprecated": false,
24517
24387
  "deprecationMessage": "",
24518
24388
  "rawdescription": "\n",
@@ -24560,8 +24430,8 @@
24560
24430
  "coverageIgnore": false,
24561
24431
  "jsdoctags": [
24562
24432
  {
24563
- "pos": 141,
24564
- "end": 202,
24433
+ "pos": 121,
24434
+ "end": 182,
24565
24435
  "kind": 321,
24566
24436
  "id": 0,
24567
24437
  "flags": 16777216,
@@ -24578,11 +24448,11 @@
24578
24448
  "name": "ratio",
24579
24449
  "getSignature": {
24580
24450
  "name": "ratio",
24581
- "type": "string",
24582
- "returnType": "string",
24583
- "line": 15,
24584
- "rawdescription": "\n",
24585
- "description": ""
24451
+ "type": "unknown",
24452
+ "returnType": "string | null",
24453
+ "line": 25,
24454
+ "rawdescription": "\n\nAspect ratio applied as a host style binding. Derived from the\n`width`/`height` inputs (falling back to the element's measured size),\nand only produced when a custom ratio is requested.\n",
24455
+ "description": "<p>Aspect ratio applied as a host style binding. Derived from the\n<code>width</code>/<code>height</code> inputs (falling back to the element&#39;s measured size),\nand only produced when a custom ratio is requested.</p>\n"
24586
24456
  }
24587
24457
  }
24588
24458
  },
@@ -24598,12 +24468,12 @@
24598
24468
  },
24599
24469
  {
24600
24470
  "name": "EclMediaContainerItemAudioDescriptionDirective",
24601
- "id": "directive-EclMediaContainerItemAudioDescriptionDirective-4cfde9636b7a587838cee9aa4694078d90cfce8916ff8f431ee1b6c55d7ec0277b5f97445b9a229fc0ff77ac3bc7010a7b8493ecef77e9f1289cf2d0ec075e92",
24471
+ "id": "directive-EclMediaContainerItemAudioDescriptionDirective-b17bc8fb1bc7be353f925e271b35eab6c9200d081b149fa477e1e78583c63cbecedfde7c0d7e62695de2801b5cc4dd08778a24bd1f1773628aa9caeef7e4fa2b",
24602
24472
  "file": "packages/ecl/components/ecl-media-container/ecl-media-container-item-audio-description.directive.ts",
24603
24473
  "type": "directive",
24604
24474
  "description": "<p>Adds styling to the media container description.</p>\n",
24605
24475
  "rawdescription": "\n\nAdds styling to the media container description.\n",
24606
- "sourceCode": "import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Adds styling to the media container description.\n */\n@Directive({\n selector: '[eclMediaContainerItemAudioDescription]',\n})\nexport class EclMediaContainerItemAudioDescriptionDirective extends ECLBaseDirective {\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-media-container__media-audio')].join(' ').trim();\n }\n}\n",
24476
+ "sourceCode": "import { Directive } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Adds styling to the media container description.\n */\n@Directive({\n selector: '[eclMediaContainerItemAudioDescription]',\n host: {\n '[class]': 'cssClasses',\n },\n})\nexport class EclMediaContainerItemAudioDescriptionDirective extends ECLBaseDirective {\n get cssClasses(): string {\n return [super.getCssClasses('ecl-media-container__media-audio')].join(' ').trim();\n }\n}\n",
24607
24477
  "selector": "[eclMediaContainerItemAudioDescription]",
24608
24478
  "providers": [],
24609
24479
  "hostDirectives": [],
@@ -24656,20 +24526,7 @@
24656
24526
  "outputsClass": [],
24657
24527
  "deprecated": false,
24658
24528
  "deprecationMessage": "",
24659
- "hostBindings": [
24660
- {
24661
- "coverageIgnore": false,
24662
- "name": "class",
24663
- "actualName": "cssClasses",
24664
- "deprecated": false,
24665
- "deprecationMessage": "",
24666
- "rawdescription": "\n",
24667
- "description": "",
24668
- "line": 12,
24669
- "type": "string",
24670
- "decorators": []
24671
- }
24672
- ],
24529
+ "hostBindings": [],
24673
24530
  "hostListeners": [],
24674
24531
  "propertiesClass": [],
24675
24532
  "methodsClass": [
@@ -24715,8 +24572,8 @@
24715
24572
  "coverageIgnore": false,
24716
24573
  "jsdoctags": [
24717
24574
  {
24718
- "pos": 107,
24719
- "end": 166,
24575
+ "pos": 94,
24576
+ "end": 153,
24720
24577
  "kind": 321,
24721
24578
  "id": 0,
24722
24579
  "flags": 16777216,
@@ -24735,7 +24592,7 @@
24735
24592
  "name": "cssClasses",
24736
24593
  "type": "string",
24737
24594
  "returnType": "string",
24738
- "line": 12,
24595
+ "line": 14,
24739
24596
  "rawdescription": "\n",
24740
24597
  "description": ""
24741
24598
  }
@@ -24753,12 +24610,12 @@
24753
24610
  },
24754
24611
  {
24755
24612
  "name": "EclMediaContainerItemDirective",
24756
- "id": "directive-EclMediaContainerItemDirective-f31e72c16aae2abbb963be72472f18883f7639a28df901755b1d3b9a18d4b00b2a658fc66d7cb108a80dc4a826c7e4f8db546ca9d03161ffa4fb67e7f6a3a9e2",
24613
+ "id": "directive-EclMediaContainerItemDirective-90aa274c665c54f4dabcca5a22834d9c336f03a9d2ddf1fc78e6880a3bc07c7625392ed6ae7d0d77eb9ffa07269903d6b64567402d559826c7ac28fe456f5929",
24757
24614
  "file": "packages/ecl/components/ecl-media-container/ecl-media-container-item.directive.ts",
24758
24615
  "type": "directive",
24759
24616
  "description": "<p>Adds styling and functionality to the media container item /image.</p>\n",
24760
24617
  "rawdescription": "\n\nAdds styling and functionality to the media container item /image.\n",
24761
- "sourceCode": "import { AfterContentInit, Directive, ElementRef, HostBinding, PLATFORM_ID, afterNextRender, inject, input, contentChild } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclMediaContainerIframeDirective } from './ecl-media-container-iframe.directive';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Adds styling and functionality to the media container item /image.\n */\n@Directive({\n selector: '[eclMediaContainerItem], img[eclMediaContainerImage]',\n})\nexport class EclMediaContainerItemDirective extends ECLBaseDirective implements AfterContentInit {\n el = inject(ElementRef);\n\n readonly ratio = input<string>(undefined);\n readonly contentIframe = contentChild(EclMediaContainerIframeDirective);\n\n @HostBinding('class')\n get cssClasses(): string {\n const ratio = this.ratio();\n return [\n super.getCssClasses('ecl-media-container__media'),\n ratio ? `ecl-media-container__media--ratio-${ratio}` : '',\n this.isVideo ? 'ecl-video' : '',\n ]\n .join(' ')\n .trim();\n }\n\n public isVideo = false;\n private platformId = inject(PLATFORM_ID);\n\n constructor() {\n super();\n afterNextRender(() => {\n this.setIframeUrl();\n });\n }\n\n ngAfterContentInit(): void {\n const contentIframe = this.contentIframe();\n if (contentIframe) {\n contentIframe.hasCustomRatio = this.ratio() ? false : true;\n }\n if (isPlatformBrowser(this.platformId)) {\n const selector = this.el.nativeElement.tagName;\n this.isVideo = selector === 'VIDEO';\n }\n }\n\n // TODO: is this really needed?\n setIframeUrl(): void {\n if (this.el.nativeElement.lastChild && this.el.nativeElement.lastChild.nodeName === 'IFRAME') {\n const iframe = this.el.nativeElement.lastChild;\n const iframeUrl = new URL(iframe.src);\n if (iframeUrl.host.includes('youtube')) {\n iframe.src = iframeUrl;\n }\n }\n }\n}\n",
24618
+ "sourceCode": "import { AfterContentInit, Directive, ElementRef, PLATFORM_ID, afterNextRender, inject, input, contentChild } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclMediaContainerIframeDirective } from './ecl-media-container-iframe.directive';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Adds styling and functionality to the media container item /image.\n */\n@Directive({\n selector: '[eclMediaContainerItem], img[eclMediaContainerImage]',\n host: {\n '[class]': 'cssClasses',\n },\n})\nexport class EclMediaContainerItemDirective extends ECLBaseDirective implements AfterContentInit {\n el = inject(ElementRef);\n\n readonly ratio = input<string>(undefined);\n readonly contentIframe = contentChild(EclMediaContainerIframeDirective);\n\n get cssClasses(): string {\n const ratio = this.ratio();\n return [\n super.getCssClasses('ecl-media-container__media'),\n ratio ? `ecl-media-container__media--ratio-${ratio}` : '',\n this.isVideo ? 'ecl-video' : '',\n ]\n .join(' ')\n .trim();\n }\n\n public isVideo = false;\n private platformId = inject(PLATFORM_ID);\n\n constructor() {\n super();\n afterNextRender(() => {\n this.setIframeUrl();\n });\n }\n\n ngAfterContentInit(): void {\n const contentIframe = this.contentIframe();\n if (contentIframe) {\n contentIframe.hasCustomRatio = this.ratio() ? false : true;\n }\n if (isPlatformBrowser(this.platformId)) {\n const selector = this.el.nativeElement.tagName;\n this.isVideo = selector === 'VIDEO';\n }\n }\n\n // TODO: is this really needed?\n setIframeUrl(): void {\n if (this.el.nativeElement.lastChild && this.el.nativeElement.lastChild.nodeName === 'IFRAME') {\n const iframe = this.el.nativeElement.lastChild;\n const iframeUrl = new URL(iframe.src);\n if (iframeUrl.host.includes('youtube')) {\n iframe.src = iframeUrl;\n }\n }\n }\n}\n",
24762
24619
  "selector": "[eclMediaContainerItem], img[eclMediaContainerImage]",
24763
24620
  "providers": [],
24764
24621
  "hostDirectives": [],
@@ -24774,7 +24631,7 @@
24774
24631
  "indexKey": "",
24775
24632
  "optional": false,
24776
24633
  "description": "",
24777
- "line": 15,
24634
+ "line": 18,
24778
24635
  "rawdescription": "\n",
24779
24636
  "modifierKind": [
24780
24637
  148
@@ -24828,20 +24685,7 @@
24828
24685
  "outputsClass": [],
24829
24686
  "deprecated": false,
24830
24687
  "deprecationMessage": "",
24831
- "hostBindings": [
24832
- {
24833
- "coverageIgnore": false,
24834
- "name": "class",
24835
- "actualName": "cssClasses",
24836
- "deprecated": false,
24837
- "deprecationMessage": "",
24838
- "rawdescription": "\n",
24839
- "description": "",
24840
- "line": 19,
24841
- "type": "string",
24842
- "decorators": []
24843
- }
24844
- ],
24688
+ "hostBindings": [],
24845
24689
  "hostListeners": [],
24846
24690
  "propertiesClass": [
24847
24691
  {
@@ -24854,7 +24698,7 @@
24854
24698
  "indexKey": "",
24855
24699
  "optional": false,
24856
24700
  "description": "",
24857
- "line": 16,
24701
+ "line": 19,
24858
24702
  "rawdescription": "\n",
24859
24703
  "modifierKind": [
24860
24704
  148
@@ -24870,7 +24714,7 @@
24870
24714
  "indexKey": "",
24871
24715
  "optional": false,
24872
24716
  "description": "",
24873
- "line": 13,
24717
+ "line": 16,
24874
24718
  "rawdescription": "\n"
24875
24719
  },
24876
24720
  {
@@ -24883,7 +24727,7 @@
24883
24727
  "indexKey": "",
24884
24728
  "optional": false,
24885
24729
  "description": "",
24886
- "line": 30,
24730
+ "line": 32,
24887
24731
  "rawdescription": "\n",
24888
24732
  "modifierKind": [
24889
24733
  125
@@ -24898,7 +24742,7 @@
24898
24742
  "optional": false,
24899
24743
  "returnType": "void",
24900
24744
  "typeParameters": [],
24901
- "line": 40,
24745
+ "line": 42,
24902
24746
  "deprecated": false,
24903
24747
  "deprecationMessage": "",
24904
24748
  "rawdescription": "\n",
@@ -24911,7 +24755,7 @@
24911
24755
  "optional": false,
24912
24756
  "returnType": "void",
24913
24757
  "typeParameters": [],
24914
- "line": 52,
24758
+ "line": 54,
24915
24759
  "deprecated": false,
24916
24760
  "deprecationMessage": "",
24917
24761
  "rawdescription": "\n",
@@ -24959,8 +24803,8 @@
24959
24803
  "coverageIgnore": false,
24960
24804
  "jsdoctags": [
24961
24805
  {
24962
- "pos": 340,
24963
- "end": 417,
24806
+ "pos": 327,
24807
+ "end": 404,
24964
24808
  "kind": 321,
24965
24809
  "id": 0,
24966
24810
  "flags": 16777216,
@@ -24981,7 +24825,7 @@
24981
24825
  "deprecated": false,
24982
24826
  "deprecationMessage": "",
24983
24827
  "args": [],
24984
- "line": 31,
24828
+ "line": 33,
24985
24829
  "rawdescription": "\n"
24986
24830
  },
24987
24831
  "accessors": {
@@ -24991,7 +24835,7 @@
24991
24835
  "name": "cssClasses",
24992
24836
  "type": "string",
24993
24837
  "returnType": "string",
24994
- "line": 19,
24838
+ "line": 21,
24995
24839
  "rawdescription": "\n",
24996
24840
  "description": ""
24997
24841
  }
@@ -25013,12 +24857,12 @@
25013
24857
  },
25014
24858
  {
25015
24859
  "name": "EclMediaContainerPictureDirective",
25016
- "id": "directive-EclMediaContainerPictureDirective-76ad555988a2e7db34002e870d0b415402c5465bb0138e23878ae123f341d052d53f196ba85aba6993bdb60aa91e70eb3585d29f098e0694965bff7c3e4cef0d",
24860
+ "id": "directive-EclMediaContainerPictureDirective-208ee2efa1712fe030e5b1b24e8f29d15bb24dda6db7967506d8138ba994efd15b2faf41aa88e84b73ca127c250c2646287b714e7c7b0d4c654f0824fd655275",
25017
24861
  "file": "packages/ecl/components/ecl-media-container/ecl-media-container-picture.directive.ts",
25018
24862
  "type": "directive",
25019
24863
  "description": "<p>Applies styles for the picture element.</p>\n",
25020
24864
  "rawdescription": "\n\nApplies styles for the picture element.\n",
25021
- "sourceCode": "import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Applies styles for the picture element.\n */\n@Directive({\n selector: 'picture[eclMediaContainerPicture]',\n})\nexport class EclMediaContainerPictureDirective extends ECLBaseDirective {\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-picture ecl-media-container__picture')].join(' ').trim();\n }\n}\n",
24865
+ "sourceCode": "import { Directive } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Applies styles for the picture element.\n */\n@Directive({\n selector: 'picture[eclMediaContainerPicture]',\n host: {\n '[class]': 'cssClasses',\n },\n})\nexport class EclMediaContainerPictureDirective extends ECLBaseDirective {\n get cssClasses(): string {\n return [super.getCssClasses('ecl-picture ecl-media-container__picture')].join(' ').trim();\n }\n}\n",
25022
24866
  "selector": "picture[eclMediaContainerPicture]",
25023
24867
  "providers": [],
25024
24868
  "hostDirectives": [],
@@ -25071,20 +24915,7 @@
25071
24915
  "outputsClass": [],
25072
24916
  "deprecated": false,
25073
24917
  "deprecationMessage": "",
25074
- "hostBindings": [
25075
- {
25076
- "coverageIgnore": false,
25077
- "name": "class",
25078
- "actualName": "cssClasses",
25079
- "deprecated": false,
25080
- "deprecationMessage": "",
25081
- "rawdescription": "\n",
25082
- "description": "",
25083
- "line": 12,
25084
- "type": "string",
25085
- "decorators": []
25086
- }
25087
- ],
24918
+ "hostBindings": [],
25088
24919
  "hostListeners": [],
25089
24920
  "propertiesClass": [],
25090
24921
  "methodsClass": [
@@ -25130,8 +24961,8 @@
25130
24961
  "coverageIgnore": false,
25131
24962
  "jsdoctags": [
25132
24963
  {
25133
- "pos": 107,
25134
- "end": 157,
24964
+ "pos": 94,
24965
+ "end": 144,
25135
24966
  "kind": 321,
25136
24967
  "id": 0,
25137
24968
  "flags": 16777216,
@@ -25150,7 +24981,7 @@
25150
24981
  "name": "cssClasses",
25151
24982
  "type": "string",
25152
24983
  "returnType": "string",
25153
- "line": 12,
24984
+ "line": 14,
25154
24985
  "rawdescription": "\n",
25155
24986
  "description": ""
25156
24987
  }
@@ -50502,10 +50333,11 @@
50502
50333
  },
50503
50334
  {
50504
50335
  "name": "EclDescriptionListDefinitionComponent",
50505
- "id": "component-EclDescriptionListDefinitionComponent-d28d376b08ef678ffaf36300ea2ecb3bbccad0ba04ad194e4b8fd771339454c5fa18a481da08d14bb2d70df9519a263b0ba48682b8a2e04fb9eb312821df34a0",
50336
+ "id": "component-EclDescriptionListDefinitionComponent-e3df3158863fb47d29c9bddd99a9c91ace679e9f97138ede1022b3bccfd820f96a584648e8392dea49e34ac45cadce3ff87767c12425f31ff80e3f6374f37d36",
50506
50337
  "file": "packages/ecl/components/ecl-list/ecl-description-list-definition/ecl-description-list-definition.component.ts",
50507
50338
  "encapsulation": [],
50508
50339
  "entryComponents": [],
50340
+ "host": {},
50509
50341
  "inputs": [],
50510
50342
  "outputs": [],
50511
50343
  "providers": [],
@@ -50529,7 +50361,7 @@
50529
50361
  "indexKey": "",
50530
50362
  "optional": false,
50531
50363
  "description": "<p>Visual variant of the definition list item.\nOptions: &#39;link&#39;, &#39;inline&#39;, &#39;taxonomy&#39;, &#39;tag&#39;.</p>\n",
50532
- "line": 42,
50364
+ "line": 43,
50533
50365
  "rawdescription": "\n\nVisual variant of the definition list item.\nOptions: 'link', 'inline', 'taxonomy', 'tag'.\n",
50534
50366
  "required": false
50535
50367
  },
@@ -50588,9 +50420,9 @@
50588
50420
  "type": "unknown",
50589
50421
  "indexKey": "",
50590
50422
  "optional": false,
50591
- "description": "<p>Signal indicating whether the DOM is ready for manipulation.\nSet to true after first render to ensure projected content exists.</p>\n",
50423
+ "description": "<p>Signal indicating whether the DOM is ready for manipulation.\nSet to true after first render to ensure the projected <ul> exists before\nthe see-more link is inserted into it. Defers DOM writes in the effect.</p>\n",
50592
50424
  "line": 76,
50593
- "rawdescription": "\n\nSignal indicating whether the DOM is ready for manipulation.\nSet to true after first render to ensure projected content exists.\n",
50425
+ "rawdescription": "\n\nSignal indicating whether the DOM is ready for manipulation.\nSet to true after first render to ensure the projected <ul> exists before\nthe see-more link is inserted into it. Defers DOM writes in the effect.\n",
50594
50426
  "modifierKind": [
50595
50427
  148
50596
50428
  ]
@@ -50621,7 +50453,7 @@
50621
50453
  "indexKey": "",
50622
50454
  "optional": false,
50623
50455
  "description": "<p>Maximum number of items to display before showing &quot;See all&quot; link.\nControlled by parent EclDescriptionListDirective.</p>\n",
50624
- "line": 48,
50456
+ "line": 49,
50625
50457
  "rawdescription": "\n\nMaximum number of items to display before showing \"See all\" link.\nControlled by parent EclDescriptionListDirective.\n"
50626
50458
  }
50627
50459
  ],
@@ -50642,7 +50474,7 @@
50642
50474
  "optional": false,
50643
50475
  "returnType": "void",
50644
50476
  "typeParameters": [],
50645
- "line": 135,
50477
+ "line": 145,
50646
50478
  "deprecated": false,
50647
50479
  "deprecationMessage": "",
50648
50480
  "rawdescription": "\n\nHandles the \"Show all items\" link click event.\nExpands all hidden items and removes the \"See all\" link from DOM.\n",
@@ -50703,22 +50535,9 @@
50703
50535
  "coverageIgnore": false,
50704
50536
  "deprecated": false,
50705
50537
  "deprecationMessage": "",
50706
- "hostBindings": [
50707
- {
50708
- "coverageIgnore": false,
50709
- "name": "class",
50710
- "actualName": "cssClasses",
50711
- "deprecated": false,
50712
- "deprecationMessage": "",
50713
- "rawdescription": "\n",
50714
- "description": "",
50715
- "line": 64,
50716
- "type": "string",
50717
- "decorators": []
50718
- }
50719
- ],
50538
+ "hostBindings": [],
50720
50539
  "hostListeners": [],
50721
- "standalone": true,
50540
+ "standalone": false,
50722
50541
  "imports": [
50723
50542
  {
50724
50543
  "name": "EUI_ECL_LINK"
@@ -50731,14 +50550,14 @@
50731
50550
  "description": "<p>Component for a definition item within an ECL description list.\nSupports variants (link, inline, taxonomy, tag) and collapsible functionality\nwith maxVisibleItems control.</p>\n",
50732
50551
  "rawdescription": "\n\nComponent for a definition item within an ECL description list.\nSupports variants (link, inline, taxonomy, tag) and collapsible functionality\nwith maxVisibleItems control.\n",
50733
50552
  "type": "component",
50734
- "sourceCode": "import {\n ApplicationRef,\n Component,\n DestroyRef,\n ElementRef,\n EmbeddedViewRef,\n HostBinding,\n TemplateRef,\n afterNextRender,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\n\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclDescriptionListDefinitionItemDirective } from '../ecl-description-list-definition-item.directive';\nimport { EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n/**\n * Component for a definition item within an ECL description list.\n * Supports variants (link, inline, taxonomy, tag) and collapsible functionality\n * with maxVisibleItems control.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[eclDescriptionListDefinition]',\n standalone: true,\n templateUrl: './ecl-description-list-definition.component.html',\n imports: [...EUI_ECL_LINK, TranslatePipe],\n})\nexport class EclDescriptionListDefinitionComponent extends ECLBaseDirective {\n\n /**\n * Visual variant of the definition list item.\n * Options: 'link', 'inline', 'taxonomy', 'tag'.\n */\n variant = input<'link' | 'inline' | 'taxonomy' | 'tag' | null>(null);\n\n /**\n * Maximum number of items to display before showing \"See all\" link.\n * Controlled by parent EclDescriptionListDirective.\n */\n maxVisibleItems = signal<number | null>(null);\n\n private readonly eclListItems = contentChildren(EclDescriptionListDefinitionItemDirective, {\n descendants: true,\n });\n\n private readonly seeMoreTpl = viewChild.required<TemplateRef<unknown>>('seeMoreTpl');\n\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly appRef = inject(ApplicationRef);\n private readonly destroyRef = inject(DestroyRef);\n\n private seeMoreView?: EmbeddedViewRef<unknown>;\n private appended = false;\n\n @HostBinding('class')\n get cssClasses(): string {\n const v = this.variant();\n return [\n super.getCssClasses('ecl-description-list__definition'),\n v ? `ecl-description-list__definition--${v}` : '',\n ].join(' ');\n }\n // we use this to defer \"append into <ul>\" until the DOM exists\n /**\n * Signal indicating whether the DOM is ready for manipulation.\n * Set to true after first render to ensure projected content exists.\n */\n readonly domReady = signal(false);\n \n /**\n * Computed signal that returns the total number of list items.\n */\n private readonly currentItemsNumber = computed(() => this.eclListItems().length);\n\n /**\n * Computed signal that determines if \"See all\" link should be shown.\n * Returns true when maxVisibleItems is set and less than total items.\n */\n readonly hasSeeAll = computed(() => {\n const max = this.maxVisibleItems();\n const total = this.currentItemsNumber();\n return !!max && total > 0 && max < total;\n });\n\n constructor() {\n super();\n // Mark DOM ready AFTER first render (projected <ul> will exist)\n afterNextRender(() => this.domReady.set(true));\n // TODO: This needs to be refactored in the next version (v22/v23). I am adding this solution, for adding /removing the\n // 'See all' link now, to be dynamically handled via DOM manipulation, to avoid breaking changes. Can be done in an easier way,\n // but with minimal change in the way the component is used. To be refactored.\n effect(() => {\n const items = this.eclListItems();\n // If DOM not ready yet, only do state updates (no DOM querying/appending)\n const ready = this.domReady();\n\n if (!this.hasSeeAll()) {\n // show all items\n items.forEach((it) => {\n it.isHidden = false;\n it.isLastVisible = false;\n });\n\n if (ready) this.removeSeeMoreFromDom();\n return;\n }\n\n // \"See all\" needed → hide beyond max\n const max = this.maxVisibleItems()!;\n items.forEach((it, idx) => {\n it.isHidden = idx >= max;\n it.isLastVisible = false;\n });\n const last = items[max - 1];\n if (last) last.isLastVisible = true;\n\n if (ready) this.ensureSeeMoreInsideProjectedUl();\n });\n\n this.destroyRef.onDestroy(() => this.removeSeeMoreFromDom());\n }\n\n /**\n * Handles the \"Show all items\" link click event.\n * Expands all hidden items and removes the \"See all\" link from DOM.\n */\n onShowAllItems(evt: Event): void {\n evt.preventDefault();\n this.showAllInternal();\n this.removeSeeMoreFromDom();\n }\n\n /**\n * Shows all items by setting isHidden to false for all items.\n */\n private showAllInternal(): void {\n const items = this.eclListItems();\n items.forEach((item) => (item.isHidden = false));\n items.forEach((item) => (item.isLastVisible = false));\n }\n\n /**\n * Ensures the \"See all\" link is appended inside the projected <ul> element.\n * Creates and attaches the embedded view if needed.\n */\n private ensureSeeMoreInsideProjectedUl(): void {\n if (!this.hasSeeAll()) return;\n\n const ul = this.findProjectedUl();\n if (!ul) return;\n\n // If it's already in there (e.g. reruns), do nothing\n if (ul.querySelector(':scope > li.ecl-description-list__see_more')) return;\n\n // Create the embedded view once and append its root <li> into the projected <ul>\n if (!this.seeMoreView) {\n this.seeMoreView = this.seeMoreTpl().createEmbeddedView({});\n this.appRef.attachView(this.seeMoreView);\n this.seeMoreView.detectChanges();\n }\n\n const [liNode] = this.seeMoreView.rootNodes as HTMLElement[];\n if (liNode && !this.appended) {\n ul.appendChild(liNode);\n this.appended = true;\n } else if (liNode && liNode.parentElement !== ul) {\n // if it was moved/removed, re-append\n ul.appendChild(liNode);\n }\n }\n\n /**\n * Removes the \"See all\" link from the DOM and cleans up the embedded view.\n */\n private removeSeeMoreFromDom(): void {\n const ul = this.findProjectedUl();\n ul?.querySelector(':scope > li.ecl-description-list__see_more')?.remove();\n\n this.appended = false;\n\n if (this.seeMoreView) {\n this.appRef.detachView(this.seeMoreView);\n this.seeMoreView.destroy();\n this.seeMoreView = undefined;\n }\n }\n\n /**\n * Finds the projected <ul> element with eclDescriptionListDefinitionList directive.\n * Returns null if not found.\n */\n private findProjectedUl(): HTMLUListElement | null {\n // your projected UL uses this attribute directive\n return this.host.nativeElement.querySelector(\n 'ul[eclDescriptionListDefinitionList]'\n ) as HTMLUListElement | null;\n }\n}",
50553
+ "sourceCode": "import {\n ApplicationRef,\n Component,\n DestroyRef,\n ElementRef,\n EmbeddedViewRef,\n TemplateRef,\n afterNextRender,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\n\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclDescriptionListDefinitionItemDirective } from '../ecl-description-list-definition-item.directive';\nimport { EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n/**\n * Component for a definition item within an ECL description list.\n * Supports variants (link, inline, taxonomy, tag) and collapsible functionality\n * with maxVisibleItems control.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[eclDescriptionListDefinition]',\n templateUrl: './ecl-description-list-definition.component.html',\n imports: [...EUI_ECL_LINK, TranslatePipe],\n host: {\n '[class]': 'cssClasses',\n },\n})\nexport class EclDescriptionListDefinitionComponent extends ECLBaseDirective {\n\n /**\n * Visual variant of the definition list item.\n * Options: 'link', 'inline', 'taxonomy', 'tag'.\n */\n variant = input<'link' | 'inline' | 'taxonomy' | 'tag' | null>(null);\n\n /**\n * Maximum number of items to display before showing \"See all\" link.\n * Controlled by parent EclDescriptionListDirective.\n */\n maxVisibleItems = signal<number | null>(null);\n\n private readonly eclListItems = contentChildren(EclDescriptionListDefinitionItemDirective, {\n descendants: true,\n });\n\n private readonly seeMoreTpl = viewChild.required<TemplateRef<unknown>>('seeMoreTpl');\n\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly appRef = inject(ApplicationRef);\n private readonly destroyRef = inject(DestroyRef);\n\n private seeMoreView?: EmbeddedViewRef<unknown>;\n private appended = false;\n\n get cssClasses(): string {\n const v = this.variant();\n return [\n super.getCssClasses('ecl-description-list__definition'),\n v ? `ecl-description-list__definition--${v}` : '',\n ].join(' ');\n }\n /**\n * Signal indicating whether the DOM is ready for manipulation.\n * Set to true after first render to ensure the projected <ul> exists before\n * the see-more link is inserted into it. Defers DOM writes in the effect.\n */\n readonly domReady = signal(false);\n \n /**\n * Computed signal that returns the total number of list items.\n */\n private readonly currentItemsNumber = computed(() => this.eclListItems().length);\n\n /**\n * Computed signal that determines if \"See all\" link should be shown.\n * Returns true when maxVisibleItems is set and less than total items.\n */\n readonly hasSeeAll = computed(() => {\n const max = this.maxVisibleItems();\n const total = this.currentItemsNumber();\n return !!max && total > 0 && max < total;\n });\n\n constructor() {\n super();\n // Mark DOM ready AFTER first render (projected <ul> will exist)\n afterNextRender(() => this.domReady.set(true));\n\n // The \"See more\" link must render as a sibling <li> INSIDE the consumer-authored\n // <ul eclDescriptionListDefinitionList>, because ECL's CSS targets it as a direct\n // child of that list. Angular has no declarative way to project content into an\n // element the consumer owns (ng-content only projects into this component's own\n // template), so the link is inserted into the projected <ul> via controlled DOM\n // manipulation. This is intentional: keeping the natural <ul><li> markup in the\n // consumer template is preferred over an API that would force bare <li> authoring.\n //\n // This effect keeps two things in sync with reactive state:\n // 1. Per-item visibility (isHidden / isLastVisible signals) based on maxVisibleItems.\n // 2. Presence of the \"See more\" <li> in the projected <ul>, driven by hasSeeAll().\n // DOM writes are deferred until domReady() so the projected <ul> exists.\n effect(() => {\n const items = this.eclListItems();\n // If DOM not ready yet, only do state updates (no DOM querying/appending)\n const ready = this.domReady();\n\n if (!this.hasSeeAll()) {\n // show all items\n items.forEach((it) => {\n it.isHidden.set(false);\n it.isLastVisible.set(false);\n });\n\n if (ready) this.removeSeeMoreFromDom();\n return;\n }\n\n // \"See all\" needed → hide beyond max\n const max = this.maxVisibleItems()!;\n items.forEach((it, idx) => {\n it.isHidden.set(idx >= max);\n it.isLastVisible.set(false);\n });\n const last = items[max - 1];\n if (last) last.isLastVisible.set(true);\n\n if (ready) this.ensureSeeMoreInsideProjectedUl();\n });\n\n this.destroyRef.onDestroy(() => this.removeSeeMoreFromDom());\n }\n\n /**\n * Handles the \"Show all items\" link click event.\n * Expands all hidden items and removes the \"See all\" link from DOM.\n */\n onShowAllItems(evt: Event): void {\n evt.preventDefault();\n this.showAllInternal();\n this.removeSeeMoreFromDom();\n }\n\n /**\n * Shows all items by setting isHidden to false for all items.\n */\n private showAllInternal(): void {\n const items = this.eclListItems();\n items.forEach((item) => item.isHidden.set(false));\n items.forEach((item) => item.isLastVisible.set(false));\n }\n\n /**\n * Ensures the \"See all\" link is appended inside the projected <ul> element.\n * Creates and attaches the embedded view if needed.\n */\n private ensureSeeMoreInsideProjectedUl(): void {\n if (!this.hasSeeAll()) return;\n\n const ul = this.findProjectedUl();\n if (!ul) return;\n\n // If it's already in there (e.g. reruns), do nothing\n if (ul.querySelector(':scope > li.ecl-description-list__see_more')) return;\n\n // Create the embedded view once and append its root <li> into the projected <ul>\n if (!this.seeMoreView) {\n this.seeMoreView = this.seeMoreTpl().createEmbeddedView({});\n this.appRef.attachView(this.seeMoreView);\n this.seeMoreView.detectChanges();\n }\n\n const [liNode] = this.seeMoreView.rootNodes as HTMLElement[];\n if (liNode && !this.appended) {\n ul.appendChild(liNode);\n this.appended = true;\n } else if (liNode && liNode.parentElement !== ul) {\n // if it was moved/removed, re-append\n ul.appendChild(liNode);\n }\n }\n\n /**\n * Removes the \"See all\" link from the DOM and cleans up the embedded view.\n */\n private removeSeeMoreFromDom(): void {\n const ul = this.findProjectedUl();\n ul?.querySelector(':scope > li.ecl-description-list__see_more')?.remove();\n\n this.appended = false;\n\n if (this.seeMoreView) {\n this.appRef.detachView(this.seeMoreView);\n this.seeMoreView.destroy();\n this.seeMoreView = undefined;\n }\n }\n\n /**\n * Finds the projected <ul> element with eclDescriptionListDefinitionList directive.\n * Returns null if not found.\n */\n private findProjectedUl(): HTMLUListElement | null {\n // The consumer-authored list carries the eclDescriptionListDefinitionList directive.\n return this.host.nativeElement.querySelector(\n 'ul[eclDescriptionListDefinitionList]'\n ) as HTMLUListElement | null;\n }\n}",
50735
50554
  "assetsDirs": [],
50736
50555
  "styleUrlsData": "",
50737
50556
  "stylesData": "",
50738
50557
  "jsdoctags": [
50739
50558
  {
50740
- "pos": 550,
50741
- "end": 738,
50559
+ "pos": 533,
50560
+ "end": 721,
50742
50561
  "kind": 321,
50743
50562
  "id": 0,
50744
50563
  "flags": 16777216,
@@ -59320,7 +59139,7 @@
59320
59139
  },
59321
59140
  {
59322
59141
  "name": "EclListIllustrationComponent",
59323
- "id": "component-EclListIllustrationComponent-aadad84273a27915e0bd27b1250beb60b9ed5671089f1aab8fe402e5b38eb14f5635ffa38360f609aade94d499abbc67b6b42c96dd3c7b8221a4178b0c1a78ce",
59142
+ "id": "component-EclListIllustrationComponent-c3cdb33b10eac59e3f68a266cbc679e9089906b04036d4d17eae7f4035452c2157898c19070374614e139055b8da2c0198cb8ada310189bb882fc4785abe0a4c",
59324
59143
  "file": "packages/ecl/components/ecl-list-illustration/ecl-list-illustration.component.ts",
59325
59144
  "encapsulation": [],
59326
59145
  "entryComponents": [],
@@ -59348,7 +59167,7 @@
59348
59167
  "indexKey": "",
59349
59168
  "optional": false,
59350
59169
  "description": "<p>If we have a number-list, the user can set the start of the counter.</p>\n",
59351
- "line": 50,
59170
+ "line": 54,
59352
59171
  "rawdescription": "\nIf we have a number-list, the user can set the start of the counter.",
59353
59172
  "required": false
59354
59173
  },
@@ -59362,7 +59181,7 @@
59362
59181
  "indexKey": "",
59363
59182
  "optional": false,
59364
59183
  "description": "<p>Font size for list content.\nPossible values:</p>\n<ul>\n<li><code>&#39;m&#39;</code> – medium</li>\n<li><code>&#39;l&#39;</code> – large (default)</li>\n</ul>\n",
59365
- "line": 35,
59184
+ "line": 39,
59366
59185
  "rawdescription": "\n\nFont size for list content.\nPossible values:\n- `'m'` – medium\n- `'l'` – large (default)\n",
59367
59186
  "modifierKind": [
59368
59187
  148
@@ -59379,7 +59198,7 @@
59379
59198
  "indexKey": "",
59380
59199
  "optional": false,
59381
59200
  "description": "<p>If this is an icon-list, it can have dividers between each item.</p>\n",
59382
- "line": 47,
59201
+ "line": 51,
59383
59202
  "rawdescription": "\nIf this is an icon-list, it can have dividers between each item.",
59384
59203
  "modifierKind": [
59385
59204
  148
@@ -59396,7 +59215,7 @@
59396
59215
  "indexKey": "",
59397
59216
  "optional": false,
59398
59217
  "description": "<p>Number of horizontal columns. If greater than <code>0</code>, items are displayed in a grid layout.</p>\n",
59399
- "line": 27,
59218
+ "line": 31,
59400
59219
  "rawdescription": "\n\nNumber of horizontal columns. If greater than `0`, items are displayed in a grid layout.\n",
59401
59220
  "required": false
59402
59221
  },
@@ -59410,7 +59229,7 @@
59410
59229
  "indexKey": "",
59411
59230
  "optional": false,
59412
59231
  "description": "<p>If content should be centered</p>\n",
59413
- "line": 38,
59232
+ "line": 42,
59414
59233
  "rawdescription": "\nIf content should be centered",
59415
59234
  "modifierKind": [
59416
59235
  148
@@ -59427,7 +59246,7 @@
59427
59246
  "indexKey": "",
59428
59247
  "optional": false,
59429
59248
  "description": "<p>If the icon should be on the same row as title - for list with icons</p>\n",
59430
- "line": 41,
59249
+ "line": 45,
59431
59250
  "rawdescription": "\nIf the icon should be on the same row as title - for list with icons",
59432
59251
  "modifierKind": [
59433
59252
  148
@@ -59444,7 +59263,7 @@
59444
59263
  "indexKey": "",
59445
59264
  "optional": false,
59446
59265
  "description": "<p>Enables zebra style (alternating background colors for list items).</p>\n",
59447
- "line": 22,
59266
+ "line": 26,
59448
59267
  "rawdescription": "\n\nEnables zebra style (alternating background colors for list items).\n",
59449
59268
  "modifierKind": [
59450
59269
  148
@@ -59461,7 +59280,7 @@
59461
59280
  "indexKey": "",
59462
59281
  "optional": false,
59463
59282
  "description": "<p>Two variants available: icon-list and number-list.</p>\n",
59464
- "line": 44,
59283
+ "line": 48,
59465
59284
  "rawdescription": "\nTwo variants available: icon-list and number-list.",
59466
59285
  "modifierKind": [
59467
59286
  148
@@ -59524,17 +59343,8 @@
59524
59343
  "indexKey": "",
59525
59344
  "optional": false,
59526
59345
  "description": "",
59527
- "line": 86,
59528
- "rawdescription": "\n",
59529
- "decorators": [
59530
- {
59531
- "name": "HostBinding",
59532
- "stringifiedArguments": "'style.--ecl-list-illustration-counter-start'"
59533
- }
59534
- ],
59535
- "modifierKind": [
59536
- 171
59537
- ]
59346
+ "line": 88,
59347
+ "rawdescription": "\n"
59538
59348
  },
59539
59349
  {
59540
59350
  "name": "eclIllustrationItems",
@@ -59546,7 +59356,7 @@
59546
59356
  "indexKey": "",
59547
59357
  "optional": false,
59548
59358
  "description": "",
59549
- "line": 52,
59359
+ "line": 56,
59550
59360
  "rawdescription": "\n",
59551
59361
  "modifierKind": [
59552
59362
  148
@@ -59562,7 +59372,7 @@
59562
59372
  "indexKey": "",
59563
59373
  "optional": false,
59564
59374
  "description": "<p>Controls <code>display</code> style of the host element based on breakpoint and column count.</p>\n",
59565
- "line": 81,
59375
+ "line": 84,
59566
59376
  "rawdescription": "\n\nControls `display` style of the host element based on breakpoint and column count.\n"
59567
59377
  },
59568
59378
  {
@@ -59575,17 +59385,8 @@
59575
59385
  "indexKey": "",
59576
59386
  "optional": false,
59577
59387
  "description": "<p>Applies ARIA role for list elements.</p>\n",
59578
- "line": 57,
59579
- "rawdescription": "\n\nApplies ARIA role for list elements.\n",
59580
- "decorators": [
59581
- {
59582
- "name": "HostBinding",
59583
- "stringifiedArguments": "'attr.role'"
59584
- }
59585
- ],
59586
- "modifierKind": [
59587
- 171
59588
- ]
59388
+ "line": 61,
59389
+ "rawdescription": "\n\nApplies ARIA role for list elements.\n"
59589
59390
  },
59590
59391
  {
59591
59392
  "name": "startAttr",
@@ -59597,17 +59398,8 @@
59597
59398
  "indexKey": "",
59598
59399
  "optional": false,
59599
59400
  "description": "",
59600
- "line": 89,
59601
- "rawdescription": "\n",
59602
- "decorators": [
59603
- {
59604
- "name": "HostBinding",
59605
- "stringifiedArguments": "'attr.start'"
59606
- }
59607
- ],
59608
- "modifierKind": [
59609
- 171
59610
- ]
59401
+ "line": 90,
59402
+ "rawdescription": "\n"
59611
59403
  }
59612
59404
  ],
59613
59405
  "methodsClass": [
@@ -59618,7 +59410,7 @@
59618
59410
  "optional": false,
59619
59411
  "returnType": "void",
59620
59412
  "typeParameters": [],
59621
- "line": 108,
59413
+ "line": 109,
59622
59414
  "deprecated": false,
59623
59415
  "deprecationMessage": "",
59624
59416
  "rawdescription": "\n",
@@ -59666,73 +59458,21 @@
59666
59458
  "coverageIgnore": false,
59667
59459
  "deprecated": false,
59668
59460
  "deprecationMessage": "",
59669
- "hostBindings": [
59670
- {
59671
- "coverageIgnore": false,
59672
- "name": "attr.role",
59673
- "actualName": "role",
59674
- "defaultValue": "'list'",
59675
- "deprecated": false,
59676
- "deprecationMessage": "",
59677
- "rawdescription": "\n\nApplies ARIA role for list elements.\n",
59678
- "description": "<p>Applies ARIA role for list elements.</p>\n",
59679
- "line": 57,
59680
- "type": "string",
59681
- "decorators": []
59682
- },
59683
- {
59684
- "coverageIgnore": false,
59685
- "name": "attr.start",
59686
- "actualName": "startAttr",
59687
- "defaultValue": "null",
59688
- "deprecated": false,
59689
- "deprecationMessage": "",
59690
- "rawdescription": "\n",
59691
- "description": "",
59692
- "line": 89,
59693
- "type": "string | null",
59694
- "decorators": []
59695
- },
59696
- {
59697
- "coverageIgnore": false,
59698
- "name": "class",
59699
- "actualName": "cssClasses",
59700
- "deprecated": false,
59701
- "deprecationMessage": "",
59702
- "rawdescription": "\n\nApplies the appropriate ECL CSS classes to the host element.\n",
59703
- "description": "<p>Applies the appropriate ECL CSS classes to the host element.</p>\n",
59704
- "line": 63,
59705
- "type": "string",
59706
- "decorators": []
59707
- },
59708
- {
59709
- "coverageIgnore": false,
59710
- "name": "style.--ecl-list-illustration-counter-start",
59711
- "actualName": "counterStartStyle",
59712
- "defaultValue": "''",
59713
- "deprecated": false,
59714
- "deprecationMessage": "",
59715
- "rawdescription": "\n",
59716
- "description": "",
59717
- "line": 86,
59718
- "type": "string",
59719
- "decorators": []
59720
- }
59721
- ],
59461
+ "hostBindings": [],
59722
59462
  "hostListeners": [],
59723
59463
  "standalone": false,
59724
59464
  "imports": [],
59725
59465
  "description": "<p>Component representing a list using ECL illustration styles.</p>\n<p>Supports zebra styling, responsive horizontal layout, and font size options.</p>\n",
59726
59466
  "rawdescription": "\n\nComponent representing a list using ECL illustration styles.\n\nSupports zebra styling, responsive horizontal layout, and font size options.\n",
59727
59467
  "type": "component",
59728
- "sourceCode": "import { Component, HostBinding, booleanAttribute, numberAttribute, afterNextRender, inject, forwardRef, AfterContentInit, Signal, computed, input, effect, signal, contentChildren } from '@angular/core';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclListIllustrationItemComponent } from './ecl-list-illustration-item.component';\n\n/**\n * Component representing a list using ECL illustration styles.\n *\n * Supports zebra styling, responsive horizontal layout, and font size options.\n */\n@Component({\n selector: 'ecl-list-illustration, ul[eclListIllustration], ol[eclListIllustration]',\n templateUrl: './ecl-list-illustration.component.html',\n host: {\n '[style.display]': 'elementDisplayStyle()',\n },\n})\nexport class EclListIllustrationComponent extends ECLBaseDirective implements AfterContentInit {\n /**\n * Enables zebra style (alternating background colors for list items).\n */\n readonly isZebra = input(false, { transform: booleanAttribute });\n\n /**\n * Number of horizontal columns. If greater than `0`, items are displayed in a grid layout.\n */\n horizontalColumns = input(0, { transform: numberAttribute });\n\n /**\n * Font size for list content.\n * Possible values:\n * - `'m'` – medium\n * - `'l'` – large (default)\n */\n readonly fontSize = input<'m' | 'l'>('l');\n\n /** If content should be centered */\n readonly isCentered = input(false, { transform: booleanAttribute });\n\n /** If the icon should be on the same row as title - for list with icons */\n readonly isIconInline = input(false, { transform: booleanAttribute });\n\n /** Two variants available: icon-list and number-list. */\n readonly variant = input<'icon-list' | 'number-list' | null>(null);\n\n /** If this is an icon-list, it can have dividers between each item. */\n readonly hasDividers = input(false, { transform: booleanAttribute });\n\n /** If we have a number-list, the user can set the start of the counter. */\n counterStart = input<number | null>(null);\n\n readonly eclIllustrationItems = contentChildren(forwardRef(() => EclListIllustrationItemComponent));\n\n /**\n * Applies ARIA role for list elements.\n */\n @HostBinding('attr.role') role = 'list';\n\n /**\n * Applies the appropriate ECL CSS classes to the host element.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-list-illustration'),\n this.isZebra() ? 'ecl-list-illustration--zebra' : '',\n this.horizontalColumns() > 0 ? `ecl-list-illustration--col-${this.horizontalColumns()}` : '',\n this.fontSize() === 'm' ? 'ecl-list-illustration--font-m' : '',\n this.isCentered() ? 'ecl-list-illustration--centered' : '',\n this.isIconInline() ? 'ecl-list-illustration--icon-inline' : '',\n this.variant() === 'icon-list' ? 'ecl-list-illustration--icon-list' : '',\n this.variant() === 'number-list' ? 'ecl-list-illustration--number-list ecl-list-illustration--number-list-reset': '',\n ]\n .join(' ')\n .trim();\n }\n\n /**\n * Controls `display` style of the host element based on breakpoint and column count.\n */\n elementDisplayStyle = computed(() =>\n this.horizontalColumns() > 0 && this.isTabletBreakpoint() ? null : 'block'\n );\n\n @HostBinding('style.--ecl-list-illustration-counter-start')\n counterStartStyle = '';\n\n @HostBinding('attr.start')\n startAttr: string | null = null;\n\n private isTabletBreakpoint = signal(false);\n private cdkBreakpointObserver = inject(BreakpointObserver);\n\n constructor() {\n super();\n afterNextRender(() => {\n this.observeBreakpointChanges();\n });\n effect(() => {\n const value = this.counterStart();\n const stringValue = value != null ? `${value}` : null;\n\n this.startAttr = stringValue;\n this.counterStartStyle = stringValue ?? '';\n });\n }\n\n ngAfterContentInit(): void {\n if (this.horizontalColumns() === 0) {\n this.eclIllustrationItems()?.forEach(item => {\n if (item.hasPicture()) item.isVerticalPicture.set(true);\n });\n }\n\n if (this.variant() === 'icon-list' && this.hasDividers()) {\n this.eclIllustrationItems()?.forEach(item => {\n item.hasDivider.set(true);\n });\n }\n }\n\n private observeBreakpointChanges(): void {\n this.cdkBreakpointObserver\n .observe(['(min-width: 768px)'])\n .subscribe((result) => {\n this.isTabletBreakpoint.set(result.matches);\n });\n }\n}\n",
59468
+ "sourceCode": "import { Component, booleanAttribute, numberAttribute, afterNextRender, inject, forwardRef, AfterContentInit, Signal, computed, input, effect, signal, contentChildren } from '@angular/core';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclListIllustrationItemComponent } from './ecl-list-illustration-item.component';\n\n/**\n * Component representing a list using ECL illustration styles.\n *\n * Supports zebra styling, responsive horizontal layout, and font size options.\n */\n@Component({\n selector: 'ecl-list-illustration, ul[eclListIllustration], ol[eclListIllustration]',\n templateUrl: './ecl-list-illustration.component.html',\n host: {\n '[attr.role]': 'role',\n '[class]': 'cssClasses',\n '[style.display]': 'elementDisplayStyle()',\n '[style.--ecl-list-illustration-counter-start]': 'counterStartStyle',\n '[attr.start]': 'startAttr',\n },\n})\nexport class EclListIllustrationComponent extends ECLBaseDirective implements AfterContentInit {\n /**\n * Enables zebra style (alternating background colors for list items).\n */\n readonly isZebra = input(false, { transform: booleanAttribute });\n\n /**\n * Number of horizontal columns. If greater than `0`, items are displayed in a grid layout.\n */\n horizontalColumns = input(0, { transform: numberAttribute });\n\n /**\n * Font size for list content.\n * Possible values:\n * - `'m'` – medium\n * - `'l'` – large (default)\n */\n readonly fontSize = input<'m' | 'l'>('l');\n\n /** If content should be centered */\n readonly isCentered = input(false, { transform: booleanAttribute });\n\n /** If the icon should be on the same row as title - for list with icons */\n readonly isIconInline = input(false, { transform: booleanAttribute });\n\n /** Two variants available: icon-list and number-list. */\n readonly variant = input<'icon-list' | 'number-list' | null>(null);\n\n /** If this is an icon-list, it can have dividers between each item. */\n readonly hasDividers = input(false, { transform: booleanAttribute });\n\n /** If we have a number-list, the user can set the start of the counter. */\n counterStart = input<number | null, unknown>(null, { transform: numberAttribute });\n\n readonly eclIllustrationItems = contentChildren(forwardRef(() => EclListIllustrationItemComponent));\n\n /**\n * Applies ARIA role for list elements.\n */\n role = 'list';\n\n /**\n * Applies the appropriate ECL CSS classes to the host element.\n */\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-list-illustration'),\n this.isZebra() ? 'ecl-list-illustration--zebra' : '',\n this.horizontalColumns() > 0 ? `ecl-list-illustration--col-${this.horizontalColumns()}` : '',\n this.fontSize() === 'm' ? 'ecl-list-illustration--font-m' : '',\n this.isCentered() ? 'ecl-list-illustration--centered' : '',\n this.isIconInline() ? 'ecl-list-illustration--icon-inline' : '',\n this.variant() === 'icon-list' ? 'ecl-list-illustration--icon-list' : '',\n this.variant() === 'number-list' ? 'ecl-list-illustration--number-list ecl-list-illustration--number-list-reset': '',\n ]\n .join(' ')\n .trim();\n }\n\n /**\n * Controls `display` style of the host element based on breakpoint and column count.\n */\n elementDisplayStyle = computed(() =>\n this.horizontalColumns() > 0 && this.isTabletBreakpoint() ? null : 'block'\n );\n\n counterStartStyle = '';\n\n startAttr: string | null = null;\n\n private isTabletBreakpoint = signal(false);\n private cdkBreakpointObserver = inject(BreakpointObserver);\n\n constructor() {\n super();\n afterNextRender(() => {\n this.observeBreakpointChanges();\n });\n effect(() => {\n const value = this.counterStart();\n const stringValue = value != null ? `${value}` : null;\n\n this.startAttr = stringValue;\n this.counterStartStyle = stringValue ?? '';\n });\n }\n\n ngAfterContentInit(): void {\n if (this.horizontalColumns() === 0) {\n this.eclIllustrationItems()?.forEach(item => {\n if (item.hasPicture()) item.isVerticalPicture.set(true);\n });\n }\n\n if (this.variant() === 'icon-list' && this.hasDividers()) {\n this.eclIllustrationItems()?.forEach(item => {\n item.hasDivider.set(true);\n });\n }\n }\n\n private observeBreakpointChanges(): void {\n this.cdkBreakpointObserver\n .observe(['(min-width: 768px)'])\n .subscribe((result) => {\n this.isTabletBreakpoint.set(result.matches);\n });\n }\n}\n",
59729
59469
  "assetsDirs": [],
59730
59470
  "styleUrlsData": "",
59731
59471
  "stylesData": "",
59732
59472
  "jsdoctags": [
59733
59473
  {
59734
- "pos": 404,
59735
- "end": 558,
59474
+ "pos": 391,
59475
+ "end": 545,
59736
59476
  "kind": 321,
59737
59477
  "id": 0,
59738
59478
  "flags": 16777216,
@@ -59747,7 +59487,7 @@
59747
59487
  "deprecated": false,
59748
59488
  "deprecationMessage": "",
59749
59489
  "args": [],
59750
- "line": 92,
59490
+ "line": 93,
59751
59491
  "rawdescription": "\n"
59752
59492
  },
59753
59493
  "extends": [
@@ -59763,7 +59503,7 @@
59763
59503
  "name": "cssClasses",
59764
59504
  "type": "string",
59765
59505
  "returnType": "string",
59766
- "line": 63,
59506
+ "line": 66,
59767
59507
  "rawdescription": "\n\nApplies the appropriate ECL CSS classes to the host element.\n",
59768
59508
  "description": "<p>Applies the appropriate ECL CSS classes to the host element.</p>\n"
59769
59509
  }
@@ -59786,7 +59526,7 @@
59786
59526
  },
59787
59527
  {
59788
59528
  "name": "EclListIllustrationItemComponent",
59789
- "id": "component-EclListIllustrationItemComponent-757b6c0960cd73cceb1d769e9c9413a2e8417efb9a2f503025e04b98e04991357579846f2dd42399f435695d188abf18cbf918633bd7c8940d3f754d987a5044",
59529
+ "id": "component-EclListIllustrationItemComponent-807c9c0580d188894e7435acbfefc9149bb388d5e9ca5f379ea45cf3bef84a8ed1116cd038fd61496342f5cf92839b3270bed54a057bd289dc9cfd716619fbef",
59790
59530
  "file": "packages/ecl/components/ecl-list-illustration/ecl-list-illustration-item.component.ts",
59791
59531
  "encapsulation": [],
59792
59532
  "entryComponents": [],
@@ -59963,6 +59703,38 @@
59963
59703
  "line": 55,
59964
59704
  "rawdescription": "\n"
59965
59705
  },
59706
+ {
59707
+ "name": "hasTitle",
59708
+ "coverageIgnore": false,
59709
+ "defaultValue": "computed(() => Boolean(this.eclTitle()) || this.eclIllustrationIcon() !== undefined)",
59710
+ "deprecated": false,
59711
+ "deprecationMessage": "",
59712
+ "type": "unknown",
59713
+ "indexKey": "",
59714
+ "optional": false,
59715
+ "description": "<p>Returns <code>true</code> if the item has a title or any projected icons.</p>\n",
59716
+ "line": 60,
59717
+ "rawdescription": "\n\nReturns `true` if the item has a title or any projected icons.\n",
59718
+ "modifierKind": [
59719
+ 148
59720
+ ]
59721
+ },
59722
+ {
59723
+ "name": "hasValue",
59724
+ "coverageIgnore": false,
59725
+ "defaultValue": "computed(() => Boolean(this.eclValue()))",
59726
+ "deprecated": false,
59727
+ "deprecationMessage": "",
59728
+ "type": "unknown",
59729
+ "indexKey": "",
59730
+ "optional": false,
59731
+ "description": "<p>Returns <code>true</code> if the item has a value.</p>\n",
59732
+ "line": 65,
59733
+ "rawdescription": "\n\nReturns `true` if the item has a value.\n",
59734
+ "modifierKind": [
59735
+ 148
59736
+ ]
59737
+ },
59966
59738
  {
59967
59739
  "name": "isVerticalPicture",
59968
59740
  "coverageIgnore": false,
@@ -60076,7 +59848,7 @@
60076
59848
  "description": "<p>Component representing a single item in an ECL illustration list.</p>\n<p>Displays optional title, value, and one or more illustration icons.</p>\n",
60077
59849
  "rawdescription": "\n\nComponent representing a single item in an ECL illustration list.\n\nDisplays optional title, value, and one or more illustration icons.\n",
60078
59850
  "type": "component",
60079
- "sourceCode": "import {\n Component,\n computed,\n forwardRef,\n HostBinding,\n Signal,\n signal,\n input,\n contentChild,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclListIllustrationIconDirective } from './ecl-list-illustration-icon.directive';\nimport { EclListIllustrationPictureDirective } from './ecl-list-illustration-picture.directive';\n\n/**\n * Component representing a single item in an ECL illustration list.\n *\n * Displays optional title, value, and one or more illustration icons.\n */\n@Component({\n selector: 'ecl-list-illustration-item, li[eclListIllustrationItem]',\n templateUrl: './ecl-list-illustration-item.component.html',\n})\nexport class EclListIllustrationItemComponent extends ECLBaseDirective {\n /**\n * Text displayed as the item title.\n */\n readonly eclTitle = input('');\n\n /**\n * Text displayed as the item value.\n */\n readonly eclValue = input('');\n\n /**\n * Applies ARIA role for list items.\n */\n @HostBinding('attr.role') role = 'listitem';\n\n /**\n * Applies ECL class for illustration list item.\n */\n @HostBinding('class.ecl-list-illustration__item') className = true;\n\n readonly eclIllustrationIcon = contentChild(forwardRef(() => EclListIllustrationIconDirective));\n\n readonly eclIllustrationPicture = contentChild(forwardRef(() => EclListIllustrationPictureDirective));\n\n /** A special class needs to be added, for vertical lists with picture. */\n isVerticalPicture = signal(false);\n\n /** A special class needs to be added, if an icon list has dividers between items. */\n hasDivider = signal(false);\n\n hasPicture: Signal<boolean> = computed(() => this.eclIllustrationPicture() !== undefined);\n\n /**\n * Returns `true` if the item has a title or any projected icons.\n */\n get hasTitle(): boolean {\n return Boolean(this.eclTitle()) || this.eclIllustrationIcon() !== undefined;\n }\n\n /**\n * Returns `true` if the item has a value.\n */\n get hasValue(): boolean {\n return Boolean(this.eclValue());\n }\n}\n",
59851
+ "sourceCode": "import {\n Component,\n computed,\n forwardRef,\n HostBinding,\n Signal,\n signal,\n input,\n contentChild,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclListIllustrationIconDirective } from './ecl-list-illustration-icon.directive';\nimport { EclListIllustrationPictureDirective } from './ecl-list-illustration-picture.directive';\n\n/**\n * Component representing a single item in an ECL illustration list.\n *\n * Displays optional title, value, and one or more illustration icons.\n */\n@Component({\n selector: 'ecl-list-illustration-item, li[eclListIllustrationItem]',\n templateUrl: './ecl-list-illustration-item.component.html',\n})\nexport class EclListIllustrationItemComponent extends ECLBaseDirective {\n /**\n * Text displayed as the item title.\n */\n readonly eclTitle = input('');\n\n /**\n * Text displayed as the item value.\n */\n readonly eclValue = input('');\n\n /**\n * Applies ARIA role for list items.\n */\n @HostBinding('attr.role') role = 'listitem';\n\n /**\n * Applies ECL class for illustration list item.\n */\n @HostBinding('class.ecl-list-illustration__item') className = true;\n\n readonly eclIllustrationIcon = contentChild(forwardRef(() => EclListIllustrationIconDirective));\n\n readonly eclIllustrationPicture = contentChild(forwardRef(() => EclListIllustrationPictureDirective));\n\n /** A special class needs to be added, for vertical lists with picture. */\n isVerticalPicture = signal(false);\n\n /** A special class needs to be added, if an icon list has dividers between items. */\n hasDivider = signal(false);\n\n hasPicture: Signal<boolean> = computed(() => this.eclIllustrationPicture() !== undefined);\n\n /**\n * Returns `true` if the item has a title or any projected icons.\n */\n readonly hasTitle = computed(() => Boolean(this.eclTitle()) || this.eclIllustrationIcon() !== undefined);\n\n /**\n * Returns `true` if the item has a value.\n */\n readonly hasValue = computed(() => Boolean(this.eclValue()));\n}\n",
60080
59852
  "assetsDirs": [],
60081
59853
  "styleUrlsData": "",
60082
59854
  "stylesData": "",
@@ -60095,30 +59867,6 @@
60095
59867
  "extends": [
60096
59868
  "ECLBaseDirective"
60097
59869
  ],
60098
- "accessors": {
60099
- "hasTitle": {
60100
- "name": "hasTitle",
60101
- "getSignature": {
60102
- "name": "hasTitle",
60103
- "type": "boolean",
60104
- "returnType": "boolean",
60105
- "line": 60,
60106
- "rawdescription": "\n\nReturns `true` if the item has a title or any projected icons.\n",
60107
- "description": "<p>Returns <code>true</code> if the item has a title or any projected icons.</p>\n"
60108
- }
60109
- },
60110
- "hasValue": {
60111
- "name": "hasValue",
60112
- "getSignature": {
60113
- "name": "hasValue",
60114
- "type": "boolean",
60115
- "returnType": "boolean",
60116
- "line": 67,
60117
- "rawdescription": "\n\nReturns `true` if the item has a value.\n",
60118
- "description": "<p>Returns <code>true</code> if the item has a value.</p>\n"
60119
- }
60120
- }
60121
- },
60122
59870
  "relationships": {
60123
59871
  "incoming": [],
60124
59872
  "outgoing": [
@@ -60128,14 +59876,15 @@
60128
59876
  }
60129
59877
  ]
60130
59878
  },
60131
- "templateData": "<div class=\"ecl-list-illustration__item-content\" [class.ecl-list-illustration__item-content--row]=\"isVerticalPicture()\"\n [class.ecl-list-illustration__divider]=\"hasDivider()\">\n <ng-content select=\"[eclListIllustrationImage],[eclListIllustrationPicture],[eclListIllustrationIcon]\"></ng-content>\n <div class=\"ecl-list-illustration__detail\">\n @if (hasTitle || hasValue) {\n <div class=\"ecl-list-illustration__title-container\">\n @if (hasValue) {\n <div class=\"ecl-list-illustration__value\">{{ eclValue() }}</div>\n }\n <div class=\"ecl-list-illustration__title\">{{ eclTitle() }}</div>\n </div>\n }\n\n <div class=\"ecl-list-illustration__description\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>"
59879
+ "templateData": "<div class=\"ecl-list-illustration__item-content\" [class.ecl-list-illustration__item-content--row]=\"isVerticalPicture()\"\n [class.ecl-list-illustration__divider]=\"hasDivider()\">\n <ng-content select=\"[eclListIllustrationImage],[eclListIllustrationPicture],[eclListIllustrationIcon]\"></ng-content>\n <div class=\"ecl-list-illustration__detail\">\n @if (hasTitle() || hasValue()) {\n <div class=\"ecl-list-illustration__title-container\">\n @if (hasValue()) {\n <div class=\"ecl-list-illustration__value\">{{ eclValue() }}</div>\n }\n <div class=\"ecl-list-illustration__title\">{{ eclTitle() }}</div>\n </div>\n }\n\n <div class=\"ecl-list-illustration__description\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>"
60132
59880
  },
60133
59881
  {
60134
59882
  "name": "EclLoadingIndicatorComponent",
60135
- "id": "component-EclLoadingIndicatorComponent-59cf112f021cd3c47a6918038217317ad36318907b34c7857232807e1040f569d2ce040570a20f92cdf09c79d968c66ddfd936f4bc47ad7ae6e9934b4f1fa73b",
59883
+ "id": "component-EclLoadingIndicatorComponent-640a69de4dccdc5ef0f3b544347bea9576bd0d653521a704d0004e2e7a176d60fd64c871de05b39225df1d8576fa39ee2618d4f19276249bc627bb557246836c",
60136
59884
  "file": "packages/ecl/components/ecl-loading-indicator/ecl-loading-indicator.component.ts",
60137
59885
  "encapsulation": [],
60138
59886
  "entryComponents": [],
59887
+ "host": {},
60139
59888
  "inputs": [],
60140
59889
  "outputs": [],
60141
59890
  "providers": [],
@@ -60159,7 +59908,7 @@
60159
59908
  "indexKey": "",
60160
59909
  "optional": false,
60161
59910
  "description": "<p>Controls whether the spinner should be centered.</p>\n<p>Defaults to <code>true</code>.</p>\n",
60162
- "line": 38,
59911
+ "line": 42,
60163
59912
  "rawdescription": "\n\nControls whether the spinner should be centered.\n\nDefaults to `true`.\n",
60164
59913
  "modifierKind": [
60165
59914
  148
@@ -60176,7 +59925,7 @@
60176
59925
  "indexKey": "",
60177
59926
  "optional": false,
60178
59927
  "description": "<p>Controls visibility of the spinner.</p>\n<p>When set to <code>false</code>, the spinner will be hidden via CSS.</p>\n<p>Defaults to <code>true</code>.</p>\n",
60179
- "line": 47,
59928
+ "line": 51,
60180
59929
  "rawdescription": "\n\nControls visibility of the spinner.\n\nWhen set to `false`, the spinner will be hidden via CSS.\n\nDefaults to `true`.\n",
60181
59930
  "modifierKind": [
60182
59931
  148
@@ -60193,7 +59942,7 @@
60193
59942
  "indexKey": "",
60194
59943
  "optional": false,
60195
59944
  "description": "<p>Size of the spinner.</p>\n<p>Possible values:</p>\n<ul>\n<li><code>&#39;s&#39;</code> – small</li>\n<li><code>&#39;m&#39;</code> – medium (default)</li>\n<li><code>&#39;l&#39;</code> – large</li>\n</ul>\n",
60196
- "line": 22,
59945
+ "line": 26,
60197
59946
  "rawdescription": "\n\nSize of the spinner.\n\nPossible values:\n- `'s'` – small\n- `'m'` – medium (default)\n- `'l'` – large\n",
60198
59947
  "modifierKind": [
60199
59948
  148
@@ -60210,7 +59959,7 @@
60210
59959
  "indexKey": "",
60211
59960
  "optional": false,
60212
59961
  "description": "<p>Variant of the spinner color.</p>\n<p>Possible values:</p>\n<ul>\n<li><code>&#39;primary&#39;</code> – default appearance</li>\n<li><code>&#39;inverted&#39;</code> – used on dark backgrounds</li>\n</ul>\n",
60213
- "line": 31,
59962
+ "line": 35,
60214
59963
  "rawdescription": "\n\nVariant of the spinner color.\n\nPossible values:\n- `'primary'` – default appearance\n- `'inverted'` – used on dark backgrounds\n",
60215
59964
  "modifierKind": [
60216
59965
  148
@@ -60273,17 +60022,8 @@
60273
60022
  "indexKey": "",
60274
60023
  "optional": false,
60275
60024
  "description": "<p>Applies ARIA role for accessibility.</p>\n",
60276
- "line": 52,
60277
- "rawdescription": "\n\nApplies ARIA role for accessibility.\n",
60278
- "decorators": [
60279
- {
60280
- "name": "HostBinding",
60281
- "stringifiedArguments": "'attr.role'"
60282
- }
60283
- ],
60284
- "modifierKind": [
60285
- 171
60286
- ]
60025
+ "line": 56,
60026
+ "rawdescription": "\n\nApplies ARIA role for accessibility.\n"
60287
60027
  }
60288
60028
  ],
60289
60029
  "methodsClass": [
@@ -60329,47 +60069,21 @@
60329
60069
  "coverageIgnore": false,
60330
60070
  "deprecated": false,
60331
60071
  "deprecationMessage": "",
60332
- "hostBindings": [
60333
- {
60334
- "coverageIgnore": false,
60335
- "name": "attr.role",
60336
- "actualName": "role",
60337
- "defaultValue": "'alert'",
60338
- "deprecated": false,
60339
- "deprecationMessage": "",
60340
- "rawdescription": "\n\nApplies ARIA role for accessibility.\n",
60341
- "description": "<p>Applies ARIA role for accessibility.</p>\n",
60342
- "line": 52,
60343
- "type": "string",
60344
- "decorators": []
60345
- },
60346
- {
60347
- "coverageIgnore": false,
60348
- "name": "class",
60349
- "actualName": "cssClasses",
60350
- "deprecated": false,
60351
- "deprecationMessage": "",
60352
- "rawdescription": "\n\nApplies CSS classes based on size, variant and visibility settings.\n",
60353
- "description": "<p>Applies CSS classes based on size, variant and visibility settings.</p>\n",
60354
- "line": 58,
60355
- "type": "string",
60356
- "decorators": []
60357
- }
60358
- ],
60072
+ "hostBindings": [],
60359
60073
  "hostListeners": [],
60360
60074
  "standalone": false,
60361
60075
  "imports": [],
60362
60076
  "description": "<p>Component representing a loading indicator (spinner) using ECL styles.</p>\n<p>Supports different sizes, color variants, centering and visibility options.</p>\n",
60363
60077
  "rawdescription": "\n\nComponent representing a loading indicator (spinner) using ECL styles.\n\nSupports different sizes, color variants, centering and visibility options.\n",
60364
60078
  "type": "component",
60365
- "sourceCode": "import { Component, HostBinding, booleanAttribute, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Component representing a loading indicator (spinner) using ECL styles.\n *\n * Supports different sizes, color variants, centering and visibility options.\n */\n@Component({\n selector: 'ecl-loading-indicator',\n templateUrl: './ecl-loading-indicator.component.html',\n})\nexport class EclLoadingIndicatorComponent extends ECLBaseDirective {\n /**\n * Size of the spinner.\n *\n * Possible values:\n * - `'s'` – small\n * - `'m'` – medium (default)\n * - `'l'` – large\n */\n readonly size = input<'s' | 'm' | 'l'>('m');\n\n /**\n * Variant of the spinner color.\n *\n * Possible values:\n * - `'primary'` – default appearance\n * - `'inverted'` – used on dark backgrounds\n */\n readonly variant = input<'primary' | 'inverted'>('primary');\n\n /**\n * Controls whether the spinner should be centered.\n *\n * Defaults to `true`.\n */\n readonly isCentered = input(true, { transform: booleanAttribute });\n\n /**\n * Controls visibility of the spinner.\n *\n * When set to `false`, the spinner will be hidden via CSS.\n *\n * Defaults to `true`.\n */\n readonly isVisible = input(true, { transform: booleanAttribute });\n\n /**\n * Applies ARIA role for accessibility.\n */\n @HostBinding('attr.role') role = 'alert';\n\n /**\n * Applies CSS classes based on size, variant and visibility settings.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-spinner'),\n `ecl-spinner--${this.size()}`,\n `ecl-spinner--${this.variant()}`,\n this.isCentered() ? 'ecl-spinner--centered' : '',\n this.isVisible() ? 'ecl-spinner--visible' : '',\n ]\n .join(' ')\n .trim();\n }\n}\n",
60079
+ "sourceCode": "import { Component, booleanAttribute, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Component representing a loading indicator (spinner) using ECL styles.\n *\n * Supports different sizes, color variants, centering and visibility options.\n */\n@Component({\n selector: 'ecl-loading-indicator',\n templateUrl: './ecl-loading-indicator.component.html',\n host: {\n '[attr.role]': 'role',\n '[class]': 'cssClasses',\n },\n})\nexport class EclLoadingIndicatorComponent extends ECLBaseDirective {\n /**\n * Size of the spinner.\n *\n * Possible values:\n * - `'s'` – small\n * - `'m'` – medium (default)\n * - `'l'` – large\n */\n readonly size = input<'s' | 'm' | 'l'>('m');\n\n /**\n * Variant of the spinner color.\n *\n * Possible values:\n * - `'primary'` – default appearance\n * - `'inverted'` – used on dark backgrounds\n */\n readonly variant = input<'primary' | 'inverted'>('primary');\n\n /**\n * Controls whether the spinner should be centered.\n *\n * Defaults to `true`.\n */\n readonly isCentered = input(true, { transform: booleanAttribute });\n\n /**\n * Controls visibility of the spinner.\n *\n * When set to `false`, the spinner will be hidden via CSS.\n *\n * Defaults to `true`.\n */\n readonly isVisible = input(true, { transform: booleanAttribute });\n\n /**\n * Applies ARIA role for accessibility.\n */\n role = 'alert';\n\n /**\n * Applies CSS classes based on size, variant and visibility settings.\n */\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-spinner'),\n `ecl-spinner--${this.size()}`,\n `ecl-spinner--${this.variant()}`,\n this.isCentered() ? 'ecl-spinner--centered' : '',\n this.isVisible() ? 'ecl-spinner--visible' : '',\n ]\n .join(' ')\n .trim();\n }\n}\n",
60366
60080
  "assetsDirs": [],
60367
60081
  "styleUrlsData": "",
60368
60082
  "stylesData": "",
60369
60083
  "jsdoctags": [
60370
60084
  {
60371
- "pos": 132,
60372
- "end": 295,
60085
+ "pos": 119,
60086
+ "end": 282,
60373
60087
  "kind": 321,
60374
60088
  "id": 0,
60375
60089
  "flags": 16777216,
@@ -60388,7 +60102,7 @@
60388
60102
  "name": "cssClasses",
60389
60103
  "type": "string",
60390
60104
  "returnType": "string",
60391
- "line": 58,
60105
+ "line": 61,
60392
60106
  "rawdescription": "\n\nApplies CSS classes based on size, variant and visibility settings.\n",
60393
60107
  "description": "<p>Applies CSS classes based on size, variant and visibility settings.</p>\n"
60394
60108
  }