carbon-components-angular 5.57.3 → 5.57.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/contained-list/contained-list.component.d.ts +5 -1
  2. package/docs/documentation/components/ContainedList.html +49 -15
  3. package/docs/documentation/components/Dropdown.html +119 -121
  4. package/docs/documentation/coverage.html +3 -3
  5. package/docs/documentation/js/search/search_index.js +2 -2
  6. package/docs/documentation/modules/ComboBoxModule/dependencies.svg +4 -4
  7. package/docs/documentation/modules/ComboBoxModule.html +4 -4
  8. package/docs/documentation/modules/DatePickerInputModule/dependencies.svg +41 -37
  9. package/docs/documentation/modules/DatePickerInputModule.html +41 -37
  10. package/docs/documentation/modules/DialogModule/dependencies.svg +34 -34
  11. package/docs/documentation/modules/DialogModule.html +34 -34
  12. package/docs/documentation/modules/FileUploaderModule/dependencies.svg +36 -36
  13. package/docs/documentation/modules/FileUploaderModule.html +36 -36
  14. package/docs/documentation/modules/NumberModule/dependencies.svg +4 -4
  15. package/docs/documentation/modules/NumberModule.html +4 -4
  16. package/docs/documentation/modules/RadioModule/dependencies.svg +48 -48
  17. package/docs/documentation/modules/RadioModule.html +48 -48
  18. package/docs/documentation/modules/SelectModule/dependencies.svg +43 -43
  19. package/docs/documentation/modules/SelectModule.html +43 -43
  20. package/docs/documentation/modules/SliderModule/dependencies.svg +4 -4
  21. package/docs/documentation/modules/SliderModule.html +4 -4
  22. package/docs/documentation/modules/TabsModule/dependencies.svg +69 -69
  23. package/docs/documentation/modules/TabsModule.html +69 -69
  24. package/docs/documentation/modules/TagModule/dependencies.svg +37 -37
  25. package/docs/documentation/modules/TagModule.html +37 -37
  26. package/docs/documentation/modules/ThemeModule/dependencies.svg +14 -14
  27. package/docs/documentation/modules/ThemeModule.html +14 -14
  28. package/docs/documentation/modules/TilesModule/dependencies.svg +91 -91
  29. package/docs/documentation/modules/TilesModule.html +91 -91
  30. package/docs/documentation/modules/TimePickerModule/dependencies.svg +18 -18
  31. package/docs/documentation/modules/TimePickerModule.html +18 -18
  32. package/docs/documentation/modules/TimePickerSelectModule/dependencies.svg +23 -23
  33. package/docs/documentation/modules/TimePickerSelectModule.html +23 -23
  34. package/docs/documentation/modules/ToggleModule/dependencies.svg +6 -6
  35. package/docs/documentation/modules/ToggleModule.html +6 -6
  36. package/docs/documentation/modules/ToggletipModule/dependencies.svg +4 -4
  37. package/docs/documentation/modules/ToggletipModule.html +4 -4
  38. package/docs/documentation/modules/TooltipModule/dependencies.svg +29 -29
  39. package/docs/documentation/modules/TooltipModule.html +29 -29
  40. package/docs/documentation/modules/TreeviewModule/dependencies.svg +30 -30
  41. package/docs/documentation/modules/TreeviewModule.html +30 -30
  42. package/docs/documentation/modules/UIShellModule/dependencies.svg +4 -4
  43. package/docs/documentation/modules/UIShellModule.html +4 -4
  44. package/docs/documentation.json +179 -169
  45. package/docs/storybook/3224.9801f536.iframe.bundle.js +1 -0
  46. package/docs/storybook/contained-list-contained-list-stories.b7913db8.iframe.bundle.js +1 -0
  47. package/docs/storybook/iframe.html +2 -2
  48. package/docs/storybook/main.575135b9.iframe.bundle.js +1 -0
  49. package/docs/storybook/project.json +1 -1
  50. package/docs/storybook/{runtime~main.9e428f42.iframe.bundle.js → runtime~main.d377732d.iframe.bundle.js} +1 -1
  51. package/esm2020/contained-list/contained-list.component.mjs +6 -4
  52. package/esm2020/dropdown/dropdown.component.mjs +1 -3
  53. package/fesm2015/carbon-components-angular-contained-list.mjs +5 -3
  54. package/fesm2015/carbon-components-angular-contained-list.mjs.map +1 -1
  55. package/fesm2015/carbon-components-angular-dropdown.mjs +0 -2
  56. package/fesm2015/carbon-components-angular-dropdown.mjs.map +1 -1
  57. package/fesm2020/carbon-components-angular-contained-list.mjs +5 -3
  58. package/fesm2020/carbon-components-angular-contained-list.mjs.map +1 -1
  59. package/fesm2020/carbon-components-angular-dropdown.mjs +0 -2
  60. package/fesm2020/carbon-components-angular-dropdown.mjs.map +1 -1
  61. package/package.json +1 -1
  62. package/docs/storybook/3224.9896492c.iframe.bundle.js +0 -1
  63. package/docs/storybook/contained-list-contained-list-stories.b87addfb.iframe.bundle.js +0 -1
  64. package/docs/storybook/main.23328ef9.iframe.bundle.js +0 -1
@@ -25263,7 +25263,7 @@
25263
25263
  },
25264
25264
  {
25265
25265
  "name": "ContainedList",
25266
- "id": "component-ContainedList-1c5ffbaef841f69f00060fb737ec1c6de87711ca940bb0ee583f6f72a622bbd432d83b7a108c206bf6be21d76cbb9eba927f19cd6a805717037baf59af9656dd",
25266
+ "id": "component-ContainedList-207a5131842308ae824ff732bf4685cc678d471181ee6124ab1c65c949594670f38ee9e5277759da3118cca2b1a88763cf73ceb19a3c0b777307a4f45ee52fad",
25267
25267
  "file": "src/contained-list/contained-list.component.ts",
25268
25268
  "changeDetection": "ChangeDetectionStrategy.OnPush",
25269
25269
  "encapsulation": [],
@@ -25274,7 +25274,7 @@
25274
25274
  "selector": "cds-contained-list, ibm-contained-list",
25275
25275
  "styleUrls": [],
25276
25276
  "styles": [],
25277
- "template": "<div\n\tclass=\"cds--contained-list\"\n\t[ngClass]=\"{\n\t\t'cds--contained-list--inset-rulers': isInset,\n\t\t'cds--contained-list--on-page': kind === ContainedListKind.OnPage,\n\t\t'cds--contained-list--disclosed': kind === ContainedListKind.Disclosed,\n\t\t'cds--contained-list--sm': size === ContainedListSize.Small,\n\t\t'cds--contained-list--md': size === ContainedListSize.Medium,\n\t\t'cds--contained-list--lg': size === ContainedListSize.Large,\n\t\t'cds--contained-list--xl': size === ContainedListSize.ExtraLarge,\n\t\t'cds--layout--size-sm': size === ContainedListSize.Small,\n\t\t'cds--layout--size-md': size === ContainedListSize.Medium,\n\t\t'cds--layout--size-lg': size === ContainedListSize.Large,\n\t\t'cds--layout--size-xl': size === ContainedListSize.ExtraLarge\n\t}\">\n\t<div class=\"cds--contained-list__header\">\n\t\t<div [id]=\"labelId\" class=\"cds--contained-list__label\">\n\t\t\t<ng-container *ngIf=\"!isTemplate(label)\">{{ label }}</ng-container>\n\t\t\t<ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n\t\t</div>\n\n\t\t<div class=\"cds--contained-list__action\" *ngIf=\"action\">\n\t\t\t<ng-template [ngTemplateOutlet]=\"action\"></ng-template>\n\t\t</div>\n\t</div>\n\t<div role=\"list\" [attr.aria-labelledby]=\"labelId\">\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n\t",
25277
+ "template": "<div\n\tclass=\"cds--contained-list\"\n\t[ngClass]=\"{\n\t\t'cds--contained-list--inset-rulers': isInset,\n\t\t'cds--contained-list--on-page': kind === ContainedListKind.OnPage,\n\t\t'cds--contained-list--disclosed': kind === ContainedListKind.Disclosed,\n\t\t'cds--contained-list--sm': size === ContainedListSize.Small,\n\t\t'cds--contained-list--md': size === ContainedListSize.Medium,\n\t\t'cds--contained-list--lg': size === ContainedListSize.Large,\n\t\t'cds--contained-list--xl': size === ContainedListSize.ExtraLarge,\n\t\t'cds--layout--size-sm': size === ContainedListSize.Small,\n\t\t'cds--layout--size-md': size === ContainedListSize.Medium,\n\t\t'cds--layout--size-lg': size === ContainedListSize.Large,\n\t\t'cds--layout--size-xl': size === ContainedListSize.ExtraLarge\n\t}\">\n\t<div class=\"cds--contained-list__header\">\n\t\t<div [id]=\"labelId\" class=\"cds--contained-list__label\">\n\t\t\t<ng-container *ngIf=\"!isTemplate(label)\">{{ label }}</ng-container>\n\t\t\t<ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n\t\t</div>\n\n\t\t<div class=\"cds--contained-list__action\" *ngIf=\"action\">\n\t\t\t<ng-template [ngTemplateOutlet]=\"action\" [ngTemplateOutletContext]=\"{ $implicit: actionData }\"></ng-template>\n\t\t</div>\n\t</div>\n\t<div role=\"list\" [attr.aria-labelledby]=\"labelId\">\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n\t",
25278
25278
  "templateUrl": [],
25279
25279
  "viewProviders": [],
25280
25280
  "hostDirectives": [],
@@ -25285,10 +25285,20 @@
25285
25285
  "deprecationMessage": "",
25286
25286
  "rawdescription": "\n\nA slot for a possible interactive element to render within the list header.\n",
25287
25287
  "description": "<p>A slot for a possible interactive element to render within the list header.</p>\n",
25288
- "line": 61,
25288
+ "line": 60,
25289
25289
  "type": "TemplateRef<any>",
25290
25290
  "decorators": []
25291
25291
  },
25292
+ {
25293
+ "name": "actionData",
25294
+ "deprecated": false,
25295
+ "deprecationMessage": "",
25296
+ "rawdescription": "\n\nOptional interactive element data.\n",
25297
+ "description": "<p>Optional interactive element data.</p>\n",
25298
+ "line": 65,
25299
+ "type": "any",
25300
+ "decorators": []
25301
+ },
25292
25302
  {
25293
25303
  "name": "isInset",
25294
25304
  "defaultValue": "false",
@@ -25296,7 +25306,7 @@
25296
25306
  "deprecationMessage": "",
25297
25307
  "rawdescription": "\n\nSpecify whether the dividing lines in between list items should be inset.\n",
25298
25308
  "description": "<p>Specify whether the dividing lines in between list items should be inset.</p>\n",
25299
- "line": 66,
25309
+ "line": 70,
25300
25310
  "type": "boolean",
25301
25311
  "decorators": []
25302
25312
  },
@@ -25307,7 +25317,7 @@
25307
25317
  "deprecationMessage": "",
25308
25318
  "rawdescription": "\n\nThe kind of ContainedList you want to display.\n",
25309
25319
  "description": "<p>The kind of ContainedList you want to display.</p>\n",
25310
- "line": 71,
25320
+ "line": 75,
25311
25321
  "type": "ContainedListKind",
25312
25322
  "decorators": []
25313
25323
  },
@@ -25317,7 +25327,7 @@
25317
25327
  "deprecationMessage": "",
25318
25328
  "rawdescription": "\n\nA label describing the contained list.\n",
25319
25329
  "description": "<p>A label describing the contained list.</p>\n",
25320
- "line": 76,
25330
+ "line": 80,
25321
25331
  "type": "string | TemplateRef<any>",
25322
25332
  "decorators": []
25323
25333
  },
@@ -25328,7 +25338,7 @@
25328
25338
  "deprecationMessage": "",
25329
25339
  "rawdescription": "\n\nLabel id for the contained list.\n",
25330
25340
  "description": "<p>Label id for the contained list.</p>\n",
25331
- "line": 86,
25341
+ "line": 90,
25332
25342
  "type": "string",
25333
25343
  "decorators": []
25334
25344
  },
@@ -25339,7 +25349,7 @@
25339
25349
  "deprecationMessage": "",
25340
25350
  "rawdescription": "\n\nSpecify the size of the contained list.\n",
25341
25351
  "description": "<p>Specify the size of the contained list.</p>\n",
25342
- "line": 81,
25352
+ "line": 85,
25343
25353
  "type": "ContainedListSize",
25344
25354
  "decorators": []
25345
25355
  }
@@ -25354,7 +25364,7 @@
25354
25364
  "type": "",
25355
25365
  "optional": false,
25356
25366
  "description": "<p>Exposing ContainedListKind enum to the template</p>\n",
25357
- "line": 96,
25367
+ "line": 100,
25358
25368
  "rawdescription": "\n\nExposing ContainedListKind enum to the template\n",
25359
25369
  "modifierKind": [
25360
25370
  125
@@ -25368,7 +25378,7 @@
25368
25378
  "type": "",
25369
25379
  "optional": false,
25370
25380
  "description": "<p>Exposing ContainedListSize enum to the template</p>\n",
25371
- "line": 91,
25381
+ "line": 95,
25372
25382
  "rawdescription": "\n\nExposing ContainedListSize enum to the template\n",
25373
25383
  "modifierKind": [
25374
25384
  125
@@ -25389,7 +25399,7 @@
25389
25399
  "optional": false,
25390
25400
  "returnType": "boolean",
25391
25401
  "typeParameters": [],
25392
- "line": 98,
25402
+ "line": 102,
25393
25403
  "deprecated": false,
25394
25404
  "deprecationMessage": "",
25395
25405
  "modifierKind": [
@@ -25417,7 +25427,7 @@
25417
25427
  "description": "<p>Get started with importing the module:</p>\n<b>Example :</b><div><pre class=\"line-numbers\"><code class=\"language-typescript\">import { ContainedListModule } from &#39;carbon-components-angular&#39;;</code></pre></div><p><a href=\"../../?path=/story/components-contained-list--basic\">See demo</a></p>\n",
25418
25428
  "rawdescription": "\n\nGet started with importing the module:\n\n```typescript\nimport { ContainedListModule } from 'carbon-components-angular';\n```\n\n[See demo](../../?path=/story/components-contained-list--basic)\n",
25419
25429
  "type": "component",
25420
- "sourceCode": "import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tHostBinding,\n\tInput,\n\tTemplateRef\n} from \"@angular/core\";\nimport { ContainedListKind, ContainedListSize } from \"./contained-list.enums\";\n\n/**\n * Get started with importing the module:\n *\n * ```typescript\n * import { ContainedListModule } from 'carbon-components-angular';\n * ```\n *\n * [See demo](../../?path=/story/components-contained-list--basic)\n */\n@Component({\n\tselector: \"cds-contained-list, ibm-contained-list\",\n\ttemplate: `\n\t\t<div\n\t\t\tclass=\"cds--contained-list\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'cds--contained-list--inset-rulers': isInset,\n\t\t\t\t'cds--contained-list--on-page': kind === ContainedListKind.OnPage,\n\t\t\t\t'cds--contained-list--disclosed': kind === ContainedListKind.Disclosed,\n\t\t\t\t'cds--contained-list--sm': size === ContainedListSize.Small,\n\t\t\t\t'cds--contained-list--md': size === ContainedListSize.Medium,\n\t\t\t\t'cds--contained-list--lg': size === ContainedListSize.Large,\n\t\t\t\t'cds--contained-list--xl': size === ContainedListSize.ExtraLarge,\n\t\t\t\t'cds--layout--size-sm': size === ContainedListSize.Small,\n\t\t\t\t'cds--layout--size-md': size === ContainedListSize.Medium,\n\t\t\t\t'cds--layout--size-lg': size === ContainedListSize.Large,\n\t\t\t\t'cds--layout--size-xl': size === ContainedListSize.ExtraLarge\n\t\t\t}\">\n\t\t\t<div class=\"cds--contained-list__header\">\n\t\t\t\t<div [id]=\"labelId\" class=\"cds--contained-list__label\">\n\t\t\t\t\t<ng-container *ngIf=\"!isTemplate(label)\">{{ label }}</ng-container>\n\t\t\t\t\t<ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"cds--contained-list__action\" *ngIf=\"action\">\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"action\"></ng-template>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div role=\"list\" [attr.aria-labelledby]=\"labelId\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ContainedList {\n\t/** Used to generate unique IDs */\n\tprivate static count = 0;\n\n\t/**\n\t * A slot for a possible interactive element to render within the list header.\n\t */\n\t@Input() action: TemplateRef<any>;\n\n\t/**\n\t * Specify whether the dividing lines in between list items should be inset.\n\t */\n\t@Input() isInset = false;\n\n\t/**\n\t * The kind of ContainedList you want to display.\n\t */\n\t@Input() kind: ContainedListKind = ContainedListKind.OnPage;\n\n\t/**\n\t * A label describing the contained list.\n\t */\n\t@Input() label: string | TemplateRef<any>;\n\n\t/**\n\t * Specify the size of the contained list.\n\t */\n\t@Input() size: ContainedListSize = ContainedListSize.Large;\n\n\t/**\n\t * Label id for the contained list.\n\t */\n\t@Input() labelId = `contained-list-${ContainedList.count++}-header`;\n\n\t/**\n\t * Exposing ContainedListSize enum to the template\n\t */\n\tpublic ContainedListSize: typeof ContainedListSize = ContainedListSize;\n\n\t/**\n\t * Exposing ContainedListKind enum to the template\n\t */\n\tpublic ContainedListKind: typeof ContainedListKind = ContainedListKind;\n\n\tpublic isTemplate(value: string | TemplateRef<any>) {\n\t\treturn value instanceof TemplateRef;\n\t}\n}\n",
25430
+ "sourceCode": "import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tInput,\n\tTemplateRef\n} from \"@angular/core\";\nimport { ContainedListKind, ContainedListSize } from \"./contained-list.enums\";\n\n/**\n * Get started with importing the module:\n *\n * ```typescript\n * import { ContainedListModule } from 'carbon-components-angular';\n * ```\n *\n * [See demo](../../?path=/story/components-contained-list--basic)\n */\n@Component({\n\tselector: \"cds-contained-list, ibm-contained-list\",\n\ttemplate: `\n\t\t<div\n\t\t\tclass=\"cds--contained-list\"\n\t\t\t[ngClass]=\"{\n\t\t\t\t'cds--contained-list--inset-rulers': isInset,\n\t\t\t\t'cds--contained-list--on-page': kind === ContainedListKind.OnPage,\n\t\t\t\t'cds--contained-list--disclosed': kind === ContainedListKind.Disclosed,\n\t\t\t\t'cds--contained-list--sm': size === ContainedListSize.Small,\n\t\t\t\t'cds--contained-list--md': size === ContainedListSize.Medium,\n\t\t\t\t'cds--contained-list--lg': size === ContainedListSize.Large,\n\t\t\t\t'cds--contained-list--xl': size === ContainedListSize.ExtraLarge,\n\t\t\t\t'cds--layout--size-sm': size === ContainedListSize.Small,\n\t\t\t\t'cds--layout--size-md': size === ContainedListSize.Medium,\n\t\t\t\t'cds--layout--size-lg': size === ContainedListSize.Large,\n\t\t\t\t'cds--layout--size-xl': size === ContainedListSize.ExtraLarge\n\t\t\t}\">\n\t\t\t<div class=\"cds--contained-list__header\">\n\t\t\t\t<div [id]=\"labelId\" class=\"cds--contained-list__label\">\n\t\t\t\t\t<ng-container *ngIf=\"!isTemplate(label)\">{{ label }}</ng-container>\n\t\t\t\t\t<ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"cds--contained-list__action\" *ngIf=\"action\">\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"action\" [ngTemplateOutletContext]=\"{ $implicit: actionData }\"></ng-template>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div role=\"list\" [attr.aria-labelledby]=\"labelId\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ContainedList {\n\t/** Used to generate unique IDs */\n\tprivate static count = 0;\n\n\t/**\n\t * A slot for a possible interactive element to render within the list header.\n\t */\n\t@Input() action: TemplateRef<any>;\n\n\t/**\n\t * Optional interactive element data.\n\t */\n\t@Input() actionData: any;\n\n\t/**\n\t * Specify whether the dividing lines in between list items should be inset.\n\t */\n\t@Input() isInset = false;\n\n\t/**\n\t * The kind of ContainedList you want to display.\n\t */\n\t@Input() kind: ContainedListKind = ContainedListKind.OnPage;\n\n\t/**\n\t * A label describing the contained list.\n\t */\n\t@Input() label: string | TemplateRef<any>;\n\n\t/**\n\t * Specify the size of the contained list.\n\t */\n\t@Input() size: ContainedListSize = ContainedListSize.Large;\n\n\t/**\n\t * Label id for the contained list.\n\t */\n\t@Input() labelId = `contained-list-${ContainedList.count++}-header`;\n\n\t/**\n\t * Exposing ContainedListSize enum to the template\n\t */\n\tpublic ContainedListSize: typeof ContainedListSize = ContainedListSize;\n\n\t/**\n\t * Exposing ContainedListKind enum to the template\n\t */\n\tpublic ContainedListKind: typeof ContainedListKind = ContainedListKind;\n\n\tpublic isTemplate(value: string | TemplateRef<any>) {\n\t\treturn value instanceof TemplateRef;\n\t}\n}\n",
25421
25431
  "assetsDirs": [],
25422
25432
  "styleUrlsData": "",
25423
25433
  "stylesData": "",
@@ -29225,7 +29235,7 @@
29225
29235
  },
29226
29236
  {
29227
29237
  "name": "Dropdown",
29228
- "id": "component-Dropdown-be1a94d9a158990086693e978c1d4dfe355b056237ee57e0c730b3918066a689043bcc15576d135beacb8e26a037a7f78399005aa79b4b60f73aa668a3b36865",
29238
+ "id": "component-Dropdown-63f44af5e6ad9ac5122d6ecf45223ecf29c119482e7fd0214a9b525564e1992686ae651041d0e8bb0a86c4689c871b701568da96c7264a7d951123b2733e1635",
29229
29239
  "file": "src/dropdown/dropdown.component.ts",
29230
29240
  "encapsulation": [],
29231
29241
  "entryComponents": [],
@@ -29239,7 +29249,7 @@
29239
29249
  "selector": "cds-dropdown, ibm-dropdown",
29240
29250
  "styleUrls": [],
29241
29251
  "styles": [],
29242
- "template": "<label\n\t*ngIf=\"label && !skeleton\"\n\t[for]=\"id\"\n\tclass=\"cds--label\"\n\t[ngClass]=\"{\n\t\t'cds--label--disabled': disabled,\n\t\t'cds--visually-hidden': hideLabel\n\t}\">\n\t<ng-container *ngIf=\"!isTemplate(label)\">{{label}}</ng-container>\n\t<ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n</label>\n<div\n\tclass=\"cds--list-box\"\n\t[ngClass]=\"{\n\t\t'cds--dropdown': type !== 'multi' && !(skeleton && fluid),\n\t\t'cds--multiselect': type === 'multi',\n\t\t'cds--multi-select--selected': type === 'multi' && getSelectedCount() > 0,\n\t\t'cds--dropdown--light': theme === 'light',\n\t\t'cds--list-box--light': theme === 'light',\n\t\t'cds--list-box--inline': inline,\n\t\t'cds--skeleton': skeleton,\n\t\t'cds--dropdown--disabled cds--list-box--disabled': disabled,\n\t\t'cds--dropdown--readonly': readonly,\n\t\t'cds--dropdown--invalid': invalid,\n\t\t'cds--dropdown--warning cds--list-box--warning': warn,\n\t\t'cds--dropdown--sm cds--list-box--sm': size === 'sm',\n\t\t'cds--dropdown--md cds--list-box--md': size === 'md',\n\t\t'cds--dropdown--lg cds--list-box--lg': size === 'lg',\n\t\t'cds--list-box--expanded': !menuIsClosed,\n\t\t'cds--list-box--invalid': invalid\n\t}\"\n\t[attr.data-invalid]=\"invalid ? true : null\">\n\t<div *ngIf=\"skeleton && fluid\" class=\"cds--list-box__label\"></div>\n\t<button\n\t\t#dropdownButton\n\t\t[id]=\"id\"\n\t\ttype=\"button\"\n\t\tclass=\"cds--list-box__field\"\n\t\t[ngClass]=\"{'a': !menuIsClosed}\"\n\t\t[attr.aria-expanded]=\"!menuIsClosed\"\n\t\t[attr.aria-disabled]=\"disabled\"\n\t\t[attr.aria-readonly]=\"readonly\"\n\t\taria-haspopup=\"listbox\"\n\t\t(click)=\"disabled || readonly ? $event.stopPropagation() : toggleMenu()\"\n\t\t(focus)=\"fluid ? handleFocus($event) : null\"\n\t\t(blur)=\"fluid ? handleFocus($event) : onBlur()\"\n\t\t[attr.disabled]=\"disabled ? true : null\">\n\t\t<div\n\t\t\t(click)=\"clearSelected()\"\n\t\t\t(keydown.enter)=\"clearSelected()\"\n\t\t\t*ngIf=\"type === 'multi' && getSelectedCount() > 0\"\n\t\t\tclass=\"cds--list-box__selection cds--tag--filter cds--list-box__selection--multi\"\n\t\t\ttabindex=\"0\"\n\t\t\t[title]=\"clearText\">\n\t\t\t{{getSelectedCount()}}\n\t\t\t<svg\n\t\t\t\tfocusable=\"false\"\n\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\tstyle=\"will-change: transform;\"\n\t\t\t\trole=\"img\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth=\"16\"\n\t\t\t\theight=\"16\"\n\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\taria-hidden=\"true\">\n\t\t\t\t<path d=\"M12 4.7l-.7-.7L8 7.3 4.7 4l-.7.7L7.3 8 4 11.3l.7.7L8 8.7l3.3 3.3.7-.7L8.7 8z\"></path>\n\t\t\t</svg>\n\t\t</div>\n\t\t<span *ngIf=\"isRenderString()\" class=\"cds--list-box__label\">{{getDisplayStringValue() | async}}</span>\n\t\t<ng-template\n\t\t\t*ngIf=\"!isRenderString()\"\n\t\t\t[ngTemplateOutletContext]=\"getRenderTemplateContext()\"\n\t\t\t[ngTemplateOutlet]=\"displayValue\">\n\t\t</ng-template>\n\t\t<span class=\"cds--list-box__menu-icon\">\n\t\t\t<svg\n\t\t\t\t*ngIf=\"!skeleton\"\n\t\t\t\tcdsIcon=\"chevron--down\"\n\t\t\t\tsize=\"16\"\n\t\t\t\t[attr.aria-label]=\"menuButtonLabel\"\n\t\t\t\t[ngClass]=\"{'cds--list-box__menu-icon--open': !menuIsClosed }\">\n\t\t\t</svg>\n\t\t</span>\n\t</button>\n\t<svg\n\t\t*ngIf=\"invalid\"\n\t\tclass=\"cds--list-box__invalid-icon\"\n\t\tcdsIcon=\"warning--filled\"\n\t\tsize=\"16\">\n\t</svg>\n\t<svg\n\t\t*ngIf=\"!invalid && warn\"\n\t\tcdsIcon=\"warning--alt--filled\"\n\t\tsize=\"16\"\n\t\tclass=\"cds--list-box__invalid-icon cds--list-box__invalid-icon--warning\">\n\t</svg>\n\t<div\n\t\t#dropdownMenu\n\t\t[ngClass]=\"{\n\t\t\t'cds--list-box--up': this.dropUp !== null && this.dropUp !== undefined ? dropUp : _dropUp\n\t\t}\">\n\t\t<ng-content *ngIf=\"!menuIsClosed\"></ng-content>\n\t</div>\n</div>\n<hr *ngIf=\"fluid\" class=\"cds--list-box__divider\" />\n<div\n\t*ngIf=\"helperText && !invalid && !warn && !skeleton && !fluid\"\n\tclass=\"cds--form__helper-text\"\n\t[ngClass]=\"{\n\t\t'cds--form__helper-text--disabled': disabled\n\t}\">\n\t<ng-container *ngIf=\"!isTemplate(helperText)\">{{helperText}}</ng-container>\n\t<ng-template *ngIf=\"isTemplate(helperText)\" [ngTemplateOutlet]=\"helperText\"></ng-template>\n</div>\n<div *ngIf=\"invalid\" class=\"cds--form-requirement\">\n\t<ng-container *ngIf=\"!isTemplate(invalidText)\">{{ invalidText }}</ng-container>\n\t<ng-template *ngIf=\"isTemplate(invalidText)\" [ngTemplateOutlet]=\"invalidText\"></ng-template>\n</div>\n<div *ngIf=\"!invalid && warn\" class=\"cds--form-requirement\">\n\t<ng-container *ngIf=\"!isTemplate(warnText)\">{{warnText}}</ng-container>\n\t<ng-template *ngIf=\"isTemplate(warnText)\" [ngTemplateOutlet]=\"warnText\"></ng-template>\n</div>\n",
29252
+ "template": "<label\n\t*ngIf=\"label && !skeleton\"\n\t[for]=\"id\"\n\tclass=\"cds--label\"\n\t[ngClass]=\"{\n\t\t'cds--label--disabled': disabled,\n\t\t'cds--visually-hidden': hideLabel\n\t}\">\n\t<ng-container *ngIf=\"!isTemplate(label)\">{{label}}</ng-container>\n\t<ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n</label>\n<div\n\tclass=\"cds--list-box\"\n\t[ngClass]=\"{\n\t\t'cds--dropdown': type !== 'multi' && !(skeleton && fluid),\n\t\t'cds--multiselect': type === 'multi',\n\t\t'cds--multi-select--selected': type === 'multi' && getSelectedCount() > 0,\n\t\t'cds--dropdown--light': theme === 'light',\n\t\t'cds--list-box--light': theme === 'light',\n\t\t'cds--list-box--inline': inline,\n\t\t'cds--skeleton': skeleton,\n\t\t'cds--dropdown--disabled cds--list-box--disabled': disabled,\n\t\t'cds--dropdown--readonly': readonly,\n\t\t'cds--dropdown--invalid': invalid,\n\t\t'cds--dropdown--warning cds--list-box--warning': warn,\n\t\t'cds--dropdown--sm cds--list-box--sm': size === 'sm',\n\t\t'cds--dropdown--md cds--list-box--md': size === 'md',\n\t\t'cds--dropdown--lg cds--list-box--lg': size === 'lg',\n\t\t'cds--list-box--expanded': !menuIsClosed,\n\t\t'cds--list-box--invalid': invalid\n\t}\"\n\t[attr.data-invalid]=\"invalid ? true : null\">\n\t<div *ngIf=\"skeleton && fluid\" class=\"cds--list-box__label\"></div>\n\t<button\n\t\t#dropdownButton\n\t\t[id]=\"id\"\n\t\ttype=\"button\"\n\t\tclass=\"cds--list-box__field\"\n\t\t[ngClass]=\"{'a': !menuIsClosed}\"\n\t\t[attr.aria-expanded]=\"!menuIsClosed\"\n\t\t[attr.aria-disabled]=\"disabled\"\n\t\taria-haspopup=\"listbox\"\n\t\t(click)=\"disabled || readonly ? $event.stopPropagation() : toggleMenu()\"\n\t\t(focus)=\"fluid ? handleFocus($event) : null\"\n\t\t(blur)=\"fluid ? handleFocus($event) : onBlur()\"\n\t\t[attr.disabled]=\"disabled ? true : null\">\n\t\t<div\n\t\t\t(click)=\"clearSelected()\"\n\t\t\t(keydown.enter)=\"clearSelected()\"\n\t\t\t*ngIf=\"type === 'multi' && getSelectedCount() > 0\"\n\t\t\tclass=\"cds--list-box__selection cds--tag--filter cds--list-box__selection--multi\"\n\t\t\ttabindex=\"0\"\n\t\t\t[title]=\"clearText\">\n\t\t\t{{getSelectedCount()}}\n\t\t\t<svg\n\t\t\t\tfocusable=\"false\"\n\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\tstyle=\"will-change: transform;\"\n\t\t\t\trole=\"img\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth=\"16\"\n\t\t\t\theight=\"16\"\n\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\taria-hidden=\"true\">\n\t\t\t\t<path d=\"M12 4.7l-.7-.7L8 7.3 4.7 4l-.7.7L7.3 8 4 11.3l.7.7L8 8.7l3.3 3.3.7-.7L8.7 8z\"></path>\n\t\t\t</svg>\n\t\t</div>\n\t\t<span *ngIf=\"isRenderString()\" class=\"cds--list-box__label\">{{getDisplayStringValue() | async}}</span>\n\t\t<ng-template\n\t\t\t*ngIf=\"!isRenderString()\"\n\t\t\t[ngTemplateOutletContext]=\"getRenderTemplateContext()\"\n\t\t\t[ngTemplateOutlet]=\"displayValue\">\n\t\t</ng-template>\n\t\t<span class=\"cds--list-box__menu-icon\">\n\t\t\t<svg\n\t\t\t\t*ngIf=\"!skeleton\"\n\t\t\t\tcdsIcon=\"chevron--down\"\n\t\t\t\tsize=\"16\"\n\t\t\t\t[attr.aria-label]=\"menuButtonLabel\"\n\t\t\t\t[ngClass]=\"{'cds--list-box__menu-icon--open': !menuIsClosed }\">\n\t\t\t</svg>\n\t\t</span>\n\t</button>\n\t<svg\n\t\t*ngIf=\"invalid\"\n\t\tclass=\"cds--list-box__invalid-icon\"\n\t\tcdsIcon=\"warning--filled\"\n\t\tsize=\"16\">\n\t</svg>\n\t<svg\n\t\t*ngIf=\"!invalid && warn\"\n\t\tcdsIcon=\"warning--alt--filled\"\n\t\tsize=\"16\"\n\t\tclass=\"cds--list-box__invalid-icon cds--list-box__invalid-icon--warning\">\n\t</svg>\n\t<div\n\t\t#dropdownMenu\n\t\t[ngClass]=\"{\n\t\t\t'cds--list-box--up': this.dropUp !== null && this.dropUp !== undefined ? dropUp : _dropUp\n\t\t}\">\n\t\t<ng-content *ngIf=\"!menuIsClosed\"></ng-content>\n\t</div>\n</div>\n<hr *ngIf=\"fluid\" class=\"cds--list-box__divider\" />\n<div\n\t*ngIf=\"helperText && !invalid && !warn && !skeleton && !fluid\"\n\tclass=\"cds--form__helper-text\"\n\t[ngClass]=\"{\n\t\t'cds--form__helper-text--disabled': disabled\n\t}\">\n\t<ng-container *ngIf=\"!isTemplate(helperText)\">{{helperText}}</ng-container>\n\t<ng-template *ngIf=\"isTemplate(helperText)\" [ngTemplateOutlet]=\"helperText\"></ng-template>\n</div>\n<div *ngIf=\"invalid\" class=\"cds--form-requirement\">\n\t<ng-container *ngIf=\"!isTemplate(invalidText)\">{{ invalidText }}</ng-container>\n\t<ng-template *ngIf=\"isTemplate(invalidText)\" [ngTemplateOutlet]=\"invalidText\"></ng-template>\n</div>\n<div *ngIf=\"!invalid && warn\" class=\"cds--form-requirement\">\n\t<ng-container *ngIf=\"!isTemplate(warnText)\">{{warnText}}</ng-container>\n\t<ng-template *ngIf=\"isTemplate(warnText)\" [ngTemplateOutlet]=\"warnText\"></ng-template>\n</div>\n",
29243
29253
  "templateUrl": [],
29244
29254
  "viewProviders": [],
29245
29255
  "hostDirectives": [],
@@ -29251,7 +29261,7 @@
29251
29261
  "deprecationMessage": "",
29252
29262
  "rawdescription": "\n\nset to `true` to place the dropdown view inline with the component\n",
29253
29263
  "description": "<p>set to <code>true</code> to place the dropdown view inline with the component</p>\n",
29254
- "line": 288,
29264
+ "line": 287,
29255
29265
  "type": "boolean",
29256
29266
  "decorators": []
29257
29267
  },
@@ -29262,7 +29272,7 @@
29262
29272
  "deprecationMessage": "",
29263
29273
  "rawdescription": "\n\nSets the optional clear button tooltip text.\n",
29264
29274
  "description": "<p>Sets the optional clear button tooltip text.</p>\n",
29265
- "line": 234,
29275
+ "line": 233,
29266
29276
  "type": "string",
29267
29277
  "decorators": []
29268
29278
  },
@@ -29273,7 +29283,7 @@
29273
29283
  "deprecationMessage": "",
29274
29284
  "rawdescription": "\n\nSet to `true` for a dropdown without arrow key activation.\n",
29275
29285
  "description": "<p>Set to <code>true</code> for a dropdown without arrow key activation.</p>\n",
29276
- "line": 268,
29286
+ "line": 267,
29277
29287
  "type": "boolean",
29278
29288
  "decorators": []
29279
29289
  },
@@ -29284,7 +29294,7 @@
29284
29294
  "deprecationMessage": "",
29285
29295
  "rawdescription": "\n\nSet to `true` to disable the dropdown.\n",
29286
29296
  "description": "<p>Set to <code>true</code> to disable the dropdown.</p>\n",
29287
- "line": 252,
29297
+ "line": 251,
29288
29298
  "type": "boolean",
29289
29299
  "decorators": []
29290
29300
  },
@@ -29295,7 +29305,7 @@
29295
29305
  "deprecationMessage": "",
29296
29306
  "rawdescription": "\n\nThe selected value from the `Dropdown`. Can be a string or template.\n",
29297
29307
  "description": "<p>The selected value from the <code>Dropdown</code>. Can be a string or template.</p>\n",
29298
- "line": 230,
29308
+ "line": 229,
29299
29309
  "type": "string | TemplateRef<any>",
29300
29310
  "decorators": []
29301
29311
  },
@@ -29305,7 +29315,7 @@
29305
29315
  "deprecationMessage": "",
29306
29316
  "rawdescription": "\n\nOverrides the automatic dropUp.\n",
29307
29317
  "description": "<p>Overrides the automatic dropUp.</p>\n",
29308
- "line": 318,
29318
+ "line": 317,
29309
29319
  "type": "boolean",
29310
29320
  "decorators": []
29311
29321
  },
@@ -29316,7 +29326,7 @@
29316
29326
  "deprecationMessage": "",
29317
29327
  "rawdescription": "\n\nExperimental: enable fluid state\n",
29318
29328
  "description": "<p>Experimental: enable fluid state</p>\n",
29319
- "line": 351,
29329
+ "line": 350,
29320
29330
  "type": "boolean",
29321
29331
  "decorators": []
29322
29332
  },
@@ -29326,7 +29336,7 @@
29326
29336
  "deprecationMessage": "",
29327
29337
  "rawdescription": "\n\nSets the optional helper text.\n",
29328
29338
  "description": "<p>Sets the optional helper text.</p>\n",
29329
- "line": 222,
29339
+ "line": 221,
29330
29340
  "type": "string | TemplateRef<any>",
29331
29341
  "decorators": []
29332
29342
  },
@@ -29337,7 +29347,7 @@
29337
29347
  "deprecationMessage": "",
29338
29348
  "rawdescription": "\n\nHide label while keeping it accessible for screen readers\n",
29339
29349
  "description": "<p>Hide label while keeping it accessible for screen readers</p>\n",
29340
- "line": 218,
29350
+ "line": 217,
29341
29351
  "type": "boolean",
29342
29352
  "decorators": []
29343
29353
  },
@@ -29346,7 +29356,7 @@
29346
29356
  "defaultValue": "`dropdown-${Dropdown.dropdownCount++}`",
29347
29357
  "deprecated": false,
29348
29358
  "deprecationMessage": "",
29349
- "line": 210,
29359
+ "line": 209,
29350
29360
  "type": "string",
29351
29361
  "decorators": []
29352
29362
  },
@@ -29357,7 +29367,7 @@
29357
29367
  "deprecationMessage": "",
29358
29368
  "rawdescription": "\n\nSet to `true` for an inline dropdown.\n",
29359
29369
  "description": "<p>Set to <code>true</code> for an inline dropdown.</p>\n",
29360
- "line": 264,
29370
+ "line": 263,
29361
29371
  "type": "boolean",
29362
29372
  "decorators": []
29363
29373
  },
@@ -29368,7 +29378,7 @@
29368
29378
  "deprecationMessage": "",
29369
29379
  "rawdescription": "\n\nSet to `true` for invalid state.\n",
29370
29380
  "description": "<p>Set to <code>true</code> for invalid state.</p>\n",
29371
- "line": 272,
29381
+ "line": 271,
29372
29382
  "type": "boolean",
29373
29383
  "decorators": []
29374
29384
  },
@@ -29378,7 +29388,7 @@
29378
29388
  "deprecationMessage": "",
29379
29389
  "rawdescription": "\n\nValue displayed if dropdown is in invalid state.\n",
29380
29390
  "description": "<p>Value displayed if dropdown is in invalid state.</p>\n",
29381
- "line": 276,
29391
+ "line": 275,
29382
29392
  "type": "string | TemplateRef<any>",
29383
29393
  "decorators": []
29384
29394
  },
@@ -29388,7 +29398,7 @@
29388
29398
  "deprecationMessage": "",
29389
29399
  "rawdescription": "\n\nSpecifies the property to be used as the return value to `ngModel`\n",
29390
29400
  "description": "<p>Specifies the property to be used as the return value to <code>ngModel</code></p>\n",
29391
- "line": 297,
29401
+ "line": 296,
29392
29402
  "type": "string",
29393
29403
  "decorators": []
29394
29404
  },
@@ -29398,7 +29408,7 @@
29398
29408
  "deprecationMessage": "",
29399
29409
  "rawdescription": "\n\nLabel for the dropdown.\n",
29400
29410
  "description": "<p>Label for the dropdown.</p>\n",
29401
- "line": 214,
29411
+ "line": 213,
29402
29412
  "type": "string | TemplateRef<any>",
29403
29413
  "decorators": []
29404
29414
  },
@@ -29409,7 +29419,7 @@
29409
29419
  "deprecationMessage": "",
29410
29420
  "rawdescription": "\n\nAccessible label for the button that opens the dropdown list.\nDefaults to the `DROPDOWN.OPEN` value from the i18n service.\n",
29411
29421
  "description": "<p>Accessible label for the button that opens the dropdown list.\nDefaults to the <code>DROPDOWN.OPEN</code> value from the i18n service.</p>\n",
29412
- "line": 309,
29422
+ "line": 308,
29413
29423
  "type": "any",
29414
29424
  "decorators": []
29415
29425
  },
@@ -29420,7 +29430,7 @@
29420
29430
  "deprecationMessage": "",
29421
29431
  "rawdescription": "\n\nValue displayed if no item is selected.\n",
29422
29432
  "description": "<p>Value displayed if no item is selected.</p>\n",
29423
- "line": 226,
29433
+ "line": 225,
29424
29434
  "type": "string",
29425
29435
  "decorators": []
29426
29436
  },
@@ -29431,7 +29441,7 @@
29431
29441
  "deprecationMessage": "",
29432
29442
  "rawdescription": "\n\nSet to `true` for a readonly state.\n",
29433
29443
  "description": "<p>Set to <code>true</code> for a readonly state.</p>\n",
29434
- "line": 256,
29444
+ "line": 255,
29435
29445
  "type": "boolean",
29436
29446
  "decorators": []
29437
29447
  },
@@ -29441,7 +29451,7 @@
29441
29451
  "deprecationMessage": "",
29442
29452
  "rawdescription": "\n\nQuery string for the element that contains the `Dropdown`.\nUsed to trigger closing the dropdown if it scrolls outside of the viewport of the `scrollableContainer`.\n",
29443
29453
  "description": "<p>Query string for the element that contains the <code>Dropdown</code>.\nUsed to trigger closing the dropdown if it scrolls outside of the viewport of the <code>scrollableContainer</code>.</p>\n",
29444
- "line": 293,
29454
+ "line": 292,
29445
29455
  "type": "string",
29446
29456
  "decorators": []
29447
29457
  },
@@ -29452,7 +29462,7 @@
29452
29462
  "deprecationMessage": "",
29453
29463
  "rawdescription": "\n\nProvides the label for the \"# selected\" text.\nDefaults to the `DROPDOWN.SELECTED` value from the i18n service.\n",
29454
29464
  "description": "<p>Provides the label for the &quot;# selected&quot; text.\nDefaults to the <code>DROPDOWN.SELECTED</code> value from the i18n service.</p>\n",
29455
- "line": 314,
29465
+ "line": 313,
29456
29466
  "type": "any",
29457
29467
  "decorators": []
29458
29468
  },
@@ -29463,7 +29473,7 @@
29463
29473
  "deprecationMessage": "",
29464
29474
  "rawdescription": "\n\nSpecify feedback (mode) of the selection.\n`top`: selected item jumps to top\n`fixed`: selected item stays at it's position\n`top-after-reopen`: selected item jump to top after reopen dropdown\n",
29465
29475
  "description": "<p>Specify feedback (mode) of the selection.\n<code>top</code>: selected item jumps to top\n<code>fixed</code>: selected item stays at it&#39;s position\n<code>top-after-reopen</code>: selected item jump to top after reopen dropdown</p>\n",
29466
- "line": 304,
29476
+ "line": 303,
29467
29477
  "type": "\"top\" | \"fixed\" | \"top-after-reopen\"",
29468
29478
  "decorators": []
29469
29479
  },
@@ -29474,7 +29484,7 @@
29474
29484
  "deprecationMessage": "",
29475
29485
  "rawdescription": "\n\nSize to render the dropdown field.\n",
29476
29486
  "description": "<p>Size to render the dropdown field.</p>\n",
29477
- "line": 238,
29487
+ "line": 237,
29478
29488
  "type": "\"sm\" | \"md\" | \"lg\"",
29479
29489
  "decorators": []
29480
29490
  },
@@ -29485,7 +29495,7 @@
29485
29495
  "deprecationMessage": "",
29486
29496
  "rawdescription": "\n\nSet to `true` for a loading dropdown.\n",
29487
29497
  "description": "<p>Set to <code>true</code> for a loading dropdown.</p>\n",
29488
- "line": 260,
29498
+ "line": 259,
29489
29499
  "type": "boolean",
29490
29500
  "decorators": []
29491
29501
  },
@@ -29496,15 +29506,15 @@
29496
29506
  "deprecationMessage": "since v5 - Use `cdsLayer` directive instead\n`light` or `dark` dropdown theme",
29497
29507
  "jsdoctags": [
29498
29508
  {
29499
- "pos": 7776,
29500
- "end": 7871,
29509
+ "pos": 7741,
29510
+ "end": 7836,
29501
29511
  "flags": 16842752,
29502
29512
  "modifierFlagsCache": 0,
29503
29513
  "transformFlags": 0,
29504
29514
  "kind": 338,
29505
29515
  "tagName": {
29506
- "pos": 7777,
29507
- "end": 7787,
29516
+ "pos": 7742,
29517
+ "end": 7752,
29508
29518
  "flags": 16842752,
29509
29519
  "modifierFlagsCache": 0,
29510
29520
  "transformFlags": 0,
@@ -29514,7 +29524,7 @@
29514
29524
  "comment": "<p>since v5 - Use <code>cdsLayer</code> directive instead\n<code>light</code> or <code>dark</code> dropdown theme</p>\n"
29515
29525
  }
29516
29526
  ],
29517
- "line": 248,
29527
+ "line": 247,
29518
29528
  "type": "\"light\" | \"dark\"",
29519
29529
  "decorators": []
29520
29530
  },
@@ -29525,7 +29535,7 @@
29525
29535
  "deprecationMessage": "",
29526
29536
  "rawdescription": "\n\nDefines whether or not the `Dropdown` supports selecting multiple items as opposed to single\nitem selection.\n",
29527
29537
  "description": "<p>Defines whether or not the <code>Dropdown</code> supports selecting multiple items as opposed to single\nitem selection.</p>\n",
29528
- "line": 243,
29538
+ "line": 242,
29529
29539
  "type": "\"single\" | \"multi\"",
29530
29540
  "decorators": []
29531
29541
  },
@@ -29536,7 +29546,7 @@
29536
29546
  "deprecationMessage": "",
29537
29547
  "rawdescription": "\n\nSet to `true` to show a warning (contents set by warningText)\n",
29538
29548
  "description": "<p>Set to <code>true</code> to show a warning (contents set by warningText)</p>\n",
29539
- "line": 280,
29549
+ "line": 279,
29540
29550
  "type": "boolean",
29541
29551
  "decorators": []
29542
29552
  },
@@ -29546,7 +29556,7 @@
29546
29556
  "deprecationMessage": "",
29547
29557
  "rawdescription": "\n\nSets the warning text\n",
29548
29558
  "description": "<p>Sets the warning text</p>\n",
29549
- "line": 284,
29559
+ "line": 283,
29550
29560
  "type": "string | TemplateRef<any>",
29551
29561
  "decorators": []
29552
29562
  }
@@ -29559,7 +29569,7 @@
29559
29569
  "deprecationMessage": "",
29560
29570
  "rawdescription": "\n\nEmits event notifying to other classes that the `Dropdown` has been closed (collapsed).\n",
29561
29571
  "description": "<p>Emits event notifying to other classes that the <code>Dropdown</code> has been closed (collapsed).</p>\n",
29562
- "line": 330,
29572
+ "line": 329,
29563
29573
  "type": "EventEmitter<any>"
29564
29574
  },
29565
29575
  {
@@ -29569,7 +29579,7 @@
29569
29579
  "deprecationMessage": "",
29570
29580
  "rawdescription": "\n\nEmits event notifying to other classes that the `Dropdown` has been closed (collapsed).\n",
29571
29581
  "description": "<p>Emits event notifying to other classes that the <code>Dropdown</code> has been closed (collapsed).</p>\n",
29572
- "line": 326,
29582
+ "line": 325,
29573
29583
  "type": "EventEmitter<any>"
29574
29584
  },
29575
29585
  {
@@ -29579,7 +29589,7 @@
29579
29589
  "deprecationMessage": "",
29580
29590
  "rawdescription": "\n\nEmits selection events.\n",
29581
29591
  "description": "<p>Emits selection events.</p>\n",
29582
- "line": 322,
29592
+ "line": 321,
29583
29593
  "type": "EventEmitter<Object>"
29584
29594
  }
29585
29595
  ],
@@ -29592,7 +29602,7 @@
29592
29602
  "type": "",
29593
29603
  "optional": false,
29594
29604
  "description": "<p>controls whether the <code>drop-up</code> class is applied</p>\n",
29595
- "line": 361,
29605
+ "line": 360,
29596
29606
  "rawdescription": "\n\ncontrols whether the `drop-up` class is applied\n"
29597
29607
  },
29598
29608
  {
@@ -29602,7 +29612,7 @@
29602
29612
  "type": "",
29603
29613
  "optional": false,
29604
29614
  "description": "<p>Maintains a reference to the view DOM element of the <code>Dropdown</code> button.</p>\n",
29605
- "line": 339,
29615
+ "line": 338,
29606
29616
  "rawdescription": "\n\nMaintains a reference to the view DOM element of the `Dropdown` button.\n",
29607
29617
  "decorators": [
29608
29618
  {
@@ -29622,7 +29632,7 @@
29622
29632
  "type": "number",
29623
29633
  "optional": false,
29624
29634
  "description": "",
29625
- "line": 190,
29635
+ "line": 189,
29626
29636
  "modifierKind": [
29627
29637
  126
29628
29638
  ]
@@ -29634,7 +29644,7 @@
29634
29644
  "type": "",
29635
29645
  "optional": false,
29636
29646
  "description": "<p>ViewChid of the dropdown view.</p>\n",
29637
- "line": 343,
29647
+ "line": 342,
29638
29648
  "rawdescription": "\n\nViewChid of the dropdown view.\n",
29639
29649
  "decorators": [
29640
29650
  {
@@ -29654,7 +29664,7 @@
29654
29664
  "type": "",
29655
29665
  "optional": false,
29656
29666
  "description": "",
29657
- "line": 345,
29667
+ "line": 344,
29658
29668
  "decorators": [
29659
29669
  {
29660
29670
  "name": "HostBinding",
@@ -29673,7 +29683,7 @@
29673
29683
  "type": "",
29674
29684
  "optional": false,
29675
29685
  "description": "",
29676
- "line": 347,
29686
+ "line": 346,
29677
29687
  "decorators": [
29678
29688
  {
29679
29689
  "name": "HostBinding",
@@ -29692,7 +29702,7 @@
29692
29702
  "type": "",
29693
29703
  "optional": false,
29694
29704
  "description": "",
29695
- "line": 368
29705
+ "line": 367
29696
29706
  },
29697
29707
  {
29698
29708
  "name": "menuIsClosed",
@@ -29702,7 +29712,7 @@
29702
29712
  "type": "",
29703
29713
  "optional": false,
29704
29714
  "description": "<p>Set to <code>true</code> if the dropdown is closed (not expanded).</p>\n",
29705
- "line": 356,
29715
+ "line": 355,
29706
29716
  "rawdescription": "\n\nSet to `true` if the dropdown is closed (not expanded).\n"
29707
29717
  },
29708
29718
  {
@@ -29713,7 +29723,7 @@
29713
29723
  "type": "",
29714
29724
  "optional": false,
29715
29725
  "description": "",
29716
- "line": 365
29726
+ "line": 364
29717
29727
  },
29718
29728
  {
29719
29729
  "name": "outsideClick",
@@ -29723,7 +29733,7 @@
29723
29733
  "type": "",
29724
29734
  "optional": false,
29725
29735
  "description": "",
29726
- "line": 366
29736
+ "line": 365
29727
29737
  },
29728
29738
  {
29729
29739
  "name": "outsideKey",
@@ -29733,7 +29743,7 @@
29733
29743
  "type": "",
29734
29744
  "optional": false,
29735
29745
  "description": "",
29736
- "line": 367
29746
+ "line": 366
29737
29747
  },
29738
29748
  {
29739
29749
  "name": "propagateChange",
@@ -29743,7 +29753,7 @@
29743
29753
  "type": "",
29744
29754
  "optional": false,
29745
29755
  "description": "<p>function passed in by <code>registerOnChange</code></p>\n",
29746
- "line": 529,
29756
+ "line": 528,
29747
29757
  "rawdescription": "\n\nfunction passed in by `registerOnChange`\n"
29748
29758
  },
29749
29759
  {
@@ -29753,7 +29763,7 @@
29753
29763
  "type": "AbstractDropdownView",
29754
29764
  "optional": false,
29755
29765
  "description": "<p>Maintains a reference to the <code>AbstractDropdownView</code> object within the content DOM.</p>\n",
29756
- "line": 335,
29766
+ "line": 334,
29757
29767
  "rawdescription": "\n\nMaintains a reference to the `AbstractDropdownView` object within the content DOM.\n",
29758
29768
  "decorators": [
29759
29769
  {
@@ -29773,7 +29783,7 @@
29773
29783
  "optional": false,
29774
29784
  "returnType": "void",
29775
29785
  "typeParameters": [],
29776
- "line": 708,
29786
+ "line": 707,
29777
29787
  "deprecated": false,
29778
29788
  "deprecationMessage": "",
29779
29789
  "rawdescription": "\n\nCreates the `Dropdown` list as an element that is appended to the DOM body.\n",
@@ -29785,7 +29795,7 @@
29785
29795
  "optional": false,
29786
29796
  "returnType": "void",
29787
29797
  "typeParameters": [],
29788
- "line": 700,
29798
+ "line": 699,
29789
29799
  "deprecated": false,
29790
29800
  "deprecationMessage": "",
29791
29801
  "rawdescription": "\n\nCreates the `Dropdown` list appending it to the dropdown parent object instead of the body.\n",
@@ -29804,7 +29814,7 @@
29804
29814
  "optional": false,
29805
29815
  "returnType": "void",
29806
29816
  "typeParameters": [],
29807
- "line": 680,
29817
+ "line": 679,
29808
29818
  "deprecated": false,
29809
29819
  "deprecationMessage": "",
29810
29820
  "rawdescription": "\n\nHandles keyboard events so users are controlling the `Dropdown` instead of unintentionally controlling outside elements.\n",
@@ -29827,7 +29837,7 @@
29827
29837
  "optional": false,
29828
29838
  "returnType": "void",
29829
29839
  "typeParameters": [],
29830
- "line": 660,
29840
+ "line": 659,
29831
29841
  "deprecated": false,
29832
29842
  "deprecationMessage": ""
29833
29843
  },
@@ -29844,7 +29854,7 @@
29844
29854
  "optional": false,
29845
29855
  "returnType": "void",
29846
29856
  "typeParameters": [],
29847
- "line": 664,
29857
+ "line": 663,
29848
29858
  "deprecated": false,
29849
29859
  "deprecationMessage": "",
29850
29860
  "rawdescription": "\n\nHandles clicks outside of the `Dropdown`.\n",
@@ -29874,7 +29884,7 @@
29874
29884
  "optional": false,
29875
29885
  "returnType": "void",
29876
29886
  "typeParameters": [],
29877
- "line": 672,
29887
+ "line": 671,
29878
29888
  "deprecated": false,
29879
29889
  "deprecationMessage": "",
29880
29890
  "jsdoctags": [
@@ -29895,7 +29905,7 @@
29895
29905
  "optional": false,
29896
29906
  "returnType": "any",
29897
29907
  "typeParameters": [],
29898
- "line": 722,
29908
+ "line": 721,
29899
29909
  "deprecated": false,
29900
29910
  "deprecationMessage": "",
29901
29911
  "rawdescription": "\n\nDetects whether or not the `Dropdown` list is visible within all scrollable parents.\nThis can be overridden by passing in a value to the `dropUp` input.\n",
@@ -29907,7 +29917,7 @@
29907
29917
  "optional": false,
29908
29918
  "returnType": "void",
29909
29919
  "typeParameters": [],
29910
- "line": 641,
29920
+ "line": 640,
29911
29921
  "deprecated": false,
29912
29922
  "deprecationMessage": ""
29913
29923
  },
@@ -29924,7 +29934,7 @@
29924
29934
  "optional": false,
29925
29935
  "returnType": "void",
29926
29936
  "typeParameters": [],
29927
- "line": 581,
29937
+ "line": 580,
29928
29938
  "deprecated": false,
29929
29939
  "deprecationMessage": "",
29930
29940
  "jsdoctags": [
@@ -29945,7 +29955,7 @@
29945
29955
  "optional": false,
29946
29956
  "returnType": "void",
29947
29957
  "typeParameters": [],
29948
- "line": 786,
29958
+ "line": 785,
29949
29959
  "deprecated": false,
29950
29960
  "deprecationMessage": "",
29951
29961
  "rawdescription": "\n\nCollapsing the dropdown menu and removing unnecessary `EventListeners`.\n",
@@ -29957,7 +29967,7 @@
29957
29967
  "optional": false,
29958
29968
  "returnType": "Observable<string>",
29959
29969
  "typeParameters": [],
29960
- "line": 600,
29970
+ "line": 599,
29961
29971
  "deprecated": false,
29962
29972
  "deprecationMessage": "",
29963
29973
  "rawdescription": "\n\nReturns the display value if there is a selection and displayValue is set,\nif there is just a selection the ListItem content property will be returned,\notherwise the placeholder will be returned.\n",
@@ -29969,7 +29979,7 @@
29969
29979
  "optional": false,
29970
29980
  "returnType": "{ items: any; item?: undefined; } | { item: any; items?: undefined; } | { items?: undefined; item?: undefined; }",
29971
29981
  "typeParameters": [],
29972
- "line": 621,
29982
+ "line": 620,
29973
29983
  "deprecated": false,
29974
29984
  "deprecationMessage": ""
29975
29985
  },
@@ -29979,7 +29989,7 @@
29979
29989
  "optional": false,
29980
29990
  "returnType": "number",
29981
29991
  "typeParameters": [],
29982
- "line": 635,
29992
+ "line": 634,
29983
29993
  "deprecated": false,
29984
29994
  "deprecationMessage": ""
29985
29995
  },
@@ -29996,7 +30006,7 @@
29996
30006
  "optional": false,
29997
30007
  "returnType": "void",
29998
30008
  "typeParameters": [],
29999
- "line": 828,
30009
+ "line": 827,
30000
30010
  "deprecated": false,
30001
30011
  "deprecationMessage": "",
30002
30012
  "jsdoctags": [
@@ -30017,7 +30027,7 @@
30017
30027
  "optional": false,
30018
30028
  "returnType": "boolean",
30019
30029
  "typeParameters": [],
30020
- "line": 617,
30030
+ "line": 616,
30021
30031
  "deprecated": false,
30022
30032
  "deprecationMessage": ""
30023
30033
  },
@@ -30034,7 +30044,7 @@
30034
30044
  "optional": false,
30035
30045
  "returnType": "boolean",
30036
30046
  "typeParameters": [],
30037
- "line": 824,
30047
+ "line": 823,
30038
30048
  "deprecated": false,
30039
30049
  "deprecationMessage": "",
30040
30050
  "modifierKind": [
@@ -30058,7 +30068,7 @@
30058
30068
  "optional": false,
30059
30069
  "returnType": "void",
30060
30070
  "typeParameters": [],
30061
- "line": 511,
30071
+ "line": 510,
30062
30072
  "deprecated": false,
30063
30073
  "deprecationMessage": ""
30064
30074
  },
@@ -30075,7 +30085,7 @@
30075
30085
  "optional": false,
30076
30086
  "returnType": "void",
30077
30087
  "typeParameters": [],
30078
- "line": 546,
30088
+ "line": 545,
30079
30089
  "deprecated": false,
30080
30090
  "deprecationMessage": "",
30081
30091
  "rawdescription": "\n\nAdds keyboard functionality for navigation, selection and closing of the `Dropdown`.\n",
@@ -30107,7 +30117,7 @@
30107
30117
  "optional": false,
30108
30118
  "returnType": "void",
30109
30119
  "typeParameters": [],
30110
- "line": 742,
30120
+ "line": 741,
30111
30121
  "deprecated": false,
30112
30122
  "deprecationMessage": "",
30113
30123
  "rawdescription": "\n\nExpands the dropdown menu in the view.\n",
@@ -30126,7 +30136,7 @@
30126
30136
  "optional": false,
30127
30137
  "returnType": "void",
30128
30138
  "typeParameters": [],
30129
- "line": 515,
30139
+ "line": 514,
30130
30140
  "deprecated": false,
30131
30141
  "deprecationMessage": "",
30132
30142
  "jsdoctags": [
@@ -30154,7 +30164,7 @@
30154
30164
  "optional": false,
30155
30165
  "returnType": "void",
30156
30166
  "typeParameters": [],
30157
- "line": 522,
30167
+ "line": 521,
30158
30168
  "deprecated": false,
30159
30169
  "deprecationMessage": "",
30160
30170
  "rawdescription": "\n\nRegistering the function injected to control the touch use of the `Dropdown`.\n",
@@ -30184,7 +30194,7 @@
30184
30194
  "optional": false,
30185
30195
  "returnType": "void",
30186
30196
  "typeParameters": [],
30187
- "line": 538,
30197
+ "line": 537,
30188
30198
  "deprecated": false,
30189
30199
  "deprecationMessage": "",
30190
30200
  "rawdescription": "\n\n`ControlValueAccessor` method to programmatically disable the dropdown.\n\nex: `this.formGroup.get(\"myDropdown\").disable();`\n\n",
@@ -30192,8 +30202,8 @@
30192
30202
  "jsdoctags": [
30193
30203
  {
30194
30204
  "name": {
30195
- "pos": 16389,
30196
- "end": 16399,
30205
+ "pos": 16354,
30206
+ "end": 16364,
30197
30207
  "flags": 16842752,
30198
30208
  "modifierFlagsCache": 0,
30199
30209
  "transformFlags": 0,
@@ -30204,8 +30214,8 @@
30204
30214
  "deprecated": false,
30205
30215
  "deprecationMessage": "",
30206
30216
  "tagName": {
30207
- "pos": 16383,
30208
- "end": 16388,
30217
+ "pos": 16348,
30218
+ "end": 16353,
30209
30219
  "flags": 16842752,
30210
30220
  "modifierFlagsCache": 0,
30211
30221
  "transformFlags": 0,
@@ -30222,7 +30232,7 @@
30222
30232
  "optional": false,
30223
30233
  "returnType": "void",
30224
30234
  "typeParameters": [],
30225
- "line": 816,
30235
+ "line": 815,
30226
30236
  "deprecated": false,
30227
30237
  "deprecationMessage": "",
30228
30238
  "rawdescription": "\n\nControls toggling menu states between open/expanded and closed/collapsed.\n",
@@ -30234,7 +30244,7 @@
30234
30244
  "optional": false,
30235
30245
  "returnType": "boolean",
30236
30246
  "typeParameters": [],
30237
- "line": 655,
30247
+ "line": 654,
30238
30248
  "deprecated": false,
30239
30249
  "deprecationMessage": "",
30240
30250
  "rawdescription": "\n\nReturns `true` if there is a value selected.\n",
@@ -30253,7 +30263,7 @@
30253
30263
  "optional": false,
30254
30264
  "returnType": "void",
30255
30265
  "typeParameters": [],
30256
- "line": 472,
30266
+ "line": 471,
30257
30267
  "deprecated": false,
30258
30268
  "deprecationMessage": "",
30259
30269
  "rawdescription": "\n\nPropagates the injected `value`.\n",
@@ -30279,7 +30289,7 @@
30279
30289
  "defaultValue": "true",
30280
30290
  "deprecated": false,
30281
30291
  "deprecationMessage": "",
30282
- "line": 345,
30292
+ "line": 344,
30283
30293
  "type": "boolean",
30284
30294
  "decorators": []
30285
30295
  },
@@ -30288,7 +30298,7 @@
30288
30298
  "defaultValue": "true",
30289
30299
  "deprecated": false,
30290
30300
  "deprecationMessage": "",
30291
- "line": 347,
30301
+ "line": 346,
30292
30302
  "type": "boolean",
30293
30303
  "decorators": []
30294
30304
  },
@@ -30296,7 +30306,7 @@
30296
30306
  "name": "class.cds--list-box__wrapper--fluid--focus",
30297
30307
  "deprecated": false,
30298
30308
  "deprecationMessage": "",
30299
- "line": 195,
30309
+ "line": 194,
30300
30310
  "type": "boolean",
30301
30311
  "decorators": []
30302
30312
  },
@@ -30304,7 +30314,7 @@
30304
30314
  "name": "class.cds--list-box__wrapper--fluid--invalid",
30305
30315
  "deprecated": false,
30306
30316
  "deprecationMessage": "",
30307
- "line": 191,
30317
+ "line": 190,
30308
30318
  "type": "boolean",
30309
30319
  "decorators": []
30310
30320
  }
@@ -30327,7 +30337,7 @@
30327
30337
  "deprecationMessage": "",
30328
30338
  "rawdescription": "\n\nAdds keyboard functionality for navigation, selection and closing of the `Dropdown`.\n",
30329
30339
  "description": "<p>Adds keyboard functionality for navigation, selection and closing of the <code>Dropdown</code>.</p>\n",
30330
- "line": 546
30340
+ "line": 545
30331
30341
  }
30332
30342
  ],
30333
30343
  "standalone": false,
@@ -30335,7 +30345,7 @@
30335
30345
  "description": "<p>Drop-down lists enable users to select one or more items from a list.</p>\n<h4>Opening behavior/List DOM placement</h4>\n<p>By default the dropdown will try to figure out the best placement for the dropdown list.</p>\n<p>If it&#39;s not contained within any scrolling elements, it will open inline, if it <em>is</em>\ncontained within a scrolling container it will try to open in the body, or an <code>cds-placeholder</code>.</p>\n<p>To control this behavior you can use the <code>appendInline</code> input:</p>\n<ul>\n<li><code>[appendInline]=&quot;null&quot;</code> is the default (auto detection)</li>\n<li><code>[appendInline]=&quot;false&quot;</code> will always append to the body/<code>cds-placeholder</code></li>\n<li><code>[appendInline]=&quot;true&quot;</code> will always append inline (next to the dropdown button)</li>\n</ul>\n<p>Get started with importing the module:</p>\n<b>Example :</b><div><pre class=\"line-numbers\"><code class=\"language-typescript\">import { DropdownModule } from &#39;carbon-components-angular&#39;;</code></pre></div><p><a href=\"../../?path=/story/components-dropdown--basic\">See demo</a></p>\n",
30336
30346
  "rawdescription": "\n\nDrop-down lists enable users to select one or more items from a list.\n\n#### Opening behavior/List DOM placement\nBy default the dropdown will try to figure out the best placement for the dropdown list.\n\nIf it's not contained within any scrolling elements, it will open inline, if it _is_\ncontained within a scrolling container it will try to open in the body, or an `cds-placeholder`.\n\nTo control this behavior you can use the `appendInline` input:\n- `[appendInline]=\"null\"` is the default (auto detection)\n- `[appendInline]=\"false\"` will always append to the body/`cds-placeholder`\n- `[appendInline]=\"true\"` will always append inline (next to the dropdown button)\n\nGet started with importing the module:\n\n```typescript\nimport { DropdownModule } from 'carbon-components-angular';\n```\n\n[See demo](../../?path=/story/components-dropdown--basic)\n",
30337
30347
  "type": "component",
30338
- "sourceCode": "import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tElementRef,\n\tContentChild,\n\tOnInit,\n\tViewChild,\n\tAfterContentInit,\n\tHostListener,\n\tOnDestroy,\n\tHostBinding,\n\tTemplateRef,\n\tAfterViewInit\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from \"@angular/forms\";\n\n// Observable import is required here so typescript can compile correctly\nimport {\n\tObservable,\n\tof,\n\tSubscription\n} from \"rxjs\";\n\nimport { AbstractDropdownView } from \"./abstract-dropdown-view.class\";\nimport { I18n } from \"carbon-components-angular/i18n\";\nimport { ListItem } from \"./list-item.interface\";\nimport { DropdownService } from \"./dropdown.service\";\nimport { ElementService, getScrollableParents } from \"carbon-components-angular/utils\";\nimport { hasScrollableParents } from \"carbon-components-angular/utils\";\n\n/**\n * Drop-down lists enable users to select one or more items from a list.\n *\n * #### Opening behavior/List DOM placement\n * By default the dropdown will try to figure out the best placement for the dropdown list.\n *\n * If it's not contained within any scrolling elements, it will open inline, if it _is_\n * contained within a scrolling container it will try to open in the body, or an `cds-placeholder`.\n *\n * To control this behavior you can use the `appendInline` input:\n * - `[appendInline]=\"null\"` is the default (auto detection)\n * - `[appendInline]=\"false\"` will always append to the body/`cds-placeholder`\n * - `[appendInline]=\"true\"` will always append inline (next to the dropdown button)\n *\n * Get started with importing the module:\n *\n * ```typescript\n * import { DropdownModule } from 'carbon-components-angular';\n * ```\n *\n * [See demo](../../?path=/story/components-dropdown--basic)\n */\n@Component({\n\tselector: \"cds-dropdown, ibm-dropdown\",\n\ttemplate: `\n\t<label\n\t\t*ngIf=\"label && !skeleton\"\n\t\t[for]=\"id\"\n\t\tclass=\"cds--label\"\n\t\t[ngClass]=\"{\n\t\t\t'cds--label--disabled': disabled,\n\t\t\t'cds--visually-hidden': hideLabel\n\t\t}\">\n\t\t<ng-container *ngIf=\"!isTemplate(label)\">{{label}}</ng-container>\n\t\t<ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n\t</label>\n\t<div\n\t\tclass=\"cds--list-box\"\n\t\t[ngClass]=\"{\n\t\t\t'cds--dropdown': type !== 'multi' && !(skeleton && fluid),\n\t\t\t'cds--multiselect': type === 'multi',\n\t\t\t'cds--multi-select--selected': type === 'multi' && getSelectedCount() > 0,\n\t\t\t'cds--dropdown--light': theme === 'light',\n\t\t\t'cds--list-box--light': theme === 'light',\n\t\t\t'cds--list-box--inline': inline,\n\t\t\t'cds--skeleton': skeleton,\n\t\t\t'cds--dropdown--disabled cds--list-box--disabled': disabled,\n\t\t\t'cds--dropdown--readonly': readonly,\n\t\t\t'cds--dropdown--invalid': invalid,\n\t\t\t'cds--dropdown--warning cds--list-box--warning': warn,\n\t\t\t'cds--dropdown--sm cds--list-box--sm': size === 'sm',\n\t\t\t'cds--dropdown--md cds--list-box--md': size === 'md',\n\t\t\t'cds--dropdown--lg cds--list-box--lg': size === 'lg',\n\t\t\t'cds--list-box--expanded': !menuIsClosed,\n\t\t\t'cds--list-box--invalid': invalid\n\t\t}\"\n\t\t[attr.data-invalid]=\"invalid ? true : null\">\n\t\t<div *ngIf=\"skeleton && fluid\" class=\"cds--list-box__label\"></div>\n\t\t<button\n\t\t\t#dropdownButton\n\t\t\t[id]=\"id\"\n\t\t\ttype=\"button\"\n\t\t\tclass=\"cds--list-box__field\"\n\t\t\t[ngClass]=\"{'a': !menuIsClosed}\"\n\t\t\t[attr.aria-expanded]=\"!menuIsClosed\"\n\t\t\t[attr.aria-disabled]=\"disabled\"\n\t\t\t[attr.aria-readonly]=\"readonly\"\n\t\t\taria-haspopup=\"listbox\"\n\t\t\t(click)=\"disabled || readonly ? $event.stopPropagation() : toggleMenu()\"\n\t\t\t(focus)=\"fluid ? handleFocus($event) : null\"\n\t\t\t(blur)=\"fluid ? handleFocus($event) : onBlur()\"\n\t\t\t[attr.disabled]=\"disabled ? true : null\">\n\t\t\t<div\n\t\t\t\t(click)=\"clearSelected()\"\n\t\t\t\t(keydown.enter)=\"clearSelected()\"\n\t\t\t\t*ngIf=\"type === 'multi' && getSelectedCount() > 0\"\n\t\t\t\tclass=\"cds--list-box__selection cds--tag--filter cds--list-box__selection--multi\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t[title]=\"clearText\">\n\t\t\t\t{{getSelectedCount()}}\n\t\t\t\t<svg\n\t\t\t\t\tfocusable=\"false\"\n\t\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\t\tstyle=\"will-change: transform;\"\n\t\t\t\t\trole=\"img\"\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth=\"16\"\n\t\t\t\t\theight=\"16\"\n\t\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\t\taria-hidden=\"true\">\n\t\t\t\t\t<path d=\"M12 4.7l-.7-.7L8 7.3 4.7 4l-.7.7L7.3 8 4 11.3l.7.7L8 8.7l3.3 3.3.7-.7L8.7 8z\"></path>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t\t<span *ngIf=\"isRenderString()\" class=\"cds--list-box__label\">{{getDisplayStringValue() | async}}</span>\n\t\t\t<ng-template\n\t\t\t\t*ngIf=\"!isRenderString()\"\n\t\t\t\t[ngTemplateOutletContext]=\"getRenderTemplateContext()\"\n\t\t\t\t[ngTemplateOutlet]=\"displayValue\">\n\t\t\t</ng-template>\n\t\t\t<span class=\"cds--list-box__menu-icon\">\n\t\t\t\t<svg\n\t\t\t\t\t*ngIf=\"!skeleton\"\n\t\t\t\t\tcdsIcon=\"chevron--down\"\n\t\t\t\t\tsize=\"16\"\n\t\t\t\t\t[attr.aria-label]=\"menuButtonLabel\"\n\t\t\t\t\t[ngClass]=\"{'cds--list-box__menu-icon--open': !menuIsClosed }\">\n\t\t\t\t</svg>\n\t\t\t</span>\n\t\t</button>\n\t\t<svg\n\t\t\t*ngIf=\"invalid\"\n\t\t\tclass=\"cds--list-box__invalid-icon\"\n\t\t\tcdsIcon=\"warning--filled\"\n\t\t\tsize=\"16\">\n\t\t</svg>\n\t\t<svg\n\t\t\t*ngIf=\"!invalid && warn\"\n\t\t\tcdsIcon=\"warning--alt--filled\"\n\t\t\tsize=\"16\"\n\t\t\tclass=\"cds--list-box__invalid-icon cds--list-box__invalid-icon--warning\">\n\t\t</svg>\n\t\t<div\n\t\t\t#dropdownMenu\n\t\t\t[ngClass]=\"{\n\t\t\t\t'cds--list-box--up': this.dropUp !== null && this.dropUp !== undefined ? dropUp : _dropUp\n\t\t\t}\">\n\t\t\t<ng-content *ngIf=\"!menuIsClosed\"></ng-content>\n\t\t</div>\n\t</div>\n\t<hr *ngIf=\"fluid\" class=\"cds--list-box__divider\" />\n\t<div\n\t\t*ngIf=\"helperText && !invalid && !warn && !skeleton && !fluid\"\n\t\tclass=\"cds--form__helper-text\"\n\t\t[ngClass]=\"{\n\t\t\t'cds--form__helper-text--disabled': disabled\n\t\t}\">\n\t\t<ng-container *ngIf=\"!isTemplate(helperText)\">{{helperText}}</ng-container>\n\t\t<ng-template *ngIf=\"isTemplate(helperText)\" [ngTemplateOutlet]=\"helperText\"></ng-template>\n\t</div>\n\t<div *ngIf=\"invalid\" class=\"cds--form-requirement\">\n\t\t<ng-container *ngIf=\"!isTemplate(invalidText)\">{{ invalidText }}</ng-container>\n\t\t<ng-template *ngIf=\"isTemplate(invalidText)\" [ngTemplateOutlet]=\"invalidText\"></ng-template>\n\t</div>\n\t<div *ngIf=\"!invalid && warn\" class=\"cds--form-requirement\">\n\t\t<ng-container *ngIf=\"!isTemplate(warnText)\">{{warnText}}</ng-container>\n\t\t<ng-template *ngIf=\"isTemplate(warnText)\" [ngTemplateOutlet]=\"warnText\"></ng-template>\n\t</div>\n\t`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: Dropdown,\n\t\t\tmulti: true\n\t\t}\n\t]\n})\nexport class Dropdown implements OnInit, AfterContentInit, AfterViewInit, OnDestroy, ControlValueAccessor {\n\tstatic dropdownCount = 0;\n\t@HostBinding(\"class.cds--list-box__wrapper--fluid--invalid\") get fluidInvalidClass() {\n\t\treturn this.invalid && this.fluid;\n\t}\n\n\t@HostBinding(\"class.cds--list-box__wrapper--fluid--focus\") get fluidFocusClass() {\n\t\treturn this.fluid && this._isFocused && this.menuIsClosed;\n\t}\n\n\tprotected get writtenValue() {\n\t\treturn this._writtenValue;\n\t}\n\n\tprotected set writtenValue(val: any[]) {\n\t\tif (val && val.length === 0) {\n\t\t\tthis.clearSelected();\n\t\t}\n\t\tthis._writtenValue = val;\n\t}\n\n\t@Input() id = `dropdown-${Dropdown.dropdownCount++}`;\n\t/**\n\t * Label for the dropdown.\n\t */\n\t@Input() label: string | TemplateRef<any>;\n\t/**\n\t * Hide label while keeping it accessible for screen readers\n\t */\n\t@Input() hideLabel = false;\n\t/**\n\t * Sets the optional helper text.\n\t */\n\t@Input() helperText: string | TemplateRef<any>;\n\t/**\n\t * Value displayed if no item is selected.\n\t */\n\t@Input() placeholder = \"\";\n\t/**\n\t * The selected value from the `Dropdown`. Can be a string or template.\n\t */\n\t@Input() displayValue: string | TemplateRef<any> = \"\";\n\t/**\n\t * Sets the optional clear button tooltip text.\n\t */\n\t@Input() clearText: string = this.i18n.get().DROPDOWN.CLEAR;\n\t/**\n\t * Size to render the dropdown field.\n\t */\n\t@Input() size: \"sm\" | \"md\" | \"lg\" = \"md\";\n\t/**\n\t * Defines whether or not the `Dropdown` supports selecting multiple items as opposed to single\n\t * item selection.\n\t */\n\t@Input() type: \"single\" | \"multi\" = \"single\";\n\t/**\n\t * @deprecated since v5 - Use `cdsLayer` directive instead\n\t * `light` or `dark` dropdown theme\n\t */\n\t@Input() theme: \"light\" | \"dark\" = \"dark\";\n\t/**\n\t * Set to `true` to disable the dropdown.\n\t */\n\t@Input() disabled = false;\n\t/**\n\t * Set to `true` for a readonly state.\n\t */\n\t@Input() readonly = false;\n\t/**\n\t * Set to `true` for a loading dropdown.\n\t */\n\t@Input() skeleton = false;\n\t/**\n\t * Set to `true` for an inline dropdown.\n\t */\n\t@Input() inline = false;\n\t/**\n\t * Set to `true` for a dropdown without arrow key activation.\n\t */\n\t@Input() disableArrowKeys = false;\n\t/**\n\t * Set to `true` for invalid state.\n\t */\n\t@Input() invalid = false;\n\t/**\n\t * Value displayed if dropdown is in invalid state.\n\t */\n\t@Input() invalidText: string | TemplateRef<any>;\n\t/**\n\t * Set to `true` to show a warning (contents set by warningText)\n\t */\n\t@Input() warn = false;\n\t/**\n\t * Sets the warning text\n\t */\n\t@Input() warnText: string | TemplateRef<any>;\n\t/**\n\t * set to `true` to place the dropdown view inline with the component\n\t */\n\t@Input() appendInline: boolean = null;\n\t/**\n\t * Query string for the element that contains the `Dropdown`.\n\t * Used to trigger closing the dropdown if it scrolls outside of the viewport of the `scrollableContainer`.\n\t */\n\t@Input() scrollableContainer: string;\n\t/**\n\t * Specifies the property to be used as the return value to `ngModel`\n\t */\n\t@Input() itemValueKey: string;\n\t/**\n\t * Specify feedback (mode) of the selection.\n\t * `top`: selected item jumps to top\n\t * `fixed`: selected item stays at it's position\n\t * `top-after-reopen`: selected item jump to top after reopen dropdown\n\t */\n\t@Input() selectionFeedback: \"top\" | \"fixed\" | \"top-after-reopen\" = \"top-after-reopen\";\n\t/**\n\t * Accessible label for the button that opens the dropdown list.\n\t * Defaults to the `DROPDOWN.OPEN` value from the i18n service.\n\t */\n\t@Input() menuButtonLabel = this.i18n.get().DROPDOWN.OPEN;\n\t/**\n\t * Provides the label for the \"# selected\" text.\n\t * Defaults to the `DROPDOWN.SELECTED` value from the i18n service.\n\t */\n\t@Input() selectedLabel = this.i18n.get().DROPDOWN.SELECTED;\n\t/**\n\t * Overrides the automatic dropUp.\n\t */\n\t@Input() dropUp: boolean;\n\t/**\n\t * Emits selection events.\n\t */\n\t@Output() selected: EventEmitter<Object> = new EventEmitter<Object>();\n\t/**\n\t * Emits event notifying to other classes that the `Dropdown` has been closed (collapsed).\n\t */\n\t@Output() onClose: EventEmitter<any> = new EventEmitter<any>();\n\t/**\n\t * Emits event notifying to other classes that the `Dropdown` has been closed (collapsed).\n\t */\n\t@Output() close: EventEmitter<any> = new EventEmitter<any>();\n\n\t/**\n\t * Maintains a reference to the `AbstractDropdownView` object within the content DOM.\n\t */\n\t@ContentChild(AbstractDropdownView, { static: true }) view: AbstractDropdownView;\n\t/**\n\t * Maintains a reference to the view DOM element of the `Dropdown` button.\n\t */\n\t@ViewChild(\"dropdownButton\", { static: true }) dropdownButton;\n\t/**\n\t * ViewChid of the dropdown view.\n\t */\n\t@ViewChild(\"dropdownMenu\", { static: true }) dropdownMenu;\n\n\t@HostBinding(\"class.cds--dropdown__wrapper\") hostClass = true;\n\n\t@HostBinding(\"class.cds--list-box__wrapper\") hostWrapperClass = true;\n\t/**\n\t * Experimental: enable fluid state\n\t */\n\t@HostBinding(\"class.cds--list-box__wrapper--fluid\") @Input() fluid = false;\n\n\t/**\n\t * Set to `true` if the dropdown is closed (not expanded).\n\t */\n\tmenuIsClosed = true;\n\n\t/**\n\t * controls whether the `drop-up` class is applied\n\t */\n\t_dropUp = false;\n\n\t// .bind creates a new function, so we declare the methods below\n\t// but .bind them up here\n\tnoop = this._noop.bind(this);\n\toutsideClick = this._outsideClick.bind(this);\n\toutsideKey = this._outsideKey.bind(this);\n\tkeyboardNav = this._keyboardNav.bind(this);\n\n\tprotected visibilitySubscription = new Subscription();\n\n\tprotected onTouchedCallback: () => void = this._noop;\n\n\tprotected _isFocused = false;\n\n\t// primarily used to capture and propagate input to `writeValue` before the content is available\n\tprivate _writtenValue: any = [];\n\n\t/**\n\t * Creates an instance of Dropdown.\n\t */\n\tconstructor(\n\t\tprotected elementRef: ElementRef,\n\t\tprotected i18n: I18n,\n\t\tprotected dropdownService: DropdownService,\n\t\tprotected elementService: ElementService) {}\n\n\t/**\n\t * Updates the `type` property in the `@ContentChild`.\n\t * The `type` property specifies whether the `Dropdown` allows single selection or multi selection.\n\t */\n\tngOnInit() {\n\t\tif (this.view) {\n\t\t\tthis.view.type = this.type;\n\t\t}\n\t}\n\n\t/**\n\t * Initializes classes and subscribes to events for single or multi selection.\n\t */\n\tngAfterContentInit() {\n\t\tif (!this.view) {\n\t\t\treturn;\n\t\t}\n\t\tif ((this.writtenValue && this.writtenValue.length) || typeof this.writtenValue === \"number\") {\n\t\t\tthis.writeValue(this.writtenValue);\n\t\t}\n\t\tthis.view.type = this.type;\n\t\tthis.view.size = this.size;\n\n\t\t// function to check if the event is organic (isUpdate === false) or programmatic\n\t\tconst isUpdate = event => event && event.isUpdate;\n\n\t\tthis.view.select.subscribe(event => {\n\t\t\tif (this.type === \"single\" && !isUpdate(event) && !Array.isArray(event)) {\n\t\t\t\tthis.closeMenu();\n\t\t\t\tif (event.item && event.item.selected) {\n\t\t\t\t\tif (this.itemValueKey) {\n\t\t\t\t\t\tthis.propagateChange(event.item[this.itemValueKey]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.propagateChange(event.item);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.propagateChange(null);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.type === \"multi\" && !isUpdate(event)) {\n\t\t\t\t// if we have a `value` selector and selected items map them appropriately\n\t\t\t\tif (this.itemValueKey && this.view.getSelected()) {\n\t\t\t\t\tconst values = this.view.getSelected().map(item => item[this.itemValueKey]);\n\t\t\t\t\tthis.propagateChange(values);\n\t\t\t\t\t// otherwise just pass up the values from `getSelected`\n\t\t\t\t} else {\n\t\t\t\t\tthis.propagateChange(this.view.getSelected());\n\t\t\t\t}\n\t\t\t}\n\t\t\t// only emit selected for \"organic\" selections\n\t\t\tif (!isUpdate(event)) {\n\t\t\t\tthis.checkForReorder();\n\t\t\t\tthis.selected.emit(event);\n\t\t\t}\n\t\t});\n\t}\n\n\tngAfterViewInit() {\n\t\t// if appendInline is default valued (null) we should:\n\t\t// 1. if there are scrollable parents (not including body) don't append inline\n\t\t// this should also cover the case where the dropdown is in a modal\n\t\t// (where we _do_ want to append to the placeholder)\n\t\tif (this.appendInline === null && hasScrollableParents(this.elementRef.nativeElement)) {\n\t\t\tthis.appendInline = false;\n\t\t\t// 2. otherwise we should append inline\n\t\t} else if (this.appendInline === null) {\n\t\t\tthis.appendInline = true;\n\t\t}\n\t\tthis.checkForReorder();\n\t}\n\n\t/**\n\t * Removing the `Dropdown` from the body if it is appended to the body.\n\t */\n\tngOnDestroy() {\n\t\tif (!this.appendInline) {\n\t\t\tthis._appendToDropdown();\n\t\t}\n\t}\n\n\t/**\n\t * Propagates the injected `value`.\n\t */\n\twriteValue(value: any) {\n\t\t// cache the written value so we can use it in `AfterContentInit`\n\t\tthis.writtenValue = value;\n\t\tthis.view.onItemsReady(() => {\n\t\t\t// propagate null/falsey as an array (deselect everything)\n\t\t\tif (!value) {\n\t\t\t\tthis.view.propagateSelected([value]);\n\t\t\t} else if (this.type === \"single\") {\n\t\t\t\tif (this.itemValueKey) {\n\t\t\t\t\t// clone the specified item and update its state\n\t\t\t\t\tconst newValue = Object.assign({}, this.view.getListItems().find(item => item[this.itemValueKey] === value));\n\t\t\t\t\tnewValue.selected = true;\n\t\t\t\t\tthis.view.propagateSelected([newValue]);\n\t\t\t\t} else {\n\t\t\t\t\t// pass the singular value as an array of ListItem\n\t\t\t\t\tthis.view.propagateSelected([value]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (this.itemValueKey) {\n\t\t\t\t\t// clone the items and update their state based on the received value array\n\t\t\t\t\t// this way we don't lose any additional metadata that may be passed in via the `items` Input\n\t\t\t\t\tlet newValues = [];\n\t\t\t\t\tfor (const v of value) {\n\t\t\t\t\t\tfor (const item of this.view.getListItems()) {\n\t\t\t\t\t\t\tif (item[this.itemValueKey] === v) {\n\t\t\t\t\t\t\t\tnewValues.push(Object.assign({}, item, { selected: true }));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.view.propagateSelected(newValues);\n\t\t\t\t} else {\n\t\t\t\t\t// we can safely assume we're passing an array of `ListItem`s\n\t\t\t\t\tthis.view.propagateSelected(value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.checkForReorder();\n\t\t});\n\t}\n\n\tonBlur() {\n\t\tthis.onTouchedCallback();\n\t}\n\n\tregisterOnChange(fn: any) {\n\t\tthis.propagateChange = fn;\n\t}\n\n\t/**\n\t * Registering the function injected to control the touch use of the `Dropdown`.\n\t */\n\tregisterOnTouched(fn: any) {\n\t\tthis.onTouchedCallback = fn;\n\t}\n\n\t/**\n\t * function passed in by `registerOnChange`\n\t */\n\tpropagateChange = (_: any) => { };\n\n\t/**\n\t * `ControlValueAccessor` method to programmatically disable the dropdown.\n\t *\n\t * ex: `this.formGroup.get(\"myDropdown\").disable();`\n\t *\n\t * @param isDisabled `true` to disable the input\n\t */\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.disabled = isDisabled;\n\t}\n\n\t/**\n\t * Adds keyboard functionality for navigation, selection and closing of the `Dropdown`.\n\t */\n\t@HostListener(\"keydown\", [\"$event\"])\n\tonKeyDown(event: KeyboardEvent) {\n\t\tif (this.readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ((event.key === \"Escape\") && !this.menuIsClosed) {\n\t\t\tevent.stopImmediatePropagation(); // don't unintentionally close other widgets that listen for Escape\n\t\t}\n\t\tif (event.key === \"Escape\") {\n\t\t\tevent.preventDefault();\n\t\t\tthis.closeMenu();\n\t\t\tthis.dropdownButton.nativeElement.focus();\n\t\t} else if (this.menuIsClosed && (event.key === \" \" || event.key === \"ArrowDown\" || event.key === \"ArrowUp\")) {\n\t\t\tif (this.disableArrowKeys && (event.key === \"ArrowDown\" || event.key === \"ArrowUp\")) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tevent.preventDefault();\n\t\t\tthis.openMenu();\n\t\t}\n\n\t\tif (!this.menuIsClosed && event.key === \"Tab\" && this.dropdownMenu.nativeElement.contains(event.target as Node)) {\n\t\t\tthis.closeMenu();\n\t\t}\n\n\t\tif (!this.menuIsClosed && event.key === \"Tab\" && event.shiftKey) {\n\t\t\tthis.closeMenu();\n\t\t}\n\n\t\tif (this.type === \"multi\") { return; }\n\n\t\tif (this.menuIsClosed) {\n\t\t\tthis.closedDropdownNavigation(event);\n\t\t}\n\t}\n\n\tclosedDropdownNavigation(event) {\n\t\tif (event.key === \"ArrowDown\") {\n\t\t\tevent.preventDefault();\n\t\t\tthis.view.getCurrentItem().selected = false;\n\t\t\tlet item = this.view.getNextItem();\n\t\t\tif (item) { item.selected = true; }\n\t\t} else if (event.key === \"ArrowUp\") {\n\t\t\tevent.preventDefault();\n\t\t\tthis.view.getCurrentItem().selected = false;\n\t\t\tlet item = this.view.getPrevItem();\n\t\t\tif (item) { item.selected = true; }\n\t\t}\n\t}\n\n\t/**\n\t * Returns the display value if there is a selection and displayValue is set,\n\t * if there is just a selection the ListItem content property will be returned,\n\t * otherwise the placeholder will be returned.\n\t */\n\tgetDisplayStringValue(): Observable<string> {\n\t\tif (!this.view || this.skeleton) {\n\t\t\treturn;\n\t\t}\n\t\tlet selected = this.view.getSelected();\n\t\tif (selected.length && (!this.displayValue || !this.isRenderString())) {\n\t\t\tif (this.type === \"multi\") {\n\t\t\t\treturn of(this.placeholder);\n\t\t\t} else {\n\t\t\t\treturn of(selected[0].content);\n\t\t\t}\n\t\t} else if (selected.length && this.isRenderString()) {\n\t\t\treturn of(this.displayValue as string);\n\t\t}\n\t\treturn of(this.placeholder);\n\t}\n\n\tisRenderString(): boolean {\n\t\treturn typeof this.displayValue === \"string\";\n\t}\n\n\tgetRenderTemplateContext() {\n\t\tif (!this.view) {\n\t\t\treturn;\n\t\t}\n\t\tlet selected = this.view.getSelected();\n\t\tif (this.type === \"multi\") {\n\t\t\treturn { items: selected };\n\t\t} else if (selected && selected.length > 0) {\n\t\t\treturn { item: selected[0] }; // this is to be compatible with the dropdown-list template\n\t\t} else {\n\t\t\treturn {};\n\t\t}\n\t}\n\n\tgetSelectedCount(): number {\n\t\tif (this.view.getSelected()) {\n\t\t\treturn this.view.getSelected().length;\n\t\t}\n\t}\n\n\tclearSelected() {\n\t\tif (this.disabled || this.getSelectedCount() === 0) {\n\t\t\treturn;\n\t\t}\n\t\tfor (const item of this.view.getListItems()) {\n\t\t\titem.selected = false;\n\t\t}\n\t\tthis.selected.emit([]);\n\t\tthis.propagateChange([]);\n\t}\n\n\t/**\n\t * Returns `true` if there is a value selected.\n\t */\n\tvalueSelected(): boolean {\n\t\tif (this.view.getSelected()) { return true; }\n\t\treturn false;\n\t}\n\n\t_noop() { }\n\t/**\n\t * Handles clicks outside of the `Dropdown`.\n\t */\n\t_outsideClick(event) {\n\t\tif (!this.elementRef.nativeElement.contains(event.target) &&\n\t\t\t// if we're appendToBody the list isn't within the _elementRef,\n\t\t\t// so we've got to check if our target is possibly in there too.\n\t\t\t!this.dropdownMenu.nativeElement.contains(event.target)) {\n\t\t\tthis.closeMenu();\n\t\t}\n\t}\n\t_outsideKey(event) {\n\t\tif (!this.menuIsClosed && event.key === \"Tab\" && this.dropdownMenu.nativeElement.contains(event.target as Node)) {\n\t\t\tthis.closeMenu();\n\t\t}\n\t}\n\t/**\n\t * Handles keyboard events so users are controlling the `Dropdown` instead of unintentionally controlling outside elements.\n\t */\n\t_keyboardNav(event: KeyboardEvent) {\n\t\tif (event.key === \"Escape\" && !this.menuIsClosed) {\n\t\t\tevent.stopImmediatePropagation(); // don't unintentionally close modal if inside of it\n\t\t}\n\t\tif (event.key === \"Escape\") {\n\t\t\tevent.preventDefault();\n\t\t\tthis.closeMenu();\n\t\t\tthis.dropdownButton.nativeElement.focus();\n\t\t} else if (!this.menuIsClosed && event.key === \"Tab\") {\n\t\t\t// this way focus will start on the next focusable item from the dropdown\n\t\t\t// not the top of the body!\n\t\t\tthis.dropdownButton.nativeElement.focus();\n\t\t\tthis.dropdownButton.nativeElement.dispatchEvent(new KeyboardEvent(\"keydown\", { bubbles: true, cancelable: true, key: \"Tab\" }));\n\t\t\tthis.closeMenu();\n\t\t}\n\t}\n\n\t/**\n\t * Creates the `Dropdown` list appending it to the dropdown parent object instead of the body.\n\t */\n\t_appendToDropdown() {\n\t\tthis.dropdownService.appendToDropdown(this.elementRef.nativeElement);\n\t\tthis.dropdownMenu.nativeElement.removeEventListener(\"keydown\", this.keyboardNav, true);\n\t}\n\n\t/**\n\t * Creates the `Dropdown` list as an element that is appended to the DOM body.\n\t */\n\t_appendToBody() {\n\t\tconst lightClass = this.theme === \"light\" ? \" cds--list-box--light\" : \"\";\n\t\tconst expandedClass = !this.menuIsClosed ? \" cds--list-box--expanded\" : \"\";\n\t\tthis.dropdownService.appendToBody(\n\t\t\tthis.dropdownButton.nativeElement,\n\t\t\tthis.dropdownMenu.nativeElement,\n\t\t\t`${this.elementRef.nativeElement.className}${lightClass}${expandedClass}`);\n\t\tthis.dropdownMenu.nativeElement.addEventListener(\"keydown\", this.keyboardNav, true);\n\t}\n\n\t/**\n\t * Detects whether or not the `Dropdown` list is visible within all scrollable parents.\n\t * This can be overridden by passing in a value to the `dropUp` input.\n\t */\n\t_shouldDropUp() {\n\t\t// check if dropdownMenu exists first.\n\t\tconst menu = this.dropdownMenu && this.dropdownMenu.nativeElement.querySelector(\".cds--list-box__menu\");\n\t\t// check if menu exists first.\n\t\tconst menuRect = menu && menu.getBoundingClientRect();\n\t\tif (menu && menuRect) {\n\t\t\tconst scrollableParents = getScrollableParents(menu);\n\t\t\treturn scrollableParents.reduce((shouldDropUp: boolean, parent: HTMLElement) => {\n\t\t\t\tconst parentRect = parent.getBoundingClientRect();\n\t\t\t\tconst isBelowParent = !(menuRect.bottom <= parentRect.bottom);\n\t\t\t\treturn shouldDropUp || isBelowParent;\n\t\t\t}, false);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Expands the dropdown menu in the view.\n\t */\n\topenMenu() {\n\t\t// prevents the dropdown from opening when list of items is empty\n\t\tif (this.view.getListItems().length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._dropUp = false;\n\t\tthis.menuIsClosed = false;\n\n\t\t// move the dropdown list to the body if we're not appending inline\n\t\t// and position it relative to the dropdown wrapper\n\t\tif (!this.appendInline) {\n\t\t\tconst target = this.dropdownButton.nativeElement;\n\t\t\tconst parent = this.elementRef.nativeElement;\n\t\t\tthis.visibilitySubscription = this.elementService\n\t\t\t\t.visibility(target, parent)\n\t\t\t\t.subscribe(value => {\n\t\t\t\t\tif (!value.visible) {\n\t\t\t\t\t\tthis.closeMenu();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\tthis._appendToBody();\n\t\t}\n\n\t\t// set the dropdown menu to drop up if it's near the bottom of the screen\n\t\t// setTimeout lets us measure after it's visible in the DOM\n\t\tsetTimeout(() => {\n\t\t\tif (this.dropUp === null || this.dropUp === undefined) {\n\t\t\t\tthis._dropUp = this._shouldDropUp();\n\t\t\t}\n\t\t}, 0);\n\n\t\t// we bind noop to document.body.firstElementChild to allow safari to fire events\n\t\t// from document. Then we unbind everything later to keep things light.\n\t\tdocument.body.firstElementChild.addEventListener(\"click\", this.noop, true);\n\t\tdocument.body.firstElementChild.addEventListener(\"keydown\", this.noop, true);\n\t\tdocument.addEventListener(\"click\", this.outsideClick, true);\n\t\tdocument.addEventListener(\"keydown\", this.outsideKey, true);\n\t\tsetTimeout(() => this.view.initFocus(), 0);\n\t}\n\n\t/**\n\t * Collapsing the dropdown menu and removing unnecessary `EventListeners`.\n\t */\n\tcloseMenu() {\n\t\t// return early if the menu is already closed\n\t\tif (this.menuIsClosed) { return; }\n\t\tthis.menuIsClosed = true;\n\t\tthis.checkForReorder();\n\t\tthis.onClose.emit();\n\t\tthis.close.emit();\n\n\t\t// focus the trigger button when we close ...\n\t\tthis.dropdownButton.nativeElement.focus();\n\n\t\t// remove the conditional once this api is settled and part of abstract-dropdown-view.class\n\t\tif (this.view[\"disableScroll\"]) {\n\t\t\tthis.view[\"disableScroll\"]();\n\t\t}\n\n\t\t// move the list back in the component on close\n\t\tif (!this.appendInline) {\n\t\t\tthis.visibilitySubscription.unsubscribe();\n\t\t\tthis._appendToDropdown();\n\t\t}\n\t\tdocument.body.firstElementChild.removeEventListener(\"click\", this.noop, true);\n\t\tdocument.body.firstElementChild.removeEventListener(\"keydown\", this.noop, true);\n\t\tdocument.removeEventListener(\"click\", this.outsideClick, true);\n\t\tdocument.removeEventListener(\"keydown\", this.outsideKey, true);\n\t}\n\n\t/**\n\t * Controls toggling menu states between open/expanded and closed/collapsed.\n\t */\n\ttoggleMenu() {\n\t\tif (this.menuIsClosed) {\n\t\t\tthis.openMenu();\n\t\t} else {\n\t\t\tthis.closeMenu();\n\t\t}\n\t}\n\n\tpublic isTemplate(value) {\n\t\treturn value instanceof TemplateRef;\n\t}\n\n\thandleFocus(event: FocusEvent) {\n\t\tthis._isFocused = event.type === \"focus\";\n\t\tif (event.type === \"blur\") {\n\t\t\tthis.onBlur();\n\t\t}\n\t}\n\n\t/**\n\t * Controls when it's needed to apply the selection feedback\n\t */\n\tprotected checkForReorder() {\n\t\tconst topAfterReopen = this.menuIsClosed && this.selectionFeedback === \"top-after-reopen\";\n\t\tif ((this.type === \"multi\") && (topAfterReopen || this.selectionFeedback === \"top\")) {\n\t\t\tthis.view.reorderSelected();\n\t\t}\n\t}\n}\n",
30348
+ "sourceCode": "import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tElementRef,\n\tContentChild,\n\tOnInit,\n\tViewChild,\n\tAfterContentInit,\n\tHostListener,\n\tOnDestroy,\n\tHostBinding,\n\tTemplateRef,\n\tAfterViewInit\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from \"@angular/forms\";\n\n// Observable import is required here so typescript can compile correctly\nimport {\n\tObservable,\n\tof,\n\tSubscription\n} from \"rxjs\";\n\nimport { AbstractDropdownView } from \"./abstract-dropdown-view.class\";\nimport { I18n } from \"carbon-components-angular/i18n\";\nimport { ListItem } from \"./list-item.interface\";\nimport { DropdownService } from \"./dropdown.service\";\nimport { ElementService, getScrollableParents } from \"carbon-components-angular/utils\";\nimport { hasScrollableParents } from \"carbon-components-angular/utils\";\n\n/**\n * Drop-down lists enable users to select one or more items from a list.\n *\n * #### Opening behavior/List DOM placement\n * By default the dropdown will try to figure out the best placement for the dropdown list.\n *\n * If it's not contained within any scrolling elements, it will open inline, if it _is_\n * contained within a scrolling container it will try to open in the body, or an `cds-placeholder`.\n *\n * To control this behavior you can use the `appendInline` input:\n * - `[appendInline]=\"null\"` is the default (auto detection)\n * - `[appendInline]=\"false\"` will always append to the body/`cds-placeholder`\n * - `[appendInline]=\"true\"` will always append inline (next to the dropdown button)\n *\n * Get started with importing the module:\n *\n * ```typescript\n * import { DropdownModule } from 'carbon-components-angular';\n * ```\n *\n * [See demo](../../?path=/story/components-dropdown--basic)\n */\n@Component({\n\tselector: \"cds-dropdown, ibm-dropdown\",\n\ttemplate: `\n\t<label\n\t\t*ngIf=\"label && !skeleton\"\n\t\t[for]=\"id\"\n\t\tclass=\"cds--label\"\n\t\t[ngClass]=\"{\n\t\t\t'cds--label--disabled': disabled,\n\t\t\t'cds--visually-hidden': hideLabel\n\t\t}\">\n\t\t<ng-container *ngIf=\"!isTemplate(label)\">{{label}}</ng-container>\n\t\t<ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n\t</label>\n\t<div\n\t\tclass=\"cds--list-box\"\n\t\t[ngClass]=\"{\n\t\t\t'cds--dropdown': type !== 'multi' && !(skeleton && fluid),\n\t\t\t'cds--multiselect': type === 'multi',\n\t\t\t'cds--multi-select--selected': type === 'multi' && getSelectedCount() > 0,\n\t\t\t'cds--dropdown--light': theme === 'light',\n\t\t\t'cds--list-box--light': theme === 'light',\n\t\t\t'cds--list-box--inline': inline,\n\t\t\t'cds--skeleton': skeleton,\n\t\t\t'cds--dropdown--disabled cds--list-box--disabled': disabled,\n\t\t\t'cds--dropdown--readonly': readonly,\n\t\t\t'cds--dropdown--invalid': invalid,\n\t\t\t'cds--dropdown--warning cds--list-box--warning': warn,\n\t\t\t'cds--dropdown--sm cds--list-box--sm': size === 'sm',\n\t\t\t'cds--dropdown--md cds--list-box--md': size === 'md',\n\t\t\t'cds--dropdown--lg cds--list-box--lg': size === 'lg',\n\t\t\t'cds--list-box--expanded': !menuIsClosed,\n\t\t\t'cds--list-box--invalid': invalid\n\t\t}\"\n\t\t[attr.data-invalid]=\"invalid ? true : null\">\n\t\t<div *ngIf=\"skeleton && fluid\" class=\"cds--list-box__label\"></div>\n\t\t<button\n\t\t\t#dropdownButton\n\t\t\t[id]=\"id\"\n\t\t\ttype=\"button\"\n\t\t\tclass=\"cds--list-box__field\"\n\t\t\t[ngClass]=\"{'a': !menuIsClosed}\"\n\t\t\t[attr.aria-expanded]=\"!menuIsClosed\"\n\t\t\t[attr.aria-disabled]=\"disabled\"\n\t\t\taria-haspopup=\"listbox\"\n\t\t\t(click)=\"disabled || readonly ? $event.stopPropagation() : toggleMenu()\"\n\t\t\t(focus)=\"fluid ? handleFocus($event) : null\"\n\t\t\t(blur)=\"fluid ? handleFocus($event) : onBlur()\"\n\t\t\t[attr.disabled]=\"disabled ? true : null\">\n\t\t\t<div\n\t\t\t\t(click)=\"clearSelected()\"\n\t\t\t\t(keydown.enter)=\"clearSelected()\"\n\t\t\t\t*ngIf=\"type === 'multi' && getSelectedCount() > 0\"\n\t\t\t\tclass=\"cds--list-box__selection cds--tag--filter cds--list-box__selection--multi\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\t[title]=\"clearText\">\n\t\t\t\t{{getSelectedCount()}}\n\t\t\t\t<svg\n\t\t\t\t\tfocusable=\"false\"\n\t\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\t\tstyle=\"will-change: transform;\"\n\t\t\t\t\trole=\"img\"\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth=\"16\"\n\t\t\t\t\theight=\"16\"\n\t\t\t\t\tviewBox=\"0 0 16 16\"\n\t\t\t\t\taria-hidden=\"true\">\n\t\t\t\t\t<path d=\"M12 4.7l-.7-.7L8 7.3 4.7 4l-.7.7L7.3 8 4 11.3l.7.7L8 8.7l3.3 3.3.7-.7L8.7 8z\"></path>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t\t<span *ngIf=\"isRenderString()\" class=\"cds--list-box__label\">{{getDisplayStringValue() | async}}</span>\n\t\t\t<ng-template\n\t\t\t\t*ngIf=\"!isRenderString()\"\n\t\t\t\t[ngTemplateOutletContext]=\"getRenderTemplateContext()\"\n\t\t\t\t[ngTemplateOutlet]=\"displayValue\">\n\t\t\t</ng-template>\n\t\t\t<span class=\"cds--list-box__menu-icon\">\n\t\t\t\t<svg\n\t\t\t\t\t*ngIf=\"!skeleton\"\n\t\t\t\t\tcdsIcon=\"chevron--down\"\n\t\t\t\t\tsize=\"16\"\n\t\t\t\t\t[attr.aria-label]=\"menuButtonLabel\"\n\t\t\t\t\t[ngClass]=\"{'cds--list-box__menu-icon--open': !menuIsClosed }\">\n\t\t\t\t</svg>\n\t\t\t</span>\n\t\t</button>\n\t\t<svg\n\t\t\t*ngIf=\"invalid\"\n\t\t\tclass=\"cds--list-box__invalid-icon\"\n\t\t\tcdsIcon=\"warning--filled\"\n\t\t\tsize=\"16\">\n\t\t</svg>\n\t\t<svg\n\t\t\t*ngIf=\"!invalid && warn\"\n\t\t\tcdsIcon=\"warning--alt--filled\"\n\t\t\tsize=\"16\"\n\t\t\tclass=\"cds--list-box__invalid-icon cds--list-box__invalid-icon--warning\">\n\t\t</svg>\n\t\t<div\n\t\t\t#dropdownMenu\n\t\t\t[ngClass]=\"{\n\t\t\t\t'cds--list-box--up': this.dropUp !== null && this.dropUp !== undefined ? dropUp : _dropUp\n\t\t\t}\">\n\t\t\t<ng-content *ngIf=\"!menuIsClosed\"></ng-content>\n\t\t</div>\n\t</div>\n\t<hr *ngIf=\"fluid\" class=\"cds--list-box__divider\" />\n\t<div\n\t\t*ngIf=\"helperText && !invalid && !warn && !skeleton && !fluid\"\n\t\tclass=\"cds--form__helper-text\"\n\t\t[ngClass]=\"{\n\t\t\t'cds--form__helper-text--disabled': disabled\n\t\t}\">\n\t\t<ng-container *ngIf=\"!isTemplate(helperText)\">{{helperText}}</ng-container>\n\t\t<ng-template *ngIf=\"isTemplate(helperText)\" [ngTemplateOutlet]=\"helperText\"></ng-template>\n\t</div>\n\t<div *ngIf=\"invalid\" class=\"cds--form-requirement\">\n\t\t<ng-container *ngIf=\"!isTemplate(invalidText)\">{{ invalidText }}</ng-container>\n\t\t<ng-template *ngIf=\"isTemplate(invalidText)\" [ngTemplateOutlet]=\"invalidText\"></ng-template>\n\t</div>\n\t<div *ngIf=\"!invalid && warn\" class=\"cds--form-requirement\">\n\t\t<ng-container *ngIf=\"!isTemplate(warnText)\">{{warnText}}</ng-container>\n\t\t<ng-template *ngIf=\"isTemplate(warnText)\" [ngTemplateOutlet]=\"warnText\"></ng-template>\n\t</div>\n\t`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: Dropdown,\n\t\t\tmulti: true\n\t\t}\n\t]\n})\nexport class Dropdown implements OnInit, AfterContentInit, AfterViewInit, OnDestroy, ControlValueAccessor {\n\tstatic dropdownCount = 0;\n\t@HostBinding(\"class.cds--list-box__wrapper--fluid--invalid\") get fluidInvalidClass() {\n\t\treturn this.invalid && this.fluid;\n\t}\n\n\t@HostBinding(\"class.cds--list-box__wrapper--fluid--focus\") get fluidFocusClass() {\n\t\treturn this.fluid && this._isFocused && this.menuIsClosed;\n\t}\n\n\tprotected get writtenValue() {\n\t\treturn this._writtenValue;\n\t}\n\n\tprotected set writtenValue(val: any[]) {\n\t\tif (val && val.length === 0) {\n\t\t\tthis.clearSelected();\n\t\t}\n\t\tthis._writtenValue = val;\n\t}\n\n\t@Input() id = `dropdown-${Dropdown.dropdownCount++}`;\n\t/**\n\t * Label for the dropdown.\n\t */\n\t@Input() label: string | TemplateRef<any>;\n\t/**\n\t * Hide label while keeping it accessible for screen readers\n\t */\n\t@Input() hideLabel = false;\n\t/**\n\t * Sets the optional helper text.\n\t */\n\t@Input() helperText: string | TemplateRef<any>;\n\t/**\n\t * Value displayed if no item is selected.\n\t */\n\t@Input() placeholder = \"\";\n\t/**\n\t * The selected value from the `Dropdown`. Can be a string or template.\n\t */\n\t@Input() displayValue: string | TemplateRef<any> = \"\";\n\t/**\n\t * Sets the optional clear button tooltip text.\n\t */\n\t@Input() clearText: string = this.i18n.get().DROPDOWN.CLEAR;\n\t/**\n\t * Size to render the dropdown field.\n\t */\n\t@Input() size: \"sm\" | \"md\" | \"lg\" = \"md\";\n\t/**\n\t * Defines whether or not the `Dropdown` supports selecting multiple items as opposed to single\n\t * item selection.\n\t */\n\t@Input() type: \"single\" | \"multi\" = \"single\";\n\t/**\n\t * @deprecated since v5 - Use `cdsLayer` directive instead\n\t * `light` or `dark` dropdown theme\n\t */\n\t@Input() theme: \"light\" | \"dark\" = \"dark\";\n\t/**\n\t * Set to `true` to disable the dropdown.\n\t */\n\t@Input() disabled = false;\n\t/**\n\t * Set to `true` for a readonly state.\n\t */\n\t@Input() readonly = false;\n\t/**\n\t * Set to `true` for a loading dropdown.\n\t */\n\t@Input() skeleton = false;\n\t/**\n\t * Set to `true` for an inline dropdown.\n\t */\n\t@Input() inline = false;\n\t/**\n\t * Set to `true` for a dropdown without arrow key activation.\n\t */\n\t@Input() disableArrowKeys = false;\n\t/**\n\t * Set to `true` for invalid state.\n\t */\n\t@Input() invalid = false;\n\t/**\n\t * Value displayed if dropdown is in invalid state.\n\t */\n\t@Input() invalidText: string | TemplateRef<any>;\n\t/**\n\t * Set to `true` to show a warning (contents set by warningText)\n\t */\n\t@Input() warn = false;\n\t/**\n\t * Sets the warning text\n\t */\n\t@Input() warnText: string | TemplateRef<any>;\n\t/**\n\t * set to `true` to place the dropdown view inline with the component\n\t */\n\t@Input() appendInline: boolean = null;\n\t/**\n\t * Query string for the element that contains the `Dropdown`.\n\t * Used to trigger closing the dropdown if it scrolls outside of the viewport of the `scrollableContainer`.\n\t */\n\t@Input() scrollableContainer: string;\n\t/**\n\t * Specifies the property to be used as the return value to `ngModel`\n\t */\n\t@Input() itemValueKey: string;\n\t/**\n\t * Specify feedback (mode) of the selection.\n\t * `top`: selected item jumps to top\n\t * `fixed`: selected item stays at it's position\n\t * `top-after-reopen`: selected item jump to top after reopen dropdown\n\t */\n\t@Input() selectionFeedback: \"top\" | \"fixed\" | \"top-after-reopen\" = \"top-after-reopen\";\n\t/**\n\t * Accessible label for the button that opens the dropdown list.\n\t * Defaults to the `DROPDOWN.OPEN` value from the i18n service.\n\t */\n\t@Input() menuButtonLabel = this.i18n.get().DROPDOWN.OPEN;\n\t/**\n\t * Provides the label for the \"# selected\" text.\n\t * Defaults to the `DROPDOWN.SELECTED` value from the i18n service.\n\t */\n\t@Input() selectedLabel = this.i18n.get().DROPDOWN.SELECTED;\n\t/**\n\t * Overrides the automatic dropUp.\n\t */\n\t@Input() dropUp: boolean;\n\t/**\n\t * Emits selection events.\n\t */\n\t@Output() selected: EventEmitter<Object> = new EventEmitter<Object>();\n\t/**\n\t * Emits event notifying to other classes that the `Dropdown` has been closed (collapsed).\n\t */\n\t@Output() onClose: EventEmitter<any> = new EventEmitter<any>();\n\t/**\n\t * Emits event notifying to other classes that the `Dropdown` has been closed (collapsed).\n\t */\n\t@Output() close: EventEmitter<any> = new EventEmitter<any>();\n\n\t/**\n\t * Maintains a reference to the `AbstractDropdownView` object within the content DOM.\n\t */\n\t@ContentChild(AbstractDropdownView, { static: true }) view: AbstractDropdownView;\n\t/**\n\t * Maintains a reference to the view DOM element of the `Dropdown` button.\n\t */\n\t@ViewChild(\"dropdownButton\", { static: true }) dropdownButton;\n\t/**\n\t * ViewChid of the dropdown view.\n\t */\n\t@ViewChild(\"dropdownMenu\", { static: true }) dropdownMenu;\n\n\t@HostBinding(\"class.cds--dropdown__wrapper\") hostClass = true;\n\n\t@HostBinding(\"class.cds--list-box__wrapper\") hostWrapperClass = true;\n\t/**\n\t * Experimental: enable fluid state\n\t */\n\t@HostBinding(\"class.cds--list-box__wrapper--fluid\") @Input() fluid = false;\n\n\t/**\n\t * Set to `true` if the dropdown is closed (not expanded).\n\t */\n\tmenuIsClosed = true;\n\n\t/**\n\t * controls whether the `drop-up` class is applied\n\t */\n\t_dropUp = false;\n\n\t// .bind creates a new function, so we declare the methods below\n\t// but .bind them up here\n\tnoop = this._noop.bind(this);\n\toutsideClick = this._outsideClick.bind(this);\n\toutsideKey = this._outsideKey.bind(this);\n\tkeyboardNav = this._keyboardNav.bind(this);\n\n\tprotected visibilitySubscription = new Subscription();\n\n\tprotected onTouchedCallback: () => void = this._noop;\n\n\tprotected _isFocused = false;\n\n\t// primarily used to capture and propagate input to `writeValue` before the content is available\n\tprivate _writtenValue: any = [];\n\n\t/**\n\t * Creates an instance of Dropdown.\n\t */\n\tconstructor(\n\t\tprotected elementRef: ElementRef,\n\t\tprotected i18n: I18n,\n\t\tprotected dropdownService: DropdownService,\n\t\tprotected elementService: ElementService) {}\n\n\t/**\n\t * Updates the `type` property in the `@ContentChild`.\n\t * The `type` property specifies whether the `Dropdown` allows single selection or multi selection.\n\t */\n\tngOnInit() {\n\t\tif (this.view) {\n\t\t\tthis.view.type = this.type;\n\t\t}\n\t}\n\n\t/**\n\t * Initializes classes and subscribes to events for single or multi selection.\n\t */\n\tngAfterContentInit() {\n\t\tif (!this.view) {\n\t\t\treturn;\n\t\t}\n\t\tif ((this.writtenValue && this.writtenValue.length) || typeof this.writtenValue === \"number\") {\n\t\t\tthis.writeValue(this.writtenValue);\n\t\t}\n\t\tthis.view.type = this.type;\n\t\tthis.view.size = this.size;\n\n\t\t// function to check if the event is organic (isUpdate === false) or programmatic\n\t\tconst isUpdate = event => event && event.isUpdate;\n\n\t\tthis.view.select.subscribe(event => {\n\t\t\tif (this.type === \"single\" && !isUpdate(event) && !Array.isArray(event)) {\n\t\t\t\tthis.closeMenu();\n\t\t\t\tif (event.item && event.item.selected) {\n\t\t\t\t\tif (this.itemValueKey) {\n\t\t\t\t\t\tthis.propagateChange(event.item[this.itemValueKey]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.propagateChange(event.item);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.propagateChange(null);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.type === \"multi\" && !isUpdate(event)) {\n\t\t\t\t// if we have a `value` selector and selected items map them appropriately\n\t\t\t\tif (this.itemValueKey && this.view.getSelected()) {\n\t\t\t\t\tconst values = this.view.getSelected().map(item => item[this.itemValueKey]);\n\t\t\t\t\tthis.propagateChange(values);\n\t\t\t\t\t// otherwise just pass up the values from `getSelected`\n\t\t\t\t} else {\n\t\t\t\t\tthis.propagateChange(this.view.getSelected());\n\t\t\t\t}\n\t\t\t}\n\t\t\t// only emit selected for \"organic\" selections\n\t\t\tif (!isUpdate(event)) {\n\t\t\t\tthis.checkForReorder();\n\t\t\t\tthis.selected.emit(event);\n\t\t\t}\n\t\t});\n\t}\n\n\tngAfterViewInit() {\n\t\t// if appendInline is default valued (null) we should:\n\t\t// 1. if there are scrollable parents (not including body) don't append inline\n\t\t// this should also cover the case where the dropdown is in a modal\n\t\t// (where we _do_ want to append to the placeholder)\n\t\tif (this.appendInline === null && hasScrollableParents(this.elementRef.nativeElement)) {\n\t\t\tthis.appendInline = false;\n\t\t\t// 2. otherwise we should append inline\n\t\t} else if (this.appendInline === null) {\n\t\t\tthis.appendInline = true;\n\t\t}\n\t\tthis.checkForReorder();\n\t}\n\n\t/**\n\t * Removing the `Dropdown` from the body if it is appended to the body.\n\t */\n\tngOnDestroy() {\n\t\tif (!this.appendInline) {\n\t\t\tthis._appendToDropdown();\n\t\t}\n\t}\n\n\t/**\n\t * Propagates the injected `value`.\n\t */\n\twriteValue(value: any) {\n\t\t// cache the written value so we can use it in `AfterContentInit`\n\t\tthis.writtenValue = value;\n\t\tthis.view.onItemsReady(() => {\n\t\t\t// propagate null/falsey as an array (deselect everything)\n\t\t\tif (!value) {\n\t\t\t\tthis.view.propagateSelected([value]);\n\t\t\t} else if (this.type === \"single\") {\n\t\t\t\tif (this.itemValueKey) {\n\t\t\t\t\t// clone the specified item and update its state\n\t\t\t\t\tconst newValue = Object.assign({}, this.view.getListItems().find(item => item[this.itemValueKey] === value));\n\t\t\t\t\tnewValue.selected = true;\n\t\t\t\t\tthis.view.propagateSelected([newValue]);\n\t\t\t\t} else {\n\t\t\t\t\t// pass the singular value as an array of ListItem\n\t\t\t\t\tthis.view.propagateSelected([value]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (this.itemValueKey) {\n\t\t\t\t\t// clone the items and update their state based on the received value array\n\t\t\t\t\t// this way we don't lose any additional metadata that may be passed in via the `items` Input\n\t\t\t\t\tlet newValues = [];\n\t\t\t\t\tfor (const v of value) {\n\t\t\t\t\t\tfor (const item of this.view.getListItems()) {\n\t\t\t\t\t\t\tif (item[this.itemValueKey] === v) {\n\t\t\t\t\t\t\t\tnewValues.push(Object.assign({}, item, { selected: true }));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.view.propagateSelected(newValues);\n\t\t\t\t} else {\n\t\t\t\t\t// we can safely assume we're passing an array of `ListItem`s\n\t\t\t\t\tthis.view.propagateSelected(value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.checkForReorder();\n\t\t});\n\t}\n\n\tonBlur() {\n\t\tthis.onTouchedCallback();\n\t}\n\n\tregisterOnChange(fn: any) {\n\t\tthis.propagateChange = fn;\n\t}\n\n\t/**\n\t * Registering the function injected to control the touch use of the `Dropdown`.\n\t */\n\tregisterOnTouched(fn: any) {\n\t\tthis.onTouchedCallback = fn;\n\t}\n\n\t/**\n\t * function passed in by `registerOnChange`\n\t */\n\tpropagateChange = (_: any) => { };\n\n\t/**\n\t * `ControlValueAccessor` method to programmatically disable the dropdown.\n\t *\n\t * ex: `this.formGroup.get(\"myDropdown\").disable();`\n\t *\n\t * @param isDisabled `true` to disable the input\n\t */\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.disabled = isDisabled;\n\t}\n\n\t/**\n\t * Adds keyboard functionality for navigation, selection and closing of the `Dropdown`.\n\t */\n\t@HostListener(\"keydown\", [\"$event\"])\n\tonKeyDown(event: KeyboardEvent) {\n\t\tif (this.readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ((event.key === \"Escape\") && !this.menuIsClosed) {\n\t\t\tevent.stopImmediatePropagation(); // don't unintentionally close other widgets that listen for Escape\n\t\t}\n\t\tif (event.key === \"Escape\") {\n\t\t\tevent.preventDefault();\n\t\t\tthis.closeMenu();\n\t\t\tthis.dropdownButton.nativeElement.focus();\n\t\t} else if (this.menuIsClosed && (event.key === \" \" || event.key === \"ArrowDown\" || event.key === \"ArrowUp\")) {\n\t\t\tif (this.disableArrowKeys && (event.key === \"ArrowDown\" || event.key === \"ArrowUp\")) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tevent.preventDefault();\n\t\t\tthis.openMenu();\n\t\t}\n\n\t\tif (!this.menuIsClosed && event.key === \"Tab\" && this.dropdownMenu.nativeElement.contains(event.target as Node)) {\n\t\t\tthis.closeMenu();\n\t\t}\n\n\t\tif (!this.menuIsClosed && event.key === \"Tab\" && event.shiftKey) {\n\t\t\tthis.closeMenu();\n\t\t}\n\n\t\tif (this.type === \"multi\") { return; }\n\n\t\tif (this.menuIsClosed) {\n\t\t\tthis.closedDropdownNavigation(event);\n\t\t}\n\t}\n\n\tclosedDropdownNavigation(event) {\n\t\tif (event.key === \"ArrowDown\") {\n\t\t\tevent.preventDefault();\n\t\t\tthis.view.getCurrentItem().selected = false;\n\t\t\tlet item = this.view.getNextItem();\n\t\t\tif (item) { item.selected = true; }\n\t\t} else if (event.key === \"ArrowUp\") {\n\t\t\tevent.preventDefault();\n\t\t\tthis.view.getCurrentItem().selected = false;\n\t\t\tlet item = this.view.getPrevItem();\n\t\t\tif (item) { item.selected = true; }\n\t\t}\n\t}\n\n\t/**\n\t * Returns the display value if there is a selection and displayValue is set,\n\t * if there is just a selection the ListItem content property will be returned,\n\t * otherwise the placeholder will be returned.\n\t */\n\tgetDisplayStringValue(): Observable<string> {\n\t\tif (!this.view || this.skeleton) {\n\t\t\treturn;\n\t\t}\n\t\tlet selected = this.view.getSelected();\n\t\tif (selected.length && (!this.displayValue || !this.isRenderString())) {\n\t\t\tif (this.type === \"multi\") {\n\t\t\t\treturn of(this.placeholder);\n\t\t\t} else {\n\t\t\t\treturn of(selected[0].content);\n\t\t\t}\n\t\t} else if (selected.length && this.isRenderString()) {\n\t\t\treturn of(this.displayValue as string);\n\t\t}\n\t\treturn of(this.placeholder);\n\t}\n\n\tisRenderString(): boolean {\n\t\treturn typeof this.displayValue === \"string\";\n\t}\n\n\tgetRenderTemplateContext() {\n\t\tif (!this.view) {\n\t\t\treturn;\n\t\t}\n\t\tlet selected = this.view.getSelected();\n\t\tif (this.type === \"multi\") {\n\t\t\treturn { items: selected };\n\t\t} else if (selected && selected.length > 0) {\n\t\t\treturn { item: selected[0] }; // this is to be compatible with the dropdown-list template\n\t\t} else {\n\t\t\treturn {};\n\t\t}\n\t}\n\n\tgetSelectedCount(): number {\n\t\tif (this.view.getSelected()) {\n\t\t\treturn this.view.getSelected().length;\n\t\t}\n\t}\n\n\tclearSelected() {\n\t\tif (this.disabled || this.getSelectedCount() === 0) {\n\t\t\treturn;\n\t\t}\n\t\tfor (const item of this.view.getListItems()) {\n\t\t\titem.selected = false;\n\t\t}\n\t\tthis.selected.emit([]);\n\t\tthis.propagateChange([]);\n\t}\n\n\t/**\n\t * Returns `true` if there is a value selected.\n\t */\n\tvalueSelected(): boolean {\n\t\tif (this.view.getSelected()) { return true; }\n\t\treturn false;\n\t}\n\n\t_noop() { }\n\t/**\n\t * Handles clicks outside of the `Dropdown`.\n\t */\n\t_outsideClick(event) {\n\t\tif (!this.elementRef.nativeElement.contains(event.target) &&\n\t\t\t// if we're appendToBody the list isn't within the _elementRef,\n\t\t\t// so we've got to check if our target is possibly in there too.\n\t\t\t!this.dropdownMenu.nativeElement.contains(event.target)) {\n\t\t\tthis.closeMenu();\n\t\t}\n\t}\n\t_outsideKey(event) {\n\t\tif (!this.menuIsClosed && event.key === \"Tab\" && this.dropdownMenu.nativeElement.contains(event.target as Node)) {\n\t\t\tthis.closeMenu();\n\t\t}\n\t}\n\t/**\n\t * Handles keyboard events so users are controlling the `Dropdown` instead of unintentionally controlling outside elements.\n\t */\n\t_keyboardNav(event: KeyboardEvent) {\n\t\tif (event.key === \"Escape\" && !this.menuIsClosed) {\n\t\t\tevent.stopImmediatePropagation(); // don't unintentionally close modal if inside of it\n\t\t}\n\t\tif (event.key === \"Escape\") {\n\t\t\tevent.preventDefault();\n\t\t\tthis.closeMenu();\n\t\t\tthis.dropdownButton.nativeElement.focus();\n\t\t} else if (!this.menuIsClosed && event.key === \"Tab\") {\n\t\t\t// this way focus will start on the next focusable item from the dropdown\n\t\t\t// not the top of the body!\n\t\t\tthis.dropdownButton.nativeElement.focus();\n\t\t\tthis.dropdownButton.nativeElement.dispatchEvent(new KeyboardEvent(\"keydown\", { bubbles: true, cancelable: true, key: \"Tab\" }));\n\t\t\tthis.closeMenu();\n\t\t}\n\t}\n\n\t/**\n\t * Creates the `Dropdown` list appending it to the dropdown parent object instead of the body.\n\t */\n\t_appendToDropdown() {\n\t\tthis.dropdownService.appendToDropdown(this.elementRef.nativeElement);\n\t\tthis.dropdownMenu.nativeElement.removeEventListener(\"keydown\", this.keyboardNav, true);\n\t}\n\n\t/**\n\t * Creates the `Dropdown` list as an element that is appended to the DOM body.\n\t */\n\t_appendToBody() {\n\t\tconst lightClass = this.theme === \"light\" ? \" cds--list-box--light\" : \"\";\n\t\tconst expandedClass = !this.menuIsClosed ? \" cds--list-box--expanded\" : \"\";\n\t\tthis.dropdownService.appendToBody(\n\t\t\tthis.dropdownButton.nativeElement,\n\t\t\tthis.dropdownMenu.nativeElement,\n\t\t\t`${this.elementRef.nativeElement.className}${lightClass}${expandedClass}`);\n\t\tthis.dropdownMenu.nativeElement.addEventListener(\"keydown\", this.keyboardNav, true);\n\t}\n\n\t/**\n\t * Detects whether or not the `Dropdown` list is visible within all scrollable parents.\n\t * This can be overridden by passing in a value to the `dropUp` input.\n\t */\n\t_shouldDropUp() {\n\t\t// check if dropdownMenu exists first.\n\t\tconst menu = this.dropdownMenu && this.dropdownMenu.nativeElement.querySelector(\".cds--list-box__menu\");\n\t\t// check if menu exists first.\n\t\tconst menuRect = menu && menu.getBoundingClientRect();\n\t\tif (menu && menuRect) {\n\t\t\tconst scrollableParents = getScrollableParents(menu);\n\t\t\treturn scrollableParents.reduce((shouldDropUp: boolean, parent: HTMLElement) => {\n\t\t\t\tconst parentRect = parent.getBoundingClientRect();\n\t\t\t\tconst isBelowParent = !(menuRect.bottom <= parentRect.bottom);\n\t\t\t\treturn shouldDropUp || isBelowParent;\n\t\t\t}, false);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Expands the dropdown menu in the view.\n\t */\n\topenMenu() {\n\t\t// prevents the dropdown from opening when list of items is empty\n\t\tif (this.view.getListItems().length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._dropUp = false;\n\t\tthis.menuIsClosed = false;\n\n\t\t// move the dropdown list to the body if we're not appending inline\n\t\t// and position it relative to the dropdown wrapper\n\t\tif (!this.appendInline) {\n\t\t\tconst target = this.dropdownButton.nativeElement;\n\t\t\tconst parent = this.elementRef.nativeElement;\n\t\t\tthis.visibilitySubscription = this.elementService\n\t\t\t\t.visibility(target, parent)\n\t\t\t\t.subscribe(value => {\n\t\t\t\t\tif (!value.visible) {\n\t\t\t\t\t\tthis.closeMenu();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\tthis._appendToBody();\n\t\t}\n\n\t\t// set the dropdown menu to drop up if it's near the bottom of the screen\n\t\t// setTimeout lets us measure after it's visible in the DOM\n\t\tsetTimeout(() => {\n\t\t\tif (this.dropUp === null || this.dropUp === undefined) {\n\t\t\t\tthis._dropUp = this._shouldDropUp();\n\t\t\t}\n\t\t}, 0);\n\n\t\t// we bind noop to document.body.firstElementChild to allow safari to fire events\n\t\t// from document. Then we unbind everything later to keep things light.\n\t\tdocument.body.firstElementChild.addEventListener(\"click\", this.noop, true);\n\t\tdocument.body.firstElementChild.addEventListener(\"keydown\", this.noop, true);\n\t\tdocument.addEventListener(\"click\", this.outsideClick, true);\n\t\tdocument.addEventListener(\"keydown\", this.outsideKey, true);\n\t\tsetTimeout(() => this.view.initFocus(), 0);\n\t}\n\n\t/**\n\t * Collapsing the dropdown menu and removing unnecessary `EventListeners`.\n\t */\n\tcloseMenu() {\n\t\t// return early if the menu is already closed\n\t\tif (this.menuIsClosed) { return; }\n\t\tthis.menuIsClosed = true;\n\t\tthis.checkForReorder();\n\t\tthis.onClose.emit();\n\t\tthis.close.emit();\n\n\t\t// focus the trigger button when we close ...\n\t\tthis.dropdownButton.nativeElement.focus();\n\n\t\t// remove the conditional once this api is settled and part of abstract-dropdown-view.class\n\t\tif (this.view[\"disableScroll\"]) {\n\t\t\tthis.view[\"disableScroll\"]();\n\t\t}\n\n\t\t// move the list back in the component on close\n\t\tif (!this.appendInline) {\n\t\t\tthis.visibilitySubscription.unsubscribe();\n\t\t\tthis._appendToDropdown();\n\t\t}\n\t\tdocument.body.firstElementChild.removeEventListener(\"click\", this.noop, true);\n\t\tdocument.body.firstElementChild.removeEventListener(\"keydown\", this.noop, true);\n\t\tdocument.removeEventListener(\"click\", this.outsideClick, true);\n\t\tdocument.removeEventListener(\"keydown\", this.outsideKey, true);\n\t}\n\n\t/**\n\t * Controls toggling menu states between open/expanded and closed/collapsed.\n\t */\n\ttoggleMenu() {\n\t\tif (this.menuIsClosed) {\n\t\t\tthis.openMenu();\n\t\t} else {\n\t\t\tthis.closeMenu();\n\t\t}\n\t}\n\n\tpublic isTemplate(value) {\n\t\treturn value instanceof TemplateRef;\n\t}\n\n\thandleFocus(event: FocusEvent) {\n\t\tthis._isFocused = event.type === \"focus\";\n\t\tif (event.type === \"blur\") {\n\t\t\tthis.onBlur();\n\t\t}\n\t}\n\n\t/**\n\t * Controls when it's needed to apply the selection feedback\n\t */\n\tprotected checkForReorder() {\n\t\tconst topAfterReopen = this.menuIsClosed && this.selectionFeedback === \"top-after-reopen\";\n\t\tif ((this.type === \"multi\") && (topAfterReopen || this.selectionFeedback === \"top\")) {\n\t\t\tthis.view.reorderSelected();\n\t\t}\n\t}\n}\n",
30339
30349
  "assetsDirs": [],
30340
30350
  "styleUrlsData": "",
30341
30351
  "stylesData": "",
@@ -30370,7 +30380,7 @@
30370
30380
  "deprecationMessage": ""
30371
30381
  }
30372
30382
  ],
30373
- "line": 377,
30383
+ "line": 376,
30374
30384
  "rawdescription": "\n\nCreates an instance of Dropdown.\n",
30375
30385
  "jsdoctags": [
30376
30386
  {
@@ -30426,7 +30436,7 @@
30426
30436
  "name": "fluidInvalidClass",
30427
30437
  "type": "",
30428
30438
  "returnType": "",
30429
- "line": 191
30439
+ "line": 190
30430
30440
  }
30431
30441
  },
30432
30442
  "fluidFocusClass": {
@@ -30435,7 +30445,7 @@
30435
30445
  "name": "fluidFocusClass",
30436
30446
  "type": "",
30437
30447
  "returnType": "",
30438
- "line": 195
30448
+ "line": 194
30439
30449
  }
30440
30450
  }
30441
30451
  }
@@ -74846,7 +74856,7 @@
74846
74856
  "name": "Basic",
74847
74857
  "ctype": "miscellaneous",
74848
74858
  "subtype": "variable",
74849
- "file": "src/button/button-set.stories.ts",
74859
+ "file": "src/breadcrumb/breadcrumb.stories.ts",
74850
74860
  "deprecated": false,
74851
74861
  "deprecationMessage": "",
74852
74862
  "type": "",
@@ -74856,7 +74866,7 @@
74856
74866
  "name": "Basic",
74857
74867
  "ctype": "miscellaneous",
74858
74868
  "subtype": "variable",
74859
- "file": "src/button/button.stories.ts",
74869
+ "file": "src/button/button-set.stories.ts",
74860
74870
  "deprecated": false,
74861
74871
  "deprecationMessage": "",
74862
74872
  "type": "",
@@ -74866,7 +74876,7 @@
74866
74876
  "name": "Basic",
74867
74877
  "ctype": "miscellaneous",
74868
74878
  "subtype": "variable",
74869
- "file": "src/button/icon-button.stories.ts",
74879
+ "file": "src/button/button.stories.ts",
74870
74880
  "deprecated": false,
74871
74881
  "deprecationMessage": "",
74872
74882
  "type": "",
@@ -74876,7 +74886,7 @@
74876
74886
  "name": "Basic",
74877
74887
  "ctype": "miscellaneous",
74878
74888
  "subtype": "variable",
74879
- "file": "src/breadcrumb/breadcrumb.stories.ts",
74889
+ "file": "src/button/icon-button.stories.ts",
74880
74890
  "deprecated": false,
74881
74891
  "deprecationMessage": "",
74882
74892
  "type": "",
@@ -77708,41 +77718,41 @@
77708
77718
  "name": "Template",
77709
77719
  "ctype": "miscellaneous",
77710
77720
  "subtype": "variable",
77711
- "file": "src/button/button-set.stories.ts",
77721
+ "file": "src/breadcrumb/breadcrumb.stories.ts",
77712
77722
  "deprecated": false,
77713
77723
  "deprecationMessage": "",
77714
77724
  "type": "",
77715
- "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-button-set>\n\t\t\t<button cdsButton=\"secondary\" [size]=\"size\" [isExpressive]=\"isExpressive\">Button</button>\n\t\t\t<button cdsButton [size]=\"size\" [isExpressive]=\"isExpressive\">Button</button>\n\t\t</cds-button-set>\n\t`\n})"
77725
+ "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-breadcrumb [noTrailingSlash]=\"noTrailingSlash\">\n\t\t\t<cds-breadcrumb-item href=\"#1\">\n\t\t\t\tBreadcrumb 1\n\t\t\t</cds-breadcrumb-item>\n\t\t\t<cds-breadcrumb-item href=\"#2\">\n\t\t\t\tBreadcrumb 2\n\t\t\t</cds-breadcrumb-item>\n\t\t\t<cds-breadcrumb-item href=\"#3\">\n\t\t\t\tBreadcrumb 3\n\t\t\t</cds-breadcrumb-item>\n\t\t</cds-breadcrumb>\n\t`\n})"
77716
77726
  },
77717
77727
  {
77718
77728
  "name": "Template",
77719
77729
  "ctype": "miscellaneous",
77720
77730
  "subtype": "variable",
77721
- "file": "src/button/button.stories.ts",
77731
+ "file": "src/button/button-set.stories.ts",
77722
77732
  "deprecated": false,
77723
77733
  "deprecationMessage": "",
77724
77734
  "type": "",
77725
- "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<button\n\t\t\t[cdsButton]=\"kind\"\n\t\t\t[size]=\"size\"\n\t\t\t[isExpressive]=\"isExpressive\"\n\t\t\t[disabled]=\"disabled\"\n\t\t\t(click)=\"onClick($event)\"\n\t\t\t(mouseenter)=\"onMouseEnter($event)\"\n\t\t\t(mouseleave)=\"onMouseLeave($event)\"\n\t\t\t(focus)=\"onFocus($event)\"\n\t\t\t(blur)=\"onBlur($event)\">\n\t\t\tButton\n\t\t</button>\n\t`\n})"
77735
+ "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-button-set>\n\t\t\t<button cdsButton=\"secondary\" [size]=\"size\" [isExpressive]=\"isExpressive\">Button</button>\n\t\t\t<button cdsButton [size]=\"size\" [isExpressive]=\"isExpressive\">Button</button>\n\t\t</cds-button-set>\n\t`\n})"
77726
77736
  },
77727
77737
  {
77728
77738
  "name": "Template",
77729
77739
  "ctype": "miscellaneous",
77730
77740
  "subtype": "variable",
77731
- "file": "src/button/icon-button.stories.ts",
77741
+ "file": "src/button/button.stories.ts",
77732
77742
  "deprecated": false,
77733
77743
  "deprecationMessage": "",
77734
77744
  "type": "",
77735
- "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-icon-button\n\t\t\tbuttonId=\"icon-btn1\"\n\t\t\ttype=\"button\"\n\t\t\t[kind]=\"kind\"\n\t\t\t[size]=\"size\"\n\t\t\t[align]=\"align\"\n\t\t\t[buttonNgClass]=\"buttonNgClass\"\n\t\t\t[buttonAttributes]=\"buttonAttributes\"\n\t\t\t[disabled]=\"disabled\"\n\t\t\t[showTooltipWhenDisabled]=\"showTooltipWhenDisabled\"\n\t\t\tdescription=\"Icon Description\"\n\t\t\t(click)=\"onClick($event)\"\n\t\t\t(mouseenter)=\"onMouseEnter($event)\"\n\t\t\t(mouseleave)=\"onMouseLeave($event)\"\n\t\t\t(focus)=\"onFocus($event)\"\n\t\t\t(blur)=\"onBlur($event)\">\n\t\t\t<svg class=\"cds--btn__icon\" cdsIcon=\"copy\" size=\"16\"></svg>\n\t\t</cds-icon-button>\n\t`\n})"
77745
+ "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<button\n\t\t\t[cdsButton]=\"kind\"\n\t\t\t[size]=\"size\"\n\t\t\t[isExpressive]=\"isExpressive\"\n\t\t\t[disabled]=\"disabled\"\n\t\t\t(click)=\"onClick($event)\"\n\t\t\t(mouseenter)=\"onMouseEnter($event)\"\n\t\t\t(mouseleave)=\"onMouseLeave($event)\"\n\t\t\t(focus)=\"onFocus($event)\"\n\t\t\t(blur)=\"onBlur($event)\">\n\t\t\tButton\n\t\t</button>\n\t`\n})"
77736
77746
  },
77737
77747
  {
77738
77748
  "name": "Template",
77739
77749
  "ctype": "miscellaneous",
77740
77750
  "subtype": "variable",
77741
- "file": "src/breadcrumb/breadcrumb.stories.ts",
77751
+ "file": "src/button/icon-button.stories.ts",
77742
77752
  "deprecated": false,
77743
77753
  "deprecationMessage": "",
77744
77754
  "type": "",
77745
- "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-breadcrumb [noTrailingSlash]=\"noTrailingSlash\">\n\t\t\t<cds-breadcrumb-item href=\"#1\">\n\t\t\t\tBreadcrumb 1\n\t\t\t</cds-breadcrumb-item>\n\t\t\t<cds-breadcrumb-item href=\"#2\">\n\t\t\t\tBreadcrumb 2\n\t\t\t</cds-breadcrumb-item>\n\t\t\t<cds-breadcrumb-item href=\"#3\">\n\t\t\t\tBreadcrumb 3\n\t\t\t</cds-breadcrumb-item>\n\t\t</cds-breadcrumb>\n\t`\n})"
77755
+ "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-icon-button\n\t\t\tbuttonId=\"icon-btn1\"\n\t\t\ttype=\"button\"\n\t\t\t[kind]=\"kind\"\n\t\t\t[size]=\"size\"\n\t\t\t[align]=\"align\"\n\t\t\t[buttonNgClass]=\"buttonNgClass\"\n\t\t\t[buttonAttributes]=\"buttonAttributes\"\n\t\t\t[disabled]=\"disabled\"\n\t\t\t[showTooltipWhenDisabled]=\"showTooltipWhenDisabled\"\n\t\t\tdescription=\"Icon Description\"\n\t\t\t(click)=\"onClick($event)\"\n\t\t\t(mouseenter)=\"onMouseEnter($event)\"\n\t\t\t(mouseleave)=\"onMouseLeave($event)\"\n\t\t\t(focus)=\"onFocus($event)\"\n\t\t\t(blur)=\"onBlur($event)\">\n\t\t\t<svg class=\"cds--btn__icon\" cdsIcon=\"copy\" size=\"16\"></svg>\n\t\t</cds-icon-button>\n\t`\n})"
77746
77756
  },
77747
77757
  {
77748
77758
  "name": "Template",
@@ -81560,199 +81570,199 @@
81560
81570
  "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<div style=\"width: 500px\">\n\t\t\t<cds-accordion>\n\t\t\t\t<cds-accordion-item [title]=\"title\" (selected)=\"selected($event)\">\n\t\t\t\t\tLorem ipsum dolor sit amet, \\\n\t\t\t\t\tconsectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore \\\n\t\t\t\t\tet dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation \\\n\t\t\t\t\tullamco laboris nisi ut aliquip ex ea commodo consequat.\n\t\t\t\t</cds-accordion-item>\n\t\t\t\t<cds-accordion-item [title]=\"titleWithContext\" [context]=\"{ index: 2 }\" (selected)=\"selected($event)\">\n\t\t\t\t\tLorem ipsum dolor sit amet, \\\n\t\t\t\t\tconsectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore \\\n\t\t\t\t\tet dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation \\\n\t\t\t\t\tullamco laboris nisi ut aliquip ex ea commodo consequat.\n\t\t\t\t</cds-accordion-item>\n\t\t\t</cds-accordion>\n\t\t</div>\n\t\t<ng-template #title>\n\t\t\t<p class=\"cds--accordion__title\">Section 1 title</p>\n\t\t</ng-template>\n\t\t<ng-template #titleWithContext let-index=\"index\">\n\t\t\t<p class=\"cds--accordion__title\">Section {{ index }} title</p>\n\t\t</ng-template>\n\t`\n})"
81561
81571
  }
81562
81572
  ],
81563
- "src/button/button-set.stories.ts": [
81573
+ "src/breadcrumb/breadcrumb.stories.ts": [
81564
81574
  {
81565
81575
  "name": "Basic",
81566
81576
  "ctype": "miscellaneous",
81567
81577
  "subtype": "variable",
81568
- "file": "src/button/button-set.stories.ts",
81578
+ "file": "src/breadcrumb/breadcrumb.stories.ts",
81569
81579
  "deprecated": false,
81570
81580
  "deprecationMessage": "",
81571
81581
  "type": "",
81572
81582
  "defaultValue": "Template.bind({})"
81573
81583
  },
81574
81584
  {
81575
- "name": "Template",
81585
+ "name": "breadcrumbItems",
81576
81586
  "ctype": "miscellaneous",
81577
81587
  "subtype": "variable",
81578
- "file": "src/button/button-set.stories.ts",
81588
+ "file": "src/breadcrumb/breadcrumb.stories.ts",
81579
81589
  "deprecated": false,
81580
81590
  "deprecationMessage": "",
81581
- "type": "",
81582
- "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-button-set>\n\t\t\t<button cdsButton=\"secondary\" [size]=\"size\" [isExpressive]=\"isExpressive\">Button</button>\n\t\t\t<button cdsButton [size]=\"size\" [isExpressive]=\"isExpressive\">Button</button>\n\t\t</cds-button-set>\n\t`\n})"
81583
- }
81584
- ],
81585
- "src/button/button.stories.ts": [
81591
+ "type": ""
81592
+ },
81586
81593
  {
81587
- "name": "Basic",
81594
+ "name": "createBreadcrumbItems",
81588
81595
  "ctype": "miscellaneous",
81589
81596
  "subtype": "variable",
81590
- "file": "src/button/button.stories.ts",
81597
+ "file": "src/breadcrumb/breadcrumb.stories.ts",
81591
81598
  "deprecated": false,
81592
81599
  "deprecationMessage": "",
81593
81600
  "type": "",
81594
- "defaultValue": "Template.bind({})"
81601
+ "defaultValue": "(count: number, content = \"Breadcrumb\"): Array<BreadcrumbItem> => {\n\tif (breadcrumbItems && count === breadcrumbItems.length) {\n\t\treturn breadcrumbItems;\n\t}\n\tbreadcrumbItems = Array(count).fill(0).map((x, i) => ({\n\t\tcontent: `${content} ${i + 1}`,\n\t\thref: \"#\" + (i + 1)\n\t}));\n\treturn breadcrumbItems;\n}"
81595
81602
  },
81596
81603
  {
81597
- "name": "Template",
81604
+ "name": "CurrentPage",
81598
81605
  "ctype": "miscellaneous",
81599
81606
  "subtype": "variable",
81600
- "file": "src/button/button.stories.ts",
81607
+ "file": "src/breadcrumb/breadcrumb.stories.ts",
81601
81608
  "deprecated": false,
81602
81609
  "deprecationMessage": "",
81603
81610
  "type": "",
81604
- "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<button\n\t\t\t[cdsButton]=\"kind\"\n\t\t\t[size]=\"size\"\n\t\t\t[isExpressive]=\"isExpressive\"\n\t\t\t[disabled]=\"disabled\"\n\t\t\t(click)=\"onClick($event)\"\n\t\t\t(mouseenter)=\"onMouseEnter($event)\"\n\t\t\t(mouseleave)=\"onMouseLeave($event)\"\n\t\t\t(focus)=\"onFocus($event)\"\n\t\t\t(blur)=\"onBlur($event)\">\n\t\t\tButton\n\t\t</button>\n\t`\n})"
81611
+ "defaultValue": "CurrentPageTemplate.bind({})"
81605
81612
  },
81606
81613
  {
81607
- "name": "WithIcon",
81614
+ "name": "CurrentPageTemplate",
81608
81615
  "ctype": "miscellaneous",
81609
81616
  "subtype": "variable",
81610
- "file": "src/button/button.stories.ts",
81617
+ "file": "src/breadcrumb/breadcrumb.stories.ts",
81611
81618
  "deprecated": false,
81612
81619
  "deprecationMessage": "",
81613
81620
  "type": "",
81614
- "defaultValue": "WithIconTemplate.bind({})"
81621
+ "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-breadcrumb>\n\t\t\t<cds-breadcrumb-item href=\"#1\">\n\t\t\t\tBreadcrumb 1\n\t\t\t</cds-breadcrumb-item>\n\t\t\t<cds-breadcrumb-item href=\"#2\">\n\t\t\t\tBreadcrumb 2\n\t\t\t</cds-breadcrumb-item>\n\t\t\t<cds-breadcrumb-item current=\"true\" href=\"#3\">\n\t\t\t\tBreadcrumb 3\n\t\t\t</cds-breadcrumb-item>\n\t\t</cds-breadcrumb>\n\t`\n})"
81615
81622
  },
81616
81623
  {
81617
- "name": "WithIconTemplate",
81624
+ "name": "Model",
81618
81625
  "ctype": "miscellaneous",
81619
81626
  "subtype": "variable",
81620
- "file": "src/button/button.stories.ts",
81627
+ "file": "src/breadcrumb/breadcrumb.stories.ts",
81621
81628
  "deprecated": false,
81622
81629
  "deprecationMessage": "",
81623
81630
  "type": "",
81624
- "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<button\n\t\t\t[cdsButton]=\"kind\"\n\t\t\t[size]=\"size\"\n\t\t\t[isExpressive]=\"isExpressive\"\n\t\t\t[disabled]=\"disabled\"\n\t\t\t(click)=\"onClick($event)\"\n\t\t\t(mouseenter)=\"onMouseEnter($event)\"\n\t\t\t(mouseleave)=\"onMouseleave($event)\"\n\t\t\t(focus)=\"onFocus($event)\"\n\t\t\t(blur)=\"onBlur($event)\">\n\t\t\tWith icon\n\t\t\t<svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n\t\t</button>\n\t`\n})"
81625
- }
81626
- ],
81627
- "src/breadcrumb/breadcrumb.stories.ts": [
81631
+ "defaultValue": "ModelTemplate.bind({})"
81632
+ },
81628
81633
  {
81629
- "name": "Basic",
81634
+ "name": "ModelTemplate",
81630
81635
  "ctype": "miscellaneous",
81631
81636
  "subtype": "variable",
81632
81637
  "file": "src/breadcrumb/breadcrumb.stories.ts",
81633
81638
  "deprecated": false,
81634
81639
  "deprecationMessage": "",
81635
81640
  "type": "",
81636
- "defaultValue": "Template.bind({})"
81641
+ "defaultValue": "(args) => ({\n\tprops: {\n\t\t...args,\n\t\tcreateBreadcrumbItems\n\t},\n\ttemplate: `\n\t\t<cds-breadcrumb\n\t\t\t[noTrailingSlash]=\"noTrailingSlash\"\n\t\t\t[threshold]=\"threshold\"\n\t\t\t[items]=\"createBreadcrumbItems(itemCount, content)\">\n\t\t</cds-breadcrumb>\n\t`\n})"
81637
81642
  },
81638
81643
  {
81639
- "name": "breadcrumbItems",
81644
+ "name": "ModelWithTemplate",
81640
81645
  "ctype": "miscellaneous",
81641
81646
  "subtype": "variable",
81642
81647
  "file": "src/breadcrumb/breadcrumb.stories.ts",
81643
81648
  "deprecated": false,
81644
81649
  "deprecationMessage": "",
81645
- "type": ""
81650
+ "type": "",
81651
+ "defaultValue": "ModelWTemplate.bind({})"
81646
81652
  },
81647
81653
  {
81648
- "name": "createBreadcrumbItems",
81654
+ "name": "ModelWTemplate",
81649
81655
  "ctype": "miscellaneous",
81650
81656
  "subtype": "variable",
81651
81657
  "file": "src/breadcrumb/breadcrumb.stories.ts",
81652
81658
  "deprecated": false,
81653
81659
  "deprecationMessage": "",
81654
81660
  "type": "",
81655
- "defaultValue": "(count: number, content = \"Breadcrumb\"): Array<BreadcrumbItem> => {\n\tif (breadcrumbItems && count === breadcrumbItems.length) {\n\t\treturn breadcrumbItems;\n\t}\n\tbreadcrumbItems = Array(count).fill(0).map((x, i) => ({\n\t\tcontent: `${content} ${i + 1}`,\n\t\thref: \"#\" + (i + 1)\n\t}));\n\treturn breadcrumbItems;\n}"
81661
+ "defaultValue": "(args) => ({\n\tprops: {\n\t\t...args,\n\t\tcreateBreadcrumbItems,\n\t\twithTemplate\n\t},\n\ttemplate: `\n\t\t<ng-template #breadcrumbTemplate let-item>\n\t\t\t{{ templateContent }}{{ item.content }}\n\t\t</ng-template>\n\t\t<cds-breadcrumb\n\t\t\t[noTrailingSlash]=\"noTrailingSlash\"\n\t\t\t[threshold]=\"threshold\"\n\t\t\t[items]=\"withTemplate(breadcrumbTemplate, createBreadcrumbItems(itemCount, content))\">\n\t\t</cds-breadcrumb>\n\t`\n})"
81656
81662
  },
81657
81663
  {
81658
- "name": "CurrentPage",
81664
+ "name": "Skeleton",
81659
81665
  "ctype": "miscellaneous",
81660
81666
  "subtype": "variable",
81661
81667
  "file": "src/breadcrumb/breadcrumb.stories.ts",
81662
81668
  "deprecated": false,
81663
81669
  "deprecationMessage": "",
81664
81670
  "type": "",
81665
- "defaultValue": "CurrentPageTemplate.bind({})"
81671
+ "defaultValue": "WithSkeleton.bind({})"
81666
81672
  },
81667
81673
  {
81668
- "name": "CurrentPageTemplate",
81674
+ "name": "Template",
81669
81675
  "ctype": "miscellaneous",
81670
81676
  "subtype": "variable",
81671
81677
  "file": "src/breadcrumb/breadcrumb.stories.ts",
81672
81678
  "deprecated": false,
81673
81679
  "deprecationMessage": "",
81674
81680
  "type": "",
81675
- "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-breadcrumb>\n\t\t\t<cds-breadcrumb-item href=\"#1\">\n\t\t\t\tBreadcrumb 1\n\t\t\t</cds-breadcrumb-item>\n\t\t\t<cds-breadcrumb-item href=\"#2\">\n\t\t\t\tBreadcrumb 2\n\t\t\t</cds-breadcrumb-item>\n\t\t\t<cds-breadcrumb-item current=\"true\" href=\"#3\">\n\t\t\t\tBreadcrumb 3\n\t\t\t</cds-breadcrumb-item>\n\t\t</cds-breadcrumb>\n\t`\n})"
81681
+ "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-breadcrumb [noTrailingSlash]=\"noTrailingSlash\">\n\t\t\t<cds-breadcrumb-item href=\"#1\">\n\t\t\t\tBreadcrumb 1\n\t\t\t</cds-breadcrumb-item>\n\t\t\t<cds-breadcrumb-item href=\"#2\">\n\t\t\t\tBreadcrumb 2\n\t\t\t</cds-breadcrumb-item>\n\t\t\t<cds-breadcrumb-item href=\"#3\">\n\t\t\t\tBreadcrumb 3\n\t\t\t</cds-breadcrumb-item>\n\t\t</cds-breadcrumb>\n\t`\n})"
81676
81682
  },
81677
81683
  {
81678
- "name": "Model",
81684
+ "name": "WithSkeleton",
81679
81685
  "ctype": "miscellaneous",
81680
81686
  "subtype": "variable",
81681
81687
  "file": "src/breadcrumb/breadcrumb.stories.ts",
81682
81688
  "deprecated": false,
81683
81689
  "deprecationMessage": "",
81684
81690
  "type": "",
81685
- "defaultValue": "ModelTemplate.bind({})"
81691
+ "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-breadcrumb skeleton=\"true\" [noTrailingSlash]=\"noTrailingSlash\">\n\t\t\t<cds-breadcrumb-item></cds-breadcrumb-item>\n\t\t\t<cds-breadcrumb-item></cds-breadcrumb-item>\n\t\t\t<cds-breadcrumb-item></cds-breadcrumb-item>\n\t\t\t<cds-breadcrumb-item></cds-breadcrumb-item>\n\t\t</cds-breadcrumb>\n\t`\n})"
81686
81692
  },
81687
81693
  {
81688
- "name": "ModelTemplate",
81694
+ "name": "withTemplate",
81689
81695
  "ctype": "miscellaneous",
81690
81696
  "subtype": "variable",
81691
81697
  "file": "src/breadcrumb/breadcrumb.stories.ts",
81692
81698
  "deprecated": false,
81693
81699
  "deprecationMessage": "",
81694
81700
  "type": "",
81695
- "defaultValue": "(args) => ({\n\tprops: {\n\t\t...args,\n\t\tcreateBreadcrumbItems\n\t},\n\ttemplate: `\n\t\t<cds-breadcrumb\n\t\t\t[noTrailingSlash]=\"noTrailingSlash\"\n\t\t\t[threshold]=\"threshold\"\n\t\t\t[items]=\"createBreadcrumbItems(itemCount, content)\">\n\t\t</cds-breadcrumb>\n\t`\n})"
81696
- },
81701
+ "defaultValue": "(templateRef, items) => items.map(item => Object.assign(item, { template: templateRef }))"
81702
+ }
81703
+ ],
81704
+ "src/button/button-set.stories.ts": [
81697
81705
  {
81698
- "name": "ModelWithTemplate",
81706
+ "name": "Basic",
81699
81707
  "ctype": "miscellaneous",
81700
81708
  "subtype": "variable",
81701
- "file": "src/breadcrumb/breadcrumb.stories.ts",
81709
+ "file": "src/button/button-set.stories.ts",
81702
81710
  "deprecated": false,
81703
81711
  "deprecationMessage": "",
81704
81712
  "type": "",
81705
- "defaultValue": "ModelWTemplate.bind({})"
81713
+ "defaultValue": "Template.bind({})"
81706
81714
  },
81707
81715
  {
81708
- "name": "ModelWTemplate",
81716
+ "name": "Template",
81709
81717
  "ctype": "miscellaneous",
81710
81718
  "subtype": "variable",
81711
- "file": "src/breadcrumb/breadcrumb.stories.ts",
81719
+ "file": "src/button/button-set.stories.ts",
81712
81720
  "deprecated": false,
81713
81721
  "deprecationMessage": "",
81714
81722
  "type": "",
81715
- "defaultValue": "(args) => ({\n\tprops: {\n\t\t...args,\n\t\tcreateBreadcrumbItems,\n\t\twithTemplate\n\t},\n\ttemplate: `\n\t\t<ng-template #breadcrumbTemplate let-item>\n\t\t\t{{ templateContent }}{{ item.content }}\n\t\t</ng-template>\n\t\t<cds-breadcrumb\n\t\t\t[noTrailingSlash]=\"noTrailingSlash\"\n\t\t\t[threshold]=\"threshold\"\n\t\t\t[items]=\"withTemplate(breadcrumbTemplate, createBreadcrumbItems(itemCount, content))\">\n\t\t</cds-breadcrumb>\n\t`\n})"
81716
- },
81723
+ "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-button-set>\n\t\t\t<button cdsButton=\"secondary\" [size]=\"size\" [isExpressive]=\"isExpressive\">Button</button>\n\t\t\t<button cdsButton [size]=\"size\" [isExpressive]=\"isExpressive\">Button</button>\n\t\t</cds-button-set>\n\t`\n})"
81724
+ }
81725
+ ],
81726
+ "src/button/button.stories.ts": [
81717
81727
  {
81718
- "name": "Skeleton",
81728
+ "name": "Basic",
81719
81729
  "ctype": "miscellaneous",
81720
81730
  "subtype": "variable",
81721
- "file": "src/breadcrumb/breadcrumb.stories.ts",
81731
+ "file": "src/button/button.stories.ts",
81722
81732
  "deprecated": false,
81723
81733
  "deprecationMessage": "",
81724
81734
  "type": "",
81725
- "defaultValue": "WithSkeleton.bind({})"
81735
+ "defaultValue": "Template.bind({})"
81726
81736
  },
81727
81737
  {
81728
81738
  "name": "Template",
81729
81739
  "ctype": "miscellaneous",
81730
81740
  "subtype": "variable",
81731
- "file": "src/breadcrumb/breadcrumb.stories.ts",
81741
+ "file": "src/button/button.stories.ts",
81732
81742
  "deprecated": false,
81733
81743
  "deprecationMessage": "",
81734
81744
  "type": "",
81735
- "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-breadcrumb [noTrailingSlash]=\"noTrailingSlash\">\n\t\t\t<cds-breadcrumb-item href=\"#1\">\n\t\t\t\tBreadcrumb 1\n\t\t\t</cds-breadcrumb-item>\n\t\t\t<cds-breadcrumb-item href=\"#2\">\n\t\t\t\tBreadcrumb 2\n\t\t\t</cds-breadcrumb-item>\n\t\t\t<cds-breadcrumb-item href=\"#3\">\n\t\t\t\tBreadcrumb 3\n\t\t\t</cds-breadcrumb-item>\n\t\t</cds-breadcrumb>\n\t`\n})"
81745
+ "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<button\n\t\t\t[cdsButton]=\"kind\"\n\t\t\t[size]=\"size\"\n\t\t\t[isExpressive]=\"isExpressive\"\n\t\t\t[disabled]=\"disabled\"\n\t\t\t(click)=\"onClick($event)\"\n\t\t\t(mouseenter)=\"onMouseEnter($event)\"\n\t\t\t(mouseleave)=\"onMouseLeave($event)\"\n\t\t\t(focus)=\"onFocus($event)\"\n\t\t\t(blur)=\"onBlur($event)\">\n\t\t\tButton\n\t\t</button>\n\t`\n})"
81736
81746
  },
81737
81747
  {
81738
- "name": "WithSkeleton",
81748
+ "name": "WithIcon",
81739
81749
  "ctype": "miscellaneous",
81740
81750
  "subtype": "variable",
81741
- "file": "src/breadcrumb/breadcrumb.stories.ts",
81751
+ "file": "src/button/button.stories.ts",
81742
81752
  "deprecated": false,
81743
81753
  "deprecationMessage": "",
81744
81754
  "type": "",
81745
- "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-breadcrumb skeleton=\"true\" [noTrailingSlash]=\"noTrailingSlash\">\n\t\t\t<cds-breadcrumb-item></cds-breadcrumb-item>\n\t\t\t<cds-breadcrumb-item></cds-breadcrumb-item>\n\t\t\t<cds-breadcrumb-item></cds-breadcrumb-item>\n\t\t\t<cds-breadcrumb-item></cds-breadcrumb-item>\n\t\t</cds-breadcrumb>\n\t`\n})"
81755
+ "defaultValue": "WithIconTemplate.bind({})"
81746
81756
  },
81747
81757
  {
81748
- "name": "withTemplate",
81758
+ "name": "WithIconTemplate",
81749
81759
  "ctype": "miscellaneous",
81750
81760
  "subtype": "variable",
81751
- "file": "src/breadcrumb/breadcrumb.stories.ts",
81761
+ "file": "src/button/button.stories.ts",
81752
81762
  "deprecated": false,
81753
81763
  "deprecationMessage": "",
81754
81764
  "type": "",
81755
- "defaultValue": "(templateRef, items) => items.map(item => Object.assign(item, { template: templateRef }))"
81765
+ "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<button\n\t\t\t[cdsButton]=\"kind\"\n\t\t\t[size]=\"size\"\n\t\t\t[isExpressive]=\"isExpressive\"\n\t\t\t[disabled]=\"disabled\"\n\t\t\t(click)=\"onClick($event)\"\n\t\t\t(mouseenter)=\"onMouseEnter($event)\"\n\t\t\t(mouseleave)=\"onMouseleave($event)\"\n\t\t\t(focus)=\"onFocus($event)\"\n\t\t\t(blur)=\"onBlur($event)\">\n\t\t\tWith icon\n\t\t\t<svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n\t\t</button>\n\t`\n})"
81756
81766
  }
81757
81767
  ],
81758
81768
  "src/checkbox/checkbox.stories.ts": [
@@ -87640,7 +87650,7 @@
87640
87650
  "linktype": "component",
87641
87651
  "name": "ContainedList",
87642
87652
  "coveragePercent": 90,
87643
- "coverageCount": "9/10",
87653
+ "coverageCount": "10/11",
87644
87654
  "status": "very-good"
87645
87655
  },
87646
87656
  {