@eui/ecl 22.0.0-alpha.41 → 22.0.0-alpha.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/changelog.html +80 -0
- package/docs/components/EclBreadcrumbSegmentComponent.html +0 -13
- package/docs/components/EclCarouselItemComponent.html +58 -63
- package/docs/components/EclCategoryFilterItemComponent.html +178 -134
- package/docs/components/EclCategoryFilterListComponent.html +8 -1
- package/docs/components/EclCheckboxHelpComponent.html +89 -83
- package/docs/components/EclCheckboxLabelComponent.html +126 -142
- package/docs/components/EclDateBlockComponent.html +67 -131
- package/docs/components/EclFeaturedComponent.html +23 -141
- package/docs/components/EclFeaturedItemComponent.html +4 -85
- package/docs/components/EclFeaturedItemDescriptionComponent.html +4 -104
- package/docs/components/EclLayoutWrapperComponent.html +2 -2
- package/docs/directives/EclCheckboxDirective.html +119 -94
- package/docs/directives/EclCheckboxInputDirective.html +33 -90
- package/docs/directives/EclFeaturedItemLinkDirective.html +14 -153
- package/docs/directives/EclLayoutWrapperViewAllDirective.html +2 -2
- package/docs/interfaces/EclCarouselItem.html +6 -6
- package/docs/interfaces/EclCategoryFilterItem.html +6 -6
- package/docs/js/search/search_index.js +2 -2
- package/docs/json/EclCarouselItemComponent.md +1 -1
- package/docs/json/EclCategoryFilterItemComponent.md +2 -2
- package/docs/json/EclCheckboxDirective.md +2 -2
- package/docs/json/EclCheckboxHelpComponent.md +1 -1
- package/docs/json/EclCheckboxLabelComponent.md +0 -2
- package/docs/json/EclDateBlockComponent.md +1 -1
- package/docs/json/EclFeaturedItemLinkDirective.md +0 -1
- package/docs/json/EclLayoutWrapperComponent.md +1 -1
- package/docs/json/EclLayoutWrapperViewAllDirective.md +1 -1
- package/docs/json/documentation.json +587 -787
- package/docs/llms.txt +40 -28
- package/docs/properties.html +1 -1
- package/fesm2022/eui-ecl-components-ecl-breadcrumb.mjs +7 -11
- package/fesm2022/eui-ecl-components-ecl-breadcrumb.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-carousel.mjs +39 -24
- package/fesm2022/eui-ecl-components-ecl-carousel.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-category-filter.mjs +68 -59
- package/fesm2022/eui-ecl-components-ecl-category-filter.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-checkbox.mjs +92 -96
- package/fesm2022/eui-ecl-components-ecl-checkbox.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-date-block.mjs +18 -26
- package/fesm2022/eui-ecl-components-ecl-date-block.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-featured.mjs +42 -59
- package/fesm2022/eui-ecl-components-ecl-featured.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-layout-wrapper.mjs +2 -2
- package/fesm2022/eui-ecl-components-ecl-layout-wrapper.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-multiselect.mjs +2 -2
- package/fesm2022/eui-ecl-components-ecl-multiselect.mjs.map +1 -1
- package/package.json +1 -1
- package/types/eui-ecl-components-ecl-breadcrumb.d.ts +0 -1
- package/types/eui-ecl-components-ecl-breadcrumb.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-carousel.d.ts +16 -11
- package/types/eui-ecl-components-ecl-carousel.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-category-filter.d.ts +28 -18
- package/types/eui-ecl-components-ecl-category-filter.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-checkbox.d.ts +49 -34
- package/types/eui-ecl-components-ecl-checkbox.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-date-block.d.ts +9 -7
- package/types/eui-ecl-components-ecl-date-block.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-featured.d.ts +7 -9
- package/types/eui-ecl-components-ecl-featured.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-layout-wrapper.d.ts +2 -2
|
@@ -550,12 +550,12 @@
|
|
|
550
550
|
},
|
|
551
551
|
{
|
|
552
552
|
"name": "EclCarouselItem",
|
|
553
|
-
"id": "interface-EclCarouselItem-
|
|
553
|
+
"id": "interface-EclCarouselItem-7964cfc0ebacfeea8652d9abe2ca3eb45818f49396ea90651426cb6880541e9ffaa17f7b08d16ca0ac086a61926b86366a8538439f244fbf346dfb752312b0b5",
|
|
554
554
|
"file": "packages/ecl/components/ecl-carousel/models/ecl-carousel-item.model.ts",
|
|
555
555
|
"deprecated": false,
|
|
556
556
|
"deprecationMessage": "",
|
|
557
557
|
"type": "interface",
|
|
558
|
-
"sourceCode": "
|
|
558
|
+
"sourceCode": "import { Signal, WritableSignal } from '@angular/core';\n\nexport interface EclCarouselItem {\n\tisCurrent: WritableSignal<boolean>;\n\tindex: WritableSignal<number | undefined>;\n\tid?: Signal<string | undefined>;\n}\n",
|
|
559
559
|
"displayName": "EclCarouselItem",
|
|
560
560
|
"properties": [
|
|
561
561
|
{
|
|
@@ -563,11 +563,11 @@
|
|
|
563
563
|
"coverageIgnore": false,
|
|
564
564
|
"deprecated": false,
|
|
565
565
|
"deprecationMessage": "",
|
|
566
|
-
"type": "string",
|
|
566
|
+
"type": "Signal<string | undefined>",
|
|
567
567
|
"indexKey": "",
|
|
568
568
|
"optional": true,
|
|
569
569
|
"description": "",
|
|
570
|
-
"line":
|
|
570
|
+
"line": 6,
|
|
571
571
|
"rawdescription": "\n"
|
|
572
572
|
},
|
|
573
573
|
{
|
|
@@ -575,11 +575,11 @@
|
|
|
575
575
|
"coverageIgnore": false,
|
|
576
576
|
"deprecated": false,
|
|
577
577
|
"deprecationMessage": "",
|
|
578
|
-
"type": "number",
|
|
578
|
+
"type": "WritableSignal<number | undefined>",
|
|
579
579
|
"indexKey": "",
|
|
580
580
|
"optional": false,
|
|
581
581
|
"description": "",
|
|
582
|
-
"line":
|
|
582
|
+
"line": 5,
|
|
583
583
|
"rawdescription": "\n"
|
|
584
584
|
},
|
|
585
585
|
{
|
|
@@ -587,11 +587,11 @@
|
|
|
587
587
|
"coverageIgnore": false,
|
|
588
588
|
"deprecated": false,
|
|
589
589
|
"deprecationMessage": "",
|
|
590
|
-
"type": "boolean",
|
|
590
|
+
"type": "WritableSignal<boolean>",
|
|
591
591
|
"indexKey": "",
|
|
592
592
|
"optional": false,
|
|
593
593
|
"description": "",
|
|
594
|
-
"line":
|
|
594
|
+
"line": 4,
|
|
595
595
|
"rawdescription": "\n"
|
|
596
596
|
}
|
|
597
597
|
],
|
|
@@ -612,12 +612,12 @@
|
|
|
612
612
|
},
|
|
613
613
|
{
|
|
614
614
|
"name": "EclCategoryFilterItem",
|
|
615
|
-
"id": "interface-EclCategoryFilterItem-
|
|
615
|
+
"id": "interface-EclCategoryFilterItem-8eae5c286418d1778e568836cbe18608960d66a4ab9c1a0c317f48af27915d614058f06c4d25c7d1fa808216c78da0731d25cf101793e83484ceba40dfebc211",
|
|
616
616
|
"file": "packages/ecl/components/ecl-category-filter/models/ecl-category-filter-item.model.ts",
|
|
617
617
|
"deprecated": false,
|
|
618
618
|
"deprecationMessage": "",
|
|
619
619
|
"type": "interface",
|
|
620
|
-
"sourceCode": "
|
|
620
|
+
"sourceCode": "import { Signal } from '@angular/core';\n\nexport interface EclCategoryFilterItem {\n id?: Signal<string | undefined>;\n isCurrent?: Signal<boolean>;\n isExpanded?: Signal<boolean>;\n isRootItem?: boolean;\n}\n",
|
|
621
621
|
"displayName": "EclCategoryFilterItem",
|
|
622
622
|
"properties": [
|
|
623
623
|
{
|
|
@@ -625,11 +625,11 @@
|
|
|
625
625
|
"coverageIgnore": false,
|
|
626
626
|
"deprecated": false,
|
|
627
627
|
"deprecationMessage": "",
|
|
628
|
-
"type": "string",
|
|
628
|
+
"type": "Signal<string | undefined>",
|
|
629
629
|
"indexKey": "",
|
|
630
630
|
"optional": true,
|
|
631
631
|
"description": "",
|
|
632
|
-
"line":
|
|
632
|
+
"line": 4,
|
|
633
633
|
"rawdescription": "\n"
|
|
634
634
|
},
|
|
635
635
|
{
|
|
@@ -637,11 +637,11 @@
|
|
|
637
637
|
"coverageIgnore": false,
|
|
638
638
|
"deprecated": false,
|
|
639
639
|
"deprecationMessage": "",
|
|
640
|
-
"type": "boolean",
|
|
640
|
+
"type": "Signal<boolean>",
|
|
641
641
|
"indexKey": "",
|
|
642
642
|
"optional": true,
|
|
643
643
|
"description": "",
|
|
644
|
-
"line":
|
|
644
|
+
"line": 5,
|
|
645
645
|
"rawdescription": "\n"
|
|
646
646
|
},
|
|
647
647
|
{
|
|
@@ -649,11 +649,11 @@
|
|
|
649
649
|
"coverageIgnore": false,
|
|
650
650
|
"deprecated": false,
|
|
651
651
|
"deprecationMessage": "",
|
|
652
|
-
"type": "boolean",
|
|
652
|
+
"type": "Signal<boolean>",
|
|
653
653
|
"indexKey": "",
|
|
654
654
|
"optional": true,
|
|
655
655
|
"description": "",
|
|
656
|
-
"line":
|
|
656
|
+
"line": 6,
|
|
657
657
|
"rawdescription": "\n"
|
|
658
658
|
},
|
|
659
659
|
{
|
|
@@ -665,7 +665,7 @@
|
|
|
665
665
|
"indexKey": "",
|
|
666
666
|
"optional": true,
|
|
667
667
|
"description": "",
|
|
668
|
-
"line":
|
|
668
|
+
"line": 7,
|
|
669
669
|
"rawdescription": "\n"
|
|
670
670
|
}
|
|
671
671
|
],
|
|
@@ -13154,55 +13154,67 @@
|
|
|
13154
13154
|
},
|
|
13155
13155
|
{
|
|
13156
13156
|
"name": "EclCheckboxDirective",
|
|
13157
|
-
"id": "directive-EclCheckboxDirective-
|
|
13157
|
+
"id": "directive-EclCheckboxDirective-4a68a789c8fbb7593ee9ff2c1b9db33edde049228b7b6de0e0c921d3eb5956978997d47cc5aa5a54b035157830dd687a962c0de6d47a6eda03f73310dc2bace8",
|
|
13158
13158
|
"file": "packages/ecl/components/ecl-checkbox/ecl-checkbox.directive.ts",
|
|
13159
13159
|
"type": "directive",
|
|
13160
13160
|
"description": "<p>Directive that applies ECL styles and manages state for checkbox groups or standalone checkboxes.</p>\n",
|
|
13161
13161
|
"rawdescription": "\n\nDirective that applies ECL styles and manages state for checkbox groups or standalone checkboxes.\n",
|
|
13162
|
-
"sourceCode": "import {\n
|
|
13162
|
+
"sourceCode": "import {\n Directive,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n linkedSignal,\n effect,\n contentChild,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclFormLabelComponent } from '@eui/ecl/components/ecl-form-label';\nimport { EclHelpBlockDirective } from '@eui/ecl/components/ecl-help-block';\nimport { EclCheckboxHelpComponent } from './ecl-checkbox-help.component';\nimport { EclCheckboxLabelComponent } from './ecl-checkbox-label.component';\n\n/**\n * Directive that applies ECL styles and manages state for checkbox groups or standalone checkboxes.\n */\n@Directive({\n selector: '[eclCheckbox]',\n host: {\n '[class]': 'cssClasses()',\n '[class.ecl-checkbox--disabled]': 'isDisabled()',\n '[class.ecl-checkbox--invalid]': 'isInvalid()',\n '[class.ecl-checkbox--single]': 'isSingle()',\n },\n})\nexport class EclCheckboxDirective extends ECLBaseDirective {\n /**\n * Input controlling whether the checkbox starts disabled.\n * Automatically coerced to a boolean value.\n */\n readonly isDisabledInput = input(false, { alias: 'isDisabled', transform: booleanAttribute });\n\n /**\n * Indicates whether the checkbox is disabled.\n * Seeded from the `isDisabled` input but can be updated imperatively by the\n * checkbox input directive as the associated control's state changes.\n */\n readonly isDisabled = linkedSignal(() => this.isDisabledInput());\n\n /**\n * Input controlling whether the checkbox starts in an invalid state.\n * Automatically coerced to a boolean value.\n */\n readonly isInvalidInput = input(false, { alias: 'isInvalid', transform: booleanAttribute });\n\n /**\n * Indicates whether the checkbox is in an invalid state.\n * Seeded from the `isInvalid` input but can be updated imperatively by the\n * checkbox input directive as the associated control's validity changes.\n */\n readonly isInvalid = linkedSignal(() => this.isInvalidInput());\n\n /**\n * Indicates whether the checkbox is rendered as a single (standalone) item.\n */\n readonly isSingle = input(false, { transform: booleanAttribute });\n\n /**\n * Child label component projected into the checkbox.\n */\n readonly eclCheckboxLabelComponent = contentChild(forwardRef(() => EclCheckboxLabelComponent));\n\n /**\n * Child help component projected into the checkbox.\n */\n readonly eclCheckboxHelpComponent = contentChild(forwardRef(() => EclCheckboxHelpComponent));\n\n /**\n * Optional form label component projected into the checkbox.\n */\n readonly eclFormLabelDirective = contentChild(forwardRef(() => EclFormLabelComponent));\n\n /**\n * Optional help block directive projected into the checkbox.\n */\n readonly eclHelpBlockDirective = contentChild(forwardRef(() => EclHelpBlockDirective));\n\n /**\n * Applies base CSS classes for the checkbox container.\n */\n readonly cssClasses = computed(() => super.getCssClasses('ecl-checkbox'));\n\n constructor() {\n super();\n // Propagate disabled/invalid state to the projected child components\n // whenever those states (or the queried children) change.\n effect(() => {\n this.updateChildElements();\n });\n }\n\n private updateChildElements(): void {\n const isDisabled = this.isDisabled();\n const isInvalid = this.isInvalid();\n\n const eclCheckboxLabelComponent = this.eclCheckboxLabelComponent();\n if (eclCheckboxLabelComponent) {\n eclCheckboxLabelComponent.isInvalid.set(isInvalid);\n eclCheckboxLabelComponent.isDisabled.set(isDisabled);\n }\n\n const eclCheckboxHelpComponent = this.eclCheckboxHelpComponent();\n if (eclCheckboxHelpComponent) {\n eclCheckboxHelpComponent.isDisabled.set(isDisabled);\n }\n }\n}\n",
|
|
13163
13163
|
"selector": "[eclCheckbox]",
|
|
13164
13164
|
"providers": [],
|
|
13165
13165
|
"hostDirectives": [],
|
|
13166
13166
|
"standalone": false,
|
|
13167
13167
|
"inputsClass": [
|
|
13168
13168
|
{
|
|
13169
|
-
"coverageIgnore": false,
|
|
13170
|
-
"required": false,
|
|
13171
13169
|
"name": "isDisabled",
|
|
13170
|
+
"coverageIgnore": false,
|
|
13172
13171
|
"defaultValue": "false",
|
|
13173
13172
|
"deprecated": false,
|
|
13174
13173
|
"deprecationMessage": "",
|
|
13175
|
-
"rawdescription": "\n\nIndicates whether the checkbox is disabled.\n",
|
|
13176
|
-
"description": "<p>Indicates whether the checkbox is disabled.</p>\n",
|
|
13177
|
-
"line": 27,
|
|
13178
13174
|
"type": "boolean",
|
|
13179
|
-
"
|
|
13175
|
+
"indexKey": "",
|
|
13176
|
+
"optional": false,
|
|
13177
|
+
"description": "<p>Input controlling whether the checkbox starts disabled.\nAutomatically coerced to a boolean value.</p>\n",
|
|
13178
|
+
"line": 34,
|
|
13179
|
+
"rawdescription": "\n\nInput controlling whether the checkbox starts disabled.\nAutomatically coerced to a boolean value.\n",
|
|
13180
|
+
"modifierKind": [
|
|
13181
|
+
148
|
|
13182
|
+
],
|
|
13183
|
+
"required": false
|
|
13180
13184
|
},
|
|
13181
13185
|
{
|
|
13182
|
-
"coverageIgnore": false,
|
|
13183
|
-
"required": false,
|
|
13184
13186
|
"name": "isInvalid",
|
|
13187
|
+
"coverageIgnore": false,
|
|
13185
13188
|
"defaultValue": "false",
|
|
13186
13189
|
"deprecated": false,
|
|
13187
13190
|
"deprecationMessage": "",
|
|
13188
|
-
"rawdescription": "\n\nIndicates whether the checkbox is in an invalid state.\n",
|
|
13189
|
-
"description": "<p>Indicates whether the checkbox is in an invalid state.</p>\n",
|
|
13190
|
-
"line": 32,
|
|
13191
13191
|
"type": "boolean",
|
|
13192
|
-
"
|
|
13192
|
+
"indexKey": "",
|
|
13193
|
+
"optional": false,
|
|
13194
|
+
"description": "<p>Input controlling whether the checkbox starts in an invalid state.\nAutomatically coerced to a boolean value.</p>\n",
|
|
13195
|
+
"line": 47,
|
|
13196
|
+
"rawdescription": "\n\nInput controlling whether the checkbox starts in an invalid state.\nAutomatically coerced to a boolean value.\n",
|
|
13197
|
+
"modifierKind": [
|
|
13198
|
+
148
|
|
13199
|
+
],
|
|
13200
|
+
"required": false
|
|
13193
13201
|
},
|
|
13194
13202
|
{
|
|
13195
|
-
"coverageIgnore": false,
|
|
13196
|
-
"required": false,
|
|
13197
13203
|
"name": "isSingle",
|
|
13204
|
+
"coverageIgnore": false,
|
|
13198
13205
|
"defaultValue": "false",
|
|
13199
13206
|
"deprecated": false,
|
|
13200
13207
|
"deprecationMessage": "",
|
|
13201
|
-
"rawdescription": "\n\nIndicates whether the checkbox is rendered as a single (standalone) item.\n",
|
|
13202
|
-
"description": "<p>Indicates whether the checkbox is rendered as a single (standalone) item.</p>\n",
|
|
13203
|
-
"line": 37,
|
|
13204
13208
|
"type": "boolean",
|
|
13205
|
-
"
|
|
13209
|
+
"indexKey": "",
|
|
13210
|
+
"optional": false,
|
|
13211
|
+
"description": "<p>Indicates whether the checkbox is rendered as a single (standalone) item.</p>\n",
|
|
13212
|
+
"line": 59,
|
|
13213
|
+
"rawdescription": "\n\nIndicates whether the checkbox is rendered as a single (standalone) item.\n",
|
|
13214
|
+
"modifierKind": [
|
|
13215
|
+
148
|
|
13216
|
+
],
|
|
13217
|
+
"required": false
|
|
13206
13218
|
},
|
|
13207
13219
|
{
|
|
13208
13220
|
"name": "class",
|
|
@@ -13287,22 +13299,25 @@
|
|
|
13287
13299
|
],
|
|
13288
13300
|
"deprecated": false,
|
|
13289
13301
|
"deprecationMessage": "",
|
|
13290
|
-
"hostBindings": [
|
|
13302
|
+
"hostBindings": [],
|
|
13303
|
+
"hostListeners": [],
|
|
13304
|
+
"propertiesClass": [
|
|
13291
13305
|
{
|
|
13306
|
+
"name": "cssClasses",
|
|
13292
13307
|
"coverageIgnore": false,
|
|
13293
|
-
"
|
|
13294
|
-
"actualName": "cssClasses",
|
|
13308
|
+
"defaultValue": "computed(() => super.getCssClasses('ecl-checkbox'))",
|
|
13295
13309
|
"deprecated": false,
|
|
13296
13310
|
"deprecationMessage": "",
|
|
13297
|
-
"
|
|
13311
|
+
"type": "unknown",
|
|
13312
|
+
"indexKey": "",
|
|
13313
|
+
"optional": false,
|
|
13298
13314
|
"description": "<p>Applies base CSS classes for the checkbox container.</p>\n",
|
|
13299
|
-
"line":
|
|
13300
|
-
"
|
|
13301
|
-
"
|
|
13302
|
-
|
|
13303
|
-
|
|
13304
|
-
|
|
13305
|
-
"propertiesClass": [
|
|
13315
|
+
"line": 84,
|
|
13316
|
+
"rawdescription": "\n\nApplies base CSS classes for the checkbox container.\n",
|
|
13317
|
+
"modifierKind": [
|
|
13318
|
+
148
|
|
13319
|
+
]
|
|
13320
|
+
},
|
|
13306
13321
|
{
|
|
13307
13322
|
"name": "eclCheckboxHelpComponent",
|
|
13308
13323
|
"coverageIgnore": false,
|
|
@@ -13313,7 +13328,7 @@
|
|
|
13313
13328
|
"indexKey": "",
|
|
13314
13329
|
"optional": false,
|
|
13315
13330
|
"description": "<p>Child help component projected into the checkbox.</p>\n",
|
|
13316
|
-
"line":
|
|
13331
|
+
"line": 69,
|
|
13317
13332
|
"rawdescription": "\n\nChild help component projected into the checkbox.\n",
|
|
13318
13333
|
"modifierKind": [
|
|
13319
13334
|
148
|
|
@@ -13329,7 +13344,7 @@
|
|
|
13329
13344
|
"indexKey": "",
|
|
13330
13345
|
"optional": false,
|
|
13331
13346
|
"description": "<p>Child label component projected into the checkbox.</p>\n",
|
|
13332
|
-
"line":
|
|
13347
|
+
"line": 64,
|
|
13333
13348
|
"rawdescription": "\n\nChild label component projected into the checkbox.\n",
|
|
13334
13349
|
"modifierKind": [
|
|
13335
13350
|
148
|
|
@@ -13345,7 +13360,7 @@
|
|
|
13345
13360
|
"indexKey": "",
|
|
13346
13361
|
"optional": false,
|
|
13347
13362
|
"description": "<p>Optional form label component projected into the checkbox.</p>\n",
|
|
13348
|
-
"line":
|
|
13363
|
+
"line": 74,
|
|
13349
13364
|
"rawdescription": "\n\nOptional form label component projected into the checkbox.\n",
|
|
13350
13365
|
"modifierKind": [
|
|
13351
13366
|
148
|
|
@@ -13361,40 +13376,46 @@
|
|
|
13361
13376
|
"indexKey": "",
|
|
13362
13377
|
"optional": false,
|
|
13363
13378
|
"description": "<p>Optional help block directive projected into the checkbox.</p>\n",
|
|
13364
|
-
"line":
|
|
13379
|
+
"line": 79,
|
|
13365
13380
|
"rawdescription": "\n\nOptional help block directive projected into the checkbox.\n",
|
|
13366
13381
|
"modifierKind": [
|
|
13367
13382
|
148
|
|
13368
13383
|
]
|
|
13369
|
-
}
|
|
13370
|
-
],
|
|
13371
|
-
"methodsClass": [
|
|
13384
|
+
},
|
|
13372
13385
|
{
|
|
13373
|
-
"name": "
|
|
13386
|
+
"name": "isDisabled",
|
|
13374
13387
|
"coverageIgnore": false,
|
|
13375
|
-
"
|
|
13376
|
-
"optional": false,
|
|
13377
|
-
"returnType": "void",
|
|
13378
|
-
"typeParameters": [],
|
|
13379
|
-
"line": 67,
|
|
13388
|
+
"defaultValue": "linkedSignal(() => this.isDisabledInput())",
|
|
13380
13389
|
"deprecated": false,
|
|
13381
13390
|
"deprecationMessage": "",
|
|
13382
|
-
"
|
|
13383
|
-
"
|
|
13391
|
+
"type": "unknown",
|
|
13392
|
+
"indexKey": "",
|
|
13393
|
+
"optional": false,
|
|
13394
|
+
"description": "<p>Indicates whether the checkbox is disabled.\nSeeded from the <code>isDisabled</code> input but can be updated imperatively by the\ncheckbox input directive as the associated control's state changes.</p>\n",
|
|
13395
|
+
"line": 41,
|
|
13396
|
+
"rawdescription": "\n\nIndicates whether the checkbox is disabled.\nSeeded from the `isDisabled` input but can be updated imperatively by the\ncheckbox input directive as the associated control's state changes.\n",
|
|
13397
|
+
"modifierKind": [
|
|
13398
|
+
148
|
|
13399
|
+
]
|
|
13384
13400
|
},
|
|
13385
13401
|
{
|
|
13386
|
-
"name": "
|
|
13402
|
+
"name": "isInvalid",
|
|
13387
13403
|
"coverageIgnore": false,
|
|
13388
|
-
"
|
|
13389
|
-
"optional": false,
|
|
13390
|
-
"returnType": "void",
|
|
13391
|
-
"typeParameters": [],
|
|
13392
|
-
"line": 71,
|
|
13404
|
+
"defaultValue": "linkedSignal(() => this.isInvalidInput())",
|
|
13393
13405
|
"deprecated": false,
|
|
13394
13406
|
"deprecationMessage": "",
|
|
13395
|
-
"
|
|
13396
|
-
"
|
|
13397
|
-
|
|
13407
|
+
"type": "unknown",
|
|
13408
|
+
"indexKey": "",
|
|
13409
|
+
"optional": false,
|
|
13410
|
+
"description": "<p>Indicates whether the checkbox is in an invalid state.\nSeeded from the <code>isInvalid</code> input but can be updated imperatively by the\ncheckbox input directive as the associated control's validity changes.</p>\n",
|
|
13411
|
+
"line": 54,
|
|
13412
|
+
"rawdescription": "\n\nIndicates whether the checkbox is in an invalid state.\nSeeded from the `isInvalid` input but can be updated imperatively by the\ncheckbox input directive as the associated control's validity changes.\n",
|
|
13413
|
+
"modifierKind": [
|
|
13414
|
+
148
|
|
13415
|
+
]
|
|
13416
|
+
}
|
|
13417
|
+
],
|
|
13418
|
+
"methodsClass": [
|
|
13398
13419
|
{
|
|
13399
13420
|
"name": "getCssClasses",
|
|
13400
13421
|
"coverageIgnore": false,
|
|
@@ -13437,8 +13458,8 @@
|
|
|
13437
13458
|
"coverageIgnore": false,
|
|
13438
13459
|
"jsdoctags": [
|
|
13439
13460
|
{
|
|
13440
|
-
"pos":
|
|
13441
|
-
"end":
|
|
13461
|
+
"pos": 512,
|
|
13462
|
+
"end": 620,
|
|
13442
13463
|
"kind": 321,
|
|
13443
13464
|
"id": 0,
|
|
13444
13465
|
"flags": 16777216,
|
|
@@ -13450,22 +13471,14 @@
|
|
|
13450
13471
|
"extends": [
|
|
13451
13472
|
"ECLBaseDirective"
|
|
13452
13473
|
],
|
|
13453
|
-
"
|
|
13454
|
-
"
|
|
13455
|
-
"
|
|
13456
|
-
|
|
13457
|
-
|
|
13458
|
-
"
|
|
13459
|
-
|
|
13460
|
-
|
|
13461
|
-
"name": "cssClasses",
|
|
13462
|
-
"type": "string",
|
|
13463
|
-
"returnType": "string",
|
|
13464
|
-
"line": 63,
|
|
13465
|
-
"rawdescription": "\n\nApplies base CSS classes for the checkbox container.\n",
|
|
13466
|
-
"description": "<p>Applies base CSS classes for the checkbox container.</p>\n"
|
|
13467
|
-
}
|
|
13468
|
-
}
|
|
13474
|
+
"constructorObj": {
|
|
13475
|
+
"name": "constructor",
|
|
13476
|
+
"description": "",
|
|
13477
|
+
"deprecated": false,
|
|
13478
|
+
"deprecationMessage": "",
|
|
13479
|
+
"args": [],
|
|
13480
|
+
"line": 84,
|
|
13481
|
+
"rawdescription": "\n"
|
|
13469
13482
|
},
|
|
13470
13483
|
"relationships": {
|
|
13471
13484
|
"incoming": [
|
|
@@ -13479,26 +13492,18 @@
|
|
|
13479
13492
|
{
|
|
13480
13493
|
"name": "ECLBaseDirective",
|
|
13481
13494
|
"type": "directive"
|
|
13482
|
-
},
|
|
13483
|
-
{
|
|
13484
|
-
"name": "AfterContentInit",
|
|
13485
|
-
"type": "interface"
|
|
13486
|
-
},
|
|
13487
|
-
{
|
|
13488
|
-
"name": "OnChanges",
|
|
13489
|
-
"type": "interface"
|
|
13490
13495
|
}
|
|
13491
13496
|
]
|
|
13492
13497
|
}
|
|
13493
13498
|
},
|
|
13494
13499
|
{
|
|
13495
13500
|
"name": "EclCheckboxInputDirective",
|
|
13496
|
-
"id": "directive-EclCheckboxInputDirective-
|
|
13501
|
+
"id": "directive-EclCheckboxInputDirective-1a2c7e9c5cd1dffbca2ccc6e6b8bfb76cf45bde46a9b97e8f2adba240f4855930784d82d99f2d5e38a038fc48d1c83241afcb2c585f676a683b706c6f6723ca2",
|
|
13497
13502
|
"file": "packages/ecl/components/ecl-checkbox/ecl-checkbox-input.directive.ts",
|
|
13498
13503
|
"type": "directive",
|
|
13499
13504
|
"description": "<p>Directive that decorates the native checkbox input with ECL styles and syncs validation state.</p>\n",
|
|
13500
13505
|
"rawdescription": "\n\nDirective that decorates the native checkbox input with ECL styles and syncs validation state.\n",
|
|
13501
|
-
"sourceCode": "import { Directive, DoCheck,
|
|
13506
|
+
"sourceCode": "import { Directive, DoCheck, computed, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclCheckboxDirective } from './ecl-checkbox.directive';\n\n/**\n * Directive that decorates the native checkbox input with ECL styles and syncs validation state.\n */\n@Directive({\n selector: 'input[eclCheckboxInput]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclCheckboxInputDirective extends ECLBaseDirective implements DoCheck {\n eclCheckbox = inject(EclCheckboxDirective);\n protected ngControl = inject(NgControl, { optional: true, self: true });\n\n /**\n * Applies base CSS classes for checkbox input.\n */\n readonly cssClasses = computed(() => super.getCssClasses('ecl-checkbox__input'));\n\n ngDoCheck(): void {\n if (this.ngControl) {\n if (this.eclCheckbox) {\n this.eclCheckbox.isInvalid.set(!!this.ngControl.invalid && !!this.ngControl.touched);\n this.eclCheckbox.isDisabled.set(!!this.ngControl.disabled);\n }\n }\n }\n}\n",
|
|
13502
13507
|
"selector": "input[eclCheckboxInput]",
|
|
13503
13508
|
"providers": [],
|
|
13504
13509
|
"hostDirectives": [],
|
|
@@ -13587,22 +13592,25 @@
|
|
|
13587
13592
|
],
|
|
13588
13593
|
"deprecated": false,
|
|
13589
13594
|
"deprecationMessage": "",
|
|
13590
|
-
"hostBindings": [
|
|
13595
|
+
"hostBindings": [],
|
|
13596
|
+
"hostListeners": [],
|
|
13597
|
+
"propertiesClass": [
|
|
13591
13598
|
{
|
|
13599
|
+
"name": "cssClasses",
|
|
13592
13600
|
"coverageIgnore": false,
|
|
13593
|
-
"
|
|
13594
|
-
"actualName": "cssClasses",
|
|
13601
|
+
"defaultValue": "computed(() => super.getCssClasses('ecl-checkbox__input'))",
|
|
13595
13602
|
"deprecated": false,
|
|
13596
13603
|
"deprecationMessage": "",
|
|
13597
|
-
"
|
|
13604
|
+
"type": "unknown",
|
|
13605
|
+
"indexKey": "",
|
|
13606
|
+
"optional": false,
|
|
13598
13607
|
"description": "<p>Applies base CSS classes for checkbox input.</p>\n",
|
|
13599
|
-
"line":
|
|
13600
|
-
"
|
|
13601
|
-
"
|
|
13602
|
-
|
|
13603
|
-
|
|
13604
|
-
|
|
13605
|
-
"propertiesClass": [
|
|
13608
|
+
"line": 22,
|
|
13609
|
+
"rawdescription": "\n\nApplies base CSS classes for checkbox input.\n",
|
|
13610
|
+
"modifierKind": [
|
|
13611
|
+
148
|
|
13612
|
+
]
|
|
13613
|
+
},
|
|
13606
13614
|
{
|
|
13607
13615
|
"name": "eclCheckbox",
|
|
13608
13616
|
"coverageIgnore": false,
|
|
@@ -13613,7 +13621,7 @@
|
|
|
13613
13621
|
"indexKey": "",
|
|
13614
13622
|
"optional": false,
|
|
13615
13623
|
"description": "",
|
|
13616
|
-
"line":
|
|
13624
|
+
"line": 16,
|
|
13617
13625
|
"rawdescription": "\n"
|
|
13618
13626
|
},
|
|
13619
13627
|
{
|
|
@@ -13626,7 +13634,7 @@
|
|
|
13626
13634
|
"indexKey": "",
|
|
13627
13635
|
"optional": false,
|
|
13628
13636
|
"description": "",
|
|
13629
|
-
"line":
|
|
13637
|
+
"line": 17,
|
|
13630
13638
|
"rawdescription": "\n",
|
|
13631
13639
|
"modifierKind": [
|
|
13632
13640
|
124
|
|
@@ -13689,8 +13697,8 @@
|
|
|
13689
13697
|
"coverageIgnore": false,
|
|
13690
13698
|
"jsdoctags": [
|
|
13691
13699
|
{
|
|
13692
|
-
"pos":
|
|
13693
|
-
"end":
|
|
13700
|
+
"pos": 230,
|
|
13701
|
+
"end": 335,
|
|
13694
13702
|
"kind": 321,
|
|
13695
13703
|
"id": 0,
|
|
13696
13704
|
"flags": 16777216,
|
|
@@ -13705,19 +13713,6 @@
|
|
|
13705
13713
|
"implements": [
|
|
13706
13714
|
"DoCheck"
|
|
13707
13715
|
],
|
|
13708
|
-
"accessors": {
|
|
13709
|
-
"cssClasses": {
|
|
13710
|
-
"name": "cssClasses",
|
|
13711
|
-
"getSignature": {
|
|
13712
|
-
"name": "cssClasses",
|
|
13713
|
-
"type": "string",
|
|
13714
|
-
"returnType": "string",
|
|
13715
|
-
"line": 20,
|
|
13716
|
-
"rawdescription": "\n\nApplies base CSS classes for checkbox input.\n",
|
|
13717
|
-
"description": "<p>Applies base CSS classes for checkbox input.</p>\n"
|
|
13718
|
-
}
|
|
13719
|
-
}
|
|
13720
|
-
},
|
|
13721
13716
|
"relationships": {
|
|
13722
13717
|
"incoming": [],
|
|
13723
13718
|
"outgoing": [
|
|
@@ -19946,28 +19941,17 @@
|
|
|
19946
19941
|
},
|
|
19947
19942
|
{
|
|
19948
19943
|
"name": "EclFeaturedItemLinkDirective",
|
|
19949
|
-
"id": "directive-EclFeaturedItemLinkDirective-
|
|
19944
|
+
"id": "directive-EclFeaturedItemLinkDirective-a8ed460e3775d86dbb1f934cc829cdaddf7aff6dbc6f4b7e712bee58e1180cecf15854a8464994a404e8642f7a33b278ac3aaf9c5a7950b852093af21abae008",
|
|
19950
19945
|
"file": "packages/ecl/components/ecl-featured/ecl-featured-item-link.directive.ts",
|
|
19951
19946
|
"type": "directive",
|
|
19952
19947
|
"description": "<p>Applies specific additional class for the eclLink directive, used in <ecl-featured-item> construction.</p>\n",
|
|
19953
19948
|
"rawdescription": "\n\nApplies specific additional class for the eclLink directive, used in <ecl-featured-item> construction.\n",
|
|
19954
|
-
"sourceCode": "import { Directive,
|
|
19949
|
+
"sourceCode": "import { Directive, computed, input, signal } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Applies specific additional class for the eclLink directive, used in <ecl-featured-item> construction.\n */\n@Directive({\n selector: '[eclFeaturedItemLink]',\n host: {\n 'class': 'ecl-featured-item__link',\n '[attr.aria-describedby]': 'ariaDescribedBy()',\n },\n})\nexport class EclFeaturedItemLinkDirective extends ECLBaseDirective {\n /**\n * The id of the element describing this link. Set imperatively by the parent\n * featured item once the title id is known.\n */\n readonly ariaDescribedBy = signal<string | null>(null);\n}\n\n@Directive({\n selector: '[eclFeaturedMediaAnchor]',\n host: {\n '[style.--ecl-image-anchor]': 'cssAnchor()',\n },\n})\nexport class EclFeaturedMediaAnchorDirective extends ECLBaseDirective {\n eclFeaturedMediaAnchor = input<'left' | 'right' | '20%' | 'center' | undefined>();\n\n readonly cssAnchor = computed(() => {\n const value = this.eclFeaturedMediaAnchor();\n\n if (!value || value === 'center') {\n return null;\n }\n\n return value;\n });\n}\n",
|
|
19955
19950
|
"selector": "[eclFeaturedItemLink]",
|
|
19956
19951
|
"providers": [],
|
|
19957
19952
|
"hostDirectives": [],
|
|
19958
19953
|
"standalone": false,
|
|
19959
19954
|
"inputsClass": [
|
|
19960
|
-
{
|
|
19961
|
-
"coverageIgnore": false,
|
|
19962
|
-
"name": "ariaDescribedBy",
|
|
19963
|
-
"deprecated": false,
|
|
19964
|
-
"deprecationMessage": "",
|
|
19965
|
-
"rawdescription": "\n",
|
|
19966
|
-
"description": "",
|
|
19967
|
-
"line": 14,
|
|
19968
|
-
"type": "string | null",
|
|
19969
|
-
"decorators": []
|
|
19970
|
-
},
|
|
19971
19955
|
{
|
|
19972
19956
|
"name": "class",
|
|
19973
19957
|
"coverageIgnore": false,
|
|
@@ -20051,43 +20035,23 @@
|
|
|
20051
20035
|
],
|
|
20052
20036
|
"deprecated": false,
|
|
20053
20037
|
"deprecationMessage": "",
|
|
20054
|
-
"hostBindings": [
|
|
20055
|
-
{
|
|
20056
|
-
"coverageIgnore": false,
|
|
20057
|
-
"name": "class.ecl-featured-item__link",
|
|
20058
|
-
"actualName": "className",
|
|
20059
|
-
"defaultValue": "true",
|
|
20060
|
-
"deprecated": false,
|
|
20061
|
-
"deprecationMessage": "",
|
|
20062
|
-
"rawdescription": "\n",
|
|
20063
|
-
"description": "",
|
|
20064
|
-
"line": 11,
|
|
20065
|
-
"type": "boolean",
|
|
20066
|
-
"decorators": []
|
|
20067
|
-
}
|
|
20068
|
-
],
|
|
20038
|
+
"hostBindings": [],
|
|
20069
20039
|
"hostListeners": [],
|
|
20070
20040
|
"propertiesClass": [
|
|
20071
20041
|
{
|
|
20072
|
-
"name": "
|
|
20042
|
+
"name": "ariaDescribedBy",
|
|
20073
20043
|
"coverageIgnore": false,
|
|
20074
|
-
"defaultValue": "
|
|
20044
|
+
"defaultValue": "signal<string | null>(null)",
|
|
20075
20045
|
"deprecated": false,
|
|
20076
20046
|
"deprecationMessage": "",
|
|
20077
20047
|
"type": "unknown",
|
|
20078
20048
|
"indexKey": "",
|
|
20079
20049
|
"optional": false,
|
|
20080
|
-
"description": "",
|
|
20081
|
-
"line":
|
|
20082
|
-
"rawdescription": "\n",
|
|
20083
|
-
"decorators": [
|
|
20084
|
-
{
|
|
20085
|
-
"name": "HostBinding",
|
|
20086
|
-
"stringifiedArguments": "'class.ecl-featured-item__link'"
|
|
20087
|
-
}
|
|
20088
|
-
],
|
|
20050
|
+
"description": "<p>The id of the element describing this link. Set imperatively by the parent\nfeatured item once the title id is known.</p>\n",
|
|
20051
|
+
"line": 19,
|
|
20052
|
+
"rawdescription": "\n\nThe id of the element describing this link. Set imperatively by the parent\nfeatured item once the title id is known.\n",
|
|
20089
20053
|
"modifierKind": [
|
|
20090
|
-
|
|
20054
|
+
148
|
|
20091
20055
|
]
|
|
20092
20056
|
}
|
|
20093
20057
|
],
|
|
@@ -20134,8 +20098,8 @@
|
|
|
20134
20098
|
"coverageIgnore": false,
|
|
20135
20099
|
"jsdoctags": [
|
|
20136
20100
|
{
|
|
20137
|
-
"pos":
|
|
20138
|
-
"end":
|
|
20101
|
+
"pos": 119,
|
|
20102
|
+
"end": 232,
|
|
20139
20103
|
"kind": 321,
|
|
20140
20104
|
"id": 0,
|
|
20141
20105
|
"flags": 16777216,
|
|
@@ -20147,44 +20111,6 @@
|
|
|
20147
20111
|
"extends": [
|
|
20148
20112
|
"ECLBaseDirective"
|
|
20149
20113
|
],
|
|
20150
|
-
"accessors": {
|
|
20151
|
-
"ariaDescribedBy": {
|
|
20152
|
-
"name": "ariaDescribedBy",
|
|
20153
|
-
"setSignature": {
|
|
20154
|
-
"name": "ariaDescribedBy",
|
|
20155
|
-
"type": "void",
|
|
20156
|
-
"deprecated": false,
|
|
20157
|
-
"deprecationMessage": "",
|
|
20158
|
-
"args": [
|
|
20159
|
-
{
|
|
20160
|
-
"name": "value",
|
|
20161
|
-
"type": "string | null",
|
|
20162
|
-
"optional": false,
|
|
20163
|
-
"dotDotDotToken": false,
|
|
20164
|
-
"deprecated": false,
|
|
20165
|
-
"deprecationMessage": ""
|
|
20166
|
-
}
|
|
20167
|
-
],
|
|
20168
|
-
"returnType": "void",
|
|
20169
|
-
"line": 14,
|
|
20170
|
-
"rawdescription": "\n",
|
|
20171
|
-
"description": "",
|
|
20172
|
-
"jsdoctags": [
|
|
20173
|
-
{
|
|
20174
|
-
"name": "value",
|
|
20175
|
-
"type": "string | null",
|
|
20176
|
-
"optional": false,
|
|
20177
|
-
"dotDotDotToken": false,
|
|
20178
|
-
"deprecated": false,
|
|
20179
|
-
"deprecationMessage": "",
|
|
20180
|
-
"tagName": {
|
|
20181
|
-
"text": "param"
|
|
20182
|
-
}
|
|
20183
|
-
}
|
|
20184
|
-
]
|
|
20185
|
-
}
|
|
20186
|
-
}
|
|
20187
|
-
},
|
|
20188
20114
|
"relationships": {
|
|
20189
20115
|
"incoming": [],
|
|
20190
20116
|
"outgoing": [
|
|
@@ -20197,12 +20123,12 @@
|
|
|
20197
20123
|
},
|
|
20198
20124
|
{
|
|
20199
20125
|
"name": "EclFeaturedMediaAnchorDirective",
|
|
20200
|
-
"id": "directive-EclFeaturedMediaAnchorDirective-
|
|
20126
|
+
"id": "directive-EclFeaturedMediaAnchorDirective-a8ed460e3775d86dbb1f934cc829cdaddf7aff6dbc6f4b7e712bee58e1180cecf15854a8464994a404e8642f7a33b278ac3aaf9c5a7950b852093af21abae008",
|
|
20201
20127
|
"file": "packages/ecl/components/ecl-featured/ecl-featured-item-link.directive.ts",
|
|
20202
20128
|
"type": "directive",
|
|
20203
20129
|
"description": "",
|
|
20204
20130
|
"rawdescription": "\n",
|
|
20205
|
-
"sourceCode": "import { Directive,
|
|
20131
|
+
"sourceCode": "import { Directive, computed, input, signal } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Applies specific additional class for the eclLink directive, used in <ecl-featured-item> construction.\n */\n@Directive({\n selector: '[eclFeaturedItemLink]',\n host: {\n 'class': 'ecl-featured-item__link',\n '[attr.aria-describedby]': 'ariaDescribedBy()',\n },\n})\nexport class EclFeaturedItemLinkDirective extends ECLBaseDirective {\n /**\n * The id of the element describing this link. Set imperatively by the parent\n * featured item once the title id is known.\n */\n readonly ariaDescribedBy = signal<string | null>(null);\n}\n\n@Directive({\n selector: '[eclFeaturedMediaAnchor]',\n host: {\n '[style.--ecl-image-anchor]': 'cssAnchor()',\n },\n})\nexport class EclFeaturedMediaAnchorDirective extends ECLBaseDirective {\n eclFeaturedMediaAnchor = input<'left' | 'right' | '20%' | 'center' | undefined>();\n\n readonly cssAnchor = computed(() => {\n const value = this.eclFeaturedMediaAnchor();\n\n if (!value || value === 'center') {\n return null;\n }\n\n return value;\n });\n}\n",
|
|
20206
20132
|
"selector": "[eclFeaturedMediaAnchor]",
|
|
20207
20133
|
"providers": [],
|
|
20208
20134
|
"hostDirectives": [],
|
|
@@ -20217,7 +20143,7 @@
|
|
|
20217
20143
|
"indexKey": "",
|
|
20218
20144
|
"optional": false,
|
|
20219
20145
|
"description": "",
|
|
20220
|
-
"line":
|
|
20146
|
+
"line": 29,
|
|
20221
20147
|
"rawdescription": "\n",
|
|
20222
20148
|
"required": false
|
|
20223
20149
|
},
|
|
@@ -20317,7 +20243,7 @@
|
|
|
20317
20243
|
"indexKey": "",
|
|
20318
20244
|
"optional": false,
|
|
20319
20245
|
"description": "",
|
|
20320
|
-
"line":
|
|
20246
|
+
"line": 31,
|
|
20321
20247
|
"rawdescription": "\n",
|
|
20322
20248
|
"modifierKind": [
|
|
20323
20249
|
148
|
|
@@ -24427,12 +24353,12 @@
|
|
|
24427
24353
|
},
|
|
24428
24354
|
{
|
|
24429
24355
|
"name": "EclLayoutItemDirective",
|
|
24430
|
-
"id": "directive-EclLayoutItemDirective-
|
|
24356
|
+
"id": "directive-EclLayoutItemDirective-c66e89e20290d5f484869deef858036ae0baa714fa695a6e93fb4a7d9e922f3a3505972877f712a421ca1adf627bbd75ceee66e6974826736a1052998d463d09",
|
|
24431
24357
|
"file": "packages/ecl/components/ecl-layout-wrapper/ecl-layout-wrapper.directives.ts",
|
|
24432
24358
|
"type": "directive",
|
|
24433
24359
|
"description": "<p>Directive for individual items inside the layout wrapper grid.\nWraps each content element (e.g., card) and applies positional CSS classes.</p>\n<p>The index is automatically assigned by the parent <code>EclLayoutWrapperComponent</code>.</p>\n<b>Example :</b><div><pre class=\"line-numbers\"><code class=\"language-html\"><div eclLayoutItem><article eclCard>...</article></div></code></pre></div>",
|
|
24434
24360
|
"rawdescription": "\n\nDirective for individual items inside the layout wrapper grid.\nWraps each content element (e.g., card) and applies positional CSS classes.\n\nThe index is automatically assigned by the parent `EclLayoutWrapperComponent`.\n\n```html\n<div eclLayoutItem><article eclCard>...</article></div>\n```",
|
|
24435
|
-
"sourceCode": "import { computed, Directive, ElementRef, inject, signal } from '@angular/core';\n\n/**\n * Directive for the layout wrapper title.\n * Applies the `ecl-layout-wrapper__title` class to the host element.\n *\n * @example\n * ```html\n * <h2 eclLayoutWrapperTitle>Heading</h2>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperTitle]',\n host: {\n class: 'ecl-layout-wrapper__title',\n },\n})\nexport class EclLayoutWrapperTitleDirective {}\n\n/**\n * Directive for the layout wrapper description.\n * Applies the `ecl-layout-wrapper__description` class to the host element.\n *\n * @example\n * ```html\n * <div eclLayoutWrapperDescription>Lorem ipsum...</div>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperDescription]',\n host: {\n class: 'ecl-layout-wrapper__description',\n },\n})\nexport class EclLayoutWrapperDescriptionDirective {}\n\n/**\n * Directive for the layout wrapper \"view all\" link.\n * Applies the `ecl-layout-wrapper__view-all-link` class to the link element.\n *\n * @example\n * ```html\n * <a eclLayoutWrapperViewAll eclLink
|
|
24361
|
+
"sourceCode": "import { computed, Directive, ElementRef, inject, signal } from '@angular/core';\n\n/**\n * Directive for the layout wrapper title.\n * Applies the `ecl-layout-wrapper__title` class to the host element.\n *\n * @example\n * ```html\n * <h2 eclLayoutWrapperTitle>Heading</h2>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperTitle]',\n host: {\n class: 'ecl-layout-wrapper__title',\n },\n})\nexport class EclLayoutWrapperTitleDirective {}\n\n/**\n * Directive for the layout wrapper description.\n * Applies the `ecl-layout-wrapper__description` class to the host element.\n *\n * @example\n * ```html\n * <div eclLayoutWrapperDescription>Lorem ipsum...</div>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperDescription]',\n host: {\n class: 'ecl-layout-wrapper__description',\n },\n})\nexport class EclLayoutWrapperDescriptionDirective {}\n\n/**\n * Directive for the layout wrapper \"view all\" link.\n * Applies the `ecl-layout-wrapper__view-all-link` class to the link element.\n *\n * @example\n * ```html\n * <a eclLayoutWrapperViewAll eclLink icon=\"arrow-left\">View all</a>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperViewAll]',\n host: {\n class: 'ecl-layout-wrapper__view-all-link',\n },\n})\nexport class EclLayoutWrapperViewAllDirective {}\n\n/**\n * Directive for individual items inside the layout wrapper grid.\n * Wraps each content element (e.g., card) and applies positional CSS classes.\n *\n * The index is automatically assigned by the parent `EclLayoutWrapperComponent`.\n *\n * @example\n * ```html\n * <div eclLayoutItem><article eclCard>...</article></div>\n * ```\n */\n@Directive({\n selector: '[eclLayoutItem]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclLayoutItemDirective {\n\n /** Positional index (1-based), assigned by the parent layout wrapper. */\n readonly index = signal(0);\n\n /** Computed CSS classes based on the assigned index. */\n readonly cssClasses = computed(() => {\n const idx = this.index();\n return idx > 0 ? `ecl-layout-item ecl-layout-item--${idx}` : 'ecl-layout-item';\n });\n}\n",
|
|
24436
24362
|
"selector": "[eclLayoutItem]",
|
|
24437
24363
|
"providers": [],
|
|
24438
24364
|
"hostDirectives": [],
|
|
@@ -24481,16 +24407,16 @@
|
|
|
24481
24407
|
"coverageIgnore": false,
|
|
24482
24408
|
"jsdoctags": [
|
|
24483
24409
|
{
|
|
24484
|
-
"pos":
|
|
24485
|
-
"end":
|
|
24410
|
+
"pos": 1516,
|
|
24411
|
+
"end": 1603,
|
|
24486
24412
|
"kind": 328,
|
|
24487
24413
|
"id": 0,
|
|
24488
24414
|
"flags": 16777216,
|
|
24489
24415
|
"modifierFlagsCache": 0,
|
|
24490
24416
|
"transformFlags": 0,
|
|
24491
24417
|
"tagName": {
|
|
24492
|
-
"pos":
|
|
24493
|
-
"end":
|
|
24418
|
+
"pos": 1517,
|
|
24419
|
+
"end": 1524,
|
|
24494
24420
|
"kind": 80,
|
|
24495
24421
|
"id": 0,
|
|
24496
24422
|
"flags": 16777216,
|
|
@@ -24508,12 +24434,12 @@
|
|
|
24508
24434
|
},
|
|
24509
24435
|
{
|
|
24510
24436
|
"name": "EclLayoutWrapperDescriptionDirective",
|
|
24511
|
-
"id": "directive-EclLayoutWrapperDescriptionDirective-
|
|
24437
|
+
"id": "directive-EclLayoutWrapperDescriptionDirective-c66e89e20290d5f484869deef858036ae0baa714fa695a6e93fb4a7d9e922f3a3505972877f712a421ca1adf627bbd75ceee66e6974826736a1052998d463d09",
|
|
24512
24438
|
"file": "packages/ecl/components/ecl-layout-wrapper/ecl-layout-wrapper.directives.ts",
|
|
24513
24439
|
"type": "directive",
|
|
24514
24440
|
"description": "<p>Directive for the layout wrapper description.\nApplies the <code>ecl-layout-wrapper__description</code> class to the host element.</p>\n<b>Example :</b><div><pre class=\"line-numbers\"><code class=\"language-html\"><div eclLayoutWrapperDescription>Lorem ipsum...</div></code></pre></div>",
|
|
24515
24441
|
"rawdescription": "\n\nDirective for the layout wrapper description.\nApplies the `ecl-layout-wrapper__description` class to the host element.\n\n```html\n<div eclLayoutWrapperDescription>Lorem ipsum...</div>\n```",
|
|
24516
|
-
"sourceCode": "import { computed, Directive, ElementRef, inject, signal } from '@angular/core';\n\n/**\n * Directive for the layout wrapper title.\n * Applies the `ecl-layout-wrapper__title` class to the host element.\n *\n * @example\n * ```html\n * <h2 eclLayoutWrapperTitle>Heading</h2>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperTitle]',\n host: {\n class: 'ecl-layout-wrapper__title',\n },\n})\nexport class EclLayoutWrapperTitleDirective {}\n\n/**\n * Directive for the layout wrapper description.\n * Applies the `ecl-layout-wrapper__description` class to the host element.\n *\n * @example\n * ```html\n * <div eclLayoutWrapperDescription>Lorem ipsum...</div>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperDescription]',\n host: {\n class: 'ecl-layout-wrapper__description',\n },\n})\nexport class EclLayoutWrapperDescriptionDirective {}\n\n/**\n * Directive for the layout wrapper \"view all\" link.\n * Applies the `ecl-layout-wrapper__view-all-link` class to the link element.\n *\n * @example\n * ```html\n * <a eclLayoutWrapperViewAll eclLink
|
|
24442
|
+
"sourceCode": "import { computed, Directive, ElementRef, inject, signal } from '@angular/core';\n\n/**\n * Directive for the layout wrapper title.\n * Applies the `ecl-layout-wrapper__title` class to the host element.\n *\n * @example\n * ```html\n * <h2 eclLayoutWrapperTitle>Heading</h2>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperTitle]',\n host: {\n class: 'ecl-layout-wrapper__title',\n },\n})\nexport class EclLayoutWrapperTitleDirective {}\n\n/**\n * Directive for the layout wrapper description.\n * Applies the `ecl-layout-wrapper__description` class to the host element.\n *\n * @example\n * ```html\n * <div eclLayoutWrapperDescription>Lorem ipsum...</div>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperDescription]',\n host: {\n class: 'ecl-layout-wrapper__description',\n },\n})\nexport class EclLayoutWrapperDescriptionDirective {}\n\n/**\n * Directive for the layout wrapper \"view all\" link.\n * Applies the `ecl-layout-wrapper__view-all-link` class to the link element.\n *\n * @example\n * ```html\n * <a eclLayoutWrapperViewAll eclLink icon=\"arrow-left\">View all</a>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperViewAll]',\n host: {\n class: 'ecl-layout-wrapper__view-all-link',\n },\n})\nexport class EclLayoutWrapperViewAllDirective {}\n\n/**\n * Directive for individual items inside the layout wrapper grid.\n * Wraps each content element (e.g., card) and applies positional CSS classes.\n *\n * The index is automatically assigned by the parent `EclLayoutWrapperComponent`.\n *\n * @example\n * ```html\n * <div eclLayoutItem><article eclCard>...</article></div>\n * ```\n */\n@Directive({\n selector: '[eclLayoutItem]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclLayoutItemDirective {\n\n /** Positional index (1-based), assigned by the parent layout wrapper. */\n readonly index = signal(0);\n\n /** Computed CSS classes based on the assigned index. */\n readonly cssClasses = computed(() => {\n const idx = this.index();\n return idx > 0 ? `ecl-layout-item ecl-layout-item--${idx}` : 'ecl-layout-item';\n });\n}\n",
|
|
24517
24443
|
"selector": "[eclLayoutWrapperDescription]",
|
|
24518
24444
|
"providers": [],
|
|
24519
24445
|
"hostDirectives": [],
|
|
@@ -24556,12 +24482,12 @@
|
|
|
24556
24482
|
},
|
|
24557
24483
|
{
|
|
24558
24484
|
"name": "EclLayoutWrapperTitleDirective",
|
|
24559
|
-
"id": "directive-EclLayoutWrapperTitleDirective-
|
|
24485
|
+
"id": "directive-EclLayoutWrapperTitleDirective-c66e89e20290d5f484869deef858036ae0baa714fa695a6e93fb4a7d9e922f3a3505972877f712a421ca1adf627bbd75ceee66e6974826736a1052998d463d09",
|
|
24560
24486
|
"file": "packages/ecl/components/ecl-layout-wrapper/ecl-layout-wrapper.directives.ts",
|
|
24561
24487
|
"type": "directive",
|
|
24562
24488
|
"description": "<p>Directive for the layout wrapper title.\nApplies the <code>ecl-layout-wrapper__title</code> class to the host element.</p>\n<b>Example :</b><div><pre class=\"line-numbers\"><code class=\"language-html\"><h2 eclLayoutWrapperTitle>Heading</h2></code></pre></div>",
|
|
24563
24489
|
"rawdescription": "\n\nDirective for the layout wrapper title.\nApplies the `ecl-layout-wrapper__title` class to the host element.\n\n```html\n<h2 eclLayoutWrapperTitle>Heading</h2>\n```",
|
|
24564
|
-
"sourceCode": "import { computed, Directive, ElementRef, inject, signal } from '@angular/core';\n\n/**\n * Directive for the layout wrapper title.\n * Applies the `ecl-layout-wrapper__title` class to the host element.\n *\n * @example\n * ```html\n * <h2 eclLayoutWrapperTitle>Heading</h2>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperTitle]',\n host: {\n class: 'ecl-layout-wrapper__title',\n },\n})\nexport class EclLayoutWrapperTitleDirective {}\n\n/**\n * Directive for the layout wrapper description.\n * Applies the `ecl-layout-wrapper__description` class to the host element.\n *\n * @example\n * ```html\n * <div eclLayoutWrapperDescription>Lorem ipsum...</div>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperDescription]',\n host: {\n class: 'ecl-layout-wrapper__description',\n },\n})\nexport class EclLayoutWrapperDescriptionDirective {}\n\n/**\n * Directive for the layout wrapper \"view all\" link.\n * Applies the `ecl-layout-wrapper__view-all-link` class to the link element.\n *\n * @example\n * ```html\n * <a eclLayoutWrapperViewAll eclLink
|
|
24490
|
+
"sourceCode": "import { computed, Directive, ElementRef, inject, signal } from '@angular/core';\n\n/**\n * Directive for the layout wrapper title.\n * Applies the `ecl-layout-wrapper__title` class to the host element.\n *\n * @example\n * ```html\n * <h2 eclLayoutWrapperTitle>Heading</h2>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperTitle]',\n host: {\n class: 'ecl-layout-wrapper__title',\n },\n})\nexport class EclLayoutWrapperTitleDirective {}\n\n/**\n * Directive for the layout wrapper description.\n * Applies the `ecl-layout-wrapper__description` class to the host element.\n *\n * @example\n * ```html\n * <div eclLayoutWrapperDescription>Lorem ipsum...</div>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperDescription]',\n host: {\n class: 'ecl-layout-wrapper__description',\n },\n})\nexport class EclLayoutWrapperDescriptionDirective {}\n\n/**\n * Directive for the layout wrapper \"view all\" link.\n * Applies the `ecl-layout-wrapper__view-all-link` class to the link element.\n *\n * @example\n * ```html\n * <a eclLayoutWrapperViewAll eclLink icon=\"arrow-left\">View all</a>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperViewAll]',\n host: {\n class: 'ecl-layout-wrapper__view-all-link',\n },\n})\nexport class EclLayoutWrapperViewAllDirective {}\n\n/**\n * Directive for individual items inside the layout wrapper grid.\n * Wraps each content element (e.g., card) and applies positional CSS classes.\n *\n * The index is automatically assigned by the parent `EclLayoutWrapperComponent`.\n *\n * @example\n * ```html\n * <div eclLayoutItem><article eclCard>...</article></div>\n * ```\n */\n@Directive({\n selector: '[eclLayoutItem]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclLayoutItemDirective {\n\n /** Positional index (1-based), assigned by the parent layout wrapper. */\n readonly index = signal(0);\n\n /** Computed CSS classes based on the assigned index. */\n readonly cssClasses = computed(() => {\n const idx = this.index();\n return idx > 0 ? `ecl-layout-item ecl-layout-item--${idx}` : 'ecl-layout-item';\n });\n}\n",
|
|
24565
24491
|
"selector": "[eclLayoutWrapperTitle]",
|
|
24566
24492
|
"providers": [],
|
|
24567
24493
|
"hostDirectives": [],
|
|
@@ -24604,12 +24530,12 @@
|
|
|
24604
24530
|
},
|
|
24605
24531
|
{
|
|
24606
24532
|
"name": "EclLayoutWrapperViewAllDirective",
|
|
24607
|
-
"id": "directive-EclLayoutWrapperViewAllDirective-
|
|
24533
|
+
"id": "directive-EclLayoutWrapperViewAllDirective-c66e89e20290d5f484869deef858036ae0baa714fa695a6e93fb4a7d9e922f3a3505972877f712a421ca1adf627bbd75ceee66e6974826736a1052998d463d09",
|
|
24608
24534
|
"file": "packages/ecl/components/ecl-layout-wrapper/ecl-layout-wrapper.directives.ts",
|
|
24609
24535
|
"type": "directive",
|
|
24610
|
-
"description": "<p>Directive for the layout wrapper "view all" link.\nApplies the <code>ecl-layout-wrapper__view-all-link</code> class to the link element.</p>\n<b>Example :</b><div><pre class=\"line-numbers\"><code class=\"language-html\"><a eclLayoutWrapperViewAll eclLink
|
|
24611
|
-
"rawdescription": "\n\nDirective for the layout wrapper \"view all\" link.\nApplies the `ecl-layout-wrapper__view-all-link` class to the link element.\n\n```html\n<a eclLayoutWrapperViewAll eclLink
|
|
24612
|
-
"sourceCode": "import { computed, Directive, ElementRef, inject, signal } from '@angular/core';\n\n/**\n * Directive for the layout wrapper title.\n * Applies the `ecl-layout-wrapper__title` class to the host element.\n *\n * @example\n * ```html\n * <h2 eclLayoutWrapperTitle>Heading</h2>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperTitle]',\n host: {\n class: 'ecl-layout-wrapper__title',\n },\n})\nexport class EclLayoutWrapperTitleDirective {}\n\n/**\n * Directive for the layout wrapper description.\n * Applies the `ecl-layout-wrapper__description` class to the host element.\n *\n * @example\n * ```html\n * <div eclLayoutWrapperDescription>Lorem ipsum...</div>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperDescription]',\n host: {\n class: 'ecl-layout-wrapper__description',\n },\n})\nexport class EclLayoutWrapperDescriptionDirective {}\n\n/**\n * Directive for the layout wrapper \"view all\" link.\n * Applies the `ecl-layout-wrapper__view-all-link` class to the link element.\n *\n * @example\n * ```html\n * <a eclLayoutWrapperViewAll eclLink
|
|
24536
|
+
"description": "<p>Directive for the layout wrapper "view all" link.\nApplies the <code>ecl-layout-wrapper__view-all-link</code> class to the link element.</p>\n<b>Example :</b><div><pre class=\"line-numbers\"><code class=\"language-html\"><a eclLayoutWrapperViewAll eclLink icon="arrow-left">View all</a></code></pre></div>",
|
|
24537
|
+
"rawdescription": "\n\nDirective for the layout wrapper \"view all\" link.\nApplies the `ecl-layout-wrapper__view-all-link` class to the link element.\n\n```html\n<a eclLayoutWrapperViewAll eclLink icon=\"arrow-left\">View all</a>\n```",
|
|
24538
|
+
"sourceCode": "import { computed, Directive, ElementRef, inject, signal } from '@angular/core';\n\n/**\n * Directive for the layout wrapper title.\n * Applies the `ecl-layout-wrapper__title` class to the host element.\n *\n * @example\n * ```html\n * <h2 eclLayoutWrapperTitle>Heading</h2>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperTitle]',\n host: {\n class: 'ecl-layout-wrapper__title',\n },\n})\nexport class EclLayoutWrapperTitleDirective {}\n\n/**\n * Directive for the layout wrapper description.\n * Applies the `ecl-layout-wrapper__description` class to the host element.\n *\n * @example\n * ```html\n * <div eclLayoutWrapperDescription>Lorem ipsum...</div>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperDescription]',\n host: {\n class: 'ecl-layout-wrapper__description',\n },\n})\nexport class EclLayoutWrapperDescriptionDirective {}\n\n/**\n * Directive for the layout wrapper \"view all\" link.\n * Applies the `ecl-layout-wrapper__view-all-link` class to the link element.\n *\n * @example\n * ```html\n * <a eclLayoutWrapperViewAll eclLink icon=\"arrow-left\">View all</a>\n * ```\n */\n@Directive({\n selector: '[eclLayoutWrapperViewAll]',\n host: {\n class: 'ecl-layout-wrapper__view-all-link',\n },\n})\nexport class EclLayoutWrapperViewAllDirective {}\n\n/**\n * Directive for individual items inside the layout wrapper grid.\n * Wraps each content element (e.g., card) and applies positional CSS classes.\n *\n * The index is automatically assigned by the parent `EclLayoutWrapperComponent`.\n *\n * @example\n * ```html\n * <div eclLayoutItem><article eclCard>...</article></div>\n * ```\n */\n@Directive({\n selector: '[eclLayoutItem]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclLayoutItemDirective {\n\n /** Positional index (1-based), assigned by the parent layout wrapper. */\n readonly index = signal(0);\n\n /** Computed CSS classes based on the assigned index. */\n readonly cssClasses = computed(() => {\n const idx = this.index();\n return idx > 0 ? `ecl-layout-item ecl-layout-item--${idx}` : 'ecl-layout-item';\n });\n}\n",
|
|
24613
24539
|
"selector": "[eclLayoutWrapperViewAll]",
|
|
24614
24540
|
"providers": [],
|
|
24615
24541
|
"hostDirectives": [],
|
|
@@ -24626,7 +24552,7 @@
|
|
|
24626
24552
|
"jsdoctags": [
|
|
24627
24553
|
{
|
|
24628
24554
|
"pos": 996,
|
|
24629
|
-
"end":
|
|
24555
|
+
"end": 1093,
|
|
24630
24556
|
"kind": 328,
|
|
24631
24557
|
"id": 0,
|
|
24632
24558
|
"flags": 16777216,
|
|
@@ -24641,7 +24567,7 @@
|
|
|
24641
24567
|
"transformFlags": 0,
|
|
24642
24568
|
"escapedText": "example"
|
|
24643
24569
|
},
|
|
24644
|
-
"comment": "<b>Example :</b><div><pre class=\"line-numbers\"><code class=\"language-html\"><a eclLayoutWrapperViewAll eclLink
|
|
24570
|
+
"comment": "<b>Example :</b><div><pre class=\"line-numbers\"><code class=\"language-html\"><a eclLayoutWrapperViewAll eclLink icon="arrow-left">View all</a></code></pre></div>"
|
|
24645
24571
|
}
|
|
24646
24572
|
],
|
|
24647
24573
|
"extends": [],
|
|
@@ -48751,7 +48677,7 @@
|
|
|
48751
48677
|
},
|
|
48752
48678
|
{
|
|
48753
48679
|
"name": "EclBreadcrumbSegmentComponent",
|
|
48754
|
-
"id": "component-EclBreadcrumbSegmentComponent-
|
|
48680
|
+
"id": "component-EclBreadcrumbSegmentComponent-90600f912629a6082799177cb2530104128a166c0134016db334c99f3a0bf9045937a0d0e3201e370698a5d6d783b2d87414e802be4ec6ef981e16fe2bec4650",
|
|
48755
48681
|
"file": "packages/ecl/components/ecl-breadcrumb/ecl-breadcrumb-segment.component.ts",
|
|
48756
48682
|
"encapsulation": [
|
|
48757
48683
|
"ViewEncapsulation.None"
|
|
@@ -49016,7 +48942,7 @@
|
|
|
49016
48942
|
"optional": false,
|
|
49017
48943
|
"returnType": "void",
|
|
49018
48944
|
"typeParameters": [],
|
|
49019
|
-
"line":
|
|
48945
|
+
"line": 102,
|
|
49020
48946
|
"deprecated": false,
|
|
49021
48947
|
"deprecationMessage": "",
|
|
49022
48948
|
"rawdescription": "\n\nHandles the click event on the segment.\n",
|
|
@@ -49111,7 +49037,7 @@
|
|
|
49111
49037
|
"deprecationMessage": "",
|
|
49112
49038
|
"rawdescription": "\n\nComputes the CSS classes applied to the segment.\n",
|
|
49113
49039
|
"description": "<p>Computes the CSS classes applied to the segment.</p>\n",
|
|
49114
|
-
"line":
|
|
49040
|
+
"line": 91,
|
|
49115
49041
|
"type": "string",
|
|
49116
49042
|
"decorators": []
|
|
49117
49043
|
}
|
|
@@ -49138,7 +49064,7 @@
|
|
|
49138
49064
|
"description": "<p>Displays a single breadcrumb segment with optional navigation or ellipsis.</p>\n",
|
|
49139
49065
|
"rawdescription": "\n\nDisplays a single breadcrumb segment with optional navigation or ellipsis.\n",
|
|
49140
49066
|
"type": "component",
|
|
49141
|
-
"sourceCode": "import {\n Component,\n ElementRef,\n HostBinding,\n input,\n output,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Params, QueryParamsHandling, RouterLink, RouterLinkWithHref } from '@angular/router';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclBreadcrumbSegmentClickEvent } from './events/ecl-breadcrumb-segment-click.event';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\n\n/**\n * Displays a single breadcrumb segment with optional navigation or ellipsis.\n */\n@Component({\n selector: 'li[eclBreadcrumbSegment]',\n templateUrl: './ecl-breadcrumb-segment.component.html',\n imports: [NgTemplateOutlet, RouterLink, RouterLinkWithHref, ...EUI_ECL_ICON, ...EUI_ECL_LINK],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.aria-current]': 'ariaCurrent'\n }\n})\nexport class EclBreadcrumbSegmentComponent extends ECLBaseDirective {\n el = inject(ElementRef);\n\n /**\n * Defines the tabindex attribute for accessibility.\n */\n @HostBinding('attr.tabindex') tabIndex = '-1';\n\n /**\n * Router link for navigation.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n routerLink = input<string | any[] | null>(null);\n\n /**\n * Query parameters used with routerLink.\n */\n queryParams = input<Params | null>(null);\n\n /**\n * Href used for standard navigation.\n */\n href = input('');\n\n /**\n * Strategy for handling existing query parameters during navigation.\n */\n queryParamsHandling = input<QueryParamsHandling>(null);\n\n /**\n * Displays the segment as an ellipsis instead of a link.\n */\n isEllipsis = input(false, { transform: booleanAttribute });\n\n /**\n * Highlights the segment as the current page.\n */\n isCurrentPage = input(false, { transform: booleanAttribute });\n\n /**\n * Hides the segment visually and from assistive technologies.\n */\n isHidden = signal(false);\n\n @HostBinding('attr.aria-hidden')\n get ariaHidden() {\n return this.isHidden();\n }\n\n /**\n * Emits when the segment is clicked.\n */\n segmentClick = output<EclBreadcrumbSegmentClickEvent>();\n\n get ariaCurrent() { return this.isCurrentPage() ? 'page' : null; }\n\n
|
|
49067
|
+
"sourceCode": "import {\n Component,\n ElementRef,\n HostBinding,\n input,\n output,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Params, QueryParamsHandling, RouterLink, RouterLinkWithHref } from '@angular/router';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclBreadcrumbSegmentClickEvent } from './events/ecl-breadcrumb-segment-click.event';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\n\n/**\n * Displays a single breadcrumb segment with optional navigation or ellipsis.\n */\n@Component({\n selector: 'li[eclBreadcrumbSegment]',\n templateUrl: './ecl-breadcrumb-segment.component.html',\n imports: [NgTemplateOutlet, RouterLink, RouterLinkWithHref, ...EUI_ECL_ICON, ...EUI_ECL_LINK],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.aria-current]': 'ariaCurrent'\n }\n})\nexport class EclBreadcrumbSegmentComponent extends ECLBaseDirective {\n el = inject(ElementRef);\n\n /**\n * Defines the tabindex attribute for accessibility.\n */\n @HostBinding('attr.tabindex') tabIndex = '-1';\n\n /**\n * Router link for navigation.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n routerLink = input<string | any[] | null>(null);\n\n /**\n * Query parameters used with routerLink.\n */\n queryParams = input<Params | null>(null);\n\n /**\n * Href used for standard navigation.\n */\n href = input('');\n\n /**\n * Strategy for handling existing query parameters during navigation.\n */\n queryParamsHandling = input<QueryParamsHandling>(null);\n\n /**\n * Displays the segment as an ellipsis instead of a link.\n */\n isEllipsis = input(false, { transform: booleanAttribute });\n\n /**\n * Highlights the segment as the current page.\n */\n isCurrentPage = input(false, { transform: booleanAttribute });\n\n /**\n * Hides the segment visually and from assistive technologies.\n */\n isHidden = signal(false);\n\n @HostBinding('attr.aria-hidden')\n get ariaHidden() {\n return this.isHidden();\n }\n\n /**\n * Emits when the segment is clicked.\n */\n segmentClick = output<EclBreadcrumbSegmentClickEvent>();\n\n get ariaCurrent() { return this.isCurrentPage() ? 'page' : null; }\n\n /**\n * Computes the CSS classes applied to the segment.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-breadcrumb__segment'),\n this.isCurrentPage() ? 'ecl-breadcrumb__current-page' : '',\n this.isEllipsis() ? 'ecl-breadcrumb__segment--ellipsis' : '',\n ].join(' ').trim();\n }\n\n /**\n * Handles the click event on the segment.\n */\n onSegmentClick(evt: MouseEvent): void {\n this.segmentClick.emit(new EclBreadcrumbSegmentClickEvent());\n if (!this.href()) {\n evt.stopPropagation();\n }\n }\n}\n",
|
|
49142
49068
|
"assetsDirs": [],
|
|
49143
49069
|
"styleUrlsData": "",
|
|
49144
49070
|
"stylesData": "",
|
|
@@ -49154,15 +49080,6 @@
|
|
|
49154
49080
|
"comment": "Displays a single breadcrumb segment with optional navigation or ellipsis."
|
|
49155
49081
|
}
|
|
49156
49082
|
],
|
|
49157
|
-
"constructorObj": {
|
|
49158
|
-
"name": "constructor",
|
|
49159
|
-
"description": "",
|
|
49160
|
-
"deprecated": false,
|
|
49161
|
-
"deprecationMessage": "",
|
|
49162
|
-
"args": [],
|
|
49163
|
-
"line": 85,
|
|
49164
|
-
"rawdescription": "\n"
|
|
49165
|
-
},
|
|
49166
49083
|
"extends": [
|
|
49167
49084
|
"ECLBaseDirective"
|
|
49168
49085
|
],
|
|
@@ -49195,7 +49112,7 @@
|
|
|
49195
49112
|
"name": "cssClasses",
|
|
49196
49113
|
"type": "string",
|
|
49197
49114
|
"returnType": "string",
|
|
49198
|
-
"line":
|
|
49115
|
+
"line": 91,
|
|
49199
49116
|
"rawdescription": "\n\nComputes the CSS classes applied to the segment.\n",
|
|
49200
49117
|
"description": "<p>Computes the CSS classes applied to the segment.</p>\n"
|
|
49201
49118
|
}
|
|
@@ -50124,7 +50041,7 @@
|
|
|
50124
50041
|
},
|
|
50125
50042
|
{
|
|
50126
50043
|
"name": "EclCarouselComponent",
|
|
50127
|
-
"id": "component-EclCarouselComponent-
|
|
50044
|
+
"id": "component-EclCarouselComponent-81802f77cb029f9a31bae0e2e00876a8015269bd44101dfed3992760c714f3ea38181b0c017e161873914f305cc00bf95a967eb84338ffdccc2ba13678786aab",
|
|
50128
50045
|
"file": "packages/ecl/components/ecl-carousel/ecl-carousel.component.ts",
|
|
50129
50046
|
"encapsulation": [],
|
|
50130
50047
|
"entryComponents": [],
|
|
@@ -50988,7 +50905,7 @@
|
|
|
50988
50905
|
"description": "<p>Component responsible for rendering a carousel (slideshow) with autoplay, keyboard navigation,\nand support for RTL layouts. Extends the ECLBaseDirective for consistent styling and behavior.</p>\n",
|
|
50989
50906
|
"rawdescription": "\n\nComponent responsible for rendering a carousel (slideshow) with autoplay, keyboard navigation,\nand support for RTL layouts. Extends the ECLBaseDirective for consistent styling and behavior.\n",
|
|
50990
50907
|
"type": "component",
|
|
50991
|
-
"sourceCode": "import { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n DOCUMENT,\n ElementRef,\n OnDestroy,\n OnInit,\n Renderer2,\n afterNextRender,\n booleanAttribute,\n forwardRef,\n inject,\n numberAttribute,\n output,\n input,\n viewChild,\n contentChildren,\n viewChildren,\n} from '@angular/core';\nimport { EclIconComponent } from '@eui/ecl/components/ecl-icon';\nimport { ECLBaseDirective, EclRtlService, KeyCode } from '@eui/ecl/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Subject, auditTime, fromEvent, interval, switchMap, takeUntil } from 'rxjs';\nimport { EclCarouselItemComponent } from './ecl-carousel-item.component';\nimport { EclSlideEvent } from './events/ecl-slide.event';\n\n/**\n * Component responsible for rendering a carousel (slideshow) with autoplay, keyboard navigation,\n * and support for RTL layouts. Extends the ECLBaseDirective for consistent styling and behavior.\n */\n@Component({\n selector: 'ecl-carousel',\n templateUrl: './ecl-carousel.component.html',\n imports: [\n TranslatePipe,\n EclIconComponent,\n EclCarouselItemComponent,\n ],\n host: {\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-roledescription]': '\"carousel\"',\n '[class]': 'cssClasses',\n },\n styles: [\n `\n .ecl-carousel__slides {\n transition-duration: 0.4s;\n }\n `,\n ],\n})\nexport class EclCarouselComponent extends ECLBaseDirective implements OnInit, OnDestroy, AfterContentInit {\n /**\n * Aria-label for screen readers to describe the carousel.\n */\n readonly ariaLabel = input<string | null>('Carousel description here', { alias: 'aria-label' });\n\n /**\n * Determines whether the carousel should autoplay.\n */\n readonly isAutoplay = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n\n /**\n * Interval in milliseconds between automatic slide transitions.\n */\n readonly playInterval = input(5000, { transform: numberAttribute });\n\n /**\n * Event emitted when a slide change occurs.\n */\n readonly slide = output<EclSlideEvent>();\n\n /**\n * Reference to the main carousel container element.\n */\n readonly carouselContainerElement = viewChild<ElementRef>('carouselContainer');\n\n /**\n * Collection of slide components rendered inside the carousel.\n */\n readonly slides = contentChildren(forwardRef(() => EclCarouselItemComponent));\n\n /**\n * References to the navigation buttons corresponding to each slide.\n */\n readonly navigationButtons = viewChildren<ElementRef>('currButton');\n\n /**\n * Reference to the play button element.\n */\n readonly playButton = viewChild<ElementRef>('playButton');\n\n /**\n * Reference to the pause button element.\n */\n readonly pauseButton = viewChild<ElementRef>('pauseButton');\n\n /**\n * Reference to the first hidden slide item (used for focus management).\n */\n readonly firstHiddenItem = viewChild<EclCarouselItemComponent>('firstHiddenItem');\n\n /**\n * Reference to the last hidden slide item (used for focus management).\n */\n readonly lastHiddenItem = viewChild<EclCarouselItemComponent>('lastHiddenItem');\n\n /**\n * Reference to the slides container element.\n */\n readonly slidesContainer = viewChild<ElementRef>('slidesContainer');\n\n /**\n * Indicates whether autoplay is currently active.\n */\n public isPlaying = false;\n\n /**\n * Indicates whether autoplay was manually paused.\n */\n public isPausedForced = false;\n\n /**\n * Indicates whether the layout is currently in RTL mode.\n */\n public isRtl = false;\n\n /**\n * Duration of the slide transition animation (in seconds).\n */\n transitionDuration = 0.4;\n\n private isMobileBreakpoint = false;\n private isSmallTabletBreakpoint = false;\n private isTabletBreakpoint = false;\n private isDesktopBreakpoint = false;\n private isLargeBreakpoint = false;\n private playSubject = new Subject<void>();\n private stopSubject = new Subject<void>();\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private unsubscribeListener: () => void;\n\n /**\n * Debounce interval (ms) used internally for timing and transitions.\n */\n private readonly TIMEOUT_INTERVAL = 400;\n private cdkBreakpointObserver = inject(BreakpointObserver);\n private cd = inject(ChangeDetectorRef);\n private renderer2 = inject(Renderer2);\n private eclRtlService = inject(EclRtlService);\n private readonly document = inject<Document>(DOCUMENT);\n private readonly window = this.document.defaultView; // Window | null\n\n constructor() {\n super();\n afterNextRender(() => {\n this.observeElementSizeChanges();\n this.cd.detectChanges();\n this.observeBreakpointChanges();\n\n fromEvent(this.window, 'resize').pipe(\n auditTime(50),\n takeUntil(this.destroy$)).subscribe(() => {\n this.transitionDuration = 0;\n this.cd.detectChanges();\n // Restore transition after layout settles\n setTimeout(() => {\n this.transitionDuration = 0.4;\n this.cd.detectChanges();\n });\n this.observeElementSizeChanges();\n });\n });\n }\n\n /**\n * Returns the computed CSS class list for the component.\n */\n get cssClasses(): string {\n return [super.getCssClasses('ecl-carousel')].join(' ').trim();\n }\n\n /**\n * Angular lifecycle hook: initializes autoplay and RTL detection.\n */\n ngOnInit(): void {\n this.initAutoplay();\n this.handleRtlChangeState();\n }\n\n /**\n * Angular lifecycle hook: called after content (slides) is initialized.\n */\n ngAfterContentInit(): void {\n setTimeout(() => {\n this.initializeSlider();\n });\n }\n\n /**\n * Angular lifecycle hook: cleans up subscriptions and event listeners.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n if (this.unsubscribeListener) {\n this.unsubscribeListener();\n }\n }\n\n /**\n * Starts autoplay and focuses the pause button.\n */\n onPlayClick(): void {\n this.startPlaying();\n this.focusOnButton(this.pauseButton());\n }\n\n /**\n * Stops autoplay and focuses the play button.\n */\n onPauseClick(): void {\n this.stopPlaying();\n this.focusOnButton(this.playButton());\n }\n\n /**\n * Handles key press on the first carousel element to stop autoplay if TAB is pressed.\n */\n onFirstCarouselElementPress(e): void {\n if (e.key === KeyCode.TAB) {\n if (this.isPlaying) {\n this.stopPlaying();\n }\n }\n }\n\n /**\n * Handles keyboard interaction on the play button.\n */\n onPlayKeyboardPress(e): void {\n if (e.key === KeyCode.TAB && e.shiftKey) {\n return;\n }\n if ([KeyCode.TAB].includes(e.key)) {\n if (this.isPlaying) {\n this.focusOnButton(this.navigationButtons().at(this.getCurrentSlideIndex()));\n this.stopPlaying();\n } else {\n this.focusOnButton(this.navigationButtons().at(this.getCurrentSlideIndex()));\n }\n e.preventDefault();\n } else if (!this.isPlaying && [KeyCode.ARROW_RIGHT].includes(e.key)) {\n this.focusOnButton(this.navigationButtons().at(this.getCurrentSlideIndex()));\n }\n }\n\n /**\n * Handles keyboard navigation for the navigation buttons.\n */\n onNavBtnKeyboardPress(e: KeyboardEvent, index: number): void {\n if (e.key === KeyCode.ARROW_RIGHT) {\n this.onNavigationButtonArrowRight(e);\n } else if (e.key === KeyCode.ARROW_LEFT) {\n this.onNavigationButtonArrowLeft(e, index);\n }\n return;\n }\n\n /**\n * Checks whether a given button is currently visible (not hidden via style).\n */\n isButtonVisible(button: ElementRef): boolean {\n if (!button) {\n return false;\n }\n return button.nativeElement.style.display === '';\n }\n\n /**\n * Sets focus on the specified button.\n */\n focusOnButton(button: ElementRef): void {\n if (!button) {\n return;\n }\n button.nativeElement.focus();\n }\n\n /**\n * Handles user interaction with a slide control button.\n */\n onSlideControlClick(slide: EclCarouselItemComponent): void {\n this.stopPlaying();\n this.activateSlide(slide, true);\n }\n\n /**\n * Navigates to the next slide and stops autoplay.\n */\n onNextSlideClick(): void {\n this.stopPlaying();\n this.goToNextSlide(true);\n }\n\n /**\n * Navigates to the previous slide and stops autoplay.\n */\n onPreviousSlideClick(): void {\n this.stopPlaying();\n this.goToPreviousSlide(true);\n }\n\n /**\n * Pauses autoplay on mouse hover.\n */\n onSlideHover(): void {\n this.pausePlaying();\n }\n\n /**\n * Resumes autoplay on mouse leave, if not manually paused.\n */\n onSlideHoverout(): void {\n if (!this.isStopButtonPressed()) {\n this.resumePlaying();\n }\n }\n\n /**\n * Returns whether the stop button (pause) has been pressed by the user.\n */\n public isStopButtonPressed(): boolean {\n return this.isPausedForced;\n }\n\n /**\n * Returns whether the carousel has padding applied (e.g., on desktop breakpoint).\n */\n public isPadded(): boolean {\n return this.isDesktopBreakpoint;\n }\n\n /**\n * Checks whether there are enough slides to render controls.\n */\n public hasControls(): boolean {\n return this.getSlidesCount() > 1;\n }\n\n /**\n * Retrieves the current active slide index.\n * Corrects index for internal structure with hidden buffer slides.\n */\n public getCurrentSlideIndex(): number {\n let currentIndex: number;\n\n this.getAllSlidesArray().forEach((item, idx) => {\n if (item && item.isCurrent) {\n currentIndex = idx;\n }\n });\n if (currentIndex === this.getAllSlidesCount() - 1) {\n return 0;\n } else if (currentIndex === 0) {\n return this.getSlidesCount() - 1;\n }\n return currentIndex - 1;\n }\n\n /**\n * Computes the left offset to shift the slides container.\n */\n public getCarouselSlidesOffsetLeft(): number {\n return -1 * this.carouselContainerElement()?.nativeElement.offsetWidth * this.getCurrentItemIndex();\n }\n\n /**\n * Computes the right offset to shift the slides container (same logic as left in RTL).\n */\n public getCarouselSlidesOffsetRight(): number {\n return -1 * this.carouselContainerElement()?.nativeElement.offsetWidth * this.getCurrentItemIndex();\n }\n\n /**\n * Subscribes to RTL layout state changes to adapt carousel behavior.\n */\n private handleRtlChangeState(): void {\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n this.isRtl = rtlState;\n });\n }\n\n /**\n * Initializes autoplay logic using RxJS intervals and subject triggers.\n */\n private initAutoplay(): void {\n const start$ = this.playSubject.asObservable();\n const stop$ = this.stopSubject.asObservable();\n\n start$\n .pipe(\n switchMap(() => interval(this.playInterval()).pipe(takeUntil(stop$))),\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this.goToNextSlide(true);\n });\n }\n\n /**\n * Returns the index of the currently active slide item.\n */\n private getCurrentItemIndex(): number {\n let result = 0;\n this.getAllSlidesArray().forEach((item, index) => {\n if (item && item.isCurrent) {\n result = index;\n }\n });\n return result;\n }\n\n /**\n * Initializes slides, hidden buffer items, and sets default active slide.\n */\n private initializeSlider(): void {\n this.slides().forEach((item, idx) => {\n this.initSlide(item, idx);\n });\n\n if (this.hasControls()) {\n this.initHiddenItems();\n if (this.isNoSlideSelected()) {\n this.activateSlide(this.slides().at(0)!, false);\n }\n }\n }\n\n /**\n * Initializes hidden first and last slide clones used for infinite scroll illusion.\n */\n private initHiddenItems(): void {\n this.firstHiddenItem().el.nativeElement.innerHTML = this.getLastContentChild();\n this.firstHiddenItem().isCurrent = false;\n this.lastHiddenItem().el.nativeElement.innerHTML = this.getFirstContentChild();\n this.lastHiddenItem().isCurrent = false;\n this.unsubscribeListener = this.renderer2.listen(this.slidesContainer().nativeElement, 'transitionend', () => this.checkIndex());\n }\n\n /**\n * Verifies current index and resets to actual slide if hidden clone is reached.\n */\n private checkIndex(): void {\n if (this.getCurrentItemIndex() === this.getAllSlidesCount() - 1) {\n const item = this.slides().at(0)!;\n this.activateSlide(item, false);\n } else if (this.getCurrentItemIndex() === 0) {\n const item = this.slides().at(-1)!;\n this.activateSlide(item, false);\n }\n }\n\n /**\n * Returns the inner HTML of the last real slide (used for buffer item).\n */\n private getLastContentChild(): string {\n return this.getSlidesCount() > 0 ? this.slides().at(this.getSlidesCount() - 1).el.nativeElement.innerHTML : '';\n }\n\n /**\n * Returns the inner HTML of the first real slide (used for buffer item).\n */\n private getFirstContentChild(): string {\n return this.getSlidesCount() > 0 ? this.slides().at(0).el.nativeElement.innerHTML : '';\n }\n\n /**\n * Sets up a slide with index and ARIA label.\n */\n private initSlide(item: EclCarouselItemComponent, idx: number): void {\n item.index = idx;\n item.ariaLabel = `slide ${idx + 1} of ${this.getSlidesCount()}`;\n const banner = item.banner();\n if (banner) {\n banner.skipHeightManagement = true;\n }\n }\n\n /**\n * Activates the next slide, with option to loop.\n */\n private goToNextSlide(isLoop: boolean): void {\n this.activateSlide(this.getNextSlide(isLoop), true);\n }\n\n /**\n * Activates the previous slide, with option to loop.\n */\n private goToPreviousSlide(isLoop: boolean): void {\n this.activateSlide(this.getPreviousSlide(isLoop), true);\n }\n\n /**\n * Activates a specific slide and triggers slide change event if needed.\n */\n private activateSlide(slideItem: EclCarouselItemComponent, withTransition: boolean): void {\n if (withTransition) {\n this.transitionDuration = 0.4;\n } else {\n this.transitionDuration = 0;\n }\n if (slideItem) {\n this.getAllSlidesArray().forEach((item) => {\n item.isCurrent = false;\n });\n slideItem.isCurrent = true;\n }\n this.cd.detectChanges();\n if (withTransition) {\n this.slide.emit(new EclSlideEvent(this.slides().at(this.getCurrentSlideIndex())));\n }\n }\n\n /**\n * Checks if the currently focused button is the last in the list.\n */\n private isLastButton(index): boolean {\n const buttonsList = this.navigationButtons();\n return index + 1 >= buttonsList.length;\n }\n\n /**\n * Checks if the currently focused button is the first in the list.\n */\n private isFirstButton(index): boolean {\n return index <= 0;\n }\n\n /**\n * Starts autoplay mode and updates state.\n */\n private startPlaying(): void {\n this.isPlaying = true;\n this.cd.detectChanges();\n this.isPausedForced = false;\n this.playSubject.next();\n }\n\n /**\n * Stops autoplay mode and updates state.\n */\n private stopPlaying(): void {\n this.isPlaying = false;\n this.cd.detectChanges();\n this.isPausedForced = true;\n this.stopSubject.next();\n }\n\n /**\n * Temporarily pauses autoplay (e.g. on mouse hover).\n */\n private pausePlaying(): void {\n this.isPlaying = false;\n this.cd.detectChanges();\n this.stopSubject.next();\n }\n\n /**\n * Resumes autoplay after being paused.\n */\n private resumePlaying(): void {\n this.isPlaying = true;\n this.cd.detectChanges();\n this.playSubject.next();\n }\n\n /**\n * Retrieves the next slide based on the current index and loop setting.\n */\n private getNextSlide(isLoop: boolean): EclCarouselItemComponent {\n const slidesCount = this.getSlidesCount();\n const currentIndex = this.getCurrentSlideIndex();\n\n if (currentIndex >= slidesCount - 1) {\n if (isLoop) {\n return this.getAllSlidesArray()[this.getAllSlidesCount() - 1];\n } else {\n return this.slides().at(-1)!;\n }\n } else {\n return this.slides().at(currentIndex + 1);\n }\n }\n\n /**\n * Returns all slides, including the hidden buffer items.\n */\n private getAllSlidesArray(): EclCarouselItemComponent[] {\n return [...[this.firstHiddenItem()], ...this.slides(), ...[this.lastHiddenItem()]];\n }\n\n /**\n * Retrieves the previous slide based on the current index and loop setting.\n */\n private getPreviousSlide(isLoop: boolean): EclCarouselItemComponent {\n const currentIndex = this.getCurrentSlideIndex();\n\n if (currentIndex <= 0) {\n if (isLoop) {\n return this.getAllSlidesArray()[0];\n } else {\n return this.slides().at(0)!;\n }\n } else {\n return this.slides().at(currentIndex - 1);\n }\n }\n\n /**\n * Returns the number of actual visible slides (excluding hidden buffer).\n */\n private getSlidesCount(): number {\n return this.slides().length;\n }\n\n /**\n * Returns total number of slides, including buffer (hidden) items.\n */\n private getAllSlidesCount(): number {\n if (this.hasControls()) {\n return this.slides().length + 2;\n } else {\n return this.slides().length;\n }\n }\n\n /**\n * Determines whether no slide is currently marked as active.\n */\n private isNoSlideSelected(): boolean {\n return !this.slides().some((item) => item.isCurrent);\n }\n\n /**\n * Handles right arrow key navigation for buttons.\n */\n private onNavigationButtonArrowRight(e: KeyboardEvent): void {\n setTimeout(() => {\n this.goToNextSlide(false);\n const button: ElementRef = this.navigationButtons().at(this.getCurrentSlideIndex());\n this.focusOnButton(button);\n }, this.TIMEOUT_INTERVAL);\n e.preventDefault();\n }\n\n /**\n * Handles left arrow key navigation for buttons.\n */\n private onNavigationButtonArrowLeft(e: KeyboardEvent, index: number): void {\n if (this.isFirstButton(index)) {\n const playButton = this.playButton();\n if (playButton) {\n this.focusOnButton(playButton);\n }\n const pauseButton = this.pauseButton();\n if (pauseButton) {\n this.focusOnButton(pauseButton);\n }\n } else {\n setTimeout(() => {\n this.goToPreviousSlide(false);\n const button: ElementRef = this.navigationButtons().at(this.getCurrentSlideIndex());\n this.focusOnButton(button);\n }, this.TIMEOUT_INTERVAL);\n e.preventDefault();\n }\n }\n\n /**\n * Observes screen breakpoint changes to adjust autoplay and layout behavior.\n */\n private observeBreakpointChanges(): void {\n this.cdkBreakpointObserver\n .observe([\n '(max-width: 768px)',\n '(max-width: 997px)',\n '(min-width: 998px)',\n '(min-width: 1140px)',\n '(min-width: 1140px) and (max-width: 1260px)',\n ])\n .pipe(takeUntil(this.destroy$))\n .subscribe((result) => {\n this.isMobileBreakpoint = result.breakpoints['(max-width: 768px)'];\n this.isSmallTabletBreakpoint = result.breakpoints['(max-width: 997px)'];\n this.isTabletBreakpoint = result.breakpoints['(min-width: 998px)'];\n this.isLargeBreakpoint = result.breakpoints['(min-width: 1140px)'];\n this.isDesktopBreakpoint = result.breakpoints['(min-width: 1140px) and (max-width: 1260px)'];\n const isAutoplay = this.isAutoplay();\n if (this.isMobileBreakpoint && !isAutoplay) {\n this.stopPlaying();\n }\n\n if (this.isTabletBreakpoint) {\n if (isAutoplay || isAutoplay === undefined) {\n this.startPlaying();\n }\n }\n });\n }\n\n /**\n * Observes changes to the carousel's container element size using ResizeObserver.\n */\n private observeElementSizeChanges(): void {\n setTimeout(() => {\n if (this.isLargeBreakpoint) {\n this.checkBannerHeights();\n } else {\n this.resetHeight();\n }\n }, this.TIMEOUT_INTERVAL);\n }\n\n /**\n * Normalizes the height of all banners to match the tallest banner.\n */\n private checkBannerHeights(): void {\n // First, let each banner calculate its own height (like ECL's bannerInstance.setHeight(ratio))\n this.slides().forEach((slide) => {\n const banner = slide.banner();\n if (banner) {\n banner.calculateHeight();\n }\n });\n\n const heightValues = this.slides().map((slide) => {\n const el = slide.banner()?.el.nativeElement;\n if (!el) return undefined;\n\n const styleHeight = el.style.height;\n\n if (styleHeight === 'auto' || styleHeight === '') {\n return el.offsetHeight;\n }\n\n const height = parseInt(styleHeight, 10);\n if (Number.isNaN(height) || height === 100) {\n return 1;\n }\n\n return height;\n });\n\n const elementHeights = heightValues.filter((h) => h !== undefined) as number[];\n const tallestElementHeight = Math.max(...elementHeights);\n\n const slides = this.slides();\n if (tallestElementHeight > 1 && elementHeights.length === slides.length) {\n slides.forEach((slide) => {\n const banner = slide.banner();\n if (!banner) return;\n\n const el = banner.el.nativeElement;\n const bannerImage = banner.eclBannerImage;\n const bannerVideo = banner.eclBannerVideo;\n\n this.renderer2.setStyle(el, 'height', `${tallestElementHeight}px`);\n this.renderer2.setStyle(el, 'aspect-ratio', 'auto');\n\n if (bannerImage) {\n this.renderer2.setStyle(bannerImage.el.nativeElement, 'aspect-ratio', 'auto');\n }\n if (bannerVideo) {\n this.renderer2.setStyle(bannerVideo.el.nativeElement, 'aspect-ratio', 'auto');\n }\n });\n this.resetHiddenItems();\n }\n }\n\n /**\n * Clears all explicit banner height and aspect ratio styling for smaller breakpoints.\n */\n private resetHeight(): void {\n this.slides().forEach((slide) => {\n const banner = slide.banner();\n if (banner) {\n const bannerImage = banner.eclBannerImage;\n const bannerVideo = banner.eclBannerVideo;\n this.renderer2.removeStyle(banner.el.nativeElement, 'height');\n this.renderer2.removeStyle(banner.el.nativeElement, 'aspect-ratio');\n if (bannerImage) {\n this.renderer2.removeStyle(bannerImage.el.nativeElement, 'aspect-ratio');\n }\n if (bannerVideo) {\n this.renderer2.removeStyle(bannerVideo.el.nativeElement, 'aspect-ratio');\n }\n }\n });\n this.resetHiddenItems();\n }\n\n /**\n * Re-renders the content of hidden buffer items after style reset.\n */\n private resetHiddenItems(): void {\n if (this.hasControls()) {\n this.firstHiddenItem().el.nativeElement.innerHTML = this.getLastContentChild();\n this.lastHiddenItem().el.nativeElement.innerHTML = this.getFirstContentChild();\n }\n }\n}\n",
|
|
50908
|
+
"sourceCode": "import { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n DOCUMENT,\n ElementRef,\n OnDestroy,\n OnInit,\n Renderer2,\n afterNextRender,\n booleanAttribute,\n forwardRef,\n inject,\n numberAttribute,\n output,\n input,\n viewChild,\n contentChildren,\n viewChildren,\n} from '@angular/core';\nimport { EclIconComponent } from '@eui/ecl/components/ecl-icon';\nimport { ECLBaseDirective, EclRtlService, KeyCode } from '@eui/ecl/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Subject, auditTime, fromEvent, interval, switchMap, takeUntil } from 'rxjs';\nimport { EclCarouselItemComponent } from './ecl-carousel-item.component';\nimport { EclSlideEvent } from './events/ecl-slide.event';\n\n/**\n * Component responsible for rendering a carousel (slideshow) with autoplay, keyboard navigation,\n * and support for RTL layouts. Extends the ECLBaseDirective for consistent styling and behavior.\n */\n@Component({\n selector: 'ecl-carousel',\n templateUrl: './ecl-carousel.component.html',\n imports: [\n TranslatePipe,\n EclIconComponent,\n EclCarouselItemComponent,\n ],\n host: {\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-roledescription]': '\"carousel\"',\n '[class]': 'cssClasses',\n },\n styles: [\n `\n .ecl-carousel__slides {\n transition-duration: 0.4s;\n }\n `,\n ],\n})\nexport class EclCarouselComponent extends ECLBaseDirective implements OnInit, OnDestroy, AfterContentInit {\n /**\n * Aria-label for screen readers to describe the carousel.\n */\n readonly ariaLabel = input<string | null>('Carousel description here', { alias: 'aria-label' });\n\n /**\n * Determines whether the carousel should autoplay.\n */\n readonly isAutoplay = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n\n /**\n * Interval in milliseconds between automatic slide transitions.\n */\n readonly playInterval = input(5000, { transform: numberAttribute });\n\n /**\n * Event emitted when a slide change occurs.\n */\n readonly slide = output<EclSlideEvent>();\n\n /**\n * Reference to the main carousel container element.\n */\n readonly carouselContainerElement = viewChild<ElementRef>('carouselContainer');\n\n /**\n * Collection of slide components rendered inside the carousel.\n */\n readonly slides = contentChildren(forwardRef(() => EclCarouselItemComponent));\n\n /**\n * References to the navigation buttons corresponding to each slide.\n */\n readonly navigationButtons = viewChildren<ElementRef>('currButton');\n\n /**\n * Reference to the play button element.\n */\n readonly playButton = viewChild<ElementRef>('playButton');\n\n /**\n * Reference to the pause button element.\n */\n readonly pauseButton = viewChild<ElementRef>('pauseButton');\n\n /**\n * Reference to the first hidden slide item (used for focus management).\n */\n readonly firstHiddenItem = viewChild<EclCarouselItemComponent>('firstHiddenItem');\n\n /**\n * Reference to the last hidden slide item (used for focus management).\n */\n readonly lastHiddenItem = viewChild<EclCarouselItemComponent>('lastHiddenItem');\n\n /**\n * Reference to the slides container element.\n */\n readonly slidesContainer = viewChild<ElementRef>('slidesContainer');\n\n /**\n * Indicates whether autoplay is currently active.\n */\n public isPlaying = false;\n\n /**\n * Indicates whether autoplay was manually paused.\n */\n public isPausedForced = false;\n\n /**\n * Indicates whether the layout is currently in RTL mode.\n */\n public isRtl = false;\n\n /**\n * Duration of the slide transition animation (in seconds).\n */\n transitionDuration = 0.4;\n\n private isMobileBreakpoint = false;\n private isSmallTabletBreakpoint = false;\n private isTabletBreakpoint = false;\n private isDesktopBreakpoint = false;\n private isLargeBreakpoint = false;\n private playSubject = new Subject<void>();\n private stopSubject = new Subject<void>();\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private unsubscribeListener: () => void;\n\n /**\n * Debounce interval (ms) used internally for timing and transitions.\n */\n private readonly TIMEOUT_INTERVAL = 400;\n private cdkBreakpointObserver = inject(BreakpointObserver);\n private cd = inject(ChangeDetectorRef);\n private renderer2 = inject(Renderer2);\n private eclRtlService = inject(EclRtlService);\n private readonly document = inject<Document>(DOCUMENT);\n private readonly window = this.document.defaultView; // Window | null\n\n constructor() {\n super();\n afterNextRender(() => {\n this.observeElementSizeChanges();\n this.cd.detectChanges();\n this.observeBreakpointChanges();\n\n fromEvent(this.window, 'resize').pipe(\n auditTime(50),\n takeUntil(this.destroy$)).subscribe(() => {\n this.transitionDuration = 0;\n this.cd.detectChanges();\n // Restore transition after layout settles\n setTimeout(() => {\n this.transitionDuration = 0.4;\n this.cd.detectChanges();\n });\n this.observeElementSizeChanges();\n });\n });\n }\n\n /**\n * Returns the computed CSS class list for the component.\n */\n get cssClasses(): string {\n return [super.getCssClasses('ecl-carousel')].join(' ').trim();\n }\n\n /**\n * Angular lifecycle hook: initializes autoplay and RTL detection.\n */\n ngOnInit(): void {\n this.initAutoplay();\n this.handleRtlChangeState();\n }\n\n /**\n * Angular lifecycle hook: called after content (slides) is initialized.\n */\n ngAfterContentInit(): void {\n setTimeout(() => {\n this.initializeSlider();\n });\n }\n\n /**\n * Angular lifecycle hook: cleans up subscriptions and event listeners.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n if (this.unsubscribeListener) {\n this.unsubscribeListener();\n }\n }\n\n /**\n * Starts autoplay and focuses the pause button.\n */\n onPlayClick(): void {\n this.startPlaying();\n this.focusOnButton(this.pauseButton());\n }\n\n /**\n * Stops autoplay and focuses the play button.\n */\n onPauseClick(): void {\n this.stopPlaying();\n this.focusOnButton(this.playButton());\n }\n\n /**\n * Handles key press on the first carousel element to stop autoplay if TAB is pressed.\n */\n onFirstCarouselElementPress(e): void {\n if (e.key === KeyCode.TAB) {\n if (this.isPlaying) {\n this.stopPlaying();\n }\n }\n }\n\n /**\n * Handles keyboard interaction on the play button.\n */\n onPlayKeyboardPress(e): void {\n if (e.key === KeyCode.TAB && e.shiftKey) {\n return;\n }\n if ([KeyCode.TAB].includes(e.key)) {\n if (this.isPlaying) {\n this.focusOnButton(this.navigationButtons().at(this.getCurrentSlideIndex()));\n this.stopPlaying();\n } else {\n this.focusOnButton(this.navigationButtons().at(this.getCurrentSlideIndex()));\n }\n e.preventDefault();\n } else if (!this.isPlaying && [KeyCode.ARROW_RIGHT].includes(e.key)) {\n this.focusOnButton(this.navigationButtons().at(this.getCurrentSlideIndex()));\n }\n }\n\n /**\n * Handles keyboard navigation for the navigation buttons.\n */\n onNavBtnKeyboardPress(e: KeyboardEvent, index: number): void {\n if (e.key === KeyCode.ARROW_RIGHT) {\n this.onNavigationButtonArrowRight(e);\n } else if (e.key === KeyCode.ARROW_LEFT) {\n this.onNavigationButtonArrowLeft(e, index);\n }\n return;\n }\n\n /**\n * Checks whether a given button is currently visible (not hidden via style).\n */\n isButtonVisible(button: ElementRef): boolean {\n if (!button) {\n return false;\n }\n return button.nativeElement.style.display === '';\n }\n\n /**\n * Sets focus on the specified button.\n */\n focusOnButton(button: ElementRef): void {\n if (!button) {\n return;\n }\n button.nativeElement.focus();\n }\n\n /**\n * Handles user interaction with a slide control button.\n */\n onSlideControlClick(slide: EclCarouselItemComponent): void {\n this.stopPlaying();\n this.activateSlide(slide, true);\n }\n\n /**\n * Navigates to the next slide and stops autoplay.\n */\n onNextSlideClick(): void {\n this.stopPlaying();\n this.goToNextSlide(true);\n }\n\n /**\n * Navigates to the previous slide and stops autoplay.\n */\n onPreviousSlideClick(): void {\n this.stopPlaying();\n this.goToPreviousSlide(true);\n }\n\n /**\n * Pauses autoplay on mouse hover.\n */\n onSlideHover(): void {\n this.pausePlaying();\n }\n\n /**\n * Resumes autoplay on mouse leave, if not manually paused.\n */\n onSlideHoverout(): void {\n if (!this.isStopButtonPressed()) {\n this.resumePlaying();\n }\n }\n\n /**\n * Returns whether the stop button (pause) has been pressed by the user.\n */\n public isStopButtonPressed(): boolean {\n return this.isPausedForced;\n }\n\n /**\n * Returns whether the carousel has padding applied (e.g., on desktop breakpoint).\n */\n public isPadded(): boolean {\n return this.isDesktopBreakpoint;\n }\n\n /**\n * Checks whether there are enough slides to render controls.\n */\n public hasControls(): boolean {\n return this.getSlidesCount() > 1;\n }\n\n /**\n * Retrieves the current active slide index.\n * Corrects index for internal structure with hidden buffer slides.\n */\n public getCurrentSlideIndex(): number {\n let currentIndex: number;\n\n this.getAllSlidesArray().forEach((item, idx) => {\n if (item && item.isCurrent()) {\n currentIndex = idx;\n }\n });\n if (currentIndex === this.getAllSlidesCount() - 1) {\n return 0;\n } else if (currentIndex === 0) {\n return this.getSlidesCount() - 1;\n }\n return currentIndex - 1;\n }\n\n /**\n * Computes the left offset to shift the slides container.\n */\n public getCarouselSlidesOffsetLeft(): number {\n return -1 * this.carouselContainerElement()?.nativeElement.offsetWidth * this.getCurrentItemIndex();\n }\n\n /**\n * Computes the right offset to shift the slides container (same logic as left in RTL).\n */\n public getCarouselSlidesOffsetRight(): number {\n return -1 * this.carouselContainerElement()?.nativeElement.offsetWidth * this.getCurrentItemIndex();\n }\n\n /**\n * Subscribes to RTL layout state changes to adapt carousel behavior.\n */\n private handleRtlChangeState(): void {\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n this.isRtl = rtlState;\n });\n }\n\n /**\n * Initializes autoplay logic using RxJS intervals and subject triggers.\n */\n private initAutoplay(): void {\n const start$ = this.playSubject.asObservable();\n const stop$ = this.stopSubject.asObservable();\n\n start$\n .pipe(\n switchMap(() => interval(this.playInterval()).pipe(takeUntil(stop$))),\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this.goToNextSlide(true);\n });\n }\n\n /**\n * Returns the index of the currently active slide item.\n */\n private getCurrentItemIndex(): number {\n let result = 0;\n this.getAllSlidesArray().forEach((item, index) => {\n if (item && item.isCurrent()) {\n result = index;\n }\n });\n return result;\n }\n\n /**\n * Initializes slides, hidden buffer items, and sets default active slide.\n */\n private initializeSlider(): void {\n this.slides().forEach((item, idx) => {\n this.initSlide(item, idx);\n });\n\n if (this.hasControls()) {\n this.initHiddenItems();\n if (this.isNoSlideSelected()) {\n this.activateSlide(this.slides().at(0)!, false);\n }\n }\n }\n\n /**\n * Initializes hidden first and last slide clones used for infinite scroll illusion.\n */\n private initHiddenItems(): void {\n this.firstHiddenItem().el.nativeElement.innerHTML = this.getLastContentChild();\n this.firstHiddenItem().isCurrent.set(false);\n this.lastHiddenItem().el.nativeElement.innerHTML = this.getFirstContentChild();\n this.lastHiddenItem().isCurrent.set(false);\n this.unsubscribeListener = this.renderer2.listen(this.slidesContainer().nativeElement, 'transitionend', () => this.checkIndex());\n }\n\n /**\n * Verifies current index and resets to actual slide if hidden clone is reached.\n */\n private checkIndex(): void {\n if (this.getCurrentItemIndex() === this.getAllSlidesCount() - 1) {\n const item = this.slides().at(0)!;\n this.activateSlide(item, false);\n } else if (this.getCurrentItemIndex() === 0) {\n const item = this.slides().at(-1)!;\n this.activateSlide(item, false);\n }\n }\n\n /**\n * Returns the inner HTML of the last real slide (used for buffer item).\n */\n private getLastContentChild(): string {\n return this.getSlidesCount() > 0 ? this.slides().at(this.getSlidesCount() - 1).el.nativeElement.innerHTML : '';\n }\n\n /**\n * Returns the inner HTML of the first real slide (used for buffer item).\n */\n private getFirstContentChild(): string {\n return this.getSlidesCount() > 0 ? this.slides().at(0).el.nativeElement.innerHTML : '';\n }\n\n /**\n * Sets up a slide with index and ARIA label.\n */\n private initSlide(item: EclCarouselItemComponent, idx: number): void {\n item.index.set(idx);\n item.ariaLabel.set(`slide ${idx + 1} of ${this.getSlidesCount()}`);\n const banner = item.banner();\n if (banner) {\n banner.skipHeightManagement = true;\n }\n }\n\n /**\n * Activates the next slide, with option to loop.\n */\n private goToNextSlide(isLoop: boolean): void {\n this.activateSlide(this.getNextSlide(isLoop), true);\n }\n\n /**\n * Activates the previous slide, with option to loop.\n */\n private goToPreviousSlide(isLoop: boolean): void {\n this.activateSlide(this.getPreviousSlide(isLoop), true);\n }\n\n /**\n * Activates a specific slide and triggers slide change event if needed.\n */\n private activateSlide(slideItem: EclCarouselItemComponent, withTransition: boolean): void {\n if (withTransition) {\n this.transitionDuration = 0.4;\n } else {\n this.transitionDuration = 0;\n }\n if (slideItem) {\n this.getAllSlidesArray().forEach((item) => {\n item.isCurrent.set(false);\n });\n slideItem.isCurrent.set(true);\n }\n this.cd.detectChanges();\n if (withTransition) {\n this.slide.emit(new EclSlideEvent(this.slides().at(this.getCurrentSlideIndex())));\n }\n }\n\n /**\n * Checks if the currently focused button is the last in the list.\n */\n private isLastButton(index): boolean {\n const buttonsList = this.navigationButtons();\n return index + 1 >= buttonsList.length;\n }\n\n /**\n * Checks if the currently focused button is the first in the list.\n */\n private isFirstButton(index): boolean {\n return index <= 0;\n }\n\n /**\n * Starts autoplay mode and updates state.\n */\n private startPlaying(): void {\n this.isPlaying = true;\n this.cd.detectChanges();\n this.isPausedForced = false;\n this.playSubject.next();\n }\n\n /**\n * Stops autoplay mode and updates state.\n */\n private stopPlaying(): void {\n this.isPlaying = false;\n this.cd.detectChanges();\n this.isPausedForced = true;\n this.stopSubject.next();\n }\n\n /**\n * Temporarily pauses autoplay (e.g. on mouse hover).\n */\n private pausePlaying(): void {\n this.isPlaying = false;\n this.cd.detectChanges();\n this.stopSubject.next();\n }\n\n /**\n * Resumes autoplay after being paused.\n */\n private resumePlaying(): void {\n this.isPlaying = true;\n this.cd.detectChanges();\n this.playSubject.next();\n }\n\n /**\n * Retrieves the next slide based on the current index and loop setting.\n */\n private getNextSlide(isLoop: boolean): EclCarouselItemComponent {\n const slidesCount = this.getSlidesCount();\n const currentIndex = this.getCurrentSlideIndex();\n\n if (currentIndex >= slidesCount - 1) {\n if (isLoop) {\n return this.getAllSlidesArray()[this.getAllSlidesCount() - 1];\n } else {\n return this.slides().at(-1)!;\n }\n } else {\n return this.slides().at(currentIndex + 1);\n }\n }\n\n /**\n * Returns all slides, including the hidden buffer items.\n */\n private getAllSlidesArray(): EclCarouselItemComponent[] {\n return [...[this.firstHiddenItem()], ...this.slides(), ...[this.lastHiddenItem()]];\n }\n\n /**\n * Retrieves the previous slide based on the current index and loop setting.\n */\n private getPreviousSlide(isLoop: boolean): EclCarouselItemComponent {\n const currentIndex = this.getCurrentSlideIndex();\n\n if (currentIndex <= 0) {\n if (isLoop) {\n return this.getAllSlidesArray()[0];\n } else {\n return this.slides().at(0)!;\n }\n } else {\n return this.slides().at(currentIndex - 1);\n }\n }\n\n /**\n * Returns the number of actual visible slides (excluding hidden buffer).\n */\n private getSlidesCount(): number {\n return this.slides().length;\n }\n\n /**\n * Returns total number of slides, including buffer (hidden) items.\n */\n private getAllSlidesCount(): number {\n if (this.hasControls()) {\n return this.slides().length + 2;\n } else {\n return this.slides().length;\n }\n }\n\n /**\n * Determines whether no slide is currently marked as active.\n */\n private isNoSlideSelected(): boolean {\n return !this.slides().some((item) => item.isCurrent());\n }\n\n /**\n * Handles right arrow key navigation for buttons.\n */\n private onNavigationButtonArrowRight(e: KeyboardEvent): void {\n setTimeout(() => {\n this.goToNextSlide(false);\n const button: ElementRef = this.navigationButtons().at(this.getCurrentSlideIndex());\n this.focusOnButton(button);\n }, this.TIMEOUT_INTERVAL);\n e.preventDefault();\n }\n\n /**\n * Handles left arrow key navigation for buttons.\n */\n private onNavigationButtonArrowLeft(e: KeyboardEvent, index: number): void {\n if (this.isFirstButton(index)) {\n const playButton = this.playButton();\n if (playButton) {\n this.focusOnButton(playButton);\n }\n const pauseButton = this.pauseButton();\n if (pauseButton) {\n this.focusOnButton(pauseButton);\n }\n } else {\n setTimeout(() => {\n this.goToPreviousSlide(false);\n const button: ElementRef = this.navigationButtons().at(this.getCurrentSlideIndex());\n this.focusOnButton(button);\n }, this.TIMEOUT_INTERVAL);\n e.preventDefault();\n }\n }\n\n /**\n * Observes screen breakpoint changes to adjust autoplay and layout behavior.\n */\n private observeBreakpointChanges(): void {\n this.cdkBreakpointObserver\n .observe([\n '(max-width: 768px)',\n '(max-width: 997px)',\n '(min-width: 998px)',\n '(min-width: 1140px)',\n '(min-width: 1140px) and (max-width: 1260px)',\n ])\n .pipe(takeUntil(this.destroy$))\n .subscribe((result) => {\n this.isMobileBreakpoint = result.breakpoints['(max-width: 768px)'];\n this.isSmallTabletBreakpoint = result.breakpoints['(max-width: 997px)'];\n this.isTabletBreakpoint = result.breakpoints['(min-width: 998px)'];\n this.isLargeBreakpoint = result.breakpoints['(min-width: 1140px)'];\n this.isDesktopBreakpoint = result.breakpoints['(min-width: 1140px) and (max-width: 1260px)'];\n const isAutoplay = this.isAutoplay();\n if (this.isMobileBreakpoint && !isAutoplay) {\n this.stopPlaying();\n }\n\n if (this.isTabletBreakpoint) {\n if (isAutoplay || isAutoplay === undefined) {\n this.startPlaying();\n }\n }\n });\n }\n\n /**\n * Observes changes to the carousel's container element size using ResizeObserver.\n */\n private observeElementSizeChanges(): void {\n setTimeout(() => {\n if (this.isLargeBreakpoint) {\n this.checkBannerHeights();\n } else {\n this.resetHeight();\n }\n }, this.TIMEOUT_INTERVAL);\n }\n\n /**\n * Normalizes the height of all banners to match the tallest banner.\n */\n private checkBannerHeights(): void {\n // First, let each banner calculate its own height (like ECL's bannerInstance.setHeight(ratio))\n this.slides().forEach((slide) => {\n const banner = slide.banner();\n if (banner) {\n banner.calculateHeight();\n }\n });\n\n const heightValues = this.slides().map((slide) => {\n const el = slide.banner()?.el.nativeElement;\n if (!el) return undefined;\n\n const styleHeight = el.style.height;\n\n if (styleHeight === 'auto' || styleHeight === '') {\n return el.offsetHeight;\n }\n\n const height = parseInt(styleHeight, 10);\n if (Number.isNaN(height) || height === 100) {\n return 1;\n }\n\n return height;\n });\n\n const elementHeights = heightValues.filter((h) => h !== undefined) as number[];\n const tallestElementHeight = Math.max(...elementHeights);\n\n const slides = this.slides();\n if (tallestElementHeight > 1 && elementHeights.length === slides.length) {\n slides.forEach((slide) => {\n const banner = slide.banner();\n if (!banner) return;\n\n const el = banner.el.nativeElement;\n const bannerImage = banner.eclBannerImage;\n const bannerVideo = banner.eclBannerVideo;\n\n this.renderer2.setStyle(el, 'height', `${tallestElementHeight}px`);\n this.renderer2.setStyle(el, 'aspect-ratio', 'auto');\n\n if (bannerImage) {\n this.renderer2.setStyle(bannerImage.el.nativeElement, 'aspect-ratio', 'auto');\n }\n if (bannerVideo) {\n this.renderer2.setStyle(bannerVideo.el.nativeElement, 'aspect-ratio', 'auto');\n }\n });\n this.resetHiddenItems();\n }\n }\n\n /**\n * Clears all explicit banner height and aspect ratio styling for smaller breakpoints.\n */\n private resetHeight(): void {\n this.slides().forEach((slide) => {\n const banner = slide.banner();\n if (banner) {\n const bannerImage = banner.eclBannerImage;\n const bannerVideo = banner.eclBannerVideo;\n this.renderer2.removeStyle(banner.el.nativeElement, 'height');\n this.renderer2.removeStyle(banner.el.nativeElement, 'aspect-ratio');\n if (bannerImage) {\n this.renderer2.removeStyle(bannerImage.el.nativeElement, 'aspect-ratio');\n }\n if (bannerVideo) {\n this.renderer2.removeStyle(bannerVideo.el.nativeElement, 'aspect-ratio');\n }\n }\n });\n this.resetHiddenItems();\n }\n\n /**\n * Re-renders the content of hidden buffer items after style reset.\n */\n private resetHiddenItems(): void {\n if (this.hasControls()) {\n this.firstHiddenItem().el.nativeElement.innerHTML = this.getLastContentChild();\n this.lastHiddenItem().el.nativeElement.innerHTML = this.getFirstContentChild();\n }\n }\n}\n",
|
|
50992
50909
|
"assetsDirs": [],
|
|
50993
50910
|
"styleUrlsData": "",
|
|
50994
50911
|
"stylesData": "\n .ecl-carousel__slides {\n transition-duration: 0.4s;\n }\n \n",
|
|
@@ -51073,7 +50990,7 @@
|
|
|
51073
50990
|
},
|
|
51074
50991
|
{
|
|
51075
50992
|
"name": "EclCarouselItemComponent",
|
|
51076
|
-
"id": "component-EclCarouselItemComponent-
|
|
50993
|
+
"id": "component-EclCarouselItemComponent-61598d42368be99e298cb595f5e141f5ff67636b905bbe7f98c8cdea6654af12f62fc5556898714c15edf566542d32247cd8d004ecc2cd420f0279fc1f89e4d5",
|
|
51077
50994
|
"file": "packages/ecl/components/ecl-carousel/ecl-carousel-item.component.ts",
|
|
51078
50995
|
"encapsulation": [],
|
|
51079
50996
|
"entryComponents": [],
|
|
@@ -51094,28 +51011,37 @@
|
|
|
51094
51011
|
"hostDirectives": [],
|
|
51095
51012
|
"inputsClass": [
|
|
51096
51013
|
{
|
|
51097
|
-
"coverageIgnore": false,
|
|
51098
51014
|
"name": "id",
|
|
51015
|
+
"coverageIgnore": false,
|
|
51099
51016
|
"deprecated": false,
|
|
51100
51017
|
"deprecationMessage": "",
|
|
51101
|
-
"rawdescription": "\n\nThe unique identifier of the slide.\n",
|
|
51102
|
-
"description": "<p>The unique identifier of the slide.</p>\n",
|
|
51103
|
-
"line": 52,
|
|
51104
51018
|
"type": "string",
|
|
51105
|
-
"
|
|
51019
|
+
"indexKey": "",
|
|
51020
|
+
"optional": false,
|
|
51021
|
+
"description": "<p>The unique identifier of the slide.</p>\n",
|
|
51022
|
+
"line": 54,
|
|
51023
|
+
"rawdescription": "\n\nThe unique identifier of the slide.\n",
|
|
51024
|
+
"modifierKind": [
|
|
51025
|
+
148
|
|
51026
|
+
],
|
|
51027
|
+
"required": false
|
|
51106
51028
|
},
|
|
51107
51029
|
{
|
|
51108
|
-
"coverageIgnore": false,
|
|
51109
|
-
"required": false,
|
|
51110
51030
|
"name": "isCurrent",
|
|
51031
|
+
"coverageIgnore": false,
|
|
51111
51032
|
"defaultValue": "false",
|
|
51112
51033
|
"deprecated": false,
|
|
51113
51034
|
"deprecationMessage": "",
|
|
51114
|
-
"rawdescription": "\n\nIndicates whether this slide is currently active/visible.\nAutomatically coerced to a boolean value.\n",
|
|
51115
|
-
"description": "<p>Indicates whether this slide is currently active/visible.\nAutomatically coerced to a boolean value.</p>\n",
|
|
51116
|
-
"line": 58,
|
|
51117
51035
|
"type": "boolean",
|
|
51118
|
-
"
|
|
51036
|
+
"indexKey": "",
|
|
51037
|
+
"optional": false,
|
|
51038
|
+
"description": "<p>Input controlling whether this slide starts as the active/visible one.\nAutomatically coerced to a boolean value.</p>\n",
|
|
51039
|
+
"line": 60,
|
|
51040
|
+
"rawdescription": "\n\nInput controlling whether this slide starts as the active/visible one.\nAutomatically coerced to a boolean value.\n",
|
|
51041
|
+
"modifierKind": [
|
|
51042
|
+
148
|
|
51043
|
+
],
|
|
51044
|
+
"required": false
|
|
51119
51045
|
},
|
|
51120
51046
|
{
|
|
51121
51047
|
"name": "class",
|
|
@@ -51186,7 +51112,7 @@
|
|
|
51186
51112
|
"indexKey": "",
|
|
51187
51113
|
"optional": false,
|
|
51188
51114
|
"description": "<p>Emits an event when the slide is clicked.</p>\n",
|
|
51189
|
-
"line":
|
|
51115
|
+
"line": 72,
|
|
51190
51116
|
"rawdescription": "\n\nEmits an event when the slide is clicked.\n",
|
|
51191
51117
|
"modifierKind": [
|
|
51192
51118
|
148
|
|
@@ -51218,14 +51144,18 @@
|
|
|
51218
51144
|
{
|
|
51219
51145
|
"name": "ariaLabel",
|
|
51220
51146
|
"coverageIgnore": false,
|
|
51147
|
+
"defaultValue": "signal<string | undefined>(undefined)",
|
|
51221
51148
|
"deprecated": false,
|
|
51222
51149
|
"deprecationMessage": "",
|
|
51223
|
-
"type": "
|
|
51150
|
+
"type": "unknown",
|
|
51224
51151
|
"indexKey": "",
|
|
51225
51152
|
"optional": false,
|
|
51226
51153
|
"description": "<p>The aria-label for the slide, assigned dynamically by the carousel.</p>\n",
|
|
51227
|
-
"line":
|
|
51228
|
-
"rawdescription": "\n\nThe aria-label for the slide, assigned dynamically by the carousel.\n"
|
|
51154
|
+
"line": 49,
|
|
51155
|
+
"rawdescription": "\n\nThe aria-label for the slide, assigned dynamically by the carousel.\n",
|
|
51156
|
+
"modifierKind": [
|
|
51157
|
+
148
|
|
51158
|
+
]
|
|
51229
51159
|
},
|
|
51230
51160
|
{
|
|
51231
51161
|
"name": "banner",
|
|
@@ -51237,7 +51167,7 @@
|
|
|
51237
51167
|
"indexKey": "",
|
|
51238
51168
|
"optional": false,
|
|
51239
51169
|
"description": "<p>Optionally captures a banner component projected into the slide.</p>\n",
|
|
51240
|
-
"line":
|
|
51170
|
+
"line": 77,
|
|
51241
51171
|
"rawdescription": "\n\nOptionally captures a banner component projected into the slide.\n",
|
|
51242
51172
|
"modifierKind": [
|
|
51243
51173
|
148
|
|
@@ -51253,22 +51183,39 @@
|
|
|
51253
51183
|
"indexKey": "",
|
|
51254
51184
|
"optional": false,
|
|
51255
51185
|
"description": "",
|
|
51256
|
-
"line":
|
|
51186
|
+
"line": 44,
|
|
51257
51187
|
"rawdescription": "\n"
|
|
51258
51188
|
},
|
|
51259
51189
|
{
|
|
51260
51190
|
"name": "index",
|
|
51261
51191
|
"coverageIgnore": false,
|
|
51192
|
+
"defaultValue": "signal<number | undefined>(undefined)",
|
|
51262
51193
|
"deprecated": false,
|
|
51263
51194
|
"deprecationMessage": "",
|
|
51264
|
-
"type": "
|
|
51195
|
+
"type": "unknown",
|
|
51265
51196
|
"indexKey": "",
|
|
51266
51197
|
"optional": false,
|
|
51267
51198
|
"description": "<p>Internal slide index, assigned dynamically by the carousel.</p>\n",
|
|
51268
|
-
"line":
|
|
51199
|
+
"line": 82,
|
|
51269
51200
|
"rawdescription": "\n\nInternal slide index, assigned dynamically by the carousel.\n",
|
|
51270
51201
|
"modifierKind": [
|
|
51271
|
-
|
|
51202
|
+
148
|
|
51203
|
+
]
|
|
51204
|
+
},
|
|
51205
|
+
{
|
|
51206
|
+
"name": "isCurrent",
|
|
51207
|
+
"coverageIgnore": false,
|
|
51208
|
+
"defaultValue": "linkedSignal(() => this.isCurrentInput())",
|
|
51209
|
+
"deprecated": false,
|
|
51210
|
+
"deprecationMessage": "",
|
|
51211
|
+
"type": "unknown",
|
|
51212
|
+
"indexKey": "",
|
|
51213
|
+
"optional": false,
|
|
51214
|
+
"description": "<p>Indicates whether this slide is currently active/visible.\nSeeded from the <code>isCurrent</code> input but can be updated imperatively by the\nparent carousel as the user navigates between slides.</p>\n",
|
|
51215
|
+
"line": 67,
|
|
51216
|
+
"rawdescription": "\n\nIndicates whether this slide is currently active/visible.\nSeeded from the `isCurrent` input but can be updated imperatively by the\nparent carousel as the user navigates between slides.\n",
|
|
51217
|
+
"modifierKind": [
|
|
51218
|
+
148
|
|
51272
51219
|
]
|
|
51273
51220
|
}
|
|
51274
51221
|
],
|
|
@@ -51280,20 +51227,11 @@
|
|
|
51280
51227
|
"optional": false,
|
|
51281
51228
|
"returnType": "void",
|
|
51282
51229
|
"typeParameters": [],
|
|
51283
|
-
"line":
|
|
51230
|
+
"line": 94,
|
|
51284
51231
|
"deprecated": false,
|
|
51285
51232
|
"deprecationMessage": "",
|
|
51286
51233
|
"rawdescription": "\n\nHandles click events on the slide and emits a slideClick event.\n",
|
|
51287
|
-
"description": "<p>Handles click events on the slide and emits a slideClick event.</p>\n"
|
|
51288
|
-
"decorators": [
|
|
51289
|
-
{
|
|
51290
|
-
"name": "HostListener",
|
|
51291
|
-
"stringifiedArguments": "'click'"
|
|
51292
|
-
}
|
|
51293
|
-
],
|
|
51294
|
-
"modifierKind": [
|
|
51295
|
-
171
|
|
51296
|
-
]
|
|
51234
|
+
"description": "<p>Handles click events on the slide and emits a slideClick event.</p>\n"
|
|
51297
51235
|
},
|
|
51298
51236
|
{
|
|
51299
51237
|
"name": "getCssClasses",
|
|
@@ -51338,32 +51276,20 @@
|
|
|
51338
51276
|
"deprecated": false,
|
|
51339
51277
|
"deprecationMessage": "",
|
|
51340
51278
|
"hostBindings": [],
|
|
51341
|
-
"hostListeners": [
|
|
51342
|
-
{
|
|
51343
|
-
"coverageIgnore": false,
|
|
51344
|
-
"name": "click",
|
|
51345
|
-
"args": [],
|
|
51346
|
-
"argsDecorator": [],
|
|
51347
|
-
"deprecated": false,
|
|
51348
|
-
"deprecationMessage": "",
|
|
51349
|
-
"rawdescription": "\n\nHandles click events on the slide and emits a slideClick event.\n",
|
|
51350
|
-
"description": "<p>Handles click events on the slide and emits a slideClick event.</p>\n",
|
|
51351
|
-
"line": 86
|
|
51352
|
-
}
|
|
51353
|
-
],
|
|
51279
|
+
"hostListeners": [],
|
|
51354
51280
|
"standalone": false,
|
|
51355
51281
|
"imports": [],
|
|
51356
51282
|
"description": "<p>Represents a single item (slide) within the ECL Carousel.\nEach slide can optionally include an EclBannerComponent and supports click events.</p>\n",
|
|
51357
51283
|
"rawdescription": "\n\nRepresents a single item (slide) within the ECL Carousel.\nEach slide can optionally include an EclBannerComponent and supports click events.\n",
|
|
51358
51284
|
"type": "component",
|
|
51359
|
-
"sourceCode": "import {\n Component,\n ElementRef,\n
|
|
51285
|
+
"sourceCode": "import {\n Component,\n ElementRef,\n booleanAttribute,\n forwardRef,\n inject,\n input,\n linkedSignal,\n output,\n signal,\n contentChild,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclBannerComponent } from '@eui/ecl/components/ecl-banner';\nimport { EclSlideEvent } from './events/ecl-slide.event';\nimport { EclCarouselItem } from './models/ecl-carousel-item.model';\n\n/**\n * Represents a single item (slide) within the ECL Carousel.\n * Each slide can optionally include an EclBannerComponent and supports click events.\n */\n@Component({\n selector: 'ecl-carousel-item',\n templateUrl: './ecl-carousel-item.component.html',\n host: {\n role: 'tabpanel',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-roledescription]': '\"slide\"',\n '[attr.inert]': '!isCurrent() || undefined',\n '[class]': 'cssClasses',\n '(click)': 'onSlideClick()',\n },\n styles: [\n `\n /* TODO: remove by implementing full ECL specs */\n :host:before {\n left: 0 !important;\n display: none;\n }\n `,\n ],\n})\nexport class EclCarouselItemComponent extends ECLBaseDirective implements EclCarouselItem {\n el = inject(ElementRef);\n\n /**\n * The aria-label for the slide, assigned dynamically by the carousel.\n */\n readonly ariaLabel = signal<string | undefined>(undefined);\n\n /**\n * The unique identifier of the slide.\n */\n readonly id = input<string>();\n\n /**\n * Input controlling whether this slide starts as the active/visible one.\n * Automatically coerced to a boolean value.\n */\n readonly isCurrentInput = input(false, { alias: 'isCurrent', transform: booleanAttribute });\n\n /**\n * Indicates whether this slide is currently active/visible.\n * Seeded from the `isCurrent` input but can be updated imperatively by the\n * parent carousel as the user navigates between slides.\n */\n readonly isCurrent = linkedSignal(() => this.isCurrentInput());\n\n /**\n * Emits an event when the slide is clicked.\n */\n readonly slideClick = output<EclSlideEvent>();\n\n /**\n * Optionally captures a banner component projected into the slide.\n */\n readonly banner = contentChild(forwardRef(() => EclBannerComponent));\n\n /**\n * Internal slide index, assigned dynamically by the carousel.\n */\n readonly index = signal<number | undefined>(undefined);\n\n /**\n * Computes the slide's CSS class.\n */\n get cssClasses(): string {\n return [super.getCssClasses('ecl-carousel__slide')].join(' ').trim();\n }\n\n /**\n * Handles click events on the slide and emits a slideClick event.\n */\n onSlideClick(): void {\n this.slideClick.emit(new EclSlideEvent(this));\n }\n}\n",
|
|
51360
51286
|
"assetsDirs": [],
|
|
51361
51287
|
"styleUrlsData": "",
|
|
51362
51288
|
"stylesData": "\n /* TODO: remove by implementing full ECL specs */\n :host:before {\n left: 0 !important;\n display: none;\n }\n \n",
|
|
51363
51289
|
"jsdoctags": [
|
|
51364
51290
|
{
|
|
51365
|
-
"pos":
|
|
51366
|
-
"end":
|
|
51291
|
+
"pos": 431,
|
|
51292
|
+
"end": 585,
|
|
51367
51293
|
"kind": 321,
|
|
51368
51294
|
"id": 0,
|
|
51369
51295
|
"flags": 16777216,
|
|
@@ -51385,7 +51311,7 @@
|
|
|
51385
51311
|
"name": "cssClasses",
|
|
51386
51312
|
"type": "string",
|
|
51387
51313
|
"returnType": "string",
|
|
51388
|
-
"line":
|
|
51314
|
+
"line": 87,
|
|
51389
51315
|
"rawdescription": "\n\nComputes the slide's CSS class.\n",
|
|
51390
51316
|
"description": "<p>Computes the slide's CSS class.</p>\n"
|
|
51391
51317
|
}
|
|
@@ -51414,7 +51340,7 @@
|
|
|
51414
51340
|
},
|
|
51415
51341
|
{
|
|
51416
51342
|
"name": "EclCategoryFilterComponent",
|
|
51417
|
-
"id": "component-EclCategoryFilterComponent-
|
|
51343
|
+
"id": "component-EclCategoryFilterComponent-bc641fe099a962ae0cd9f4ff1085d7504897879f32fc6a502be3ab3a061037b06d0cacccb1d8af12dc39b0eb514cbe1747d637507161ef7da6be8a580a8ab4a9",
|
|
51418
51344
|
"file": "packages/ecl/components/ecl-category-filter/ecl-category-filter/ecl-category-filter.component.ts",
|
|
51419
51345
|
"encapsulation": [],
|
|
51420
51346
|
"entryComponents": [],
|
|
@@ -51435,17 +51361,21 @@
|
|
|
51435
51361
|
"hostDirectives": [],
|
|
51436
51362
|
"inputsClass": [
|
|
51437
51363
|
{
|
|
51438
|
-
"coverageIgnore": false,
|
|
51439
51364
|
"name": "aria-label",
|
|
51440
|
-
"
|
|
51365
|
+
"coverageIgnore": false,
|
|
51441
51366
|
"defaultValue": "'Category filter'",
|
|
51442
51367
|
"deprecated": false,
|
|
51443
51368
|
"deprecationMessage": "",
|
|
51444
|
-
"
|
|
51369
|
+
"type": "string | null",
|
|
51370
|
+
"indexKey": "",
|
|
51371
|
+
"optional": false,
|
|
51445
51372
|
"description": "<p>Aria-label for the navigation role. Defaults to "Category filter".</p>\n",
|
|
51446
51373
|
"line": 45,
|
|
51447
|
-
"
|
|
51448
|
-
"
|
|
51374
|
+
"rawdescription": "\n\nAria-label for the navigation role. Defaults to \"Category filter\".\n",
|
|
51375
|
+
"modifierKind": [
|
|
51376
|
+
148
|
|
51377
|
+
],
|
|
51378
|
+
"required": false
|
|
51449
51379
|
},
|
|
51450
51380
|
{
|
|
51451
51381
|
"name": "currentItemId",
|
|
@@ -51642,7 +51572,7 @@
|
|
|
51642
51572
|
"description": "",
|
|
51643
51573
|
"rawdescription": "\n",
|
|
51644
51574
|
"type": "component",
|
|
51645
|
-
"sourceCode": "import {\n Component,\n forwardRef,\n
|
|
51575
|
+
"sourceCode": "import {\n Component,\n forwardRef,\n OnDestroy,\n input,\n contentChild,\n contentChildren,\n effect,\n untracked,\n} from '@angular/core';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { Subject, takeUntil } from 'rxjs';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclCategoryFilterItem } from '../models/ecl-category-filter-item.model';\nimport { EclCategoryFilterItemSelectEvent } from '../events/ecl-category-filter-item-select.event';\nimport { EclCategoryFilterItemComponent } from '../ecl-category-filter-list';\nimport { EclCategoryFilterListComponent } from '../ecl-category-filter-list';\n\n@Component({\n selector: 'ecl-category-filter',\n templateUrl: './ecl-category-filter.component.html',\n host: {\n 'class': 'ecl-category-filter',\n 'role': 'navigation',\n '[attr.aria-label]': 'ariaLabel()',\n },\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class EclCategoryFilterComponent extends ECLBaseDirective implements OnDestroy {\n /**\n * ID of the currently selected item. When provided, the item with the matching ID\n * will be marked as current and automatically expanded on initialization.\n */\n readonly currentItemId = input<string>(undefined);\n\n /**\n * Aria-label for the navigation role. Defaults to \"Category filter\".\n */\n readonly ariaLabel = input<string | null>('Category filter', { alias: 'aria-label' });\n\n readonly eclCategoryList = contentChild(forwardRef(() => EclCategoryFilterListComponent));\n\n /**\n * Signal-based query for all descendant category filter items.\n */\n readonly eclCategoryFilterItemsAll = contentChildren<EclCategoryFilterItemComponent>(\n forwardRef(() => EclCategoryFilterItemComponent), { descendants: true }\n );\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private readonly initializedItems = new WeakSet<EclCategoryFilterItemComponent>();\n\n constructor() {\n super();\n\n // Reacts to item changes and performs all setup:\n // - subscribes to itemSelect events (guarded by WeakSet)\n // - assigns IDs where missing\n // - propagates levels through the tree\n // - handles preselection of currentItemId\n effect(() => {\n const items = this.eclCategoryFilterItemsAll();\n untracked(() => {\n for (const item of items) {\n this.connectCategoryfilterItemEventsOnce(item);\n }\n this.setIds(items);\n this.eclCategoryList().updateChildrenItemsLevel(0);\n\n if (this.currentItemId() !== undefined) {\n this.setPreselectedCurrentItem();\n }\n });\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n private connectCategoryfilterItemEventsOnce(item: EclCategoryFilterItemComponent): void {\n if (this.initializedItems.has(item)) return;\n\n this.initializedItems.add(item);\n this.connectCategoryfilterItemEvents(item);\n }\n\n private setIds(items: readonly EclCategoryFilterItemComponent[]): void {\n for (const item of items) {\n if (!item.id()) {\n item.setFallbackId(crypto.randomUUID());\n }\n const eclCategoryList = item.eclCategoryList();\n if (eclCategoryList && !eclCategoryList.id()) {\n eclCategoryList.id.set(`${item.id()}-list`);\n }\n }\n }\n\n private connectCategoryfilterItemEvents(item: EclCategoryFilterItemComponent): void {\n outputToObservable(item.itemSelect).pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onItemSelected(evt);\n });\n }\n\n private onItemSelected(evt: EclCategoryFilterItemSelectEvent): void {\n if (evt.item.isRootItem) {\n this.closeAllItemsButOne(evt.item);\n } else {\n this.deselectAllItemsButOne(evt.item);\n }\n }\n\n private setPreselectedCurrentItem(): void {\n const items = this.eclCategoryFilterItemsAll();\n const currItem = items.find((item) => item.id() === this.currentItemId());\n if (currItem) {\n currItem.isCurrent.set(true);\n if (currItem.hasChildren) {\n currItem.isExpanded.set(true);\n }\n this.expandParents(currItem);\n }\n }\n\n private expandParents(currItem: EclCategoryFilterItem): void {\n if (currItem.isRootItem) {\n return;\n }\n const items = this.eclCategoryFilterItemsAll();\n const parent = items.find(\n (item) => item.hasChildren && item.children.find((child) => child.id() === currItem.id()) !== undefined,\n );\n if (parent) {\n parent.isExpanded.set(true);\n this.expandParents(parent);\n }\n }\n\n private closeAllItemsButOne(item: EclCategoryFilterItem): void {\n const items = this.eclCategoryFilterItemsAll();\n for (const it of items) {\n if (it !== item) {\n it.isExpanded.set(false);\n it.isCurrent.set(false);\n }\n }\n }\n\n private deselectAllItemsButOne(item: EclCategoryFilterItem): void {\n const items = this.eclCategoryFilterItemsAll();\n for (const it of items) {\n if (it !== item) {\n it.isCurrent.set(false);\n }\n }\n }\n}\n",
|
|
51646
51576
|
"assetsDirs": [],
|
|
51647
51577
|
"styleUrlsData": "",
|
|
51648
51578
|
"stylesData": "\n :host {\n display: block;\n }\n \n",
|
|
@@ -51678,7 +51608,7 @@
|
|
|
51678
51608
|
},
|
|
51679
51609
|
{
|
|
51680
51610
|
"name": "EclCategoryFilterItemComponent",
|
|
51681
|
-
"id": "component-EclCategoryFilterItemComponent-
|
|
51611
|
+
"id": "component-EclCategoryFilterItemComponent-192af51ae114c8c2a94379b9ee5bbe0a13b1b17964743d1f862ce1e5a56b572a52dcf8c6eb0df495fad2fa0e887039c5d2eda627704d9139a16d9ec0900e43b7",
|
|
51682
51612
|
"file": "packages/ecl/components/ecl-category-filter/ecl-category-filter-list/ecl-category-filter-item.component.ts",
|
|
51683
51613
|
"encapsulation": [],
|
|
51684
51614
|
"entryComponents": [],
|
|
@@ -51697,18 +51627,24 @@
|
|
|
51697
51627
|
"hostDirectives": [],
|
|
51698
51628
|
"inputsClass": [
|
|
51699
51629
|
{
|
|
51630
|
+
"name": "href",
|
|
51700
51631
|
"coverageIgnore": false,
|
|
51701
|
-
"
|
|
51632
|
+
"defaultValue": "undefined",
|
|
51702
51633
|
"deprecated": false,
|
|
51703
51634
|
"deprecationMessage": "",
|
|
51704
|
-
"rawdescription": "\n\nUnique identifier for the item. Used to manage selection state.\n",
|
|
51705
|
-
"description": "<p>Unique identifier for the item. Used to manage selection state.</p>\n",
|
|
51706
|
-
"line": 32,
|
|
51707
51635
|
"type": "string",
|
|
51708
|
-
"
|
|
51636
|
+
"indexKey": "",
|
|
51637
|
+
"optional": false,
|
|
51638
|
+
"description": "<p>Link URL associated with this category filter item.\nIf not provided, the item acts as a toggle only.</p>\n",
|
|
51639
|
+
"line": 27,
|
|
51640
|
+
"rawdescription": "\n\nLink URL associated with this category filter item.\nIf not provided, the item acts as a toggle only.\n",
|
|
51641
|
+
"modifierKind": [
|
|
51642
|
+
148
|
|
51643
|
+
],
|
|
51644
|
+
"required": false
|
|
51709
51645
|
},
|
|
51710
51646
|
{
|
|
51711
|
-
"name": "
|
|
51647
|
+
"name": "id",
|
|
51712
51648
|
"coverageIgnore": false,
|
|
51713
51649
|
"defaultValue": "undefined",
|
|
51714
51650
|
"deprecated": false,
|
|
@@ -51716,9 +51652,9 @@
|
|
|
51716
51652
|
"type": "string",
|
|
51717
51653
|
"indexKey": "",
|
|
51718
51654
|
"optional": false,
|
|
51719
|
-
"description": "<p>
|
|
51720
|
-
"line":
|
|
51721
|
-
"rawdescription": "\n\
|
|
51655
|
+
"description": "<p>Input for the unique identifier of the item.\nWhen omitted, the parent assigns a generated fallback id.</p>\n",
|
|
51656
|
+
"line": 33,
|
|
51657
|
+
"rawdescription": "\n\nInput for the unique identifier of the item.\nWhen omitted, the parent assigns a generated fallback id.\n",
|
|
51722
51658
|
"modifierKind": [
|
|
51723
51659
|
148
|
|
51724
51660
|
],
|
|
@@ -51787,13 +51723,18 @@
|
|
|
51787
51723
|
{
|
|
51788
51724
|
"name": "itemSelect",
|
|
51789
51725
|
"coverageIgnore": false,
|
|
51790
|
-
"defaultValue": "new EventEmitter<EclCategoryFilterItemSelectEvent>()",
|
|
51791
51726
|
"deprecated": false,
|
|
51792
51727
|
"deprecationMessage": "",
|
|
51793
|
-
"
|
|
51728
|
+
"type": "EclCategoryFilterItemSelectEvent",
|
|
51729
|
+
"indexKey": "",
|
|
51730
|
+
"optional": false,
|
|
51794
51731
|
"description": "<p>Emits when the item is selected by the user (clicked).</p>\n",
|
|
51795
|
-
"line":
|
|
51796
|
-
"
|
|
51732
|
+
"line": 44,
|
|
51733
|
+
"rawdescription": "\n\nEmits when the item is selected by the user (clicked).\n",
|
|
51734
|
+
"modifierKind": [
|
|
51735
|
+
148
|
|
51736
|
+
],
|
|
51737
|
+
"required": false
|
|
51797
51738
|
},
|
|
51798
51739
|
{
|
|
51799
51740
|
"name": "class",
|
|
@@ -51827,11 +51768,59 @@
|
|
|
51827
51768
|
"indexKey": "",
|
|
51828
51769
|
"optional": false,
|
|
51829
51770
|
"description": "<p>Child list component if the item has nested children.</p>\n",
|
|
51830
|
-
"line":
|
|
51771
|
+
"line": 61,
|
|
51831
51772
|
"rawdescription": "\n\nChild list component if the item has nested children.\n",
|
|
51832
51773
|
"modifierKind": [
|
|
51833
51774
|
148
|
|
51834
51775
|
]
|
|
51776
|
+
},
|
|
51777
|
+
{
|
|
51778
|
+
"name": "id",
|
|
51779
|
+
"coverageIgnore": false,
|
|
51780
|
+
"defaultValue": "computed(() => this.idInput() ?? this.fallbackId())",
|
|
51781
|
+
"deprecated": false,
|
|
51782
|
+
"deprecationMessage": "",
|
|
51783
|
+
"type": "unknown",
|
|
51784
|
+
"indexKey": "",
|
|
51785
|
+
"optional": false,
|
|
51786
|
+
"description": "<p>Unique identifier for the item. Used to manage selection state.\nResolves to the <code>id</code> input when provided, otherwise the parent-assigned fallback.</p>\n",
|
|
51787
|
+
"line": 39,
|
|
51788
|
+
"rawdescription": "\n\nUnique identifier for the item. Used to manage selection state.\nResolves to the `id` input when provided, otherwise the parent-assigned fallback.\n",
|
|
51789
|
+
"modifierKind": [
|
|
51790
|
+
148
|
|
51791
|
+
]
|
|
51792
|
+
},
|
|
51793
|
+
{
|
|
51794
|
+
"name": "isCurrent",
|
|
51795
|
+
"coverageIgnore": false,
|
|
51796
|
+
"defaultValue": "signal(false)",
|
|
51797
|
+
"deprecated": false,
|
|
51798
|
+
"deprecationMessage": "",
|
|
51799
|
+
"type": "unknown",
|
|
51800
|
+
"indexKey": "",
|
|
51801
|
+
"optional": false,
|
|
51802
|
+
"description": "<p>Whether the item is currently selected.\nWritable so that the parent can update selection as the user navigates.</p>\n",
|
|
51803
|
+
"line": 56,
|
|
51804
|
+
"rawdescription": "\n\nWhether the item is currently selected.\nWritable so that the parent can update selection as the user navigates.\n",
|
|
51805
|
+
"modifierKind": [
|
|
51806
|
+
148
|
|
51807
|
+
]
|
|
51808
|
+
},
|
|
51809
|
+
{
|
|
51810
|
+
"name": "isExpanded",
|
|
51811
|
+
"coverageIgnore": false,
|
|
51812
|
+
"defaultValue": "signal(false)",
|
|
51813
|
+
"deprecated": false,
|
|
51814
|
+
"deprecationMessage": "",
|
|
51815
|
+
"type": "unknown",
|
|
51816
|
+
"indexKey": "",
|
|
51817
|
+
"optional": false,
|
|
51818
|
+
"description": "<p>Whether the item is currently expanded (open).\nWritable so that the parent can toggle it as the tree state changes.</p>\n",
|
|
51819
|
+
"line": 50,
|
|
51820
|
+
"rawdescription": "\n\nWhether the item is currently expanded (open).\nWritable so that the parent can toggle it as the tree state changes.\n",
|
|
51821
|
+
"modifierKind": [
|
|
51822
|
+
148
|
|
51823
|
+
]
|
|
51835
51824
|
}
|
|
51836
51825
|
],
|
|
51837
51826
|
"methodsClass": [
|
|
@@ -51851,7 +51840,7 @@
|
|
|
51851
51840
|
"optional": false,
|
|
51852
51841
|
"returnType": "void",
|
|
51853
51842
|
"typeParameters": [],
|
|
51854
|
-
"line":
|
|
51843
|
+
"line": 125,
|
|
51855
51844
|
"deprecated": false,
|
|
51856
51845
|
"deprecationMessage": "",
|
|
51857
51846
|
"rawdescription": "\n\nHandles user click interaction, updates state and emits selection event.\nPrevents navigation if no `href` is defined.\n",
|
|
@@ -51870,6 +51859,41 @@
|
|
|
51870
51859
|
}
|
|
51871
51860
|
]
|
|
51872
51861
|
},
|
|
51862
|
+
{
|
|
51863
|
+
"name": "setFallbackId",
|
|
51864
|
+
"coverageIgnore": false,
|
|
51865
|
+
"args": [
|
|
51866
|
+
{
|
|
51867
|
+
"name": "id",
|
|
51868
|
+
"type": "string",
|
|
51869
|
+
"optional": false,
|
|
51870
|
+
"dotDotDotToken": false,
|
|
51871
|
+
"deprecated": false,
|
|
51872
|
+
"deprecationMessage": ""
|
|
51873
|
+
}
|
|
51874
|
+
],
|
|
51875
|
+
"optional": false,
|
|
51876
|
+
"returnType": "void",
|
|
51877
|
+
"typeParameters": [],
|
|
51878
|
+
"line": 138,
|
|
51879
|
+
"deprecated": false,
|
|
51880
|
+
"deprecationMessage": "",
|
|
51881
|
+
"rawdescription": "\n\nAssigns a fallback id. Used by the parent category filter when no `id` input was provided.\n",
|
|
51882
|
+
"description": "<p>Assigns a fallback id. Used by the parent category filter when no <code>id</code> input was provided.</p>\n",
|
|
51883
|
+
"jsdoctags": [
|
|
51884
|
+
{
|
|
51885
|
+
"name": "id",
|
|
51886
|
+
"type": "string",
|
|
51887
|
+
"optional": false,
|
|
51888
|
+
"dotDotDotToken": false,
|
|
51889
|
+
"deprecated": false,
|
|
51890
|
+
"deprecationMessage": "",
|
|
51891
|
+
"tagName": {
|
|
51892
|
+
"text": "param"
|
|
51893
|
+
}
|
|
51894
|
+
}
|
|
51895
|
+
]
|
|
51896
|
+
},
|
|
51873
51897
|
{
|
|
51874
51898
|
"name": "getCssClasses",
|
|
51875
51899
|
"coverageIgnore": false,
|
|
@@ -51926,7 +51950,7 @@
|
|
|
51926
51950
|
"description": "",
|
|
51927
51951
|
"rawdescription": "\n",
|
|
51928
51952
|
"type": "component",
|
|
51929
|
-
"sourceCode": "import { Component,
|
|
51953
|
+
"sourceCode": "import { Component, computed, forwardRef, input, output, contentChild, signal } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclCategoryFilterItem } from '../models/ecl-category-filter-item.model';\nimport { EclCategoryFilterItemSelectEvent } from '../events/ecl-category-filter-item-select.event';\nimport { EclCategoryFilterListComponent } from './ecl-category-filter-list.component';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ecl-category-filter-item',\n templateUrl: './ecl-category-filter-item.component.html',\n imports: [\n NgTemplateOutlet,\n ...EUI_ECL_ICON,\n ],\n host: {\n 'class': 'ecl-category-filter__list-item',\n 'role': 'listitem',\n '[class.ecl-category-filter__list-item--open]': 'hasChildren ? isExpanded() : null',\n },\n})\nexport class EclCategoryFilterItemComponent extends ECLBaseDirective implements EclCategoryFilterItem {\n /**\n * Link URL associated with this category filter item.\n * If not provided, the item acts as a toggle only.\n */\n readonly href = input<string>(undefined);\n\n /**\n * Input for the unique identifier of the item.\n * When omitted, the parent assigns a generated fallback id.\n */\n readonly idInput = input<string>(undefined, { alias: 'id' });\n\n /**\n * Unique identifier for the item. Used to manage selection state.\n * Resolves to the `id` input when provided, otherwise the parent-assigned fallback.\n */\n readonly id = computed(() => this.idInput() ?? this.fallbackId());\n\n /**\n * Emits when the item is selected by the user (clicked).\n */\n readonly itemSelect = output<EclCategoryFilterItemSelectEvent>();\n\n /**\n * Whether the item is currently expanded (open).\n * Writable so that the parent can toggle it as the tree state changes.\n */\n readonly isExpanded = signal(false);\n\n /**\n * Whether the item is currently selected.\n * Writable so that the parent can update selection as the user navigates.\n */\n readonly isCurrent = signal(false);\n\n /**\n * Child list component if the item has nested children.\n */\n readonly eclCategoryList = contentChild(forwardRef(() => EclCategoryFilterListComponent));\n\n /**\n * Returns the hierarchical level of the item within the tree.\n */\n get level(): number {\n return this._level;\n }\n\n /**\n * Sets the level and updates the level of the child list accordingly.\n */\n set level(value: number) {\n this._level = ++value;\n this.updateChildListLevel(this._level);\n }\n private _level: number;\n\n /**\n * Returns the CSS class for the current level of the item.\n */\n get levelClass(): string {\n return `ecl-category-filter__item--level-${this._level}`;\n }\n\n /**\n * Indicates whether the item has child elements.\n */\n get hasChildren(): boolean {\n return this.eclCategoryList() !== undefined;\n }\n\n /**\n * Returns the child components of this item, if any.\n */\n get children(): readonly EclCategoryFilterItemComponent[] {\n return this.eclCategoryList().children;\n }\n\n /**\n * Returns true if this is a root-level item and has children.\n */\n get isRootItemWithChildren(): boolean {\n return this.hasChildren && this.isRootItem;\n }\n\n /**\n * Returns true if this is a child item and has its own children.\n */\n get isChildItemWithChildren(): boolean {\n return this.hasChildren && !this.isRootItem;\n }\n\n /**\n * Returns true if this is a root-level item (level === 1).\n */\n get isRootItem(): boolean {\n return this.level === 1;\n }\n\n /**\n * Handles user click interaction, updates state and emits selection event.\n * Prevents navigation if no `href` is defined.\n */\n onItemClick(evt: MouseEvent): void {\n this.isExpanded.set(!this.isExpanded());\n this.isCurrent.set(true);\n this.itemSelect.emit(new EclCategoryFilterItemSelectEvent(this));\n if (!this.href()) {\n evt.preventDefault();\n }\n evt.stopPropagation();\n }\n\n /**\n * Assigns a fallback id. Used by the parent category filter when no `id` input was provided.\n */\n setFallbackId(id: string): void {\n this.fallbackId.set(id);\n }\n\n /**\n * Fallback id assigned by the parent when no `id` input was provided.\n */\n private readonly fallbackId = signal<string | undefined>(undefined);\n\n private updateChildListLevel(value: number): void {\n const eclCategoryList = this.eclCategoryList();\n if (eclCategoryList) {\n eclCategoryList.level = value;\n }\n }\n}\n",
|
|
51930
51954
|
"assetsDirs": [],
|
|
51931
51955
|
"styleUrlsData": "",
|
|
51932
51956
|
"stylesData": "",
|
|
@@ -51937,94 +51961,6 @@
|
|
|
51937
51961
|
"EclCategoryFilterItem"
|
|
51938
51962
|
],
|
|
51939
51963
|
"accessors": {
|
|
51940
|
-
"isExpanded": {
|
|
51941
|
-
"name": "isExpanded",
|
|
51942
|
-
"setSignature": {
|
|
51943
|
-
"name": "isExpanded",
|
|
51944
|
-
"type": "void",
|
|
51945
|
-
"deprecated": false,
|
|
51946
|
-
"deprecationMessage": "",
|
|
51947
|
-
"args": [
|
|
51948
|
-
{
|
|
51949
|
-
"name": "value",
|
|
51950
|
-
"type": "boolean",
|
|
51951
|
-
"optional": false,
|
|
51952
|
-
"dotDotDotToken": false,
|
|
51953
|
-
"deprecated": false,
|
|
51954
|
-
"deprecationMessage": ""
|
|
51955
|
-
}
|
|
51956
|
-
],
|
|
51957
|
-
"returnType": "void",
|
|
51958
|
-
"line": 46,
|
|
51959
|
-
"rawdescription": "\n",
|
|
51960
|
-
"description": "",
|
|
51961
|
-
"jsdoctags": [
|
|
51962
|
-
{
|
|
51963
|
-
"name": "value",
|
|
51964
|
-
"type": "boolean",
|
|
51965
|
-
"optional": false,
|
|
51966
|
-
"dotDotDotToken": false,
|
|
51967
|
-
"deprecated": false,
|
|
51968
|
-
"deprecationMessage": "",
|
|
51969
|
-
"tagName": {
|
|
51970
|
-
"text": "param"
|
|
51971
|
-
}
|
|
51972
|
-
}
|
|
51973
|
-
]
|
|
51974
|
-
},
|
|
51975
|
-
"getSignature": {
|
|
51976
|
-
"name": "isExpanded",
|
|
51977
|
-
"type": "boolean",
|
|
51978
|
-
"returnType": "boolean",
|
|
51979
|
-
"line": 43,
|
|
51980
|
-
"rawdescription": "\n\nWhether the item is currently expanded (open).\nBacked by a signal so that parent mutations trigger template updates.\n",
|
|
51981
|
-
"description": "<p>Whether the item is currently expanded (open).\nBacked by a signal so that parent mutations trigger template updates.</p>\n"
|
|
51982
|
-
}
|
|
51983
|
-
},
|
|
51984
|
-
"isCurrent": {
|
|
51985
|
-
"name": "isCurrent",
|
|
51986
|
-
"setSignature": {
|
|
51987
|
-
"name": "isCurrent",
|
|
51988
|
-
"type": "void",
|
|
51989
|
-
"deprecated": false,
|
|
51990
|
-
"deprecationMessage": "",
|
|
51991
|
-
"args": [
|
|
51992
|
-
{
|
|
51993
|
-
"name": "value",
|
|
51994
|
-
"type": "boolean",
|
|
51995
|
-
"optional": false,
|
|
51996
|
-
"dotDotDotToken": false,
|
|
51997
|
-
"deprecated": false,
|
|
51998
|
-
"deprecationMessage": ""
|
|
51999
|
-
}
|
|
52000
|
-
],
|
|
52001
|
-
"returnType": "void",
|
|
52002
|
-
"line": 58,
|
|
52003
|
-
"rawdescription": "\n",
|
|
52004
|
-
"description": "",
|
|
52005
|
-
"jsdoctags": [
|
|
52006
|
-
{
|
|
52007
|
-
"name": "value",
|
|
52008
|
-
"type": "boolean",
|
|
52009
|
-
"optional": false,
|
|
52010
|
-
"dotDotDotToken": false,
|
|
52011
|
-
"deprecated": false,
|
|
52012
|
-
"deprecationMessage": "",
|
|
52013
|
-
"tagName": {
|
|
52014
|
-
"text": "param"
|
|
52015
|
-
}
|
|
52016
|
-
}
|
|
52017
|
-
]
|
|
52018
|
-
},
|
|
52019
|
-
"getSignature": {
|
|
52020
|
-
"name": "isCurrent",
|
|
52021
|
-
"type": "boolean",
|
|
52022
|
-
"returnType": "boolean",
|
|
52023
|
-
"line": 55,
|
|
52024
|
-
"rawdescription": "\n\nWhether the item is currently selected.\nBacked by a signal so that parent mutations trigger template updates.\n",
|
|
52025
|
-
"description": "<p>Whether the item is currently selected.\nBacked by a signal so that parent mutations trigger template updates.</p>\n"
|
|
52026
|
-
}
|
|
52027
|
-
},
|
|
52028
51964
|
"level": {
|
|
52029
51965
|
"name": "level",
|
|
52030
51966
|
"setSignature": {
|
|
@@ -52043,7 +51979,7 @@
|
|
|
52043
51979
|
}
|
|
52044
51980
|
],
|
|
52045
51981
|
"returnType": "void",
|
|
52046
|
-
"line":
|
|
51982
|
+
"line": 73,
|
|
52047
51983
|
"rawdescription": "\n\nSets the level and updates the level of the child list accordingly.\n",
|
|
52048
51984
|
"description": "<p>Sets the level and updates the level of the child list accordingly.</p>\n",
|
|
52049
51985
|
"jsdoctags": [
|
|
@@ -52064,7 +52000,7 @@
|
|
|
52064
52000
|
"name": "level",
|
|
52065
52001
|
"type": "number",
|
|
52066
52002
|
"returnType": "number",
|
|
52067
|
-
"line":
|
|
52003
|
+
"line": 66,
|
|
52068
52004
|
"rawdescription": "\n\nReturns the hierarchical level of the item within the tree.\n",
|
|
52069
52005
|
"description": "<p>Returns the hierarchical level of the item within the tree.</p>\n"
|
|
52070
52006
|
}
|
|
@@ -52075,7 +52011,7 @@
|
|
|
52075
52011
|
"name": "levelClass",
|
|
52076
52012
|
"type": "string",
|
|
52077
52013
|
"returnType": "string",
|
|
52078
|
-
"line":
|
|
52014
|
+
"line": 82,
|
|
52079
52015
|
"rawdescription": "\n\nReturns the CSS class for the current level of the item.\n",
|
|
52080
52016
|
"description": "<p>Returns the CSS class for the current level of the item.</p>\n"
|
|
52081
52017
|
}
|
|
@@ -52086,7 +52022,7 @@
|
|
|
52086
52022
|
"name": "hasChildren",
|
|
52087
52023
|
"type": "boolean",
|
|
52088
52024
|
"returnType": "boolean",
|
|
52089
|
-
"line":
|
|
52025
|
+
"line": 89,
|
|
52090
52026
|
"rawdescription": "\n\nIndicates whether the item has child elements.\n",
|
|
52091
52027
|
"description": "<p>Indicates whether the item has child elements.</p>\n"
|
|
52092
52028
|
}
|
|
@@ -52097,7 +52033,7 @@
|
|
|
52097
52033
|
"name": "children",
|
|
52098
52034
|
"type": "unknown",
|
|
52099
52035
|
"returnType": "readonly EclCategoryFilterItemComponent[]",
|
|
52100
|
-
"line":
|
|
52036
|
+
"line": 96,
|
|
52101
52037
|
"rawdescription": "\n\nReturns the child components of this item, if any.\n",
|
|
52102
52038
|
"description": "<p>Returns the child components of this item, if any.</p>\n"
|
|
52103
52039
|
}
|
|
@@ -52108,7 +52044,7 @@
|
|
|
52108
52044
|
"name": "isRootItemWithChildren",
|
|
52109
52045
|
"type": "boolean",
|
|
52110
52046
|
"returnType": "boolean",
|
|
52111
|
-
"line":
|
|
52047
|
+
"line": 103,
|
|
52112
52048
|
"rawdescription": "\n\nReturns true if this is a root-level item and has children.\n",
|
|
52113
52049
|
"description": "<p>Returns true if this is a root-level item and has children.</p>\n"
|
|
52114
52050
|
}
|
|
@@ -52119,7 +52055,7 @@
|
|
|
52119
52055
|
"name": "isChildItemWithChildren",
|
|
52120
52056
|
"type": "boolean",
|
|
52121
52057
|
"returnType": "boolean",
|
|
52122
|
-
"line":
|
|
52058
|
+
"line": 110,
|
|
52123
52059
|
"rawdescription": "\n\nReturns true if this is a child item and has its own children.\n",
|
|
52124
52060
|
"description": "<p>Returns true if this is a child item and has its own children.</p>\n"
|
|
52125
52061
|
}
|
|
@@ -52130,7 +52066,7 @@
|
|
|
52130
52066
|
"name": "isRootItem",
|
|
52131
52067
|
"type": "boolean",
|
|
52132
52068
|
"returnType": "boolean",
|
|
52133
|
-
"line":
|
|
52069
|
+
"line": 117,
|
|
52134
52070
|
"rawdescription": "\n\nReturns true if this is a root-level item (level === 1).\n",
|
|
52135
52071
|
"description": "<p>Returns true if this is a root-level item (level === 1).</p>\n"
|
|
52136
52072
|
}
|
|
@@ -52157,11 +52093,11 @@
|
|
|
52157
52093
|
}
|
|
52158
52094
|
]
|
|
52159
52095
|
},
|
|
52160
|
-
"templateData": "@if (hasChildren) {\n <button\n class=\"ecl-category-filter__item {{ levelClass }}\"\n [class.ecl-category-filter__item--has-children]=\"hasChildren\"\n [class.ecl-category-filter__item--current]=\"isCurrent\"\n [attr.aria-current]=\"isCurrent ? true : null\"\n [attr.aria-expanded]=\"isExpanded\"\n [attr.aria-controls]=\"eclCategoryList()?.id\"\n (click)=\"onItemClick($event)\">\n @if(isChildItemWithChildren) {\n <ecl-icon icon=\"solid-arrow\" size=\"xs\" transform=\"rotate-90\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n }\n @if(isRootItemWithChildren) {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n }\n </button>\n} @else {\n <a\n [href]=\"href()\"\n class=\"ecl-category-filter__item {{ levelClass }}\"\n [class.ecl-category-filter__item--has-children]=\"hasChildren\"\n [class.ecl-category-filter__item--current]=\"isCurrent\"\n [attr.aria-current]=\"isCurrent ? true : null\"\n (click)=\"onItemClick($event)\">\n @if(isChildItemWithChildren) {\n <ecl-icon icon=\"solid-arrow\" size=\"xs\" transform=\"rotate-90\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n }\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n @if(isRootItemWithChildren) {\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n }\n </a>\n}\n<ng-content select=\"ecl-category-filter-list\"></ng-content>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n"
|
|
52096
|
+
"templateData": "@if (hasChildren) {\n <button\n class=\"ecl-category-filter__item {{ levelClass }}\"\n [class.ecl-category-filter__item--has-children]=\"hasChildren\"\n [class.ecl-category-filter__item--current]=\"isCurrent()\"\n [attr.aria-current]=\"isCurrent() ? true : null\"\n [attr.aria-expanded]=\"isExpanded()\"\n [attr.aria-controls]=\"eclCategoryList()?.id()\"\n (click)=\"onItemClick($event)\">\n @if(isChildItemWithChildren) {\n <ecl-icon icon=\"solid-arrow\" size=\"xs\" transform=\"rotate-90\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n }\n @if(isRootItemWithChildren) {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n }\n </button>\n} @else {\n <a\n [href]=\"href()\"\n class=\"ecl-category-filter__item {{ levelClass }}\"\n [class.ecl-category-filter__item--has-children]=\"hasChildren\"\n [class.ecl-category-filter__item--current]=\"isCurrent()\"\n [attr.aria-current]=\"isCurrent() ? true : null\"\n (click)=\"onItemClick($event)\">\n @if(isChildItemWithChildren) {\n <ecl-icon icon=\"solid-arrow\" size=\"xs\" transform=\"rotate-90\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n }\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n @if(isRootItemWithChildren) {\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n }\n </a>\n}\n<ng-content select=\"ecl-category-filter-list\"></ng-content>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n"
|
|
52161
52097
|
},
|
|
52162
52098
|
{
|
|
52163
52099
|
"name": "EclCategoryFilterListComponent",
|
|
52164
|
-
"id": "component-EclCategoryFilterListComponent-
|
|
52100
|
+
"id": "component-EclCategoryFilterListComponent-cbedefc2d4a0798413395ef24590d4e2c4e614e72e78ebccec16288a20a0ee1f39df4c7739d700420478163982df5157b99b58a12bac683feddaa7ad58546163",
|
|
52165
52101
|
"file": "packages/ecl/components/ecl-category-filter/ecl-category-filter-list/ecl-category-filter-list.component.ts",
|
|
52166
52102
|
"encapsulation": [],
|
|
52167
52103
|
"entryComponents": [],
|
|
@@ -52280,14 +52216,18 @@
|
|
|
52280
52216
|
{
|
|
52281
52217
|
"name": "id",
|
|
52282
52218
|
"coverageIgnore": false,
|
|
52219
|
+
"defaultValue": "signal<string | undefined>(undefined)",
|
|
52283
52220
|
"deprecated": false,
|
|
52284
52221
|
"deprecationMessage": "",
|
|
52285
|
-
"type": "
|
|
52222
|
+
"type": "unknown",
|
|
52286
52223
|
"indexKey": "",
|
|
52287
52224
|
"optional": false,
|
|
52288
52225
|
"description": "<p>ID of this list element, referenced by the parent item's aria-controls.</p>\n",
|
|
52289
52226
|
"line": 18,
|
|
52290
|
-
"rawdescription": "\n\nID of this list element, referenced by the parent item's aria-controls.\n"
|
|
52227
|
+
"rawdescription": "\n\nID of this list element, referenced by the parent item's aria-controls.\n",
|
|
52228
|
+
"modifierKind": [
|
|
52229
|
+
148
|
|
52230
|
+
]
|
|
52291
52231
|
}
|
|
52292
52232
|
],
|
|
52293
52233
|
"methodsClass": [
|
|
@@ -52315,8 +52255,8 @@
|
|
|
52315
52255
|
"jsdoctags": [
|
|
52316
52256
|
{
|
|
52317
52257
|
"name": {
|
|
52318
|
-
"pos":
|
|
52319
|
-
"end":
|
|
52258
|
+
"pos": 1830,
|
|
52259
|
+
"end": 1835,
|
|
52320
52260
|
"kind": 80,
|
|
52321
52261
|
"id": 0,
|
|
52322
52262
|
"flags": 16842752,
|
|
@@ -52329,8 +52269,8 @@
|
|
|
52329
52269
|
"deprecated": false,
|
|
52330
52270
|
"deprecationMessage": "",
|
|
52331
52271
|
"tagName": {
|
|
52332
|
-
"pos":
|
|
52333
|
-
"end":
|
|
52272
|
+
"pos": 1824,
|
|
52273
|
+
"end": 1829,
|
|
52334
52274
|
"kind": 80,
|
|
52335
52275
|
"id": 0,
|
|
52336
52276
|
"flags": 16842752,
|
|
@@ -52390,7 +52330,7 @@
|
|
|
52390
52330
|
"description": "",
|
|
52391
52331
|
"rawdescription": "\n",
|
|
52392
52332
|
"type": "component",
|
|
52393
|
-
"sourceCode": "import { Component, forwardRef, contentChildren } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclCategoryFilterItemComponent } from './ecl-category-filter-item.component';\n\n@Component({\n selector: 'ecl-category-filter-list',\n templateUrl: './ecl-category-filter-list.component.html',\n host: {\n 'class': 'ecl-category-filter__list',\n 'role': 'list',\n '[attr.id]': 'id',\n },\n})\nexport class EclCategoryFilterListComponent extends ECLBaseDirective {\n /**\n * ID of this list element, referenced by the parent item's aria-controls.\n */\n id
|
|
52333
|
+
"sourceCode": "import { Component, forwardRef, contentChildren, signal } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclCategoryFilterItemComponent } from './ecl-category-filter-item.component';\n\n@Component({\n selector: 'ecl-category-filter-list',\n templateUrl: './ecl-category-filter-list.component.html',\n host: {\n 'class': 'ecl-category-filter__list',\n 'role': 'list',\n '[attr.id]': 'id()',\n },\n})\nexport class EclCategoryFilterListComponent extends ECLBaseDirective {\n /**\n * ID of this list element, referenced by the parent item's aria-controls.\n */\n readonly id = signal<string | undefined>(undefined);\n\n /**\n * List of all category filter items projected inside this list.\n */\n readonly eclCategoryFilterItems = contentChildren<EclCategoryFilterItemComponent>(forwardRef(() => EclCategoryFilterItemComponent));\n\n /**\n * Gets the nesting level of this list in the category tree.\n */\n get level(): number {\n return this._level;\n }\n\n /**\n * Sets the level of the list and applies it to all its children.\n */\n set level(value: number) {\n this._level = value;\n this.updateChildrenItemsLevel(value);\n }\n private _level: number;\n\n /**\n * Returns true if the list contains one or more category filter items.\n */\n get hasChildren(): boolean {\n const eclCategoryFilterItems = this.eclCategoryFilterItems();\n return eclCategoryFilterItems !== undefined && eclCategoryFilterItems.length > 0;\n }\n\n /**\n * Returns the list of child components.\n */\n get children(): readonly EclCategoryFilterItemComponent[] {\n return this.eclCategoryFilterItems();\n }\n\n /**\n * Propagates the current level to all direct children items.\n * @param value Level value to set on each child.\n */\n updateChildrenItemsLevel(value: number): void {\n const eclCategoryFilterItems = this.eclCategoryFilterItems();\n if (eclCategoryFilterItems) {\n eclCategoryFilterItems.forEach((item) =>\n (item.level = value));\n }\n }\n}\n",
|
|
52394
52334
|
"assetsDirs": [],
|
|
52395
52335
|
"styleUrlsData": "",
|
|
52396
52336
|
"stylesData": "",
|
|
@@ -52478,10 +52418,11 @@
|
|
|
52478
52418
|
},
|
|
52479
52419
|
{
|
|
52480
52420
|
"name": "EclCheckboxHelpComponent",
|
|
52481
|
-
"id": "component-EclCheckboxHelpComponent-
|
|
52421
|
+
"id": "component-EclCheckboxHelpComponent-d97e6a47abb9cfc4b0e81cd3ba92d7bbbb0d7712e27e793a5a07163f7d1ab552739758960f583f664195de59ce86ea561ccc4c569ebc5678812d796cc88deece",
|
|
52482
52422
|
"file": "packages/ecl/components/ecl-checkbox/ecl-checkbox-help.component.ts",
|
|
52483
52423
|
"encapsulation": [],
|
|
52484
52424
|
"entryComponents": [],
|
|
52425
|
+
"host": {},
|
|
52485
52426
|
"inputs": [],
|
|
52486
52427
|
"outputs": [],
|
|
52487
52428
|
"providers": [],
|
|
@@ -52496,17 +52437,21 @@
|
|
|
52496
52437
|
"hostDirectives": [],
|
|
52497
52438
|
"inputsClass": [
|
|
52498
52439
|
{
|
|
52499
|
-
"coverageIgnore": false,
|
|
52500
|
-
"required": false,
|
|
52501
52440
|
"name": "isDisabled",
|
|
52441
|
+
"coverageIgnore": false,
|
|
52502
52442
|
"defaultValue": "false",
|
|
52503
52443
|
"deprecated": false,
|
|
52504
52444
|
"deprecationMessage": "",
|
|
52505
|
-
"rawdescription": "\n\nIndicates whether the help text is disabled (e.g. visually muted).\n",
|
|
52506
|
-
"description": "<p>Indicates whether the help text is disabled (e.g. visually muted).</p>\n",
|
|
52507
|
-
"line": 16,
|
|
52508
52445
|
"type": "boolean",
|
|
52509
|
-
"
|
|
52446
|
+
"indexKey": "",
|
|
52447
|
+
"optional": false,
|
|
52448
|
+
"description": "<p>Input controlling whether the help text starts in a disabled (visually muted) state.</p>\n",
|
|
52449
|
+
"line": 20,
|
|
52450
|
+
"rawdescription": "\n\nInput controlling whether the help text starts in a disabled (visually muted) state.\n",
|
|
52451
|
+
"modifierKind": [
|
|
52452
|
+
148
|
|
52453
|
+
],
|
|
52454
|
+
"required": false
|
|
52510
52455
|
},
|
|
52511
52456
|
{
|
|
52512
52457
|
"name": "class",
|
|
@@ -52589,7 +52534,40 @@
|
|
|
52589
52534
|
}
|
|
52590
52535
|
}
|
|
52591
52536
|
],
|
|
52592
|
-
"propertiesClass": [
|
|
52537
|
+
"propertiesClass": [
|
|
52538
|
+
{
|
|
52539
|
+
"name": "cssClasses",
|
|
52540
|
+
"coverageIgnore": false,
|
|
52541
|
+
"defaultValue": "computed(() => super.getCssClasses('ecl-checkbox__help'))",
|
|
52542
|
+
"deprecated": false,
|
|
52543
|
+
"deprecationMessage": "",
|
|
52544
|
+
"type": "unknown",
|
|
52545
|
+
"indexKey": "",
|
|
52546
|
+
"optional": false,
|
|
52547
|
+
"description": "<p>Applies base CSS classes for checkbox help.</p>\n",
|
|
52548
|
+
"line": 32,
|
|
52549
|
+
"rawdescription": "\n\nApplies base CSS classes for checkbox help.\n",
|
|
52550
|
+
"modifierKind": [
|
|
52551
|
+
148
|
|
52552
|
+
]
|
|
52553
|
+
},
|
|
52554
|
+
{
|
|
52555
|
+
"name": "isDisabled",
|
|
52556
|
+
"coverageIgnore": false,
|
|
52557
|
+
"defaultValue": "linkedSignal(() => this.isDisabledInput())",
|
|
52558
|
+
"deprecated": false,
|
|
52559
|
+
"deprecationMessage": "",
|
|
52560
|
+
"type": "unknown",
|
|
52561
|
+
"indexKey": "",
|
|
52562
|
+
"optional": false,
|
|
52563
|
+
"description": "<p>Indicates whether the help text is disabled (e.g. visually muted).\nSeeded from the <code>isDisabled</code> input but can be updated imperatively by the\nparent checkbox directive.</p>\n",
|
|
52564
|
+
"line": 27,
|
|
52565
|
+
"rawdescription": "\n\nIndicates whether the help text is disabled (e.g. visually muted).\nSeeded from the `isDisabled` input but can be updated imperatively by the\nparent checkbox directive.\n",
|
|
52566
|
+
"modifierKind": [
|
|
52567
|
+
148
|
|
52568
|
+
]
|
|
52569
|
+
}
|
|
52570
|
+
],
|
|
52593
52571
|
"methodsClass": [
|
|
52594
52572
|
{
|
|
52595
52573
|
"name": "getCssClasses",
|
|
@@ -52633,34 +52611,21 @@
|
|
|
52633
52611
|
"coverageIgnore": false,
|
|
52634
52612
|
"deprecated": false,
|
|
52635
52613
|
"deprecationMessage": "",
|
|
52636
|
-
"hostBindings": [
|
|
52637
|
-
{
|
|
52638
|
-
"coverageIgnore": false,
|
|
52639
|
-
"name": "class",
|
|
52640
|
-
"actualName": "cssClasses",
|
|
52641
|
-
"deprecated": false,
|
|
52642
|
-
"deprecationMessage": "",
|
|
52643
|
-
"rawdescription": "\n\nApplies base CSS classes for checkbox help.\n",
|
|
52644
|
-
"description": "<p>Applies base CSS classes for checkbox help.</p>\n",
|
|
52645
|
-
"line": 22,
|
|
52646
|
-
"type": "string",
|
|
52647
|
-
"decorators": []
|
|
52648
|
-
}
|
|
52649
|
-
],
|
|
52614
|
+
"hostBindings": [],
|
|
52650
52615
|
"hostListeners": [],
|
|
52651
52616
|
"standalone": false,
|
|
52652
52617
|
"imports": [],
|
|
52653
52618
|
"description": "<p>Displays help text associated with a checkbox.</p>\n",
|
|
52654
52619
|
"rawdescription": "\n\nDisplays help text associated with a checkbox.\n",
|
|
52655
52620
|
"type": "component",
|
|
52656
|
-
"sourceCode": "import { Component,
|
|
52621
|
+
"sourceCode": "import { Component, booleanAttribute, computed, input, linkedSignal } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Displays help text associated with a checkbox.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[eclCheckboxHelp]',\n templateUrl: './ecl-checkbox-help.component.html',\n host: {\n '[class]': 'cssClasses()',\n '[class.ecl-checkbox__help--disabled]': 'isDisabled()',\n },\n})\nexport class EclCheckboxHelpComponent extends ECLBaseDirective {\n /**\n * Input controlling whether the help text starts in a disabled (visually muted) state.\n */\n readonly isDisabledInput = input(false, { alias: 'isDisabled', transform: booleanAttribute });\n\n /**\n * Indicates whether the help text is disabled (e.g. visually muted).\n * Seeded from the `isDisabled` input but can be updated imperatively by the\n * parent checkbox directive.\n */\n readonly isDisabled = linkedSignal(() => this.isDisabledInput());\n\n /**\n * Applies base CSS classes for checkbox help.\n */\n readonly cssClasses = computed(() => super.getCssClasses('ecl-checkbox__help'));\n}\n",
|
|
52657
52622
|
"assetsDirs": [],
|
|
52658
52623
|
"styleUrlsData": "",
|
|
52659
52624
|
"stylesData": "",
|
|
52660
52625
|
"jsdoctags": [
|
|
52661
52626
|
{
|
|
52662
|
-
"pos":
|
|
52663
|
-
"end":
|
|
52627
|
+
"pos": 143,
|
|
52628
|
+
"end": 200,
|
|
52664
52629
|
"kind": 321,
|
|
52665
52630
|
"id": 0,
|
|
52666
52631
|
"flags": 16777216,
|
|
@@ -52672,19 +52637,6 @@
|
|
|
52672
52637
|
"extends": [
|
|
52673
52638
|
"ECLBaseDirective"
|
|
52674
52639
|
],
|
|
52675
|
-
"accessors": {
|
|
52676
|
-
"cssClasses": {
|
|
52677
|
-
"name": "cssClasses",
|
|
52678
|
-
"getSignature": {
|
|
52679
|
-
"name": "cssClasses",
|
|
52680
|
-
"type": "string",
|
|
52681
|
-
"returnType": "string",
|
|
52682
|
-
"line": 22,
|
|
52683
|
-
"rawdescription": "\n\nApplies base CSS classes for checkbox help.\n",
|
|
52684
|
-
"description": "<p>Applies base CSS classes for checkbox help.</p>\n"
|
|
52685
|
-
}
|
|
52686
|
-
}
|
|
52687
|
-
},
|
|
52688
52640
|
"relationships": {
|
|
52689
52641
|
"incoming": [],
|
|
52690
52642
|
"outgoing": [
|
|
@@ -52698,12 +52650,13 @@
|
|
|
52698
52650
|
},
|
|
52699
52651
|
{
|
|
52700
52652
|
"name": "EclCheckboxLabelComponent",
|
|
52701
|
-
"id": "component-EclCheckboxLabelComponent-
|
|
52653
|
+
"id": "component-EclCheckboxLabelComponent-ab9a1b0061fe4717fbc5e3440f450c1c5b92a1a291c0b1df5d53c18fe94bda9a547f4870f4cde04e5e3fd0540de82dbd8b92a0d2871f43a216822a909a02b7fc",
|
|
52702
52654
|
"file": "packages/ecl/components/ecl-checkbox/ecl-checkbox-label.component.ts",
|
|
52703
52655
|
"encapsulation": [
|
|
52704
52656
|
"ViewEncapsulation.None"
|
|
52705
52657
|
],
|
|
52706
52658
|
"entryComponents": [],
|
|
52659
|
+
"host": {},
|
|
52707
52660
|
"inputs": [],
|
|
52708
52661
|
"outputs": [],
|
|
52709
52662
|
"providers": [],
|
|
@@ -52717,32 +52670,6 @@
|
|
|
52717
52670
|
"viewProviders": [],
|
|
52718
52671
|
"hostDirectives": [],
|
|
52719
52672
|
"inputsClass": [
|
|
52720
|
-
{
|
|
52721
|
-
"coverageIgnore": false,
|
|
52722
|
-
"required": false,
|
|
52723
|
-
"name": "isDisabled",
|
|
52724
|
-
"defaultValue": "false",
|
|
52725
|
-
"deprecated": false,
|
|
52726
|
-
"deprecationMessage": "",
|
|
52727
|
-
"rawdescription": "\n\nIndicates whether the checkbox is disabled.\n",
|
|
52728
|
-
"description": "<p>Indicates whether the checkbox is disabled.</p>\n",
|
|
52729
|
-
"line": 24,
|
|
52730
|
-
"type": "boolean",
|
|
52731
|
-
"decorators": []
|
|
52732
|
-
},
|
|
52733
|
-
{
|
|
52734
|
-
"coverageIgnore": false,
|
|
52735
|
-
"required": false,
|
|
52736
|
-
"name": "isInvalid",
|
|
52737
|
-
"defaultValue": "false",
|
|
52738
|
-
"deprecated": false,
|
|
52739
|
-
"deprecationMessage": "",
|
|
52740
|
-
"rawdescription": "\n\nIndicates whether the checkbox is in an invalid state.\n",
|
|
52741
|
-
"description": "<p>Indicates whether the checkbox is in an invalid state.</p>\n",
|
|
52742
|
-
"line": 19,
|
|
52743
|
-
"type": "boolean",
|
|
52744
|
-
"decorators": []
|
|
52745
|
-
},
|
|
52746
52673
|
{
|
|
52747
52674
|
"name": "isRequired",
|
|
52748
52675
|
"coverageIgnore": false,
|
|
@@ -52753,7 +52680,7 @@
|
|
|
52753
52680
|
"indexKey": "",
|
|
52754
52681
|
"optional": false,
|
|
52755
52682
|
"description": "<p>Indicates whether the checkbox is required.</p>\n",
|
|
52756
|
-
"line":
|
|
52683
|
+
"line": 34,
|
|
52757
52684
|
"rawdescription": "\n\nIndicates whether the checkbox is required.\n",
|
|
52758
52685
|
"modifierKind": [
|
|
52759
52686
|
148
|
|
@@ -52841,7 +52768,56 @@
|
|
|
52841
52768
|
}
|
|
52842
52769
|
}
|
|
52843
52770
|
],
|
|
52844
|
-
"propertiesClass": [
|
|
52771
|
+
"propertiesClass": [
|
|
52772
|
+
{
|
|
52773
|
+
"name": "cssClasses",
|
|
52774
|
+
"coverageIgnore": false,
|
|
52775
|
+
"defaultValue": "computed(() => super.getCssClasses('ecl-checkbox__label'))",
|
|
52776
|
+
"deprecated": false,
|
|
52777
|
+
"deprecationMessage": "",
|
|
52778
|
+
"type": "unknown",
|
|
52779
|
+
"indexKey": "",
|
|
52780
|
+
"optional": false,
|
|
52781
|
+
"description": "<p>Applies base CSS classes for checkbox label.</p>\n",
|
|
52782
|
+
"line": 39,
|
|
52783
|
+
"rawdescription": "\n\nApplies base CSS classes for checkbox label.\n",
|
|
52784
|
+
"modifierKind": [
|
|
52785
|
+
148
|
|
52786
|
+
]
|
|
52787
|
+
},
|
|
52788
|
+
{
|
|
52789
|
+
"name": "isDisabled",
|
|
52790
|
+
"coverageIgnore": false,
|
|
52791
|
+
"defaultValue": "signal(false)",
|
|
52792
|
+
"deprecated": false,
|
|
52793
|
+
"deprecationMessage": "",
|
|
52794
|
+
"type": "unknown",
|
|
52795
|
+
"indexKey": "",
|
|
52796
|
+
"optional": false,
|
|
52797
|
+
"description": "<p>Indicates whether the checkbox is disabled.\nSet imperatively by the parent checkbox directive.</p>\n",
|
|
52798
|
+
"line": 29,
|
|
52799
|
+
"rawdescription": "\n\nIndicates whether the checkbox is disabled.\nSet imperatively by the parent checkbox directive.\n",
|
|
52800
|
+
"modifierKind": [
|
|
52801
|
+
148
|
|
52802
|
+
]
|
|
52803
|
+
},
|
|
52804
|
+
{
|
|
52805
|
+
"name": "isInvalid",
|
|
52806
|
+
"coverageIgnore": false,
|
|
52807
|
+
"defaultValue": "signal(false)",
|
|
52808
|
+
"deprecated": false,
|
|
52809
|
+
"deprecationMessage": "",
|
|
52810
|
+
"type": "unknown",
|
|
52811
|
+
"indexKey": "",
|
|
52812
|
+
"optional": false,
|
|
52813
|
+
"description": "<p>Indicates whether the checkbox is in an invalid state.\nSet imperatively by the parent checkbox directive.</p>\n",
|
|
52814
|
+
"line": 23,
|
|
52815
|
+
"rawdescription": "\n\nIndicates whether the checkbox is in an invalid state.\nSet imperatively by the parent checkbox directive.\n",
|
|
52816
|
+
"modifierKind": [
|
|
52817
|
+
148
|
|
52818
|
+
]
|
|
52819
|
+
}
|
|
52820
|
+
],
|
|
52845
52821
|
"methodsClass": [
|
|
52846
52822
|
{
|
|
52847
52823
|
"name": "getCssClasses",
|
|
@@ -52885,20 +52861,7 @@
|
|
|
52885
52861
|
"coverageIgnore": false,
|
|
52886
52862
|
"deprecated": false,
|
|
52887
52863
|
"deprecationMessage": "",
|
|
52888
|
-
"hostBindings": [
|
|
52889
|
-
{
|
|
52890
|
-
"coverageIgnore": false,
|
|
52891
|
-
"name": "class",
|
|
52892
|
-
"actualName": "cssClasses",
|
|
52893
|
-
"deprecated": false,
|
|
52894
|
-
"deprecationMessage": "",
|
|
52895
|
-
"rawdescription": "\n\nApplies base CSS classes for checkbox label.\n",
|
|
52896
|
-
"description": "<p>Applies base CSS classes for checkbox label.</p>\n",
|
|
52897
|
-
"line": 35,
|
|
52898
|
-
"type": "string",
|
|
52899
|
-
"decorators": []
|
|
52900
|
-
}
|
|
52901
|
-
],
|
|
52864
|
+
"hostBindings": [],
|
|
52902
52865
|
"hostListeners": [],
|
|
52903
52866
|
"standalone": false,
|
|
52904
52867
|
"imports": [
|
|
@@ -52909,14 +52872,14 @@
|
|
|
52909
52872
|
"description": "<p>Label component for a checkbox, supporting state styles.</p>\n",
|
|
52910
52873
|
"rawdescription": "\n\nLabel component for a checkbox, supporting state styles.\n",
|
|
52911
52874
|
"type": "component",
|
|
52912
|
-
"sourceCode": "import { Component,
|
|
52875
|
+
"sourceCode": "import { Component, ViewEncapsulation, booleanAttribute, computed, input, signal } from '@angular/core';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Label component for a checkbox, supporting state styles.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'label[eclCheckboxLabel]',\n templateUrl: './ecl-checkbox-label.component.html',\n imports: [...EUI_ECL_ICON],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclCheckboxLabelComponent extends ECLBaseDirective {\n /**\n * Indicates whether the checkbox is in an invalid state.\n * Set imperatively by the parent checkbox directive.\n */\n readonly isInvalid = signal(false);\n\n /**\n * Indicates whether the checkbox is disabled.\n * Set imperatively by the parent checkbox directive.\n */\n readonly isDisabled = signal(false);\n\n /**\n * Indicates whether the checkbox is required.\n */\n readonly isRequired = input(false, { transform: booleanAttribute });\n\n /**\n * Applies base CSS classes for checkbox label.\n */\n readonly cssClasses = computed(() => super.getCssClasses('ecl-checkbox__label'));\n}\n",
|
|
52913
52876
|
"assetsDirs": [],
|
|
52914
52877
|
"styleUrlsData": "",
|
|
52915
52878
|
"stylesData": "",
|
|
52916
52879
|
"jsdoctags": [
|
|
52917
52880
|
{
|
|
52918
|
-
"pos":
|
|
52919
|
-
"end":
|
|
52881
|
+
"pos": 217,
|
|
52882
|
+
"end": 284,
|
|
52920
52883
|
"kind": 321,
|
|
52921
52884
|
"id": 0,
|
|
52922
52885
|
"flags": 16777216,
|
|
@@ -52928,19 +52891,6 @@
|
|
|
52928
52891
|
"extends": [
|
|
52929
52892
|
"ECLBaseDirective"
|
|
52930
52893
|
],
|
|
52931
|
-
"accessors": {
|
|
52932
|
-
"cssClasses": {
|
|
52933
|
-
"name": "cssClasses",
|
|
52934
|
-
"getSignature": {
|
|
52935
|
-
"name": "cssClasses",
|
|
52936
|
-
"type": "string",
|
|
52937
|
-
"returnType": "string",
|
|
52938
|
-
"line": 35,
|
|
52939
|
-
"rawdescription": "\n\nApplies base CSS classes for checkbox label.\n",
|
|
52940
|
-
"description": "<p>Applies base CSS classes for checkbox label.</p>\n"
|
|
52941
|
-
}
|
|
52942
|
-
}
|
|
52943
|
-
},
|
|
52944
52894
|
"relationships": {
|
|
52945
52895
|
"incoming": [],
|
|
52946
52896
|
"outgoing": [
|
|
@@ -52954,7 +52904,7 @@
|
|
|
52954
52904
|
}
|
|
52955
52905
|
]
|
|
52956
52906
|
},
|
|
52957
|
-
"templateData": "<span class=\"ecl-checkbox__box\" [class.ecl-checkbox__box--disabled]=\"isDisabled\" [class.ecl-checkbox__box--invalid]=\"isInvalid\">\n <ecl-icon size=\"xs\" icon=\"check\" class=\"ecl-checkbox__icon\"></ecl-icon>\n</span>\n\n<span class=\"ecl-checkbox__text\">\n <ng-content></ng-content>\n</span>\n@if(isRequired()) {\n<span class=\"ecl-form-label__required\" role=\"note\">(required)</span>\n}\n"
|
|
52907
|
+
"templateData": "<span class=\"ecl-checkbox__box\" [class.ecl-checkbox__box--disabled]=\"isDisabled()\" [class.ecl-checkbox__box--invalid]=\"isInvalid()\">\n <ecl-icon size=\"xs\" icon=\"check\" class=\"ecl-checkbox__icon\"></ecl-icon>\n</span>\n\n<span class=\"ecl-checkbox__text\">\n <ng-content></ng-content>\n</span>\n@if(isRequired()) {\n<span class=\"ecl-form-label__required\" role=\"note\">(required)</span>\n}\n"
|
|
52958
52908
|
},
|
|
52959
52909
|
{
|
|
52960
52910
|
"name": "EclContentBlockComponent",
|
|
@@ -53550,10 +53500,11 @@
|
|
|
53550
53500
|
},
|
|
53551
53501
|
{
|
|
53552
53502
|
"name": "EclDateBlockComponent",
|
|
53553
|
-
"id": "component-EclDateBlockComponent-
|
|
53503
|
+
"id": "component-EclDateBlockComponent-6bb06d3e939ca081df8ec99723a853bf21bc6d4d4e29905fb6d763ff66fc37745a7538d2e1682db6ddd9583cd716d04bfb9bf0c36fda21605666ee3b12b7266b",
|
|
53554
53504
|
"file": "packages/ecl/components/ecl-date-block/ecl-date-block.component.ts",
|
|
53555
53505
|
"encapsulation": [],
|
|
53556
53506
|
"entryComponents": [],
|
|
53507
|
+
"host": {},
|
|
53557
53508
|
"inputs": [],
|
|
53558
53509
|
"outputs": [],
|
|
53559
53510
|
"providers": [],
|
|
@@ -53567,17 +53518,6 @@
|
|
|
53567
53518
|
"viewProviders": [],
|
|
53568
53519
|
"hostDirectives": [],
|
|
53569
53520
|
"inputsClass": [
|
|
53570
|
-
{
|
|
53571
|
-
"coverageIgnore": false,
|
|
53572
|
-
"name": "datetime",
|
|
53573
|
-
"deprecated": false,
|
|
53574
|
-
"deprecationMessage": "",
|
|
53575
|
-
"rawdescription": "\n\nSets the `datetime` attribute of the `<time>` element.\nIf not provided, it is derived from `date` and `dateFormat`.\n",
|
|
53576
|
-
"description": "<p>Sets the <code>datetime</code> attribute of the <code><time></code> element.\nIf not provided, it is derived from <code>date</code> and <code>dateFormat</code>.</p>\n",
|
|
53577
|
-
"line": 96,
|
|
53578
|
-
"type": "string",
|
|
53579
|
-
"decorators": []
|
|
53580
|
-
},
|
|
53581
53521
|
{
|
|
53582
53522
|
"name": "date",
|
|
53583
53523
|
"coverageIgnore": false,
|
|
@@ -53588,7 +53528,7 @@
|
|
|
53588
53528
|
"indexKey": "",
|
|
53589
53529
|
"optional": false,
|
|
53590
53530
|
"description": "<p>The date to be displayed. If not null, it's used to generate the <code>datetime</code> attribute and visual output.</p>\n",
|
|
53591
|
-
"line":
|
|
53531
|
+
"line": 48,
|
|
53592
53532
|
"rawdescription": "\n\nThe date to be displayed. If not null, it's used to generate the `datetime` attribute and visual output.\n",
|
|
53593
53533
|
"modifierKind": [
|
|
53594
53534
|
148
|
|
@@ -53605,13 +53545,30 @@
|
|
|
53605
53545
|
"indexKey": "",
|
|
53606
53546
|
"optional": false,
|
|
53607
53547
|
"description": "<p>The format to be used when rendering the date string (Angular DatePipe format).\nDefault is <code>'dd/M/yyyy'</code>.</p>\n",
|
|
53608
|
-
"line":
|
|
53548
|
+
"line": 54,
|
|
53609
53549
|
"rawdescription": "\n\nThe format to be used when rendering the date string (Angular DatePipe format).\nDefault is `'dd/M/yyyy'`.\n",
|
|
53610
53550
|
"modifierKind": [
|
|
53611
53551
|
148
|
|
53612
53552
|
],
|
|
53613
53553
|
"required": false
|
|
53614
53554
|
},
|
|
53555
|
+
{
|
|
53556
|
+
"name": "datetime",
|
|
53557
|
+
"coverageIgnore": false,
|
|
53558
|
+
"defaultValue": "undefined",
|
|
53559
|
+
"deprecated": false,
|
|
53560
|
+
"deprecationMessage": "",
|
|
53561
|
+
"type": "string",
|
|
53562
|
+
"indexKey": "",
|
|
53563
|
+
"optional": false,
|
|
53564
|
+
"description": "<p>Explicit value for the <code>datetime</code> attribute of the <code><time></code> element (optional).\nIf not provided, it is derived from <code>date</code> and <code>dateFormat</code>.</p>\n",
|
|
53565
|
+
"line": 91,
|
|
53566
|
+
"rawdescription": "\n\nExplicit value for the `datetime` attribute of the `<time>` element (optional).\nIf not provided, it is derived from `date` and `dateFormat`.\n",
|
|
53567
|
+
"modifierKind": [
|
|
53568
|
+
148
|
|
53569
|
+
],
|
|
53570
|
+
"required": false
|
|
53571
|
+
},
|
|
53615
53572
|
{
|
|
53616
53573
|
"name": "day",
|
|
53617
53574
|
"coverageIgnore": false,
|
|
@@ -53622,7 +53579,7 @@
|
|
|
53622
53579
|
"indexKey": "",
|
|
53623
53580
|
"optional": false,
|
|
53624
53581
|
"description": "<p>Explicit string for day part of the date (optional).\nUsed when date is not set or overridden manually.</p>\n",
|
|
53625
|
-
"line":
|
|
53582
|
+
"line": 68,
|
|
53626
53583
|
"rawdescription": "\n\nExplicit string for day part of the date (optional).\nUsed when date is not set or overridden manually.\n",
|
|
53627
53584
|
"modifierKind": [
|
|
53628
53585
|
148
|
|
@@ -53639,7 +53596,7 @@
|
|
|
53639
53596
|
"indexKey": "",
|
|
53640
53597
|
"optional": false,
|
|
53641
53598
|
"description": "<p>Explicit string for month part of the date (optional).\nUsed when date is not set or overridden manually.</p>\n",
|
|
53642
|
-
"line":
|
|
53599
|
+
"line": 74,
|
|
53643
53600
|
"rawdescription": "\n\nExplicit string for month part of the date (optional).\nUsed when date is not set or overridden manually.\n",
|
|
53644
53601
|
"modifierKind": [
|
|
53645
53602
|
148
|
|
@@ -53656,7 +53613,7 @@
|
|
|
53656
53613
|
"indexKey": "",
|
|
53657
53614
|
"optional": false,
|
|
53658
53615
|
"description": "<p>Explicit string used as an accessible or verbose label for the month (optional).</p>\n",
|
|
53659
|
-
"line":
|
|
53616
|
+
"line": 79,
|
|
53660
53617
|
"rawdescription": "\n\nExplicit string used as an accessible or verbose label for the month (optional).\n",
|
|
53661
53618
|
"modifierKind": [
|
|
53662
53619
|
148
|
|
@@ -53673,7 +53630,7 @@
|
|
|
53673
53630
|
"indexKey": "",
|
|
53674
53631
|
"optional": false,
|
|
53675
53632
|
"description": "<p>Optional visual variant of the date block. Can be:</p>\n<ul>\n<li><code>'ongoing'</code>: for ongoing events</li>\n<li><code>'past'</code>: for past events\nThis changes styling only.</li>\n</ul>\n",
|
|
53676
|
-
"line":
|
|
53633
|
+
"line": 62,
|
|
53677
53634
|
"rawdescription": "\n\nOptional visual variant of the date block. Can be:\n- `'ongoing'`: for ongoing events\n- `'past'`: for past events\nThis changes styling only.\n",
|
|
53678
53635
|
"modifierKind": [
|
|
53679
53636
|
148
|
|
@@ -53690,7 +53647,7 @@
|
|
|
53690
53647
|
"indexKey": "",
|
|
53691
53648
|
"optional": false,
|
|
53692
53649
|
"description": "<p>Explicit string for year part of the date (optional).\nUsed when date is not set or overridden manually.</p>\n",
|
|
53693
|
-
"line":
|
|
53650
|
+
"line": 85,
|
|
53694
53651
|
"rawdescription": "\n\nExplicit string for year part of the date (optional).\nUsed when date is not set or overridden manually.\n",
|
|
53695
53652
|
"modifierKind": [
|
|
53696
53653
|
148
|
|
@@ -53779,6 +53736,22 @@
|
|
|
53779
53736
|
}
|
|
53780
53737
|
],
|
|
53781
53738
|
"propertiesClass": [
|
|
53739
|
+
{
|
|
53740
|
+
"name": "datetime",
|
|
53741
|
+
"coverageIgnore": false,
|
|
53742
|
+
"defaultValue": "computed(() => this.datetimeInput() || this.getFormattedDate(this.date(), this.dateFormat()))",
|
|
53743
|
+
"deprecated": false,
|
|
53744
|
+
"deprecationMessage": "",
|
|
53745
|
+
"type": "unknown",
|
|
53746
|
+
"indexKey": "",
|
|
53747
|
+
"optional": false,
|
|
53748
|
+
"description": "<p>The resolved <code>datetime</code> attribute value. Uses the explicit <code>datetime</code> input\nwhen provided, otherwise derives it from <code>date</code> and <code>dateFormat</code>.</p>\n",
|
|
53749
|
+
"line": 104,
|
|
53750
|
+
"rawdescription": "\n\nThe resolved `datetime` attribute value. Uses the explicit `datetime` input\nwhen provided, otherwise derives it from `date` and `dateFormat`.\n",
|
|
53751
|
+
"modifierKind": [
|
|
53752
|
+
148
|
|
53753
|
+
]
|
|
53754
|
+
},
|
|
53782
53755
|
{
|
|
53783
53756
|
"name": "locale",
|
|
53784
53757
|
"coverageIgnore": false,
|
|
@@ -53789,7 +53762,7 @@
|
|
|
53789
53762
|
"indexKey": "",
|
|
53790
53763
|
"optional": false,
|
|
53791
53764
|
"description": "",
|
|
53792
|
-
"line":
|
|
53765
|
+
"line": 93,
|
|
53793
53766
|
"rawdescription": "\n"
|
|
53794
53767
|
}
|
|
53795
53768
|
],
|
|
@@ -53836,20 +53809,7 @@
|
|
|
53836
53809
|
"coverageIgnore": false,
|
|
53837
53810
|
"deprecated": false,
|
|
53838
53811
|
"deprecationMessage": "",
|
|
53839
|
-
"hostBindings": [
|
|
53840
|
-
{
|
|
53841
|
-
"coverageIgnore": false,
|
|
53842
|
-
"name": "class",
|
|
53843
|
-
"actualName": "cssClasses",
|
|
53844
|
-
"deprecated": false,
|
|
53845
|
-
"deprecationMessage": "",
|
|
53846
|
-
"rawdescription": "\n",
|
|
53847
|
-
"description": "",
|
|
53848
|
-
"line": 85,
|
|
53849
|
-
"type": "string",
|
|
53850
|
-
"decorators": []
|
|
53851
|
-
}
|
|
53852
|
-
],
|
|
53812
|
+
"hostBindings": [],
|
|
53853
53813
|
"hostListeners": [],
|
|
53854
53814
|
"standalone": false,
|
|
53855
53815
|
"imports": [
|
|
@@ -53861,14 +53821,14 @@
|
|
|
53861
53821
|
"description": "<p>Component used to display a formatted date in a styled time element.\nDesigned for use within content components such as content blocks or items.</p>\n",
|
|
53862
53822
|
"rawdescription": "\n\nComponent used to display a formatted date in a styled time element.\nDesigned for use within content components such as content blocks or items.\n",
|
|
53863
53823
|
"type": "component",
|
|
53864
|
-
"sourceCode": "import { formatDate, DatePipe } from '@angular/common';\nimport { Component,
|
|
53824
|
+
"sourceCode": "import { formatDate, DatePipe } from '@angular/common';\nimport { Component, computed, inject, input } from '@angular/core';\nimport '@angular/common/locales/global/bg';\nimport '@angular/common/locales/global/da';\nimport '@angular/common/locales/global/en';\nimport '@angular/common/locales/global/et';\nimport '@angular/common/locales/global/fr';\nimport '@angular/common/locales/global/hr';\nimport '@angular/common/locales/global/lv';\nimport '@angular/common/locales/global/hu';\nimport '@angular/common/locales/global/nl';\nimport '@angular/common/locales/global/pt';\nimport '@angular/common/locales/global/sk';\nimport '@angular/common/locales/global/fi';\nimport '@angular/common/locales/global/cs';\nimport '@angular/common/locales/global/de';\nimport '@angular/common/locales/global/el';\nimport '@angular/common/locales/global/es';\nimport '@angular/common/locales/global/ga';\nimport '@angular/common/locales/global/it';\nimport '@angular/common/locales/global/lt';\nimport '@angular/common/locales/global/mt';\nimport '@angular/common/locales/global/pl';\nimport '@angular/common/locales/global/ro';\nimport '@angular/common/locales/global/sl';\nimport '@angular/common/locales/global/sv';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Component used to display a formatted date in a styled time element.\n * Designed for use within content components such as content blocks or items.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'time[eclDateBlock]',\n templateUrl: './ecl-date-block.component.html',\n imports: [DatePipe],\n host: {\n '[class]': 'cssClasses',\n '[attr.datetime]': 'datetime()',\n },\n})\nexport class EclDateBlockComponent extends ECLBaseDirective {\n /**\n * The date to be displayed. If not null, it's used to generate the `datetime` attribute and visual output.\n */\n readonly date = input<Date>(undefined);\n\n /**\n * The format to be used when rendering the date string (Angular DatePipe format).\n * Default is `'dd/M/yyyy'`.\n */\n readonly dateFormat = input('dd/M/yyyy');\n\n /**\n * Optional visual variant of the date block. Can be:\n * - `'ongoing'`: for ongoing events\n * - `'past'`: for past events\n * This changes styling only.\n */\n readonly variant = input<'ongoing' | 'past'>(null);\n\n /**\n * Explicit string for day part of the date (optional).\n * Used when date is not set or overridden manually.\n */\n readonly day = input<string>(undefined);\n\n /**\n * Explicit string for month part of the date (optional).\n * Used when date is not set or overridden manually.\n */\n readonly month = input<string>(undefined);\n\n /**\n * Explicit string used as an accessible or verbose label for the month (optional).\n */\n readonly monthTitle = input<string>(undefined);\n\n /**\n * Explicit string for year part of the date (optional).\n * Used when date is not set or overridden manually.\n */\n readonly year = input<string>(undefined);\n\n /**\n * Explicit value for the `datetime` attribute of the `<time>` element (optional).\n * If not provided, it is derived from `date` and `dateFormat`.\n */\n readonly datetimeInput = input<string>(undefined, { alias: 'datetime' });\n\n locale = 'en';\n\n get cssClasses(): string {\n const variant = this.variant();\n return [super.getCssClasses('ecl-date-block'), variant ? `ecl-date-block--${variant}` : ''].join(' ').trim();\n }\n\n /**\n * The resolved `datetime` attribute value. Uses the explicit `datetime` input\n * when provided, otherwise derives it from `date` and `dateFormat`.\n */\n readonly datetime = computed(() => this.datetimeInput() || this.getFormattedDate(this.date(), this.dateFormat()));\n\n private translateService = inject(TranslateService);\n\n constructor() {\n super();\n const translateService = this.translateService;\n\n this.locale = translateService.currentLang();\n }\n\n private getFormattedDate(date: Date, dateFormat: string): string {\n if (date) {\n return formatDate(date, dateFormat, this.translateService.currentLang());\n } else {\n return null;\n }\n }\n}\n",
|
|
53865
53825
|
"assetsDirs": [],
|
|
53866
53826
|
"styleUrlsData": "",
|
|
53867
53827
|
"stylesData": "",
|
|
53868
53828
|
"jsdoctags": [
|
|
53869
53829
|
{
|
|
53870
|
-
"pos":
|
|
53871
|
-
"end":
|
|
53830
|
+
"pos": 1287,
|
|
53831
|
+
"end": 1445,
|
|
53872
53832
|
"kind": 321,
|
|
53873
53833
|
"id": 0,
|
|
53874
53834
|
"flags": 16777216,
|
|
@@ -53883,7 +53843,7 @@
|
|
|
53883
53843
|
"deprecated": false,
|
|
53884
53844
|
"deprecationMessage": "",
|
|
53885
53845
|
"args": [],
|
|
53886
|
-
"line":
|
|
53846
|
+
"line": 106,
|
|
53887
53847
|
"rawdescription": "\n"
|
|
53888
53848
|
},
|
|
53889
53849
|
"extends": [
|
|
@@ -53896,54 +53856,10 @@
|
|
|
53896
53856
|
"name": "cssClasses",
|
|
53897
53857
|
"type": "string",
|
|
53898
53858
|
"returnType": "string",
|
|
53899
|
-
"line":
|
|
53859
|
+
"line": 95,
|
|
53900
53860
|
"rawdescription": "\n",
|
|
53901
53861
|
"description": ""
|
|
53902
53862
|
}
|
|
53903
|
-
},
|
|
53904
|
-
"datetime": {
|
|
53905
|
-
"name": "datetime",
|
|
53906
|
-
"setSignature": {
|
|
53907
|
-
"name": "datetime",
|
|
53908
|
-
"type": "void",
|
|
53909
|
-
"deprecated": false,
|
|
53910
|
-
"deprecationMessage": "",
|
|
53911
|
-
"args": [
|
|
53912
|
-
{
|
|
53913
|
-
"name": "value",
|
|
53914
|
-
"type": "unknown",
|
|
53915
|
-
"optional": false,
|
|
53916
|
-
"dotDotDotToken": false,
|
|
53917
|
-
"deprecated": false,
|
|
53918
|
-
"deprecationMessage": ""
|
|
53919
|
-
}
|
|
53920
|
-
],
|
|
53921
|
-
"returnType": "void",
|
|
53922
|
-
"line": 99,
|
|
53923
|
-
"rawdescription": "\n",
|
|
53924
|
-
"description": "",
|
|
53925
|
-
"jsdoctags": [
|
|
53926
|
-
{
|
|
53927
|
-
"name": "value",
|
|
53928
|
-
"type": "unknown",
|
|
53929
|
-
"optional": false,
|
|
53930
|
-
"dotDotDotToken": false,
|
|
53931
|
-
"deprecated": false,
|
|
53932
|
-
"deprecationMessage": "",
|
|
53933
|
-
"tagName": {
|
|
53934
|
-
"text": "param"
|
|
53935
|
-
}
|
|
53936
|
-
}
|
|
53937
|
-
]
|
|
53938
|
-
},
|
|
53939
|
-
"getSignature": {
|
|
53940
|
-
"name": "datetime",
|
|
53941
|
-
"type": "string",
|
|
53942
|
-
"returnType": "string",
|
|
53943
|
-
"line": 96,
|
|
53944
|
-
"rawdescription": "\n\nSets the `datetime` attribute of the `<time>` element.\nIf not provided, it is derived from `date` and `dateFormat`.\n",
|
|
53945
|
-
"description": "<p>Sets the <code>datetime</code> attribute of the <code><time></code> element.\nIf not provided, it is derived from <code>date</code> and <code>dateFormat</code>.</p>\n"
|
|
53946
|
-
}
|
|
53947
53863
|
}
|
|
53948
53864
|
},
|
|
53949
53865
|
"relationships": {
|
|
@@ -53959,7 +53875,7 @@
|
|
|
53959
53875
|
}
|
|
53960
53876
|
]
|
|
53961
53877
|
},
|
|
53962
|
-
"templateData": "<span class=\"ecl-date-block__daytime\">{{ datetime || (date() | date: dateFormat()) }}</span>\n<span class=\"ecl-date-block__day\" aria-hidden=\"true\">{{ day() || (date() | date: 'd') }}</span>\n<abbr [title]=\"monthTitle() || month() || (date() | date: 'MMMM' : '' : locale)\" class=\"ecl-date-block__month\" aria-hidden=\"true\">\n {{ month() || (date() | date: 'MMM' : '' : locale) }}\n</abbr>\n<span class=\"ecl-date-block__year\" aria-hidden=\"true\">{{ year() || (date() | date: 'yyyy') }}</span>\n"
|
|
53878
|
+
"templateData": "<span class=\"ecl-date-block__daytime\">{{ datetime() || (date() | date: dateFormat()) }}</span>\n<span class=\"ecl-date-block__day\" aria-hidden=\"true\">{{ day() || (date() | date: 'd') }}</span>\n<abbr [title]=\"monthTitle() || month() || (date() | date: 'MMMM' : '' : locale)\" class=\"ecl-date-block__month\" aria-hidden=\"true\">\n {{ month() || (date() | date: 'MMM' : '' : locale) }}\n</abbr>\n<span class=\"ecl-date-block__year\" aria-hidden=\"true\">{{ year() || (date() | date: 'yyyy') }}</span>\n"
|
|
53963
53879
|
},
|
|
53964
53880
|
{
|
|
53965
53881
|
"name": "EclDescriptionListDefinitionComponent",
|
|
@@ -55419,7 +55335,7 @@
|
|
|
55419
55335
|
},
|
|
55420
55336
|
{
|
|
55421
55337
|
"name": "EclFeaturedComponent",
|
|
55422
|
-
"id": "component-EclFeaturedComponent-
|
|
55338
|
+
"id": "component-EclFeaturedComponent-59fe7134393781e9fcc694d8fa4f476420a0c1132a3d6d8b9f5e59d566927c55934ed857612e4a5372bce8d6fa6a606ca230d6517463ecdd94ce2f41b73e2d47",
|
|
55423
55339
|
"file": "packages/ecl/components/ecl-featured/ecl-featured.component.ts",
|
|
55424
55340
|
"encapsulation": [],
|
|
55425
55341
|
"entryComponents": [],
|
|
@@ -55446,7 +55362,7 @@
|
|
|
55446
55362
|
"indexKey": "",
|
|
55447
55363
|
"optional": false,
|
|
55448
55364
|
"description": "",
|
|
55449
|
-
"line":
|
|
55365
|
+
"line": 28,
|
|
55450
55366
|
"rawdescription": "\n",
|
|
55451
55367
|
"required": false
|
|
55452
55368
|
},
|
|
@@ -55460,7 +55376,7 @@
|
|
|
55460
55376
|
"indexKey": "",
|
|
55461
55377
|
"optional": false,
|
|
55462
55378
|
"description": "",
|
|
55463
|
-
"line":
|
|
55379
|
+
"line": 26,
|
|
55464
55380
|
"rawdescription": "\n",
|
|
55465
55381
|
"required": false
|
|
55466
55382
|
},
|
|
@@ -55474,7 +55390,7 @@
|
|
|
55474
55390
|
"indexKey": "",
|
|
55475
55391
|
"optional": false,
|
|
55476
55392
|
"description": "<p>Gives a different display for the link in highlighted mode</p>\n",
|
|
55477
|
-
"line":
|
|
55393
|
+
"line": 33,
|
|
55478
55394
|
"rawdescription": "\nGives a different display for the link in highlighted mode",
|
|
55479
55395
|
"modifierKind": [
|
|
55480
55396
|
148
|
|
@@ -55491,7 +55407,7 @@
|
|
|
55491
55407
|
"indexKey": "",
|
|
55492
55408
|
"optional": false,
|
|
55493
55409
|
"description": "<p>The position of the image in the component. Can be 'left' or 'right'. The default value is 'left'.</p>\n",
|
|
55494
|
-
"line":
|
|
55410
|
+
"line": 20,
|
|
55495
55411
|
"rawdescription": "\n\nThe position of the image in the component. Can be 'left' or 'right'. The default value is 'left'.\n",
|
|
55496
55412
|
"modifierKind": [
|
|
55497
55413
|
148
|
|
@@ -55508,7 +55424,7 @@
|
|
|
55508
55424
|
"indexKey": "",
|
|
55509
55425
|
"optional": false,
|
|
55510
55426
|
"description": "<p>'highligh' varian, applies class to make more stand out appearance of the component.</p>\n",
|
|
55511
|
-
"line":
|
|
55427
|
+
"line": 24,
|
|
55512
55428
|
"rawdescription": "\n\n'highligh' varian, applies class to make more stand out appearance of the component.\n",
|
|
55513
55429
|
"modifierKind": [
|
|
55514
55430
|
148
|
|
@@ -55524,7 +55440,7 @@
|
|
|
55524
55440
|
"indexKey": "",
|
|
55525
55441
|
"optional": false,
|
|
55526
55442
|
"description": "",
|
|
55527
|
-
"line":
|
|
55443
|
+
"line": 30,
|
|
55528
55444
|
"rawdescription": "\n",
|
|
55529
55445
|
"required": false
|
|
55530
55446
|
},
|
|
@@ -55611,25 +55527,19 @@
|
|
|
55611
55527
|
],
|
|
55612
55528
|
"propertiesClass": [
|
|
55613
55529
|
{
|
|
55614
|
-
"name": "
|
|
55530
|
+
"name": "cssClasses",
|
|
55615
55531
|
"coverageIgnore": false,
|
|
55616
|
-
"defaultValue": "'
|
|
55532
|
+
"defaultValue": "computed(() => {\n const variant = this.variant();\n return [\n super.getCssClasses('ecl-featured-item'),\n variant ? `ecl-featured-item--${variant}`: '',\n this.horizontalAlign() === 'center' ? 'ecl-featured-item--hcenter' : '',\n this.verticalAlign() === 'center' ? 'ecl-featured-item--vcenter' : '',\n this.isDynamicImage() ? 'ecl-featured-item--dynamic' : '',\n ].join(' ').trim();\n })",
|
|
55617
55533
|
"deprecated": false,
|
|
55618
55534
|
"deprecationMessage": "",
|
|
55619
|
-
"type": "
|
|
55535
|
+
"type": "unknown",
|
|
55620
55536
|
"indexKey": "",
|
|
55621
55537
|
"optional": false,
|
|
55622
|
-
"description": "",
|
|
55623
|
-
"line":
|
|
55624
|
-
"rawdescription": "\n",
|
|
55625
|
-
"decorators": [
|
|
55626
|
-
{
|
|
55627
|
-
"name": "HostBinding",
|
|
55628
|
-
"stringifiedArguments": "'attr.role'"
|
|
55629
|
-
}
|
|
55630
|
-
],
|
|
55538
|
+
"description": "<p>Adds specific classes to the component.</p>\n",
|
|
55539
|
+
"line": 38,
|
|
55540
|
+
"rawdescription": "\n\nAdds specific classes to the component.\n",
|
|
55631
55541
|
"modifierKind": [
|
|
55632
|
-
|
|
55542
|
+
148
|
|
55633
55543
|
]
|
|
55634
55544
|
}
|
|
55635
55545
|
],
|
|
@@ -55676,47 +55586,21 @@
|
|
|
55676
55586
|
"coverageIgnore": false,
|
|
55677
55587
|
"deprecated": false,
|
|
55678
55588
|
"deprecationMessage": "",
|
|
55679
|
-
"hostBindings": [
|
|
55680
|
-
{
|
|
55681
|
-
"coverageIgnore": false,
|
|
55682
|
-
"name": "attr.role",
|
|
55683
|
-
"actualName": "role",
|
|
55684
|
-
"defaultValue": "'article'",
|
|
55685
|
-
"deprecated": false,
|
|
55686
|
-
"deprecationMessage": "",
|
|
55687
|
-
"rawdescription": "\n",
|
|
55688
|
-
"description": "",
|
|
55689
|
-
"line": 33,
|
|
55690
|
-
"type": "string",
|
|
55691
|
-
"decorators": []
|
|
55692
|
-
},
|
|
55693
|
-
{
|
|
55694
|
-
"coverageIgnore": false,
|
|
55695
|
-
"name": "class",
|
|
55696
|
-
"actualName": "cssClasses",
|
|
55697
|
-
"deprecated": false,
|
|
55698
|
-
"deprecationMessage": "",
|
|
55699
|
-
"rawdescription": "\n\nAdds specific classes to the component.\n",
|
|
55700
|
-
"description": "<p>Adds specific classes to the component.</p>\n",
|
|
55701
|
-
"line": 39,
|
|
55702
|
-
"type": "string",
|
|
55703
|
-
"decorators": []
|
|
55704
|
-
}
|
|
55705
|
-
],
|
|
55589
|
+
"hostBindings": [],
|
|
55706
55590
|
"hostListeners": [],
|
|
55707
55591
|
"standalone": false,
|
|
55708
55592
|
"imports": [],
|
|
55709
55593
|
"description": "<p>Custom ECL component, that adds visual support to a piece of content. Uses <ecl-media-container>.</p>\n",
|
|
55710
55594
|
"rawdescription": "\n\nCustom ECL component, that adds visual support to a piece of content. Uses <ecl-media-container>.\n",
|
|
55711
55595
|
"type": "component",
|
|
55712
|
-
"sourceCode": "import { booleanAttribute, Component,
|
|
55596
|
+
"sourceCode": "import { booleanAttribute, Component, computed, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Custom ECL component, that adds visual support to a piece of content. Uses <ecl-media-container>.\n */\n@Component({\n selector: 'ecl-featured, article[eclFeatured]',\n templateUrl: './ecl-featured.component.html',\n host: {\n 'role': 'article',\n '[class]': 'cssClasses()',\n '[class.ecl-featured-item--link-highlighted]': 'isLinkHighlighted()',\n },\n})\nexport class EclFeaturedComponent extends ECLBaseDirective {\n /**\n * The position of the image in the component. Can be 'left' or 'right'. The default value is 'left'.\n */\n readonly position = input<'left' | 'right'>('left');\n /**\n * 'highligh' varian, applies class to make more stand out appearance of the component.\n */\n readonly variant = input<'highlight'>(undefined);\n\n isDynamicImage = input(false, { transform: booleanAttribute });\n\n horizontalAlign = input<'left' | 'center' | undefined>();\n\n verticalAlign = input<'top' | 'center' | undefined>();\n\n /** Gives a different display for the link in highlighted mode */\n readonly isLinkHighlighted = input(false, { transform: booleanAttribute });\n\n /**\n * Adds specific classes to the component.\n */\n readonly cssClasses = computed(() => {\n const variant = this.variant();\n return [\n super.getCssClasses('ecl-featured-item'),\n variant ? `ecl-featured-item--${variant}`: '',\n this.horizontalAlign() === 'center' ? 'ecl-featured-item--hcenter' : '',\n this.verticalAlign() === 'center' ? 'ecl-featured-item--vcenter' : '',\n this.isDynamicImage() ? 'ecl-featured-item--dynamic' : '',\n ].join(' ').trim();\n });\n}\n",
|
|
55713
55597
|
"assetsDirs": [],
|
|
55714
55598
|
"styleUrlsData": "",
|
|
55715
55599
|
"stylesData": "",
|
|
55716
55600
|
"jsdoctags": [
|
|
55717
55601
|
{
|
|
55718
|
-
"pos":
|
|
55719
|
-
"end":
|
|
55602
|
+
"pos": 129,
|
|
55603
|
+
"end": 237,
|
|
55720
55604
|
"kind": 321,
|
|
55721
55605
|
"id": 0,
|
|
55722
55606
|
"flags": 16777216,
|
|
@@ -55728,19 +55612,6 @@
|
|
|
55728
55612
|
"extends": [
|
|
55729
55613
|
"ECLBaseDirective"
|
|
55730
55614
|
],
|
|
55731
|
-
"accessors": {
|
|
55732
|
-
"cssClasses": {
|
|
55733
|
-
"name": "cssClasses",
|
|
55734
|
-
"getSignature": {
|
|
55735
|
-
"name": "cssClasses",
|
|
55736
|
-
"type": "string",
|
|
55737
|
-
"returnType": "string",
|
|
55738
|
-
"line": 39,
|
|
55739
|
-
"rawdescription": "\n\nAdds specific classes to the component.\n",
|
|
55740
|
-
"description": "<p>Adds specific classes to the component.</p>\n"
|
|
55741
|
-
}
|
|
55742
|
-
}
|
|
55743
|
-
},
|
|
55744
55615
|
"relationships": {
|
|
55745
55616
|
"incoming": [],
|
|
55746
55617
|
"outgoing": [
|
|
@@ -55754,10 +55625,11 @@
|
|
|
55754
55625
|
},
|
|
55755
55626
|
{
|
|
55756
55627
|
"name": "EclFeaturedItemComponent",
|
|
55757
|
-
"id": "component-EclFeaturedItemComponent-
|
|
55628
|
+
"id": "component-EclFeaturedItemComponent-ae681931e03c6703c0cc54810c88e85dd2f18a11c725ac70cdf38c6bc13b8c1d2fc365c9a952c51f49784be056eafcbf105eb64ab886a15c8597094b0a9a000f",
|
|
55758
55629
|
"file": "packages/ecl/components/ecl-featured/ecl-featured-item.component.ts",
|
|
55759
55630
|
"encapsulation": [],
|
|
55760
55631
|
"entryComponents": [],
|
|
55632
|
+
"host": {},
|
|
55761
55633
|
"inputs": [],
|
|
55762
55634
|
"outputs": [],
|
|
55763
55635
|
"providers": [],
|
|
@@ -55783,7 +55655,7 @@
|
|
|
55783
55655
|
"indexKey": "",
|
|
55784
55656
|
"optional": false,
|
|
55785
55657
|
"description": "",
|
|
55786
|
-
"line":
|
|
55658
|
+
"line": 28,
|
|
55787
55659
|
"rawdescription": "\n",
|
|
55788
55660
|
"required": false
|
|
55789
55661
|
},
|
|
@@ -55797,7 +55669,7 @@
|
|
|
55797
55669
|
"indexKey": "",
|
|
55798
55670
|
"optional": false,
|
|
55799
55671
|
"description": "",
|
|
55800
|
-
"line":
|
|
55672
|
+
"line": 27,
|
|
55801
55673
|
"rawdescription": "\n",
|
|
55802
55674
|
"required": false
|
|
55803
55675
|
},
|
|
@@ -55811,7 +55683,7 @@
|
|
|
55811
55683
|
"indexKey": "",
|
|
55812
55684
|
"optional": false,
|
|
55813
55685
|
"description": "",
|
|
55814
|
-
"line":
|
|
55686
|
+
"line": 29,
|
|
55815
55687
|
"rawdescription": "\n",
|
|
55816
55688
|
"required": false
|
|
55817
55689
|
},
|
|
@@ -55897,28 +55769,6 @@
|
|
|
55897
55769
|
}
|
|
55898
55770
|
],
|
|
55899
55771
|
"propertiesClass": [
|
|
55900
|
-
{
|
|
55901
|
-
"name": "className",
|
|
55902
|
-
"coverageIgnore": false,
|
|
55903
|
-
"defaultValue": "true",
|
|
55904
|
-
"deprecated": false,
|
|
55905
|
-
"deprecationMessage": "",
|
|
55906
|
-
"type": "unknown",
|
|
55907
|
-
"indexKey": "",
|
|
55908
|
-
"optional": false,
|
|
55909
|
-
"description": "",
|
|
55910
|
-
"line": 30,
|
|
55911
|
-
"rawdescription": "\n",
|
|
55912
|
-
"decorators": [
|
|
55913
|
-
{
|
|
55914
|
-
"name": "HostBinding",
|
|
55915
|
-
"stringifiedArguments": "'class.ecl-featured-item__item'"
|
|
55916
|
-
}
|
|
55917
|
-
],
|
|
55918
|
-
"modifierKind": [
|
|
55919
|
-
171
|
|
55920
|
-
]
|
|
55921
|
-
},
|
|
55922
55772
|
{
|
|
55923
55773
|
"name": "hasMedia",
|
|
55924
55774
|
"coverageIgnore": false,
|
|
@@ -55929,7 +55779,7 @@
|
|
|
55929
55779
|
"indexKey": "",
|
|
55930
55780
|
"optional": false,
|
|
55931
55781
|
"description": "",
|
|
55932
|
-
"line":
|
|
55782
|
+
"line": 33,
|
|
55933
55783
|
"rawdescription": "\n",
|
|
55934
55784
|
"modifierKind": [
|
|
55935
55785
|
124,
|
|
@@ -55946,7 +55796,7 @@
|
|
|
55946
55796
|
"indexKey": "",
|
|
55947
55797
|
"optional": false,
|
|
55948
55798
|
"description": "",
|
|
55949
|
-
"line":
|
|
55799
|
+
"line": 37,
|
|
55950
55800
|
"rawdescription": "\n",
|
|
55951
55801
|
"modifierKind": [
|
|
55952
55802
|
124,
|
|
@@ -55963,7 +55813,7 @@
|
|
|
55963
55813
|
"indexKey": "",
|
|
55964
55814
|
"optional": false,
|
|
55965
55815
|
"description": "",
|
|
55966
|
-
"line":
|
|
55816
|
+
"line": 36,
|
|
55967
55817
|
"rawdescription": "\n",
|
|
55968
55818
|
"modifierKind": [
|
|
55969
55819
|
124,
|
|
@@ -55980,7 +55830,7 @@
|
|
|
55980
55830
|
"indexKey": "",
|
|
55981
55831
|
"optional": false,
|
|
55982
55832
|
"description": "",
|
|
55983
|
-
"line":
|
|
55833
|
+
"line": 31,
|
|
55984
55834
|
"rawdescription": "\n",
|
|
55985
55835
|
"modifierKind": [
|
|
55986
55836
|
148
|
|
@@ -55996,7 +55846,7 @@
|
|
|
55996
55846
|
"indexKey": "",
|
|
55997
55847
|
"optional": false,
|
|
55998
55848
|
"description": "",
|
|
55999
|
-
"line":
|
|
55849
|
+
"line": 30,
|
|
56000
55850
|
"rawdescription": "\n"
|
|
56001
55851
|
}
|
|
56002
55852
|
],
|
|
@@ -56008,7 +55858,7 @@
|
|
|
56008
55858
|
"optional": false,
|
|
56009
55859
|
"returnType": "void",
|
|
56010
55860
|
"typeParameters": [],
|
|
56011
|
-
"line":
|
|
55861
|
+
"line": 39,
|
|
56012
55862
|
"deprecated": false,
|
|
56013
55863
|
"deprecationMessage": "",
|
|
56014
55864
|
"rawdescription": "\n",
|
|
@@ -56056,21 +55906,7 @@
|
|
|
56056
55906
|
"coverageIgnore": false,
|
|
56057
55907
|
"deprecated": false,
|
|
56058
55908
|
"deprecationMessage": "",
|
|
56059
|
-
"hostBindings": [
|
|
56060
|
-
{
|
|
56061
|
-
"coverageIgnore": false,
|
|
56062
|
-
"name": "class.ecl-featured-item__item",
|
|
56063
|
-
"actualName": "className",
|
|
56064
|
-
"defaultValue": "true",
|
|
56065
|
-
"deprecated": false,
|
|
56066
|
-
"deprecationMessage": "",
|
|
56067
|
-
"rawdescription": "\n",
|
|
56068
|
-
"description": "",
|
|
56069
|
-
"line": 30,
|
|
56070
|
-
"type": "boolean",
|
|
56071
|
-
"decorators": []
|
|
56072
|
-
}
|
|
56073
|
-
],
|
|
55909
|
+
"hostBindings": [],
|
|
56074
55910
|
"hostListeners": [],
|
|
56075
55911
|
"standalone": false,
|
|
56076
55912
|
"imports": [
|
|
@@ -56081,14 +55917,14 @@
|
|
|
56081
55917
|
"description": "<p>Container for the text part - title and description of the <ecl-featured> component.</p>\n",
|
|
56082
55918
|
"rawdescription": "\n\nContainer for the text part - title and description of the <ecl-featured> component.\n",
|
|
56083
55919
|
"type": "component",
|
|
56084
|
-
"sourceCode": "import { AfterContentInit, Component,
|
|
55920
|
+
"sourceCode": "import { AfterContentInit, Component, contentChild, computed, input, contentChildren } from '@angular/core';\nimport { EclMediaContainerComponent } from '@eui/ecl/components/ecl-media-container';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { uniqueId } from '@eui/core';\nimport { EclFeaturedItemLinkDirective } from './ecl-featured-item-link.directive';\nimport { NgTemplateOutlet } from '@angular/common';\n\n/**\n * Container for the text part - title and description of the <ecl-featured> component.\n */\n@Component({\n selector: 'ecl-featured-item, div[eclFeaturedItem]',\n imports: [NgTemplateOutlet],\n templateUrl: './ecl-featured-item.component.html',\n host: {\n 'class': 'ecl-featured-item__item',\n },\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class EclFeaturedItemComponent extends ECLBaseDirective implements AfterContentInit {\n eclTitle = input('');\n eclMicroTitle = input('');\n id = input<string>(`ecl-featured-item-${uniqueId()}`);\n mediaContainer = contentChild(EclMediaContainerComponent);\n readonly links = contentChildren(EclFeaturedItemLinkDirective, { descendants: true });\n\n protected readonly hasMedia = computed(() => {\n return !!this.mediaContainer() \n });\n protected readonly hasTitle = computed(() => this.eclTitle() !== '');\n protected readonly hasMicroTitle = computed(() => this.eclMicroTitle() !== '');\n\n ngAfterContentInit(): void {\n if (this.mediaContainer()) {\n this.mediaContainer().class.set('ecl-featured-item__media_container');\n }\n\n const describedBy = this.hasTitle() ? `${this.id()}-title` : null;\n const links = this.links();\n if (describedBy && links) {\n links.forEach(link => {\n link.ariaDescribedBy.set(describedBy);\n });\n }\n }\n}\n",
|
|
56085
55921
|
"assetsDirs": [],
|
|
56086
55922
|
"styleUrlsData": "",
|
|
56087
55923
|
"stylesData": "\n :host {\n display: block;\n }\n \n",
|
|
56088
55924
|
"jsdoctags": [
|
|
56089
55925
|
{
|
|
56090
|
-
"pos":
|
|
56091
|
-
"end":
|
|
55926
|
+
"pos": 419,
|
|
55927
|
+
"end": 514,
|
|
56092
55928
|
"kind": 321,
|
|
56093
55929
|
"id": 0,
|
|
56094
55930
|
"flags": 16777216,
|
|
@@ -56124,10 +55960,11 @@
|
|
|
56124
55960
|
},
|
|
56125
55961
|
{
|
|
56126
55962
|
"name": "EclFeaturedItemDescriptionComponent",
|
|
56127
|
-
"id": "component-EclFeaturedItemDescriptionComponent-
|
|
55963
|
+
"id": "component-EclFeaturedItemDescriptionComponent-e2a58c6d732bce30ad77e5c4dbb163d4f775ea447bd64435c739fbfbe3f766ae1cae0de5fe486cf4ebb0e071f7d9451f8fe62db884e68ef281e7e35db74db996",
|
|
56128
55964
|
"file": "packages/ecl/components/ecl-featured/ecl-featured-item-description.component.ts",
|
|
56129
55965
|
"encapsulation": [],
|
|
56130
55966
|
"entryComponents": [],
|
|
55967
|
+
"host": {},
|
|
56131
55968
|
"inputs": [],
|
|
56132
55969
|
"outputs": [],
|
|
56133
55970
|
"providers": [],
|
|
@@ -56224,30 +56061,7 @@
|
|
|
56224
56061
|
}
|
|
56225
56062
|
}
|
|
56226
56063
|
],
|
|
56227
|
-
"propertiesClass": [
|
|
56228
|
-
{
|
|
56229
|
-
"name": "className",
|
|
56230
|
-
"coverageIgnore": false,
|
|
56231
|
-
"defaultValue": "true",
|
|
56232
|
-
"deprecated": false,
|
|
56233
|
-
"deprecationMessage": "",
|
|
56234
|
-
"type": "unknown",
|
|
56235
|
-
"indexKey": "",
|
|
56236
|
-
"optional": false,
|
|
56237
|
-
"description": "",
|
|
56238
|
-
"line": 20,
|
|
56239
|
-
"rawdescription": "\n",
|
|
56240
|
-
"decorators": [
|
|
56241
|
-
{
|
|
56242
|
-
"name": "HostBinding",
|
|
56243
|
-
"stringifiedArguments": "'class.ecl-featured-item__description'"
|
|
56244
|
-
}
|
|
56245
|
-
],
|
|
56246
|
-
"modifierKind": [
|
|
56247
|
-
171
|
|
56248
|
-
]
|
|
56249
|
-
}
|
|
56250
|
-
],
|
|
56064
|
+
"propertiesClass": [],
|
|
56251
56065
|
"methodsClass": [
|
|
56252
56066
|
{
|
|
56253
56067
|
"name": "getCssClasses",
|
|
@@ -56291,35 +56105,21 @@
|
|
|
56291
56105
|
"coverageIgnore": false,
|
|
56292
56106
|
"deprecated": false,
|
|
56293
56107
|
"deprecationMessage": "",
|
|
56294
|
-
"hostBindings": [
|
|
56295
|
-
{
|
|
56296
|
-
"coverageIgnore": false,
|
|
56297
|
-
"name": "class.ecl-featured-item__description",
|
|
56298
|
-
"actualName": "className",
|
|
56299
|
-
"defaultValue": "true",
|
|
56300
|
-
"deprecated": false,
|
|
56301
|
-
"deprecationMessage": "",
|
|
56302
|
-
"rawdescription": "\n",
|
|
56303
|
-
"description": "",
|
|
56304
|
-
"line": 20,
|
|
56305
|
-
"type": "boolean",
|
|
56306
|
-
"decorators": []
|
|
56307
|
-
}
|
|
56308
|
-
],
|
|
56108
|
+
"hostBindings": [],
|
|
56309
56109
|
"hostListeners": [],
|
|
56310
56110
|
"standalone": false,
|
|
56311
56111
|
"imports": [],
|
|
56312
56112
|
"description": "<p>Applies specific additional class to style <ecl-featured-item-description> component, as a part of the\n <ecl-featured> component.</p>\n",
|
|
56313
56113
|
"rawdescription": "\n\nApplies specific additional class to style <ecl-featured-item-description> component, as a part of the\n <ecl-featured> component.\n",
|
|
56314
56114
|
"type": "component",
|
|
56315
|
-
"sourceCode": "import { Component
|
|
56115
|
+
"sourceCode": "import { Component } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Applies specific additional class to style <ecl-featured-item-description> component, as a part of the\n * <ecl-featured> component.\n */\n@Component({\n selector: 'ecl-featured-item-description',\n templateUrl: './ecl-featured-item-description.component.html',\n host: {\n 'class': 'ecl-featured-item__description',\n },\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class EclFeaturedItemDescriptionComponent extends ECLBaseDirective {}\n",
|
|
56316
56116
|
"assetsDirs": [],
|
|
56317
56117
|
"styleUrlsData": "",
|
|
56318
56118
|
"stylesData": "\n :host {\n display: block;\n }\n \n",
|
|
56319
56119
|
"jsdoctags": [
|
|
56320
56120
|
{
|
|
56321
|
-
"pos":
|
|
56322
|
-
"end":
|
|
56121
|
+
"pos": 94,
|
|
56122
|
+
"end": 237,
|
|
56323
56123
|
"kind": 321,
|
|
56324
56124
|
"id": 0,
|
|
56325
56125
|
"flags": 16777216,
|
|
@@ -63103,7 +62903,7 @@
|
|
|
63103
62903
|
},
|
|
63104
62904
|
{
|
|
63105
62905
|
"name": "EclLayoutWrapperComponent",
|
|
63106
|
-
"id": "component-EclLayoutWrapperComponent-
|
|
62906
|
+
"id": "component-EclLayoutWrapperComponent-85c50f845ab263497008e750a7bfb97eabd87d7658c79e726395aefca73438be4785b8b201e4ea5b5e530d340272fb35f215452677b937c821140fe540a919f6",
|
|
63107
62907
|
"file": "packages/ecl/components/ecl-layout-wrapper/ecl-layout-wrapper.component.ts",
|
|
63108
62908
|
"encapsulation": [],
|
|
63109
62909
|
"entryComponents": [],
|
|
@@ -63337,17 +63137,17 @@
|
|
|
63337
63137
|
"hostListeners": [],
|
|
63338
63138
|
"standalone": false,
|
|
63339
63139
|
"imports": [],
|
|
63340
|
-
"description": "<p>ECL Layout Wrapper component.\nArranges projected content into a responsive grid layout with configurable columns.\nIncludes optional title, description, and "view all" link areas.</p>\n<b>Example :</b><div><pre class=\"line-numbers\"><code class=\"language-html\"><div eclLayoutWrapper [columns]="3" direction="horizontal">\n <h2 eclLayoutWrapperTitle>Heading</h2>\n <div eclLayoutWrapperDescription>Description text</div>\n___COMPODOC_EMPTY_LINE___\n <div eclLayoutItem><article eclCard>...</article></div>\n <div eclLayoutItem><article eclCard>...</article></div>\n <div eclLayoutItem><article eclCard>...</article></div>\n___COMPODOC_EMPTY_LINE___\n <a eclLayoutWrapperViewAll eclLink
|
|
63341
|
-
"rawdescription": "\n\nECL Layout Wrapper component.\nArranges projected content into a responsive grid layout with configurable columns.\nIncludes optional title, description, and \"view all\" link areas.\n\n```html\n<div eclLayoutWrapper [columns]=\"3\" direction=\"horizontal\">\n <h2 eclLayoutWrapperTitle>Heading</h2>\n <div eclLayoutWrapperDescription>Description text</div>\n___COMPODOC_EMPTY_LINE___\n <div eclLayoutItem><article eclCard>...</article></div>\n <div eclLayoutItem><article eclCard>...</article></div>\n <div eclLayoutItem><article eclCard>...</article></div>\n___COMPODOC_EMPTY_LINE___\n <a eclLayoutWrapperViewAll eclLink
|
|
63140
|
+
"description": "<p>ECL Layout Wrapper component.\nArranges projected content into a responsive grid layout with configurable columns.\nIncludes optional title, description, and "view all" link areas.</p>\n<b>Example :</b><div><pre class=\"line-numbers\"><code class=\"language-html\"><div eclLayoutWrapper [columns]="3" direction="horizontal">\n <h2 eclLayoutWrapperTitle>Heading</h2>\n <div eclLayoutWrapperDescription>Description text</div>\n___COMPODOC_EMPTY_LINE___\n <div eclLayoutItem><article eclCard>...</article></div>\n <div eclLayoutItem><article eclCard>...</article></div>\n <div eclLayoutItem><article eclCard>...</article></div>\n___COMPODOC_EMPTY_LINE___\n <a eclLayoutWrapperViewAll eclLink icon="arrow-left">View all</a>\n</div></code></pre></div>",
|
|
63141
|
+
"rawdescription": "\n\nECL Layout Wrapper component.\nArranges projected content into a responsive grid layout with configurable columns.\nIncludes optional title, description, and \"view all\" link areas.\n\n```html\n<div eclLayoutWrapper [columns]=\"3\" direction=\"horizontal\">\n <h2 eclLayoutWrapperTitle>Heading</h2>\n <div eclLayoutWrapperDescription>Description text</div>\n___COMPODOC_EMPTY_LINE___\n <div eclLayoutItem><article eclCard>...</article></div>\n <div eclLayoutItem><article eclCard>...</article></div>\n <div eclLayoutItem><article eclCard>...</article></div>\n___COMPODOC_EMPTY_LINE___\n <a eclLayoutWrapperViewAll eclLink icon=\"arrow-left\">View all</a>\n</div>\n```",
|
|
63342
63142
|
"type": "component",
|
|
63343
|
-
"sourceCode": "import { booleanAttribute, Component, contentChild, contentChildren, effect, input, numberAttribute } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclLayoutItemDirective, EclLayoutWrapperViewAllDirective } from './ecl-layout-wrapper.directives';\n\n/**\n * ECL Layout Wrapper component.\n * Arranges projected content into a responsive grid layout with configurable columns.\n * Includes optional title, description, and \"view all\" link areas.\n *\n * @example\n * ```html\n * <div eclLayoutWrapper [columns]=\"3\" direction=\"horizontal\">\n * <h2 eclLayoutWrapperTitle>Heading</h2>\n * <div eclLayoutWrapperDescription>Description text</div>\n *\n * <div eclLayoutItem><article eclCard>...</article></div>\n * <div eclLayoutItem><article eclCard>...</article></div>\n * <div eclLayoutItem><article eclCard>...</article></div>\n *\n * <a eclLayoutWrapperViewAll eclLink
|
|
63143
|
+
"sourceCode": "import { booleanAttribute, Component, contentChild, contentChildren, effect, input, numberAttribute } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclLayoutItemDirective, EclLayoutWrapperViewAllDirective } from './ecl-layout-wrapper.directives';\n\n/**\n * ECL Layout Wrapper component.\n * Arranges projected content into a responsive grid layout with configurable columns.\n * Includes optional title, description, and \"view all\" link areas.\n *\n * @example\n * ```html\n * <div eclLayoutWrapper [columns]=\"3\" direction=\"horizontal\">\n * <h2 eclLayoutWrapperTitle>Heading</h2>\n * <div eclLayoutWrapperDescription>Description text</div>\n *\n * <div eclLayoutItem><article eclCard>...</article></div>\n * <div eclLayoutItem><article eclCard>...</article></div>\n * <div eclLayoutItem><article eclCard>...</article></div>\n *\n * <a eclLayoutWrapperViewAll eclLink icon=\"arrow-left\">View all</a>\n * </div>\n * ```\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclLayoutWrapper]',\n templateUrl: './ecl-layout-wrapper.component.html',\n host: {\n '[class]': 'cssClasses',\n },\n})\nexport class EclLayoutWrapperComponent extends ECLBaseDirective {\n /** Number of columns for the grid layout. Accepts 2, 3, or 4. Defaults to 3. */\n columns = input(3, { transform: numberAttribute });\n\n /** Position of the info block (title + description). */\n infoPosition = input<'top' | 'side'>('top');\n\n /** Force column number instead of dynamic management. Use with caution. */\n forcedColumn = input(false, { transform: booleanAttribute });\n\n /** Flow of items. */\n direction = input<'horizontal' | 'vertical'>('horizontal');\n\n /** Display all the elements at full height. */\n fullHeight = input(true, { transform: booleanAttribute });\n\n /** Whether a view-all link is projected. */\n protected hasViewAll = contentChild(EclLayoutWrapperViewAllDirective);\n\n /** Projected layout items that will be auto-indexed. */\n private items = contentChildren(EclLayoutItemDirective);\n\n /** Host CSS classes based on inputs. */\n // TODO: change this to computed, when the BaseDirective is migrated to signals.\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-layout-wrapper'),\n `ecl-layout-wrapper--col-${this.columns()}`,\n this.infoPosition() === 'side' ? 'ecl-layout-wrapper--info-side' : '',\n this.direction() === 'vertical' ? 'ecl-layout-wrapper--vertical' : '',\n this.fullHeight() ? '' : 'ecl-layout-wrapper--height-auto',\n this.forcedColumn() ? 'ecl-layout-wrapper--forced' : '',\n ].filter(Boolean).join(' ');\n }\n\n constructor() {\n super();\n effect(() => {\n const items = this.items();\n items.forEach((item, i) => item.index.set(i + 1));\n });\n }\n}\n",
|
|
63344
63144
|
"assetsDirs": [],
|
|
63345
63145
|
"styleUrlsData": "",
|
|
63346
63146
|
"stylesData": "",
|
|
63347
63147
|
"jsdoctags": [
|
|
63348
63148
|
{
|
|
63349
63149
|
"pos": 481,
|
|
63350
|
-
"end":
|
|
63150
|
+
"end": 947,
|
|
63351
63151
|
"kind": 328,
|
|
63352
63152
|
"id": 0,
|
|
63353
63153
|
"flags": 16777216,
|
|
@@ -63362,7 +63162,7 @@
|
|
|
63362
63162
|
"transformFlags": 0,
|
|
63363
63163
|
"escapedText": "example"
|
|
63364
63164
|
},
|
|
63365
|
-
"comment": "<b>Example :</b><div><pre class=\"line-numbers\"><code class=\"language-html\"><div eclLayoutWrapper [columns]="3" direction="horizontal">\n <h2 eclLayoutWrapperTitle>Heading</h2>\n <div eclLayoutWrapperDescription>Description text</div>\n\n <div eclLayoutItem><article eclCard>...</article></div>\n <div eclLayoutItem><article eclCard>...</article></div>\n <div eclLayoutItem><article eclCard>...</article></div>\n\n <a eclLayoutWrapperViewAll eclLink
|
|
63165
|
+
"comment": "<b>Example :</b><div><pre class=\"line-numbers\"><code class=\"language-html\"><div eclLayoutWrapper [columns]="3" direction="horizontal">\n <h2 eclLayoutWrapperTitle>Heading</h2>\n <div eclLayoutWrapperDescription>Description text</div>\n\n <div eclLayoutItem><article eclCard>...</article></div>\n <div eclLayoutItem><article eclCard>...</article></div>\n <div eclLayoutItem><article eclCard>...</article></div>\n\n <a eclLayoutWrapperViewAll eclLink icon="arrow-left">View all</a>\n</div></code></pre></div>"
|
|
63366
63166
|
}
|
|
63367
63167
|
],
|
|
63368
63168
|
"constructorObj": {
|
|
@@ -99387,7 +99187,7 @@
|
|
|
99387
99187
|
"name": "ARROW_SIZE",
|
|
99388
99188
|
"ctype": "miscellaneous",
|
|
99389
99189
|
"subtype": "variable",
|
|
99390
|
-
"file": "packages/ecl/components/ecl-site-header/
|
|
99190
|
+
"file": "packages/ecl/components/ecl-site-header/login/ecl-site-header-login.component.ts",
|
|
99391
99191
|
"coverageIgnore": false,
|
|
99392
99192
|
"deprecated": false,
|
|
99393
99193
|
"deprecationMessage": "",
|
|
@@ -99400,7 +99200,7 @@
|
|
|
99400
99200
|
"name": "ARROW_SIZE",
|
|
99401
99201
|
"ctype": "miscellaneous",
|
|
99402
99202
|
"subtype": "variable",
|
|
99403
|
-
"file": "packages/ecl/components/ecl-site-header/
|
|
99203
|
+
"file": "packages/ecl/components/ecl-site-header/language/ecl-site-header-language.component.ts",
|
|
99404
99204
|
"coverageIgnore": false,
|
|
99405
99205
|
"deprecated": false,
|
|
99406
99206
|
"deprecationMessage": "",
|
|
@@ -100336,23 +100136,23 @@
|
|
|
100336
100136
|
"name": "noop",
|
|
100337
100137
|
"ctype": "miscellaneous",
|
|
100338
100138
|
"subtype": "variable",
|
|
100339
|
-
"file": "packages/ecl/components/ecl-
|
|
100139
|
+
"file": "packages/ecl/components/ecl-search-form/ecl-search-form.component.ts",
|
|
100340
100140
|
"coverageIgnore": false,
|
|
100341
100141
|
"deprecated": false,
|
|
100342
100142
|
"deprecationMessage": "",
|
|
100343
100143
|
"type": "unknown",
|
|
100344
|
-
"defaultValue": "(): void => {\n /** empty
|
|
100144
|
+
"defaultValue": "(): void => {\n /** empty*/\n}"
|
|
100345
100145
|
},
|
|
100346
100146
|
{
|
|
100347
100147
|
"name": "noop",
|
|
100348
100148
|
"ctype": "miscellaneous",
|
|
100349
100149
|
"subtype": "variable",
|
|
100350
|
-
"file": "packages/ecl/components/ecl-
|
|
100150
|
+
"file": "packages/ecl/components/ecl-rating-field/ecl-rating-field.component.ts",
|
|
100351
100151
|
"coverageIgnore": false,
|
|
100352
100152
|
"deprecated": false,
|
|
100353
100153
|
"deprecationMessage": "",
|
|
100354
100154
|
"type": "unknown",
|
|
100355
|
-
"defaultValue": "(): void => {\n /** empty*/\n}"
|
|
100155
|
+
"defaultValue": "(): void => {\n /** empty */\n}"
|
|
100356
100156
|
},
|
|
100357
100157
|
{
|
|
100358
100158
|
"name": "noop",
|
|
@@ -100870,21 +100670,6 @@
|
|
|
100870
100670
|
}
|
|
100871
100671
|
],
|
|
100872
100672
|
"groupedVariables": {
|
|
100873
|
-
"packages/ecl/components/ecl-site-header/language/ecl-site-header-language.component.ts": [
|
|
100874
|
-
{
|
|
100875
|
-
"name": "ARROW_SIZE",
|
|
100876
|
-
"ctype": "miscellaneous",
|
|
100877
|
-
"subtype": "variable",
|
|
100878
|
-
"file": "packages/ecl/components/ecl-site-header/language/ecl-site-header-language.component.ts",
|
|
100879
|
-
"coverageIgnore": false,
|
|
100880
|
-
"deprecated": false,
|
|
100881
|
-
"deprecationMessage": "",
|
|
100882
|
-
"type": "string",
|
|
100883
|
-
"defaultValue": "'0.5rem'",
|
|
100884
|
-
"rawdescription": "Half the arrow's own width, matching ECL's `arrowSize`.",
|
|
100885
|
-
"description": "<p>Half the arrow's own width, matching ECL's <code>arrowSize</code>.</p>\n"
|
|
100886
|
-
}
|
|
100887
|
-
],
|
|
100888
100673
|
"packages/ecl/components/ecl-site-header/login/ecl-site-header-login.component.ts": [
|
|
100889
100674
|
{
|
|
100890
100675
|
"name": "ARROW_SIZE",
|
|
@@ -100913,6 +100698,21 @@
|
|
|
100913
100698
|
"description": "<p>Debounce for the resize recomputation, matching ECL's <code>handleResize</code>.</p>\n"
|
|
100914
100699
|
}
|
|
100915
100700
|
],
|
|
100701
|
+
"packages/ecl/components/ecl-site-header/language/ecl-site-header-language.component.ts": [
|
|
100702
|
+
{
|
|
100703
|
+
"name": "ARROW_SIZE",
|
|
100704
|
+
"ctype": "miscellaneous",
|
|
100705
|
+
"subtype": "variable",
|
|
100706
|
+
"file": "packages/ecl/components/ecl-site-header/language/ecl-site-header-language.component.ts",
|
|
100707
|
+
"coverageIgnore": false,
|
|
100708
|
+
"deprecated": false,
|
|
100709
|
+
"deprecationMessage": "",
|
|
100710
|
+
"type": "string",
|
|
100711
|
+
"defaultValue": "'0.5rem'",
|
|
100712
|
+
"rawdescription": "Half the arrow's own width, matching ECL's `arrowSize`.",
|
|
100713
|
+
"description": "<p>Half the arrow's own width, matching ECL's <code>arrowSize</code>.</p>\n"
|
|
100714
|
+
}
|
|
100715
|
+
],
|
|
100916
100716
|
"packages/ecl/components/ecl-site-header/search/ecl-site-header-search.component.ts": [
|
|
100917
100717
|
{
|
|
100918
100718
|
"name": "ARROW_SIZE",
|