carbon-components-angular 5.72.0 → 5.72.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/combobox/combobox.component.d.ts +3 -0
  2. package/docs/documentation/components/ComboBox.html +214 -67
  3. package/docs/documentation/components/Dropdown.html +322 -134
  4. package/docs/documentation/components/DropdownList.html +6 -2
  5. package/docs/documentation/components/RadioGroup.html +166 -77
  6. package/docs/documentation/components/TextInputLabelComponent.html +171 -65
  7. package/docs/documentation/components/TextareaLabelComponent.html +142 -74
  8. package/docs/documentation/coverage.html +22 -22
  9. package/docs/documentation/directives/TextArea.html +106 -11
  10. package/docs/documentation/directives/TextInput.html +118 -24
  11. package/docs/documentation/js/search/search_index.js +2 -2
  12. package/docs/documentation/modules/CheckboxModule/dependencies.svg +42 -42
  13. package/docs/documentation/modules/CheckboxModule.html +42 -42
  14. package/docs/documentation/modules/CodeSnippetModule/dependencies.svg +4 -4
  15. package/docs/documentation/modules/CodeSnippetModule.html +4 -4
  16. package/docs/documentation/modules/ComboBoxModule/dependencies.svg +6 -6
  17. package/docs/documentation/modules/ComboBoxModule.html +6 -6
  18. package/docs/documentation/modules/ContentSwitcherModule/dependencies.svg +4 -4
  19. package/docs/documentation/modules/ContentSwitcherModule.html +4 -4
  20. package/docs/documentation/modules/ContextMenuModule/dependencies.svg +67 -67
  21. package/docs/documentation/modules/ContextMenuModule.html +67 -67
  22. package/docs/documentation/modules/DatePickerInputModule/dependencies.svg +4 -4
  23. package/docs/documentation/modules/DatePickerInputModule.html +4 -4
  24. package/docs/documentation/modules/DatePickerModule/dependencies.svg +6 -6
  25. package/docs/documentation/modules/DatePickerModule.html +6 -6
  26. package/docs/documentation/modules/DialogModule/dependencies.svg +33 -33
  27. package/docs/documentation/modules/DialogModule.html +33 -33
  28. package/docs/documentation/modules/DocumentationModule/dependencies.svg +4 -4
  29. package/docs/documentation/modules/DocumentationModule.html +4 -4
  30. package/docs/documentation/modules/DropdownModule/dependencies.svg +53 -53
  31. package/docs/documentation/modules/DropdownModule.html +53 -53
  32. package/docs/documentation/modules/FileUploaderModule/dependencies.svg +35 -35
  33. package/docs/documentation/modules/FileUploaderModule.html +35 -35
  34. package/docs/documentation/modules/GridModule/dependencies.svg +61 -61
  35. package/docs/documentation/modules/GridModule.html +61 -61
  36. package/docs/documentation/modules/HeaderModule/dependencies.svg +4 -4
  37. package/docs/documentation/modules/HeaderModule.html +4 -4
  38. package/docs/documentation/modules/I18nModule/dependencies.svg +13 -13
  39. package/docs/documentation/modules/I18nModule.html +13 -13
  40. package/docs/documentation/modules/InlineLoadingModule/dependencies.svg +15 -15
  41. package/docs/documentation/modules/InlineLoadingModule.html +15 -15
  42. package/docs/documentation/modules/InputModule/dependencies.svg +4 -4
  43. package/docs/documentation/modules/InputModule.html +4 -4
  44. package/docs/documentation/modules/LayerModule/dependencies.svg +4 -4
  45. package/docs/documentation/modules/LayerModule.html +4 -4
  46. package/docs/documentation/modules/MenuButtonModule/dependencies.svg +4 -4
  47. package/docs/documentation/modules/MenuButtonModule.html +4 -4
  48. package/docs/documentation/modules/ModalModule/dependencies.svg +114 -114
  49. package/docs/documentation/modules/ModalModule.html +114 -114
  50. package/docs/documentation/modules/NFormsModule/dependencies.svg +4 -4
  51. package/docs/documentation/modules/NFormsModule.html +4 -4
  52. package/docs/documentation/modules/NotificationModule/dependencies.svg +4 -4
  53. package/docs/documentation/modules/NotificationModule.html +4 -4
  54. package/docs/documentation/modules/NumberModule/dependencies.svg +25 -25
  55. package/docs/documentation/modules/NumberModule.html +25 -25
  56. package/docs/documentation/modules/PaginationModule/dependencies.svg +4 -4
  57. package/docs/documentation/modules/PaginationModule.html +4 -4
  58. package/docs/documentation/modules/PanelModule/dependencies.svg +4 -4
  59. package/docs/documentation/modules/PanelModule.html +4 -4
  60. package/docs/documentation/modules/PlaceholderModule/dependencies.svg +4 -4
  61. package/docs/documentation/modules/PlaceholderModule.html +4 -4
  62. package/docs/documentation/modules/RadioModule/dependencies.svg +4 -4
  63. package/docs/documentation/modules/RadioModule.html +4 -4
  64. package/docs/documentation/modules/SearchModule/dependencies.svg +48 -44
  65. package/docs/documentation/modules/SearchModule.html +48 -44
  66. package/docs/documentation/modules/SelectModule/dependencies.svg +4 -4
  67. package/docs/documentation/modules/SelectModule.html +4 -4
  68. package/docs/documentation/modules/SideNavModule/dependencies.svg +4 -4
  69. package/docs/documentation/modules/SideNavModule.html +4 -4
  70. package/docs/documentation/modules/SkeletonModule/dependencies.svg +4 -4
  71. package/docs/documentation/modules/SkeletonModule.html +4 -4
  72. package/docs/documentation/modules/SliderModule/dependencies.svg +26 -26
  73. package/docs/documentation/modules/SliderModule.html +26 -26
  74. package/docs/documentation/modules/StructuredListModule/dependencies.svg +43 -43
  75. package/docs/documentation/modules/StructuredListModule.html +43 -43
  76. package/docs/documentation/modules/TableModule/dependencies.svg +225 -225
  77. package/docs/documentation/modules/TableModule.html +225 -225
  78. package/docs/documentation/modules/TabsModule/dependencies.svg +136 -136
  79. package/docs/documentation/modules/TabsModule.html +136 -136
  80. package/docs/documentation/modules/TagModule/dependencies.svg +38 -38
  81. package/docs/documentation/modules/TagModule.html +38 -38
  82. package/docs/documentation/modules/ThemeModule/dependencies.svg +4 -4
  83. package/docs/documentation/modules/ThemeModule.html +4 -4
  84. package/docs/documentation/modules/TilesModule/dependencies.svg +108 -108
  85. package/docs/documentation/modules/TilesModule.html +108 -108
  86. package/docs/documentation/modules/TimePickerModule/dependencies.svg +41 -45
  87. package/docs/documentation/modules/TimePickerModule.html +41 -45
  88. package/docs/documentation/modules/TimePickerSelectModule/dependencies.svg +46 -42
  89. package/docs/documentation/modules/TimePickerSelectModule.html +46 -42
  90. package/docs/documentation/modules/ToggleModule/dependencies.svg +7 -7
  91. package/docs/documentation/modules/ToggleModule.html +7 -7
  92. package/docs/documentation/modules/TooltipModule/dependencies.svg +28 -28
  93. package/docs/documentation/modules/TooltipModule.html +28 -28
  94. package/docs/documentation/modules/TreeviewModule/dependencies.svg +28 -28
  95. package/docs/documentation/modules/TreeviewModule.html +28 -28
  96. package/docs/documentation.json +510 -362
  97. package/docs/storybook/1345.da6e3dec.iframe.bundle.js +1 -0
  98. package/docs/storybook/3224.14e2c79a.iframe.bundle.js +1 -0
  99. package/docs/storybook/557.d4341469.iframe.bundle.js +1 -0
  100. package/docs/storybook/7019.75ad5817.iframe.bundle.js +2 -0
  101. package/docs/storybook/955.7522f55b.iframe.bundle.js +1 -0
  102. package/docs/storybook/combobox-combobox-stories.e3d08f7d.iframe.bundle.js +1 -0
  103. package/docs/storybook/dropdown-dropdown-stories.cf59b2ab.iframe.bundle.js +1 -0
  104. package/docs/storybook/iframe.html +2 -2
  105. package/docs/storybook/{input-input-stories.85a9e65e.iframe.bundle.js → input-input-stories.8bf34960.iframe.bundle.js} +1 -1
  106. package/docs/storybook/{input-textarea-stories.77240fb3.iframe.bundle.js → input-textarea-stories.ad775432.iframe.bundle.js} +1 -1
  107. package/docs/storybook/main.a1247bb8.iframe.bundle.js +1 -0
  108. package/docs/storybook/modal-modal-stories.cc2d04cb.iframe.bundle.js +1 -0
  109. package/docs/storybook/{pagination-pagination-nav-stories.547eede3.iframe.bundle.js → pagination-pagination-nav-stories.01637d11.iframe.bundle.js} +1 -1
  110. package/docs/storybook/{pagination-pagination-stories.fa7c9094.iframe.bundle.js → pagination-pagination-stories.40d17ebd.iframe.bundle.js} +1 -1
  111. package/docs/storybook/{patterns-filtering-single-selection-stories.ec91f833.iframe.bundle.js → patterns-filtering-multi-selection-stories.a46a1d6e.iframe.bundle.js} +1 -1
  112. package/docs/storybook/{patterns-filtering-multiple-categories-stories.531f27d7.iframe.bundle.js → patterns-filtering-multiple-categories-stories.740c719e.iframe.bundle.js} +1 -1
  113. package/docs/storybook/{patterns-filtering-multi-selection-stories.9086f77f.iframe.bundle.js → patterns-filtering-single-selection-stories.cc647b4a.iframe.bundle.js} +1 -1
  114. package/docs/storybook/{patterns-forms-multi-step-form-stories.8696062a.iframe.bundle.js → patterns-forms-multi-step-form-stories.2ea46e56.iframe.bundle.js} +1 -1
  115. package/docs/storybook/{patterns-loading-large-loading-stories.734fb9bc.iframe.bundle.js → patterns-loading-large-loading-stories.e6ae3e31.iframe.bundle.js} +1 -1
  116. package/docs/storybook/{patterns-loading-progressive-loading-stories.10bcf9f2.iframe.bundle.js → patterns-loading-progressive-loading-stories.63165c09.iframe.bundle.js} +1 -1
  117. package/docs/storybook/project.json +1 -1
  118. package/docs/storybook/radio-radio-stories.8ff73370.iframe.bundle.js +1 -0
  119. package/docs/storybook/runtime~main.b11c471e.iframe.bundle.js +1 -0
  120. package/dropdown/dropdown.component.d.ts +8 -1
  121. package/dropdown/list/dropdown-list.component.d.ts +1 -1
  122. package/esm2020/combobox/combobox.component.mjs +19 -9
  123. package/esm2020/dropdown/dropdown.component.mjs +31 -15
  124. package/esm2020/dropdown/list/dropdown-list.component.mjs +1 -1
  125. package/esm2020/input/input.directive.mjs +11 -5
  126. package/esm2020/input/text-area.directive.mjs +11 -5
  127. package/esm2020/input/text-input-label.component.mjs +38 -15
  128. package/esm2020/input/textarea-label.component.mjs +46 -21
  129. package/esm2020/radio/radio-group.component.mjs +19 -7
  130. package/fesm2015/carbon-components-angular-combobox.mjs +18 -8
  131. package/fesm2015/carbon-components-angular-combobox.mjs.map +1 -1
  132. package/fesm2015/carbon-components-angular-dropdown.mjs +31 -14
  133. package/fesm2015/carbon-components-angular-dropdown.mjs.map +1 -1
  134. package/fesm2015/carbon-components-angular-input.mjs +112 -46
  135. package/fesm2015/carbon-components-angular-input.mjs.map +1 -1
  136. package/fesm2015/carbon-components-angular-radio.mjs +18 -6
  137. package/fesm2015/carbon-components-angular-radio.mjs.map +1 -1
  138. package/fesm2020/carbon-components-angular-combobox.mjs +18 -8
  139. package/fesm2020/carbon-components-angular-combobox.mjs.map +1 -1
  140. package/fesm2020/carbon-components-angular-dropdown.mjs +30 -14
  141. package/fesm2020/carbon-components-angular-dropdown.mjs.map +1 -1
  142. package/fesm2020/carbon-components-angular-input.mjs +102 -45
  143. package/fesm2020/carbon-components-angular-input.mjs.map +1 -1
  144. package/fesm2020/carbon-components-angular-radio.mjs +18 -6
  145. package/fesm2020/carbon-components-angular-radio.mjs.map +1 -1
  146. package/input/input.directive.d.ts +4 -1
  147. package/input/text-area.directive.d.ts +4 -1
  148. package/input/text-input-label.component.d.ts +9 -5
  149. package/input/textarea-label.component.d.ts +5 -3
  150. package/package.json +1 -1
  151. package/radio/radio-group.component.d.ts +4 -2
  152. package/docs/storybook/1250.47c381c1.iframe.bundle.js +0 -1
  153. package/docs/storybook/1345.9ccf4f3f.iframe.bundle.js +0 -1
  154. package/docs/storybook/3224.3e279e46.iframe.bundle.js +0 -1
  155. package/docs/storybook/7019.b8944046.iframe.bundle.js +0 -2
  156. package/docs/storybook/955.99b6ac85.iframe.bundle.js +0 -1
  157. package/docs/storybook/combobox-combobox-stories.e7427226.iframe.bundle.js +0 -1
  158. package/docs/storybook/dropdown-dropdown-stories.a76101be.iframe.bundle.js +0 -1
  159. package/docs/storybook/main.cdbf1814.iframe.bundle.js +0 -1
  160. package/docs/storybook/modal-modal-stories.0a864a6a.iframe.bundle.js +0 -1
  161. package/docs/storybook/radio-radio-stories.444fc044.iframe.bundle.js +0 -1
  162. package/docs/storybook/runtime~main.e32f2dfb.iframe.bundle.js +0 -1
  163. /package/docs/storybook/{7019.b8944046.iframe.bundle.js.LICENSE.txt → 7019.75ad5817.iframe.bundle.js.LICENSE.txt} +0 -0
@@ -2,6 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { Directive, Input, Output, Injectable, EventEmitter, TemplateRef, Component, HostBinding, ContentChild, ViewChild, HostListener, ViewChildren, NgModule } from '@angular/core';
3
3
  import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
4
4
  import { Subscription, of, fromEvent, isObservable, Observable } from 'rxjs';
5
+ import { isUndefined, isNull } from 'lodash-es';
5
6
  import * as i2 from 'carbon-components-angular/utils';
6
7
  import { closestAttr, hasScrollableParents, getScrollableParents, UtilsModule } from 'carbon-components-angular/utils';
7
8
  import * as i1$1 from 'carbon-components-angular/i18n';
@@ -347,6 +348,10 @@ class Dropdown {
347
348
  * Defaults to the `DROPDOWN.SELECTED` value from the i18n service.
348
349
  */
349
350
  this.selectedLabel = this.i18n.get().DROPDOWN.SELECTED;
351
+ /**
352
+ * Set to `true` to allow null values in the dropdown ListItems.
353
+ */
354
+ this.allowNullValues = false;
350
355
  /**
351
356
  * Emits selection events.
352
357
  */
@@ -384,6 +389,7 @@ class Dropdown {
384
389
  this._isFocused = false;
385
390
  // primarily used to capture and propagate input to `writeValue` before the content is available
386
391
  this._writtenValue = [];
392
+ this._isUsingNgControl = false;
387
393
  /**
388
394
  * function passed in by `registerOnChange`
389
395
  */
@@ -423,37 +429,34 @@ class Dropdown {
423
429
  if (!this.view) {
424
430
  return;
425
431
  }
426
- if ((this.writtenValue && this.writtenValue.length) || typeof this.writtenValue === "number") {
427
- this.writeValue(this.writtenValue);
428
- }
429
432
  this.view.type = this.type;
430
433
  this.view.size = this.size;
431
434
  // function to check if the event is organic (isUpdate === false) or programmatic
432
435
  const isUpdate = event => event && event.isUpdate;
433
- this.view.select.subscribe(event => {
436
+ this.selectionSubscription = this.view.select.subscribe(event => {
434
437
  if (this.type === "single" && !isUpdate(event) && !Array.isArray(event)) {
435
438
  this.closeMenu();
436
439
  if (event.item && event.item.selected) {
437
440
  if (this.itemValueKey) {
438
- this.propagateChange(event.item[this.itemValueKey]);
441
+ this._propagateChange(event.item[this.itemValueKey]);
439
442
  }
440
443
  else {
441
- this.propagateChange(event.item);
444
+ this._propagateChange(event.item);
442
445
  }
443
446
  }
444
447
  else {
445
- this.propagateChange(null);
448
+ this._propagateChange(null);
446
449
  }
447
450
  }
448
451
  if (this.type === "multi" && !isUpdate(event)) {
449
452
  // if we have a `value` selector and selected items map them appropriately
450
453
  if (this.itemValueKey && this.view.getSelected()) {
451
454
  const values = this.view.getSelected().map(item => item[this.itemValueKey]);
452
- this.propagateChange(values);
455
+ this._propagateChange(values);
453
456
  // otherwise just pass up the values from `getSelected`
454
457
  }
455
458
  else {
456
- this.propagateChange(this.view.getSelected());
459
+ this._propagateChange(this.view.getSelected());
457
460
  }
458
461
  }
459
462
  // only emit selected for "organic" selections
@@ -461,6 +464,9 @@ class Dropdown {
461
464
  this.checkForReorder();
462
465
  this.selected.emit(event);
463
466
  }
467
+ else if (this._isUsingNgControl) {
468
+ this.writeValue(this.writtenValue);
469
+ }
464
470
  });
465
471
  }
466
472
  ngAfterViewInit() {
@@ -484,6 +490,8 @@ class Dropdown {
484
490
  if (!this.appendInline) {
485
491
  this._appendToDropdown();
486
492
  }
493
+ this.visibilitySubscription?.unsubscribe();
494
+ this.selectionSubscription?.unsubscribe();
487
495
  }
488
496
  /**
489
497
  * Propagates the injected `value`.
@@ -492,8 +500,8 @@ class Dropdown {
492
500
  // cache the written value so we can use it in `AfterContentInit`
493
501
  this.writtenValue = value;
494
502
  this.view.onItemsReady(() => {
495
- // propagate null/falsey as an array (deselect everything)
496
- if (!value) {
503
+ // propagate null/undefined as an array (deselect everything) unless `allowNullValues` is true
504
+ if (isUndefined(value) || (isNull(value) && !this.allowNullValues)) {
497
505
  this.view.propagateSelected([value]);
498
506
  }
499
507
  else if (this.type === "single") {
@@ -524,7 +532,7 @@ class Dropdown {
524
532
  }
525
533
  else {
526
534
  // we can safely assume we're passing an array of `ListItem`s
527
- this.view.propagateSelected(value);
535
+ this.view.propagateSelected(value || [value]);
528
536
  }
529
537
  }
530
538
  this.checkForReorder();
@@ -534,6 +542,7 @@ class Dropdown {
534
542
  this.onTouchedCallback();
535
543
  }
536
544
  registerOnChange(fn) {
545
+ this._isUsingNgControl = true;
537
546
  this.propagateChange = fn;
538
547
  }
539
548
  /**
@@ -542,6 +551,11 @@ class Dropdown {
542
551
  registerOnTouched(fn) {
543
552
  this.onTouchedCallback = fn;
544
553
  }
554
+ // used only to update writtenValue
555
+ _propagateChange(value) {
556
+ this.writtenValue = value;
557
+ this.propagateChange(value);
558
+ }
545
559
  /**
546
560
  * `ControlValueAccessor` method to programmatically disable the dropdown.
547
561
  *
@@ -659,7 +673,7 @@ class Dropdown {
659
673
  item.selected = false;
660
674
  }
661
675
  this.selected.emit([]);
662
- this.propagateChange([]);
676
+ this._propagateChange([]);
663
677
  }
664
678
  /**
665
679
  * Returns `true` if there is a value selected.
@@ -841,7 +855,7 @@ class Dropdown {
841
855
  }
842
856
  Dropdown.dropdownCount = 0;
843
857
  Dropdown.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: Dropdown, deps: [{ token: i0.ElementRef }, { token: i1$1.I18n }, { token: DropdownService }, { token: i2.ElementService }], target: i0.ɵɵFactoryTarget.Component });
844
- Dropdown.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: { id: "id", label: "label", hideLabel: "hideLabel", helperText: "helperText", decorator: "decorator", placeholder: "placeholder", displayValue: "displayValue", clearText: "clearText", size: "size", type: "type", theme: "theme", disabled: "disabled", readonly: "readonly", skeleton: "skeleton", inline: "inline", disableArrowKeys: "disableArrowKeys", invalid: "invalid", invalidText: "invalidText", warn: "warn", warnText: "warnText", appendInline: "appendInline", scrollableContainer: "scrollableContainer", itemValueKey: "itemValueKey", selectionFeedback: "selectionFeedback", menuButtonLabel: "menuButtonLabel", selectedLabel: "selectedLabel", dropUp: "dropUp", fluid: "fluid" }, outputs: { selected: "selected", onClose: "onClose", close: "close" }, host: { listeners: { "keydown": "onKeyDown($event)" }, properties: { "class.cds--list-box__wrapper--fluid--invalid": "this.fluidInvalidClass", "class.cds--list-box__wrapper--fluid--focus": "this.fluidFocusClass", "class.cds--dropdown__wrapper": "this.hostClass", "class.cds--list-box__wrapper": "this.hostWrapperClass", "class.cds--list-box__wrapper--decorator": "this.hasDecorator", "class.cds--list-box__wrapper--fluid": "this.fluid" } }, providers: [
858
+ Dropdown.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: { id: "id", label: "label", hideLabel: "hideLabel", helperText: "helperText", decorator: "decorator", placeholder: "placeholder", displayValue: "displayValue", clearText: "clearText", size: "size", type: "type", theme: "theme", disabled: "disabled", readonly: "readonly", skeleton: "skeleton", inline: "inline", disableArrowKeys: "disableArrowKeys", invalid: "invalid", invalidText: "invalidText", warn: "warn", warnText: "warnText", appendInline: "appendInline", scrollableContainer: "scrollableContainer", itemValueKey: "itemValueKey", selectionFeedback: "selectionFeedback", menuButtonLabel: "menuButtonLabel", selectedLabel: "selectedLabel", dropUp: "dropUp", allowNullValues: "allowNullValues", fluid: "fluid" }, outputs: { selected: "selected", onClose: "onClose", close: "close" }, host: { listeners: { "keydown": "onKeyDown($event)" }, properties: { "class.cds--list-box__wrapper--fluid--invalid": "this.fluidInvalidClass", "class.cds--list-box__wrapper--fluid--focus": "this.fluidFocusClass", "class.cds--dropdown__wrapper": "this.hostClass", "class.cds--list-box__wrapper": "this.hostWrapperClass", "class.cds--list-box__wrapper--decorator": "this.hasDecorator", "class.cds--list-box__wrapper--fluid": "this.fluid" } }, providers: [
845
859
  {
846
860
  provide: NG_VALUE_ACCESSOR,
847
861
  useExisting: Dropdown,
@@ -1175,6 +1189,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1175
1189
  type: Input
1176
1190
  }], dropUp: [{
1177
1191
  type: Input
1192
+ }], allowNullValues: [{
1193
+ type: Input
1178
1194
  }], selected: [{
1179
1195
  type: Output
1180
1196
  }], onClose: [{