carbon-components-angular 5.57.4 → 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 (49) hide show
  1. package/docs/documentation/components/Dropdown.html +119 -121
  2. package/docs/documentation/js/search/search_index.js +2 -2
  3. package/docs/documentation/modules/ComboBoxModule/dependencies.svg +4 -4
  4. package/docs/documentation/modules/ComboBoxModule.html +4 -4
  5. package/docs/documentation/modules/DatePickerInputModule/dependencies.svg +41 -37
  6. package/docs/documentation/modules/DatePickerInputModule.html +41 -37
  7. package/docs/documentation/modules/DialogModule/dependencies.svg +34 -34
  8. package/docs/documentation/modules/DialogModule.html +34 -34
  9. package/docs/documentation/modules/FileUploaderModule/dependencies.svg +36 -36
  10. package/docs/documentation/modules/FileUploaderModule.html +36 -36
  11. package/docs/documentation/modules/NumberModule/dependencies.svg +4 -4
  12. package/docs/documentation/modules/NumberModule.html +4 -4
  13. package/docs/documentation/modules/RadioModule/dependencies.svg +48 -48
  14. package/docs/documentation/modules/RadioModule.html +48 -48
  15. package/docs/documentation/modules/SelectModule/dependencies.svg +43 -43
  16. package/docs/documentation/modules/SelectModule.html +43 -43
  17. package/docs/documentation/modules/SliderModule/dependencies.svg +4 -4
  18. package/docs/documentation/modules/SliderModule.html +4 -4
  19. package/docs/documentation/modules/TabsModule/dependencies.svg +69 -69
  20. package/docs/documentation/modules/TabsModule.html +69 -69
  21. package/docs/documentation/modules/TagModule/dependencies.svg +37 -37
  22. package/docs/documentation/modules/TagModule.html +37 -37
  23. package/docs/documentation/modules/ThemeModule/dependencies.svg +14 -14
  24. package/docs/documentation/modules/ThemeModule.html +14 -14
  25. package/docs/documentation/modules/TilesModule/dependencies.svg +91 -91
  26. package/docs/documentation/modules/TilesModule.html +91 -91
  27. package/docs/documentation/modules/TimePickerModule/dependencies.svg +18 -18
  28. package/docs/documentation/modules/TimePickerModule.html +18 -18
  29. package/docs/documentation/modules/TimePickerSelectModule/dependencies.svg +24 -24
  30. package/docs/documentation/modules/TimePickerSelectModule.html +24 -24
  31. package/docs/documentation/modules/ToggletipModule/dependencies.svg +4 -4
  32. package/docs/documentation/modules/ToggletipModule.html +4 -4
  33. package/docs/documentation/modules/TooltipModule/dependencies.svg +4 -4
  34. package/docs/documentation/modules/TooltipModule.html +4 -4
  35. package/docs/documentation/modules/TreeviewModule/dependencies.svg +37 -37
  36. package/docs/documentation/modules/TreeviewModule.html +37 -37
  37. package/docs/documentation.json +128 -128
  38. package/docs/storybook/3224.9801f536.iframe.bundle.js +1 -0
  39. package/docs/storybook/iframe.html +2 -2
  40. package/docs/storybook/{main.c0bb6f79.iframe.bundle.js → main.575135b9.iframe.bundle.js} +1 -1
  41. package/docs/storybook/project.json +1 -1
  42. package/docs/storybook/{runtime~main.530d4cf0.iframe.bundle.js → runtime~main.d377732d.iframe.bundle.js} +1 -1
  43. package/esm2020/dropdown/dropdown.component.mjs +1 -3
  44. package/fesm2015/carbon-components-angular-dropdown.mjs +0 -2
  45. package/fesm2015/carbon-components-angular-dropdown.mjs.map +1 -1
  46. package/fesm2020/carbon-components-angular-dropdown.mjs +0 -2
  47. package/fesm2020/carbon-components-angular-dropdown.mjs.map +1 -1
  48. package/package.json +1 -1
  49. package/docs/storybook/3224.9896492c.iframe.bundle.js +0 -1
@@ -29235,7 +29235,7 @@
29235
29235
  },
29236
29236
  {
29237
29237
  "name": "Dropdown",
29238
- "id": "component-Dropdown-be1a94d9a158990086693e978c1d4dfe355b056237ee57e0c730b3918066a689043bcc15576d135beacb8e26a037a7f78399005aa79b4b60f73aa668a3b36865",
29238
+ "id": "component-Dropdown-63f44af5e6ad9ac5122d6ecf45223ecf29c119482e7fd0214a9b525564e1992686ae651041d0e8bb0a86c4689c871b701568da96c7264a7d951123b2733e1635",
29239
29239
  "file": "src/dropdown/dropdown.component.ts",
29240
29240
  "encapsulation": [],
29241
29241
  "entryComponents": [],
@@ -29249,7 +29249,7 @@
29249
29249
  "selector": "cds-dropdown, ibm-dropdown",
29250
29250
  "styleUrls": [],
29251
29251
  "styles": [],
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\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",
29253
29253
  "templateUrl": [],
29254
29254
  "viewProviders": [],
29255
29255
  "hostDirectives": [],
@@ -29261,7 +29261,7 @@
29261
29261
  "deprecationMessage": "",
29262
29262
  "rawdescription": "\n\nset to `true` to place the dropdown view inline with the component\n",
29263
29263
  "description": "<p>set to <code>true</code> to place the dropdown view inline with the component</p>\n",
29264
- "line": 288,
29264
+ "line": 287,
29265
29265
  "type": "boolean",
29266
29266
  "decorators": []
29267
29267
  },
@@ -29272,7 +29272,7 @@
29272
29272
  "deprecationMessage": "",
29273
29273
  "rawdescription": "\n\nSets the optional clear button tooltip text.\n",
29274
29274
  "description": "<p>Sets the optional clear button tooltip text.</p>\n",
29275
- "line": 234,
29275
+ "line": 233,
29276
29276
  "type": "string",
29277
29277
  "decorators": []
29278
29278
  },
@@ -29283,7 +29283,7 @@
29283
29283
  "deprecationMessage": "",
29284
29284
  "rawdescription": "\n\nSet to `true` for a dropdown without arrow key activation.\n",
29285
29285
  "description": "<p>Set to <code>true</code> for a dropdown without arrow key activation.</p>\n",
29286
- "line": 268,
29286
+ "line": 267,
29287
29287
  "type": "boolean",
29288
29288
  "decorators": []
29289
29289
  },
@@ -29294,7 +29294,7 @@
29294
29294
  "deprecationMessage": "",
29295
29295
  "rawdescription": "\n\nSet to `true` to disable the dropdown.\n",
29296
29296
  "description": "<p>Set to <code>true</code> to disable the dropdown.</p>\n",
29297
- "line": 252,
29297
+ "line": 251,
29298
29298
  "type": "boolean",
29299
29299
  "decorators": []
29300
29300
  },
@@ -29305,7 +29305,7 @@
29305
29305
  "deprecationMessage": "",
29306
29306
  "rawdescription": "\n\nThe selected value from the `Dropdown`. Can be a string or template.\n",
29307
29307
  "description": "<p>The selected value from the <code>Dropdown</code>. Can be a string or template.</p>\n",
29308
- "line": 230,
29308
+ "line": 229,
29309
29309
  "type": "string | TemplateRef<any>",
29310
29310
  "decorators": []
29311
29311
  },
@@ -29315,7 +29315,7 @@
29315
29315
  "deprecationMessage": "",
29316
29316
  "rawdescription": "\n\nOverrides the automatic dropUp.\n",
29317
29317
  "description": "<p>Overrides the automatic dropUp.</p>\n",
29318
- "line": 318,
29318
+ "line": 317,
29319
29319
  "type": "boolean",
29320
29320
  "decorators": []
29321
29321
  },
@@ -29326,7 +29326,7 @@
29326
29326
  "deprecationMessage": "",
29327
29327
  "rawdescription": "\n\nExperimental: enable fluid state\n",
29328
29328
  "description": "<p>Experimental: enable fluid state</p>\n",
29329
- "line": 351,
29329
+ "line": 350,
29330
29330
  "type": "boolean",
29331
29331
  "decorators": []
29332
29332
  },
@@ -29336,7 +29336,7 @@
29336
29336
  "deprecationMessage": "",
29337
29337
  "rawdescription": "\n\nSets the optional helper text.\n",
29338
29338
  "description": "<p>Sets the optional helper text.</p>\n",
29339
- "line": 222,
29339
+ "line": 221,
29340
29340
  "type": "string | TemplateRef<any>",
29341
29341
  "decorators": []
29342
29342
  },
@@ -29347,7 +29347,7 @@
29347
29347
  "deprecationMessage": "",
29348
29348
  "rawdescription": "\n\nHide label while keeping it accessible for screen readers\n",
29349
29349
  "description": "<p>Hide label while keeping it accessible for screen readers</p>\n",
29350
- "line": 218,
29350
+ "line": 217,
29351
29351
  "type": "boolean",
29352
29352
  "decorators": []
29353
29353
  },
@@ -29356,7 +29356,7 @@
29356
29356
  "defaultValue": "`dropdown-${Dropdown.dropdownCount++}`",
29357
29357
  "deprecated": false,
29358
29358
  "deprecationMessage": "",
29359
- "line": 210,
29359
+ "line": 209,
29360
29360
  "type": "string",
29361
29361
  "decorators": []
29362
29362
  },
@@ -29367,7 +29367,7 @@
29367
29367
  "deprecationMessage": "",
29368
29368
  "rawdescription": "\n\nSet to `true` for an inline dropdown.\n",
29369
29369
  "description": "<p>Set to <code>true</code> for an inline dropdown.</p>\n",
29370
- "line": 264,
29370
+ "line": 263,
29371
29371
  "type": "boolean",
29372
29372
  "decorators": []
29373
29373
  },
@@ -29378,7 +29378,7 @@
29378
29378
  "deprecationMessage": "",
29379
29379
  "rawdescription": "\n\nSet to `true` for invalid state.\n",
29380
29380
  "description": "<p>Set to <code>true</code> for invalid state.</p>\n",
29381
- "line": 272,
29381
+ "line": 271,
29382
29382
  "type": "boolean",
29383
29383
  "decorators": []
29384
29384
  },
@@ -29388,7 +29388,7 @@
29388
29388
  "deprecationMessage": "",
29389
29389
  "rawdescription": "\n\nValue displayed if dropdown is in invalid state.\n",
29390
29390
  "description": "<p>Value displayed if dropdown is in invalid state.</p>\n",
29391
- "line": 276,
29391
+ "line": 275,
29392
29392
  "type": "string | TemplateRef<any>",
29393
29393
  "decorators": []
29394
29394
  },
@@ -29398,7 +29398,7 @@
29398
29398
  "deprecationMessage": "",
29399
29399
  "rawdescription": "\n\nSpecifies the property to be used as the return value to `ngModel`\n",
29400
29400
  "description": "<p>Specifies the property to be used as the return value to <code>ngModel</code></p>\n",
29401
- "line": 297,
29401
+ "line": 296,
29402
29402
  "type": "string",
29403
29403
  "decorators": []
29404
29404
  },
@@ -29408,7 +29408,7 @@
29408
29408
  "deprecationMessage": "",
29409
29409
  "rawdescription": "\n\nLabel for the dropdown.\n",
29410
29410
  "description": "<p>Label for the dropdown.</p>\n",
29411
- "line": 214,
29411
+ "line": 213,
29412
29412
  "type": "string | TemplateRef<any>",
29413
29413
  "decorators": []
29414
29414
  },
@@ -29419,7 +29419,7 @@
29419
29419
  "deprecationMessage": "",
29420
29420
  "rawdescription": "\n\nAccessible label for the button that opens the dropdown list.\nDefaults to the `DROPDOWN.OPEN` value from the i18n service.\n",
29421
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",
29422
- "line": 309,
29422
+ "line": 308,
29423
29423
  "type": "any",
29424
29424
  "decorators": []
29425
29425
  },
@@ -29430,7 +29430,7 @@
29430
29430
  "deprecationMessage": "",
29431
29431
  "rawdescription": "\n\nValue displayed if no item is selected.\n",
29432
29432
  "description": "<p>Value displayed if no item is selected.</p>\n",
29433
- "line": 226,
29433
+ "line": 225,
29434
29434
  "type": "string",
29435
29435
  "decorators": []
29436
29436
  },
@@ -29441,7 +29441,7 @@
29441
29441
  "deprecationMessage": "",
29442
29442
  "rawdescription": "\n\nSet to `true` for a readonly state.\n",
29443
29443
  "description": "<p>Set to <code>true</code> for a readonly state.</p>\n",
29444
- "line": 256,
29444
+ "line": 255,
29445
29445
  "type": "boolean",
29446
29446
  "decorators": []
29447
29447
  },
@@ -29451,7 +29451,7 @@
29451
29451
  "deprecationMessage": "",
29452
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",
29453
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",
29454
- "line": 293,
29454
+ "line": 292,
29455
29455
  "type": "string",
29456
29456
  "decorators": []
29457
29457
  },
@@ -29462,7 +29462,7 @@
29462
29462
  "deprecationMessage": "",
29463
29463
  "rawdescription": "\n\nProvides the label for the \"# selected\" text.\nDefaults to the `DROPDOWN.SELECTED` value from the i18n service.\n",
29464
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",
29465
- "line": 314,
29465
+ "line": 313,
29466
29466
  "type": "any",
29467
29467
  "decorators": []
29468
29468
  },
@@ -29473,7 +29473,7 @@
29473
29473
  "deprecationMessage": "",
29474
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",
29475
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",
29476
- "line": 304,
29476
+ "line": 303,
29477
29477
  "type": "\"top\" | \"fixed\" | \"top-after-reopen\"",
29478
29478
  "decorators": []
29479
29479
  },
@@ -29484,7 +29484,7 @@
29484
29484
  "deprecationMessage": "",
29485
29485
  "rawdescription": "\n\nSize to render the dropdown field.\n",
29486
29486
  "description": "<p>Size to render the dropdown field.</p>\n",
29487
- "line": 238,
29487
+ "line": 237,
29488
29488
  "type": "\"sm\" | \"md\" | \"lg\"",
29489
29489
  "decorators": []
29490
29490
  },
@@ -29495,7 +29495,7 @@
29495
29495
  "deprecationMessage": "",
29496
29496
  "rawdescription": "\n\nSet to `true` for a loading dropdown.\n",
29497
29497
  "description": "<p>Set to <code>true</code> for a loading dropdown.</p>\n",
29498
- "line": 260,
29498
+ "line": 259,
29499
29499
  "type": "boolean",
29500
29500
  "decorators": []
29501
29501
  },
@@ -29506,15 +29506,15 @@
29506
29506
  "deprecationMessage": "since v5 - Use `cdsLayer` directive instead\n`light` or `dark` dropdown theme",
29507
29507
  "jsdoctags": [
29508
29508
  {
29509
- "pos": 7776,
29510
- "end": 7871,
29509
+ "pos": 7741,
29510
+ "end": 7836,
29511
29511
  "flags": 16842752,
29512
29512
  "modifierFlagsCache": 0,
29513
29513
  "transformFlags": 0,
29514
29514
  "kind": 338,
29515
29515
  "tagName": {
29516
- "pos": 7777,
29517
- "end": 7787,
29516
+ "pos": 7742,
29517
+ "end": 7752,
29518
29518
  "flags": 16842752,
29519
29519
  "modifierFlagsCache": 0,
29520
29520
  "transformFlags": 0,
@@ -29524,7 +29524,7 @@
29524
29524
  "comment": "<p>since v5 - Use <code>cdsLayer</code> directive instead\n<code>light</code> or <code>dark</code> dropdown theme</p>\n"
29525
29525
  }
29526
29526
  ],
29527
- "line": 248,
29527
+ "line": 247,
29528
29528
  "type": "\"light\" | \"dark\"",
29529
29529
  "decorators": []
29530
29530
  },
@@ -29535,7 +29535,7 @@
29535
29535
  "deprecationMessage": "",
29536
29536
  "rawdescription": "\n\nDefines whether or not the `Dropdown` supports selecting multiple items as opposed to single\nitem selection.\n",
29537
29537
  "description": "<p>Defines whether or not the <code>Dropdown</code> supports selecting multiple items as opposed to single\nitem selection.</p>\n",
29538
- "line": 243,
29538
+ "line": 242,
29539
29539
  "type": "\"single\" | \"multi\"",
29540
29540
  "decorators": []
29541
29541
  },
@@ -29546,7 +29546,7 @@
29546
29546
  "deprecationMessage": "",
29547
29547
  "rawdescription": "\n\nSet to `true` to show a warning (contents set by warningText)\n",
29548
29548
  "description": "<p>Set to <code>true</code> to show a warning (contents set by warningText)</p>\n",
29549
- "line": 280,
29549
+ "line": 279,
29550
29550
  "type": "boolean",
29551
29551
  "decorators": []
29552
29552
  },
@@ -29556,7 +29556,7 @@
29556
29556
  "deprecationMessage": "",
29557
29557
  "rawdescription": "\n\nSets the warning text\n",
29558
29558
  "description": "<p>Sets the warning text</p>\n",
29559
- "line": 284,
29559
+ "line": 283,
29560
29560
  "type": "string | TemplateRef<any>",
29561
29561
  "decorators": []
29562
29562
  }
@@ -29569,7 +29569,7 @@
29569
29569
  "deprecationMessage": "",
29570
29570
  "rawdescription": "\n\nEmits event notifying to other classes that the `Dropdown` has been closed (collapsed).\n",
29571
29571
  "description": "<p>Emits event notifying to other classes that the <code>Dropdown</code> has been closed (collapsed).</p>\n",
29572
- "line": 330,
29572
+ "line": 329,
29573
29573
  "type": "EventEmitter<any>"
29574
29574
  },
29575
29575
  {
@@ -29579,7 +29579,7 @@
29579
29579
  "deprecationMessage": "",
29580
29580
  "rawdescription": "\n\nEmits event notifying to other classes that the `Dropdown` has been closed (collapsed).\n",
29581
29581
  "description": "<p>Emits event notifying to other classes that the <code>Dropdown</code> has been closed (collapsed).</p>\n",
29582
- "line": 326,
29582
+ "line": 325,
29583
29583
  "type": "EventEmitter<any>"
29584
29584
  },
29585
29585
  {
@@ -29589,7 +29589,7 @@
29589
29589
  "deprecationMessage": "",
29590
29590
  "rawdescription": "\n\nEmits selection events.\n",
29591
29591
  "description": "<p>Emits selection events.</p>\n",
29592
- "line": 322,
29592
+ "line": 321,
29593
29593
  "type": "EventEmitter<Object>"
29594
29594
  }
29595
29595
  ],
@@ -29602,7 +29602,7 @@
29602
29602
  "type": "",
29603
29603
  "optional": false,
29604
29604
  "description": "<p>controls whether the <code>drop-up</code> class is applied</p>\n",
29605
- "line": 361,
29605
+ "line": 360,
29606
29606
  "rawdescription": "\n\ncontrols whether the `drop-up` class is applied\n"
29607
29607
  },
29608
29608
  {
@@ -29612,7 +29612,7 @@
29612
29612
  "type": "",
29613
29613
  "optional": false,
29614
29614
  "description": "<p>Maintains a reference to the view DOM element of the <code>Dropdown</code> button.</p>\n",
29615
- "line": 339,
29615
+ "line": 338,
29616
29616
  "rawdescription": "\n\nMaintains a reference to the view DOM element of the `Dropdown` button.\n",
29617
29617
  "decorators": [
29618
29618
  {
@@ -29632,7 +29632,7 @@
29632
29632
  "type": "number",
29633
29633
  "optional": false,
29634
29634
  "description": "",
29635
- "line": 190,
29635
+ "line": 189,
29636
29636
  "modifierKind": [
29637
29637
  126
29638
29638
  ]
@@ -29644,7 +29644,7 @@
29644
29644
  "type": "",
29645
29645
  "optional": false,
29646
29646
  "description": "<p>ViewChid of the dropdown view.</p>\n",
29647
- "line": 343,
29647
+ "line": 342,
29648
29648
  "rawdescription": "\n\nViewChid of the dropdown view.\n",
29649
29649
  "decorators": [
29650
29650
  {
@@ -29664,7 +29664,7 @@
29664
29664
  "type": "",
29665
29665
  "optional": false,
29666
29666
  "description": "",
29667
- "line": 345,
29667
+ "line": 344,
29668
29668
  "decorators": [
29669
29669
  {
29670
29670
  "name": "HostBinding",
@@ -29683,7 +29683,7 @@
29683
29683
  "type": "",
29684
29684
  "optional": false,
29685
29685
  "description": "",
29686
- "line": 347,
29686
+ "line": 346,
29687
29687
  "decorators": [
29688
29688
  {
29689
29689
  "name": "HostBinding",
@@ -29702,7 +29702,7 @@
29702
29702
  "type": "",
29703
29703
  "optional": false,
29704
29704
  "description": "",
29705
- "line": 368
29705
+ "line": 367
29706
29706
  },
29707
29707
  {
29708
29708
  "name": "menuIsClosed",
@@ -29712,7 +29712,7 @@
29712
29712
  "type": "",
29713
29713
  "optional": false,
29714
29714
  "description": "<p>Set to <code>true</code> if the dropdown is closed (not expanded).</p>\n",
29715
- "line": 356,
29715
+ "line": 355,
29716
29716
  "rawdescription": "\n\nSet to `true` if the dropdown is closed (not expanded).\n"
29717
29717
  },
29718
29718
  {
@@ -29723,7 +29723,7 @@
29723
29723
  "type": "",
29724
29724
  "optional": false,
29725
29725
  "description": "",
29726
- "line": 365
29726
+ "line": 364
29727
29727
  },
29728
29728
  {
29729
29729
  "name": "outsideClick",
@@ -29733,7 +29733,7 @@
29733
29733
  "type": "",
29734
29734
  "optional": false,
29735
29735
  "description": "",
29736
- "line": 366
29736
+ "line": 365
29737
29737
  },
29738
29738
  {
29739
29739
  "name": "outsideKey",
@@ -29743,7 +29743,7 @@
29743
29743
  "type": "",
29744
29744
  "optional": false,
29745
29745
  "description": "",
29746
- "line": 367
29746
+ "line": 366
29747
29747
  },
29748
29748
  {
29749
29749
  "name": "propagateChange",
@@ -29753,7 +29753,7 @@
29753
29753
  "type": "",
29754
29754
  "optional": false,
29755
29755
  "description": "<p>function passed in by <code>registerOnChange</code></p>\n",
29756
- "line": 529,
29756
+ "line": 528,
29757
29757
  "rawdescription": "\n\nfunction passed in by `registerOnChange`\n"
29758
29758
  },
29759
29759
  {
@@ -29763,7 +29763,7 @@
29763
29763
  "type": "AbstractDropdownView",
29764
29764
  "optional": false,
29765
29765
  "description": "<p>Maintains a reference to the <code>AbstractDropdownView</code> object within the content DOM.</p>\n",
29766
- "line": 335,
29766
+ "line": 334,
29767
29767
  "rawdescription": "\n\nMaintains a reference to the `AbstractDropdownView` object within the content DOM.\n",
29768
29768
  "decorators": [
29769
29769
  {
@@ -29783,7 +29783,7 @@
29783
29783
  "optional": false,
29784
29784
  "returnType": "void",
29785
29785
  "typeParameters": [],
29786
- "line": 708,
29786
+ "line": 707,
29787
29787
  "deprecated": false,
29788
29788
  "deprecationMessage": "",
29789
29789
  "rawdescription": "\n\nCreates the `Dropdown` list as an element that is appended to the DOM body.\n",
@@ -29795,7 +29795,7 @@
29795
29795
  "optional": false,
29796
29796
  "returnType": "void",
29797
29797
  "typeParameters": [],
29798
- "line": 700,
29798
+ "line": 699,
29799
29799
  "deprecated": false,
29800
29800
  "deprecationMessage": "",
29801
29801
  "rawdescription": "\n\nCreates the `Dropdown` list appending it to the dropdown parent object instead of the body.\n",
@@ -29814,7 +29814,7 @@
29814
29814
  "optional": false,
29815
29815
  "returnType": "void",
29816
29816
  "typeParameters": [],
29817
- "line": 680,
29817
+ "line": 679,
29818
29818
  "deprecated": false,
29819
29819
  "deprecationMessage": "",
29820
29820
  "rawdescription": "\n\nHandles keyboard events so users are controlling the `Dropdown` instead of unintentionally controlling outside elements.\n",
@@ -29837,7 +29837,7 @@
29837
29837
  "optional": false,
29838
29838
  "returnType": "void",
29839
29839
  "typeParameters": [],
29840
- "line": 660,
29840
+ "line": 659,
29841
29841
  "deprecated": false,
29842
29842
  "deprecationMessage": ""
29843
29843
  },
@@ -29854,7 +29854,7 @@
29854
29854
  "optional": false,
29855
29855
  "returnType": "void",
29856
29856
  "typeParameters": [],
29857
- "line": 664,
29857
+ "line": 663,
29858
29858
  "deprecated": false,
29859
29859
  "deprecationMessage": "",
29860
29860
  "rawdescription": "\n\nHandles clicks outside of the `Dropdown`.\n",
@@ -29884,7 +29884,7 @@
29884
29884
  "optional": false,
29885
29885
  "returnType": "void",
29886
29886
  "typeParameters": [],
29887
- "line": 672,
29887
+ "line": 671,
29888
29888
  "deprecated": false,
29889
29889
  "deprecationMessage": "",
29890
29890
  "jsdoctags": [
@@ -29905,7 +29905,7 @@
29905
29905
  "optional": false,
29906
29906
  "returnType": "any",
29907
29907
  "typeParameters": [],
29908
- "line": 722,
29908
+ "line": 721,
29909
29909
  "deprecated": false,
29910
29910
  "deprecationMessage": "",
29911
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",
@@ -29917,7 +29917,7 @@
29917
29917
  "optional": false,
29918
29918
  "returnType": "void",
29919
29919
  "typeParameters": [],
29920
- "line": 641,
29920
+ "line": 640,
29921
29921
  "deprecated": false,
29922
29922
  "deprecationMessage": ""
29923
29923
  },
@@ -29934,7 +29934,7 @@
29934
29934
  "optional": false,
29935
29935
  "returnType": "void",
29936
29936
  "typeParameters": [],
29937
- "line": 581,
29937
+ "line": 580,
29938
29938
  "deprecated": false,
29939
29939
  "deprecationMessage": "",
29940
29940
  "jsdoctags": [
@@ -29955,7 +29955,7 @@
29955
29955
  "optional": false,
29956
29956
  "returnType": "void",
29957
29957
  "typeParameters": [],
29958
- "line": 786,
29958
+ "line": 785,
29959
29959
  "deprecated": false,
29960
29960
  "deprecationMessage": "",
29961
29961
  "rawdescription": "\n\nCollapsing the dropdown menu and removing unnecessary `EventListeners`.\n",
@@ -29967,7 +29967,7 @@
29967
29967
  "optional": false,
29968
29968
  "returnType": "Observable<string>",
29969
29969
  "typeParameters": [],
29970
- "line": 600,
29970
+ "line": 599,
29971
29971
  "deprecated": false,
29972
29972
  "deprecationMessage": "",
29973
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",
@@ -29979,7 +29979,7 @@
29979
29979
  "optional": false,
29980
29980
  "returnType": "{ items: any; item?: undefined; } | { item: any; items?: undefined; } | { items?: undefined; item?: undefined; }",
29981
29981
  "typeParameters": [],
29982
- "line": 621,
29982
+ "line": 620,
29983
29983
  "deprecated": false,
29984
29984
  "deprecationMessage": ""
29985
29985
  },
@@ -29989,7 +29989,7 @@
29989
29989
  "optional": false,
29990
29990
  "returnType": "number",
29991
29991
  "typeParameters": [],
29992
- "line": 635,
29992
+ "line": 634,
29993
29993
  "deprecated": false,
29994
29994
  "deprecationMessage": ""
29995
29995
  },
@@ -30006,7 +30006,7 @@
30006
30006
  "optional": false,
30007
30007
  "returnType": "void",
30008
30008
  "typeParameters": [],
30009
- "line": 828,
30009
+ "line": 827,
30010
30010
  "deprecated": false,
30011
30011
  "deprecationMessage": "",
30012
30012
  "jsdoctags": [
@@ -30027,7 +30027,7 @@
30027
30027
  "optional": false,
30028
30028
  "returnType": "boolean",
30029
30029
  "typeParameters": [],
30030
- "line": 617,
30030
+ "line": 616,
30031
30031
  "deprecated": false,
30032
30032
  "deprecationMessage": ""
30033
30033
  },
@@ -30044,7 +30044,7 @@
30044
30044
  "optional": false,
30045
30045
  "returnType": "boolean",
30046
30046
  "typeParameters": [],
30047
- "line": 824,
30047
+ "line": 823,
30048
30048
  "deprecated": false,
30049
30049
  "deprecationMessage": "",
30050
30050
  "modifierKind": [
@@ -30068,7 +30068,7 @@
30068
30068
  "optional": false,
30069
30069
  "returnType": "void",
30070
30070
  "typeParameters": [],
30071
- "line": 511,
30071
+ "line": 510,
30072
30072
  "deprecated": false,
30073
30073
  "deprecationMessage": ""
30074
30074
  },
@@ -30085,7 +30085,7 @@
30085
30085
  "optional": false,
30086
30086
  "returnType": "void",
30087
30087
  "typeParameters": [],
30088
- "line": 546,
30088
+ "line": 545,
30089
30089
  "deprecated": false,
30090
30090
  "deprecationMessage": "",
30091
30091
  "rawdescription": "\n\nAdds keyboard functionality for navigation, selection and closing of the `Dropdown`.\n",
@@ -30117,7 +30117,7 @@
30117
30117
  "optional": false,
30118
30118
  "returnType": "void",
30119
30119
  "typeParameters": [],
30120
- "line": 742,
30120
+ "line": 741,
30121
30121
  "deprecated": false,
30122
30122
  "deprecationMessage": "",
30123
30123
  "rawdescription": "\n\nExpands the dropdown menu in the view.\n",
@@ -30136,7 +30136,7 @@
30136
30136
  "optional": false,
30137
30137
  "returnType": "void",
30138
30138
  "typeParameters": [],
30139
- "line": 515,
30139
+ "line": 514,
30140
30140
  "deprecated": false,
30141
30141
  "deprecationMessage": "",
30142
30142
  "jsdoctags": [
@@ -30164,7 +30164,7 @@
30164
30164
  "optional": false,
30165
30165
  "returnType": "void",
30166
30166
  "typeParameters": [],
30167
- "line": 522,
30167
+ "line": 521,
30168
30168
  "deprecated": false,
30169
30169
  "deprecationMessage": "",
30170
30170
  "rawdescription": "\n\nRegistering the function injected to control the touch use of the `Dropdown`.\n",
@@ -30194,7 +30194,7 @@
30194
30194
  "optional": false,
30195
30195
  "returnType": "void",
30196
30196
  "typeParameters": [],
30197
- "line": 538,
30197
+ "line": 537,
30198
30198
  "deprecated": false,
30199
30199
  "deprecationMessage": "",
30200
30200
  "rawdescription": "\n\n`ControlValueAccessor` method to programmatically disable the dropdown.\n\nex: `this.formGroup.get(\"myDropdown\").disable();`\n\n",
@@ -30202,8 +30202,8 @@
30202
30202
  "jsdoctags": [
30203
30203
  {
30204
30204
  "name": {
30205
- "pos": 16389,
30206
- "end": 16399,
30205
+ "pos": 16354,
30206
+ "end": 16364,
30207
30207
  "flags": 16842752,
30208
30208
  "modifierFlagsCache": 0,
30209
30209
  "transformFlags": 0,
@@ -30214,8 +30214,8 @@
30214
30214
  "deprecated": false,
30215
30215
  "deprecationMessage": "",
30216
30216
  "tagName": {
30217
- "pos": 16383,
30218
- "end": 16388,
30217
+ "pos": 16348,
30218
+ "end": 16353,
30219
30219
  "flags": 16842752,
30220
30220
  "modifierFlagsCache": 0,
30221
30221
  "transformFlags": 0,
@@ -30232,7 +30232,7 @@
30232
30232
  "optional": false,
30233
30233
  "returnType": "void",
30234
30234
  "typeParameters": [],
30235
- "line": 816,
30235
+ "line": 815,
30236
30236
  "deprecated": false,
30237
30237
  "deprecationMessage": "",
30238
30238
  "rawdescription": "\n\nControls toggling menu states between open/expanded and closed/collapsed.\n",
@@ -30244,7 +30244,7 @@
30244
30244
  "optional": false,
30245
30245
  "returnType": "boolean",
30246
30246
  "typeParameters": [],
30247
- "line": 655,
30247
+ "line": 654,
30248
30248
  "deprecated": false,
30249
30249
  "deprecationMessage": "",
30250
30250
  "rawdescription": "\n\nReturns `true` if there is a value selected.\n",
@@ -30263,7 +30263,7 @@
30263
30263
  "optional": false,
30264
30264
  "returnType": "void",
30265
30265
  "typeParameters": [],
30266
- "line": 472,
30266
+ "line": 471,
30267
30267
  "deprecated": false,
30268
30268
  "deprecationMessage": "",
30269
30269
  "rawdescription": "\n\nPropagates the injected `value`.\n",
@@ -30289,7 +30289,7 @@
30289
30289
  "defaultValue": "true",
30290
30290
  "deprecated": false,
30291
30291
  "deprecationMessage": "",
30292
- "line": 345,
30292
+ "line": 344,
30293
30293
  "type": "boolean",
30294
30294
  "decorators": []
30295
30295
  },
@@ -30298,7 +30298,7 @@
30298
30298
  "defaultValue": "true",
30299
30299
  "deprecated": false,
30300
30300
  "deprecationMessage": "",
30301
- "line": 347,
30301
+ "line": 346,
30302
30302
  "type": "boolean",
30303
30303
  "decorators": []
30304
30304
  },
@@ -30306,7 +30306,7 @@
30306
30306
  "name": "class.cds--list-box__wrapper--fluid--focus",
30307
30307
  "deprecated": false,
30308
30308
  "deprecationMessage": "",
30309
- "line": 195,
30309
+ "line": 194,
30310
30310
  "type": "boolean",
30311
30311
  "decorators": []
30312
30312
  },
@@ -30314,7 +30314,7 @@
30314
30314
  "name": "class.cds--list-box__wrapper--fluid--invalid",
30315
30315
  "deprecated": false,
30316
30316
  "deprecationMessage": "",
30317
- "line": 191,
30317
+ "line": 190,
30318
30318
  "type": "boolean",
30319
30319
  "decorators": []
30320
30320
  }
@@ -30337,7 +30337,7 @@
30337
30337
  "deprecationMessage": "",
30338
30338
  "rawdescription": "\n\nAdds keyboard functionality for navigation, selection and closing of the `Dropdown`.\n",
30339
30339
  "description": "<p>Adds keyboard functionality for navigation, selection and closing of the <code>Dropdown</code>.</p>\n",
30340
- "line": 546
30340
+ "line": 545
30341
30341
  }
30342
30342
  ],
30343
30343
  "standalone": false,
@@ -30345,7 +30345,7 @@
30345
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",
30346
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",
30347
30347
  "type": "component",
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\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",
30349
30349
  "assetsDirs": [],
30350
30350
  "styleUrlsData": "",
30351
30351
  "stylesData": "",
@@ -30380,7 +30380,7 @@
30380
30380
  "deprecationMessage": ""
30381
30381
  }
30382
30382
  ],
30383
- "line": 377,
30383
+ "line": 376,
30384
30384
  "rawdescription": "\n\nCreates an instance of Dropdown.\n",
30385
30385
  "jsdoctags": [
30386
30386
  {
@@ -30436,7 +30436,7 @@
30436
30436
  "name": "fluidInvalidClass",
30437
30437
  "type": "",
30438
30438
  "returnType": "",
30439
- "line": 191
30439
+ "line": 190
30440
30440
  }
30441
30441
  },
30442
30442
  "fluidFocusClass": {
@@ -30445,7 +30445,7 @@
30445
30445
  "name": "fluidFocusClass",
30446
30446
  "type": "",
30447
30447
  "returnType": "",
30448
- "line": 195
30448
+ "line": 194
30449
30449
  }
30450
30450
  }
30451
30451
  }
@@ -75266,7 +75266,7 @@
75266
75266
  "name": "Basic",
75267
75267
  "ctype": "miscellaneous",
75268
75268
  "subtype": "variable",
75269
- "file": "src/theme/theme.stories.ts",
75269
+ "file": "src/tag/tag.stories.ts",
75270
75270
  "deprecated": false,
75271
75271
  "deprecationMessage": "",
75272
75272
  "type": "",
@@ -75276,7 +75276,7 @@
75276
75276
  "name": "Basic",
75277
75277
  "ctype": "miscellaneous",
75278
75278
  "subtype": "variable",
75279
- "file": "src/tag/tag.stories.ts",
75279
+ "file": "src/theme/theme.stories.ts",
75280
75280
  "deprecated": false,
75281
75281
  "deprecationMessage": "",
75282
75282
  "type": "",
@@ -78128,21 +78128,21 @@
78128
78128
  "name": "Template",
78129
78129
  "ctype": "miscellaneous",
78130
78130
  "subtype": "variable",
78131
- "file": "src/theme/theme.stories.ts",
78131
+ "file": "src/tag/tag.stories.ts",
78132
78132
  "deprecated": false,
78133
78133
  "deprecationMessage": "",
78134
78134
  "type": "",
78135
- "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<div cdsTheme>\n\t\t\t<div class=\"theme-section\">\n\t\t\t\t<p>White theme</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<div cdsTheme=\"g10\">\n\t\t\t<div class=\"theme-section\">\n\t\t\t\t<p>G10 theme</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<div cdsTheme=\"g90\">\n\t\t\t<div class=\"theme-section\">\n\t\t\t\t<p>G90 theme</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<div cdsTheme=\"g100\">\n\t\t\t<div class=\"theme-section\">\n\t\t\t\t<p>G100 theme</p>\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tstyles: [`\n\t\t.theme-section {\n\t\t\tpadding: 1rem;\n\t\t\tbackground: var(--cds-background);\n\t\t\tcolor: var(--cds-text-primary);\n\t\t}\n\t`]\n})"
78135
+ "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-tag\n\t\t\t[type]=\"type\"\n\t\t\t[skeleton]=\"skeleton\"\n\t\t\t[size]=\"size\">\n\t\t\t<div cdsTagIcon>\n\t\t\t\t<svg ibmIcon=\"settings\" size=\"16\"></svg>\n\t\t\t</div>\n\t\t\tRead only\n\t\t</cds-tag>\n\t`\n})"
78136
78136
  },
78137
78137
  {
78138
78138
  "name": "Template",
78139
78139
  "ctype": "miscellaneous",
78140
78140
  "subtype": "variable",
78141
- "file": "src/tag/tag.stories.ts",
78141
+ "file": "src/theme/theme.stories.ts",
78142
78142
  "deprecated": false,
78143
78143
  "deprecationMessage": "",
78144
78144
  "type": "",
78145
- "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-tag\n\t\t\t[type]=\"type\"\n\t\t\t[skeleton]=\"skeleton\"\n\t\t\t[size]=\"size\">\n\t\t\t<div cdsTagIcon>\n\t\t\t\t<svg ibmIcon=\"settings\" size=\"16\"></svg>\n\t\t\t</div>\n\t\t\tRead only\n\t\t</cds-tag>\n\t`\n})"
78145
+ "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<div cdsTheme>\n\t\t\t<div class=\"theme-section\">\n\t\t\t\t<p>White theme</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<div cdsTheme=\"g10\">\n\t\t\t<div class=\"theme-section\">\n\t\t\t\t<p>G10 theme</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<div cdsTheme=\"g90\">\n\t\t\t<div class=\"theme-section\">\n\t\t\t\t<p>G90 theme</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<div cdsTheme=\"g100\">\n\t\t\t<div class=\"theme-section\">\n\t\t\t\t<p>G100 theme</p>\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tstyles: [`\n\t\t.theme-section {\n\t\t\tpadding: 1rem;\n\t\t\tbackground: var(--cds-background);\n\t\t\tcolor: var(--cds-text-primary);\n\t\t}\n\t`]\n})"
78146
78146
  },
78147
78147
  {
78148
78148
  "name": "Template",
@@ -83965,128 +83965,128 @@
83965
83965
  "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<ng-template #customTabs let-item>\n\t\t\t{{item ? item.name : \"wait for it\"}}\n\t\t</ng-template>\n\t\t<ng-template #iconTab>\n\t\t\t<div style=\"height: 14px;\">\n\t\t\t\tSomething custom\n\t\t\t\t<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\n\t\t\t\tstyle=\"height: 14px; width: 14px; fill: #3d70b2;\">\n\t\t\t\t\t<path d=\"M8 14.5a6.5 6.5 0 1 0 0-13 6.5 6.5 0 0 0 0 13zM8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16z\"></path>\n\t\t\t\t\t<path d=\"M9 13H7V7h2z\"></path>\n\t\t\t\t\t<path d=\"M7 4a1 1 0 1 1 2 0 1 1 0 1 1-2 0\"></path>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t</ng-template>\n\t\t<cds-tabs [type]=\"type\" [followFocus]=\"followFocus\" [isNavigation]=\"isNavigation\">\n\t\t\t<cds-tab\n\t\t\t\t*ngFor=\"let item of data; let i = index;\"\n\t\t\t\t[heading]=\"customTabs\"\n\t\t\t\ttitle=\"Tab Content\"\n\t\t\t\t[context]=\"item\">\n\t\t\t\tTab Content {{i + 1}}\n\t\t\t</cds-tab>\n\t\t\t<cds-tab [heading]=\"iconTab\" title=\"Custom tab content\">Tab Content Custom</cds-tab>\n\t\t</cds-tabs>\n\t`\n})"
83966
83966
  }
83967
83967
  ],
83968
- "src/theme/theme.stories.ts": [
83968
+ "src/tag/tag.stories.ts": [
83969
83969
  {
83970
83970
  "name": "Basic",
83971
83971
  "ctype": "miscellaneous",
83972
83972
  "subtype": "variable",
83973
- "file": "src/theme/theme.stories.ts",
83973
+ "file": "src/tag/tag.stories.ts",
83974
83974
  "deprecated": false,
83975
83975
  "deprecationMessage": "",
83976
83976
  "type": "",
83977
83977
  "defaultValue": "Template.bind({})"
83978
83978
  },
83979
83979
  {
83980
- "name": "LayeredTemplate",
83980
+ "name": "Filter",
83981
83981
  "ctype": "miscellaneous",
83982
83982
  "subtype": "variable",
83983
- "file": "src/theme/theme.stories.ts",
83983
+ "file": "src/tag/tag.stories.ts",
83984
83984
  "deprecated": false,
83985
83985
  "deprecationMessage": "",
83986
83986
  "type": "",
83987
- "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<div cdsTheme>\n\t\t\t<article class=\"theme-layer-example\">\n\t\t\t\t<header class=\"theme-layer-header\">White theme</header>\n\t\t\t\t<div class=\"theme-with-layer\">Layer one</div>\n\t\t\t\t<div cdsLayer>\n\t\t\t\t\t<div class=\"theme-with-layer\">Layer two</div>\n\t\t\t\t\t<div cdsLayer>\n\t\t\t\t\t\t<div class=\"theme-with-layer\">Layer three</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</article>\n\t\t</div>\n\t\t<div cdsTheme=\"g10\">\n\t\t\t<article class=\"theme-layer-example\">\n\t\t\t\t<header class=\"theme-layer-header\">G10 theme</header>\n\t\t\t\t<div class=\"theme-with-layer\">Layer one</div>\n\t\t\t\t<div cdsLayer>\n\t\t\t\t\t<div class=\"theme-with-layer\">Layer two</div>\n\t\t\t\t\t<div cdsLayer>\n\t\t\t\t\t\t<div class=\"theme-with-layer\">Layer three</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</article>\n\t\t</div>\n\t\t<div cdsTheme=\"g90\">\n\t\t\t<article class=\"theme-layer-example\">\n\t\t\t\t<header class=\"theme-layer-header\">G90 theme</header>\n\t\t\t\t<div class=\"theme-with-layer\">Layer one</div>\n\t\t\t\t<div cdsLayer>\n\t\t\t\t\t<div class=\"theme-with-layer\">Layer two</div>\n\t\t\t\t\t<div cdsLayer>\n\t\t\t\t\t\t<div class=\"theme-with-layer\">Layer three</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</article>\n\t\t</div>\n\t\t<div cdsTheme=\"g100\">\n\t\t\t<article class=\"theme-layer-example\">\n\t\t\t\t<header class=\"theme-layer-header\">G100 theme</header>\n\t\t\t\t<div class=\"theme-with-layer\">Layer one</div>\n\t\t\t\t<div cdsLayer>\n\t\t\t\t\t<div class=\"theme-with-layer\">Layer two</div>\n\t\t\t\t\t<div cdsLayer>\n\t\t\t\t\t\t<div class=\"theme-with-layer\">Layer three</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</article>\n\t\t</div>\n\t`,\n\tstyles: [`\n\t\t.theme-layer-example {\n\t\t\tpadding: 1rem;\n\t\t\tbackground: var(--cds-background);\n\t\t\tcolor: var(--cds-text-primary);\n\t\t}\n\t\t.theme-layer-header {\n\t\t\tmargin-bottom: 1rem;\n\t\t}\n\t\t.theme-with-layer {\n\t\t\tpadding: 1rem;\n\t\t\tbackground: var(--cds-layer);\n\t\t\tcolor: var(--cds-text-primary);\n\t\t}\n\t`]\n})"
83987
+ "defaultValue": "FilteredTemplate.bind({})"
83988
83988
  },
83989
83989
  {
83990
- "name": "Template",
83990
+ "name": "FilteredTemplate",
83991
83991
  "ctype": "miscellaneous",
83992
83992
  "subtype": "variable",
83993
- "file": "src/theme/theme.stories.ts",
83993
+ "file": "src/tag/tag.stories.ts",
83994
83994
  "deprecated": false,
83995
83995
  "deprecationMessage": "",
83996
83996
  "type": "",
83997
- "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<div cdsTheme>\n\t\t\t<div class=\"theme-section\">\n\t\t\t\t<p>White theme</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<div cdsTheme=\"g10\">\n\t\t\t<div class=\"theme-section\">\n\t\t\t\t<p>G10 theme</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<div cdsTheme=\"g90\">\n\t\t\t<div class=\"theme-section\">\n\t\t\t\t<p>G90 theme</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<div cdsTheme=\"g100\">\n\t\t\t<div class=\"theme-section\">\n\t\t\t\t<p>G100 theme</p>\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tstyles: [`\n\t\t.theme-section {\n\t\t\tpadding: 1rem;\n\t\t\tbackground: var(--cds-background);\n\t\t\tcolor: var(--cds-text-primary);\n\t\t}\n\t`]\n})"
83997
+ "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-tag-filter\n\t\t\t[type]=\"type\"\n\t\t\t[size]=\"size\"\n\t\t\t[skeleton]=\"skeleton\"\n\t\t\ttitle=\"Filter\"\n\t\t\tcloseButtonLabel=\"Clear\">\n\t\t\t<div cdsTagIcon>\n\t\t\t\t<svg ibmIcon=\"settings\" size=\"16\"></svg>\n\t\t\t</div>\n\t\t\tFiltered\n\t\t</cds-tag-filter>\n\t`\n})"
83998
83998
  },
83999
83999
  {
84000
- "name": "WithLayer",
84000
+ "name": "OperationalTag",
84001
84001
  "ctype": "miscellaneous",
84002
84002
  "subtype": "variable",
84003
- "file": "src/theme/theme.stories.ts",
84003
+ "file": "src/tag/tag.stories.ts",
84004
84004
  "deprecated": false,
84005
84005
  "deprecationMessage": "",
84006
84006
  "type": "",
84007
- "defaultValue": "LayeredTemplate.bind({})"
84008
- }
84009
- ],
84010
- "src/tag/tag.stories.ts": [
84007
+ "defaultValue": "OperationalTagTemplate.bind({})"
84008
+ },
84011
84009
  {
84012
- "name": "Basic",
84010
+ "name": "OperationalTagTemplate",
84013
84011
  "ctype": "miscellaneous",
84014
84012
  "subtype": "variable",
84015
84013
  "file": "src/tag/tag.stories.ts",
84016
84014
  "deprecated": false,
84017
84015
  "deprecationMessage": "",
84018
84016
  "type": "",
84019
- "defaultValue": "Template.bind({})"
84017
+ "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-tag-operational\n\t\t\ttype=\"cyan\"\n\t\t\t[size]=\"size\"\n\t\t\t[skeleton]=\"skeleton\"\n\t\t\t(click)=\"onClick($event)\">\n\t\t\t<div cdsTagIcon>\n\t\t\t\t<svg ibmIcon=\"settings\" size=\"16\"></svg>\n\t\t\t</div>\n\t\t\tOperational\n\t\t</cds-tag-operational>\n\n\n\t\t<div\n\t\t\tcdsPopover\n\t\t\t[isOpen]=\"isOpen\"\n\t\t\t[highContrast]=\"true\">\n\t\t\t<cds-tag-operational\n\t\t\t\t[type]=\"type\"\n\t\t\t\t[size]=\"size\"\n\t\t\t\t[skeleton]=\"skeleton\"\n\t\t\t\t(click)=\"isOpen = !isOpen\">\n\t\t\t\t<div cdsTagIcon>\n\t\t\t\t\t<svg ibmIcon=\"settings\" size=\"16\"></svg>\n\t\t\t\t</div>\n\t\t\t\tOperational w/ popover\n\t\t\t</cds-tag-operational>\n\t\t\t<cds-popover-content>\n\t\t\t\t<div class=\"popover-content\">\n\t\t\t\t\tTag 1 name <br>\n\t\t\t\t\tTag 2 name <br>\n\t\t\t\t\tTag 3 name <br>\n\t\t\t\t\tTag 4 name <br>\n\t\t\t\t\t<cds-tag type=\"green\">Tag 5 name</cds-tag>\n\t\t\t\t</div>\n\t\t\t</cds-popover-content>\n\t\t</div>\n\t`,\n\tstyles: [\n\t\t`.popover-content {\n\t\t\tline-height: 1.5;\n\t\t\tpadding: 1rem;\n\t\t\tfont-size: 14px;\n\t\t}`\n\t]\n})"
84020
84018
  },
84021
84019
  {
84022
- "name": "Filter",
84020
+ "name": "SelectedTag",
84023
84021
  "ctype": "miscellaneous",
84024
84022
  "subtype": "variable",
84025
84023
  "file": "src/tag/tag.stories.ts",
84026
84024
  "deprecated": false,
84027
84025
  "deprecationMessage": "",
84028
84026
  "type": "",
84029
- "defaultValue": "FilteredTemplate.bind({})"
84027
+ "defaultValue": "SelectedTagTemplate.bind({})"
84030
84028
  },
84031
84029
  {
84032
- "name": "FilteredTemplate",
84030
+ "name": "SelectedTagTemplate",
84033
84031
  "ctype": "miscellaneous",
84034
84032
  "subtype": "variable",
84035
84033
  "file": "src/tag/tag.stories.ts",
84036
84034
  "deprecated": false,
84037
84035
  "deprecationMessage": "",
84038
84036
  "type": "",
84039
- "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-tag-filter\n\t\t\t[type]=\"type\"\n\t\t\t[size]=\"size\"\n\t\t\t[skeleton]=\"skeleton\"\n\t\t\ttitle=\"Filter\"\n\t\t\tcloseButtonLabel=\"Clear\">\n\t\t\t<div cdsTagIcon>\n\t\t\t\t<svg ibmIcon=\"settings\" size=\"16\"></svg>\n\t\t\t</div>\n\t\t\tFiltered\n\t\t</cds-tag-filter>\n\t`\n})"
84037
+ "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-tag-selectable\n\t\t\t[size]=\"size\"\n\t\t\t[skeleton]=\"skeleton\"\n\t\t\t[selected]=\"selected\"\n\t\t\t(selectedChange)=\"selectedChange($event)\"\n\t\t\t(click)=\"onClick($event)\">\n\t\t\t<div cdsTagIcon>\n\t\t\t\t<svg ibmIcon=\"settings\" size=\"16\"></svg>\n\t\t\t</div>\n\t\t\tSelectable\n\t\t</cds-tag-selectable>\n\t`\n})"
84040
84038
  },
84041
84039
  {
84042
- "name": "OperationalTag",
84040
+ "name": "Template",
84043
84041
  "ctype": "miscellaneous",
84044
84042
  "subtype": "variable",
84045
84043
  "file": "src/tag/tag.stories.ts",
84046
84044
  "deprecated": false,
84047
84045
  "deprecationMessage": "",
84048
84046
  "type": "",
84049
- "defaultValue": "OperationalTagTemplate.bind({})"
84050
- },
84047
+ "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-tag\n\t\t\t[type]=\"type\"\n\t\t\t[skeleton]=\"skeleton\"\n\t\t\t[size]=\"size\">\n\t\t\t<div cdsTagIcon>\n\t\t\t\t<svg ibmIcon=\"settings\" size=\"16\"></svg>\n\t\t\t</div>\n\t\t\tRead only\n\t\t</cds-tag>\n\t`\n})"
84048
+ }
84049
+ ],
84050
+ "src/theme/theme.stories.ts": [
84051
84051
  {
84052
- "name": "OperationalTagTemplate",
84052
+ "name": "Basic",
84053
84053
  "ctype": "miscellaneous",
84054
84054
  "subtype": "variable",
84055
- "file": "src/tag/tag.stories.ts",
84055
+ "file": "src/theme/theme.stories.ts",
84056
84056
  "deprecated": false,
84057
84057
  "deprecationMessage": "",
84058
84058
  "type": "",
84059
- "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-tag-operational\n\t\t\ttype=\"cyan\"\n\t\t\t[size]=\"size\"\n\t\t\t[skeleton]=\"skeleton\"\n\t\t\t(click)=\"onClick($event)\">\n\t\t\t<div cdsTagIcon>\n\t\t\t\t<svg ibmIcon=\"settings\" size=\"16\"></svg>\n\t\t\t</div>\n\t\t\tOperational\n\t\t</cds-tag-operational>\n\n\n\t\t<div\n\t\t\tcdsPopover\n\t\t\t[isOpen]=\"isOpen\"\n\t\t\t[highContrast]=\"true\">\n\t\t\t<cds-tag-operational\n\t\t\t\t[type]=\"type\"\n\t\t\t\t[size]=\"size\"\n\t\t\t\t[skeleton]=\"skeleton\"\n\t\t\t\t(click)=\"isOpen = !isOpen\">\n\t\t\t\t<div cdsTagIcon>\n\t\t\t\t\t<svg ibmIcon=\"settings\" size=\"16\"></svg>\n\t\t\t\t</div>\n\t\t\t\tOperational w/ popover\n\t\t\t</cds-tag-operational>\n\t\t\t<cds-popover-content>\n\t\t\t\t<div class=\"popover-content\">\n\t\t\t\t\tTag 1 name <br>\n\t\t\t\t\tTag 2 name <br>\n\t\t\t\t\tTag 3 name <br>\n\t\t\t\t\tTag 4 name <br>\n\t\t\t\t\t<cds-tag type=\"green\">Tag 5 name</cds-tag>\n\t\t\t\t</div>\n\t\t\t</cds-popover-content>\n\t\t</div>\n\t`,\n\tstyles: [\n\t\t`.popover-content {\n\t\t\tline-height: 1.5;\n\t\t\tpadding: 1rem;\n\t\t\tfont-size: 14px;\n\t\t}`\n\t]\n})"
84059
+ "defaultValue": "Template.bind({})"
84060
84060
  },
84061
84061
  {
84062
- "name": "SelectedTag",
84062
+ "name": "LayeredTemplate",
84063
84063
  "ctype": "miscellaneous",
84064
84064
  "subtype": "variable",
84065
- "file": "src/tag/tag.stories.ts",
84065
+ "file": "src/theme/theme.stories.ts",
84066
84066
  "deprecated": false,
84067
84067
  "deprecationMessage": "",
84068
84068
  "type": "",
84069
- "defaultValue": "SelectedTagTemplate.bind({})"
84069
+ "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<div cdsTheme>\n\t\t\t<article class=\"theme-layer-example\">\n\t\t\t\t<header class=\"theme-layer-header\">White theme</header>\n\t\t\t\t<div class=\"theme-with-layer\">Layer one</div>\n\t\t\t\t<div cdsLayer>\n\t\t\t\t\t<div class=\"theme-with-layer\">Layer two</div>\n\t\t\t\t\t<div cdsLayer>\n\t\t\t\t\t\t<div class=\"theme-with-layer\">Layer three</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</article>\n\t\t</div>\n\t\t<div cdsTheme=\"g10\">\n\t\t\t<article class=\"theme-layer-example\">\n\t\t\t\t<header class=\"theme-layer-header\">G10 theme</header>\n\t\t\t\t<div class=\"theme-with-layer\">Layer one</div>\n\t\t\t\t<div cdsLayer>\n\t\t\t\t\t<div class=\"theme-with-layer\">Layer two</div>\n\t\t\t\t\t<div cdsLayer>\n\t\t\t\t\t\t<div class=\"theme-with-layer\">Layer three</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</article>\n\t\t</div>\n\t\t<div cdsTheme=\"g90\">\n\t\t\t<article class=\"theme-layer-example\">\n\t\t\t\t<header class=\"theme-layer-header\">G90 theme</header>\n\t\t\t\t<div class=\"theme-with-layer\">Layer one</div>\n\t\t\t\t<div cdsLayer>\n\t\t\t\t\t<div class=\"theme-with-layer\">Layer two</div>\n\t\t\t\t\t<div cdsLayer>\n\t\t\t\t\t\t<div class=\"theme-with-layer\">Layer three</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</article>\n\t\t</div>\n\t\t<div cdsTheme=\"g100\">\n\t\t\t<article class=\"theme-layer-example\">\n\t\t\t\t<header class=\"theme-layer-header\">G100 theme</header>\n\t\t\t\t<div class=\"theme-with-layer\">Layer one</div>\n\t\t\t\t<div cdsLayer>\n\t\t\t\t\t<div class=\"theme-with-layer\">Layer two</div>\n\t\t\t\t\t<div cdsLayer>\n\t\t\t\t\t\t<div class=\"theme-with-layer\">Layer three</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</article>\n\t\t</div>\n\t`,\n\tstyles: [`\n\t\t.theme-layer-example {\n\t\t\tpadding: 1rem;\n\t\t\tbackground: var(--cds-background);\n\t\t\tcolor: var(--cds-text-primary);\n\t\t}\n\t\t.theme-layer-header {\n\t\t\tmargin-bottom: 1rem;\n\t\t}\n\t\t.theme-with-layer {\n\t\t\tpadding: 1rem;\n\t\t\tbackground: var(--cds-layer);\n\t\t\tcolor: var(--cds-text-primary);\n\t\t}\n\t`]\n})"
84070
84070
  },
84071
84071
  {
84072
- "name": "SelectedTagTemplate",
84072
+ "name": "Template",
84073
84073
  "ctype": "miscellaneous",
84074
84074
  "subtype": "variable",
84075
- "file": "src/tag/tag.stories.ts",
84075
+ "file": "src/theme/theme.stories.ts",
84076
84076
  "deprecated": false,
84077
84077
  "deprecationMessage": "",
84078
84078
  "type": "",
84079
- "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-tag-selectable\n\t\t\t[size]=\"size\"\n\t\t\t[skeleton]=\"skeleton\"\n\t\t\t[selected]=\"selected\"\n\t\t\t(selectedChange)=\"selectedChange($event)\"\n\t\t\t(click)=\"onClick($event)\">\n\t\t\t<div cdsTagIcon>\n\t\t\t\t<svg ibmIcon=\"settings\" size=\"16\"></svg>\n\t\t\t</div>\n\t\t\tSelectable\n\t\t</cds-tag-selectable>\n\t`\n})"
84079
+ "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<div cdsTheme>\n\t\t\t<div class=\"theme-section\">\n\t\t\t\t<p>White theme</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<div cdsTheme=\"g10\">\n\t\t\t<div class=\"theme-section\">\n\t\t\t\t<p>G10 theme</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<div cdsTheme=\"g90\">\n\t\t\t<div class=\"theme-section\">\n\t\t\t\t<p>G90 theme</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<div cdsTheme=\"g100\">\n\t\t\t<div class=\"theme-section\">\n\t\t\t\t<p>G100 theme</p>\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tstyles: [`\n\t\t.theme-section {\n\t\t\tpadding: 1rem;\n\t\t\tbackground: var(--cds-background);\n\t\t\tcolor: var(--cds-text-primary);\n\t\t}\n\t`]\n})"
84080
84080
  },
84081
84081
  {
84082
- "name": "Template",
84082
+ "name": "WithLayer",
84083
84083
  "ctype": "miscellaneous",
84084
84084
  "subtype": "variable",
84085
- "file": "src/tag/tag.stories.ts",
84085
+ "file": "src/theme/theme.stories.ts",
84086
84086
  "deprecated": false,
84087
84087
  "deprecationMessage": "",
84088
84088
  "type": "",
84089
- "defaultValue": "(args) => ({\n\tprops: args,\n\ttemplate: `\n\t\t<cds-tag\n\t\t\t[type]=\"type\"\n\t\t\t[skeleton]=\"skeleton\"\n\t\t\t[size]=\"size\">\n\t\t\t<div cdsTagIcon>\n\t\t\t\t<svg ibmIcon=\"settings\" size=\"16\"></svg>\n\t\t\t</div>\n\t\t\tRead only\n\t\t</cds-tag>\n\t`\n})"
84089
+ "defaultValue": "LayeredTemplate.bind({})"
84090
84090
  }
84091
84091
  ],
84092
84092
  "src/tiles/clickable-tile.stories.ts": [