@brightspace-ui/core 3.267.0 → 3.267.3

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 (112) hide show
  1. package/components/alert/alert-toast.js +98 -102
  2. package/components/alert/alert.js +109 -113
  3. package/components/backdrop/backdrop-dirty-overlay.js +13 -17
  4. package/components/backdrop/backdrop-loading.js +105 -109
  5. package/components/backdrop/backdrop.js +50 -54
  6. package/components/breadcrumbs/breadcrumb-current-page.js +19 -23
  7. package/components/breadcrumbs/breadcrumb.js +50 -54
  8. package/components/breadcrumbs/breadcrumbs.js +34 -38
  9. package/components/button/button-add.js +156 -164
  10. package/components/button/button-copy-mixin.js +9 -11
  11. package/components/button/button-copy.js +15 -19
  12. package/components/button/button-icon.js +110 -114
  13. package/components/button/button-move.js +153 -157
  14. package/components/button/button-split-item.js +16 -20
  15. package/components/button/button-split.js +70 -74
  16. package/components/button/button-subtle-copy.js +17 -19
  17. package/components/button/button-subtle.js +145 -149
  18. package/components/button/button-toggle.js +25 -29
  19. package/components/button/button.js +70 -74
  20. package/components/button/floating-buttons.js +63 -67
  21. package/components/calendar/calendar.js +244 -248
  22. package/components/card/card-content-meta.js +13 -15
  23. package/components/card/card-content-title.js +9 -11
  24. package/components/card/card-footer-link.js +76 -80
  25. package/components/card/card-loading-shimmer.js +35 -39
  26. package/components/card/card.js +188 -192
  27. package/components/collapsible-panel/collapsible-panel-group.js +17 -21
  28. package/components/collapsible-panel/collapsible-panel-summary-item.js +27 -31
  29. package/components/collapsible-panel/collapsible-panel.js +258 -262
  30. package/components/count-badge/count-badge-icon.js +12 -16
  31. package/components/count-badge/count-badge-mixin.js +124 -128
  32. package/components/count-badge/count-badge.js +2 -4
  33. package/components/description-list/description-list-wrapper.js +27 -31
  34. package/components/dialog/dialog-confirm.js +55 -59
  35. package/components/dialog/dialog-fullscreen.js +128 -132
  36. package/components/dialog/dialog-mixin.js +39 -41
  37. package/components/dialog/dialog.js +61 -65
  38. package/components/dropdown/dropdown-button-subtle.js +21 -25
  39. package/components/dropdown/dropdown-button.js +31 -35
  40. package/components/dropdown/dropdown-context-menu.js +28 -31
  41. package/components/dropdown/dropdown-menu.js +27 -31
  42. package/components/dropdown/dropdown-more.js +23 -26
  43. package/components/dropdown/dropdown-opener-mixin.js +44 -46
  44. package/components/dropdown/dropdown-popover-mixin.js +155 -159
  45. package/components/dropdown/dropdown-tabs.js +5 -7
  46. package/components/dropdown/dropdown.js +1 -3
  47. package/components/empty-state/empty-state-action-button.js +18 -22
  48. package/components/empty-state/empty-state-action-link.js +14 -18
  49. package/components/empty-state/empty-state-illustrated.js +21 -25
  50. package/components/empty-state/empty-state-simple.js +8 -12
  51. package/components/expand-collapse/expand-collapse-content.js +48 -52
  52. package/components/filter/filter-dimension-set-date-text-value.js +34 -36
  53. package/components/filter/filter-dimension-set-date-time-range-value.js +45 -47
  54. package/components/filter/filter-dimension-set-empty-state.js +17 -19
  55. package/components/filter/filter-dimension-set-value.js +27 -29
  56. package/components/filter/filter-dimension-set.js +65 -67
  57. package/components/filter/filter-overflow-group.js +15 -19
  58. package/components/filter/filter-tags.js +16 -19
  59. package/components/filter/filter.js +115 -119
  60. package/components/focus-trap/focus-trap.js +17 -21
  61. package/components/form/form-element-mixin.js +33 -35
  62. package/components/form/form-error-summary.js +37 -42
  63. package/components/form/form.js +33 -37
  64. package/components/hierarchical-view/hierarchical-view-mixin.js +76 -80
  65. package/components/hierarchical-view/hierarchical-view.js +5 -7
  66. package/components/html-block/html-block.js +45 -49
  67. package/components/icons/icon-custom.js +20 -24
  68. package/components/icons/icon.js +20 -24
  69. package/components/icons/slotted-icon-mixin.js +16 -18
  70. package/components/inputs/input-checkbox-group.js +34 -38
  71. package/components/inputs/input-checkbox.js +106 -110
  72. package/components/inputs/input-color.js +142 -148
  73. package/components/inputs/input-date-range.js +90 -94
  74. package/components/inputs/input-date-time-range-to.js +70 -74
  75. package/components/inputs/input-date-time-range.js +110 -115
  76. package/components/inputs/input-date-time.js +75 -79
  77. package/components/inputs/input-date.js +101 -105
  78. package/components/inputs/input-fieldset.js +37 -43
  79. package/components/inputs/input-group.js +10 -12
  80. package/components/inputs/input-inline-help.js +4 -6
  81. package/components/inputs/input-number.js +112 -118
  82. package/components/inputs/input-percent.js +52 -58
  83. package/components/inputs/input-radio-group.js +45 -49
  84. package/components/inputs/input-radio-spacer.js +11 -13
  85. package/components/inputs/input-radio.js +62 -66
  86. package/components/inputs/input-search.js +63 -68
  87. package/components/inputs/input-styles.js +140 -3
  88. package/components/inputs/input-text.js +245 -251
  89. package/components/inputs/input-textarea.js +128 -132
  90. package/components/inputs/input-time-range.js +100 -104
  91. package/components/inputs/input-time.js +107 -113
  92. package/components/link/link-mixin.js +37 -41
  93. package/components/link/link.js +113 -119
  94. package/components/list/list-controls.js +25 -29
  95. package/components/list/list-item-button-mixin.js +10 -12
  96. package/components/list/list-item-checkbox-mixin.js +35 -37
  97. package/components/list/list-item-content.js +33 -35
  98. package/components/list/list-item-drag-drop-mixin.js +45 -47
  99. package/components/list/list-item-drag-handle.js +80 -84
  100. package/components/list/list-item-drag-image.js +77 -81
  101. package/components/list/list-item-expand-collapse-mixin.js +17 -19
  102. package/components/list/list-item-generic-layout.js +222 -226
  103. package/components/list/list-item-link-mixin.js +10 -12
  104. package/components/list/list-item-mixin.js +68 -70
  105. package/components/list/list-item-nav-mixin.js +17 -19
  106. package/components/list/list-item-placement-marker.js +65 -67
  107. package/components/list/list-item-role-mixin.js +9 -11
  108. package/components/list/list-item.js +7 -9
  109. package/components/list/list.js +121 -125
  110. package/components/loading-spinner/loading-spinner.js +93 -97
  111. package/custom-elements.json +1920 -6694
  112. package/package.json +3 -2
@@ -12,29 +12,25 @@ import { PropertyRequiredMixin } from '../../mixins/property-required/property-r
12
12
  */
13
13
  class EmptyStateActionButton extends FocusMixin(PropertyRequiredMixin(LitElement)) {
14
14
 
15
- static get properties() {
16
- return {
17
- /**
18
- * REQUIRED: The action text to be used in the button
19
- * @type {string}
20
- */
21
- text: { type: String, required: true },
22
- /**
23
- * This will change the action button to use a primary button instead of the default subtle button. The primary attribute is only valid when `d2l-empty-state-action-button` is placed within `d2l-empty-state-illustrated` components
24
- * @type {boolean}
25
- */
26
- primary: { type: Boolean },
27
- _illustrated: { state: true }
28
- };
29
- }
15
+ static properties = {
16
+ /**
17
+ * REQUIRED: The action text to be used in the button
18
+ * @type {string}
19
+ */
20
+ text: { type: String, required: true },
21
+ /**
22
+ * This will change the action button to use a primary button instead of the default subtle button. The primary attribute is only valid when `d2l-empty-state-action-button` is placed within `d2l-empty-state-illustrated` components
23
+ * @type {boolean}
24
+ */
25
+ primary: { type: Boolean },
26
+ _illustrated: { state: true }
27
+ };
30
28
 
31
- static get styles() {
32
- return css`
33
- .d2l-empty-state-action {
34
- vertical-align: top;
35
- }
36
- `;
37
- }
29
+ static styles = css`
30
+ .d2l-empty-state-action {
31
+ vertical-align: top;
32
+ }
33
+ `;
38
34
 
39
35
  constructor() {
40
36
  super();
@@ -9,24 +9,20 @@ import { PropertyRequiredMixin } from '../../mixins/property-required/property-r
9
9
  */
10
10
  class EmptyStateActionLink extends FocusMixin(PropertyRequiredMixin(LitElement)) {
11
11
 
12
- static get properties() {
13
- return {
14
- /**
15
- * REQUIRED: The action text to be used in the subtle button
16
- * @type {string}
17
- */
18
- text: { type: String, required: true },
19
- /**
20
- * REQUIRED: The action URL or URL fragment of the link
21
- * @type {string}
22
- */
23
- href: { type: String, required: true },
24
- };
25
- }
26
-
27
- static get styles() {
28
- return [bodyCompactStyles, linkStyles];
29
- }
12
+ static properties = {
13
+ /**
14
+ * REQUIRED: The action text to be used in the subtle button
15
+ * @type {string}
16
+ */
17
+ text: { type: String, required: true },
18
+ /**
19
+ * REQUIRED: The action URL or URL fragment of the link
20
+ * @type {string}
21
+ */
22
+ href: { type: String, required: true },
23
+ };
24
+
25
+ static styles = [bodyCompactStyles, linkStyles];
30
26
 
31
27
  static get focusElementSelector() {
32
28
  return '.d2l-link';
@@ -18,31 +18,27 @@ const illustrationAspectRatio = 500 / 330;
18
18
  */
19
19
  class EmptyStateIllustrated extends LoadingCompleteMixin(EmptyStateMixin(LitElement)) {
20
20
 
21
- static get properties() {
22
- return {
23
- /**
24
- * REQUIRED: A description giving details about the empty state
25
- * @type {string}
26
- */
27
- description: { type: String, required: true },
28
- /**
29
- * The name of the preset image you would like to display in the component
30
- * @type {string}
31
- */
32
- illustrationName: { type: String, attribute: 'illustration-name' },
33
- /**
34
- * REQUIRED: A title for the empty state
35
- * @type {string}
36
- */
37
- titleText: { type: String, attribute: 'title-text', required: true },
38
- _contentHeight: { state: true },
39
- _titleSmall: { state: true }
40
- };
41
- }
42
-
43
- static get styles() {
44
- return [bodyCompactStyles, emptyStateStyles, emptyStateIllustratedStyles];
45
- }
21
+ static properties = {
22
+ /**
23
+ * REQUIRED: A description giving details about the empty state
24
+ * @type {string}
25
+ */
26
+ description: { type: String, required: true },
27
+ /**
28
+ * The name of the preset image you would like to display in the component
29
+ * @type {string}
30
+ */
31
+ illustrationName: { type: String, attribute: 'illustration-name' },
32
+ /**
33
+ * REQUIRED: A title for the empty state
34
+ * @type {string}
35
+ */
36
+ titleText: { type: String, attribute: 'title-text', required: true },
37
+ _contentHeight: { state: true },
38
+ _titleSmall: { state: true }
39
+ };
40
+
41
+ static styles = [bodyCompactStyles, emptyStateStyles, emptyStateIllustratedStyles];
46
42
 
47
43
  constructor() {
48
44
  super();
@@ -10,19 +10,15 @@ import { EmptyStateMixin } from './empty-state-mixin.js';
10
10
  */
11
11
  class EmptyStateSimple extends EmptyStateMixin(LitElement) {
12
12
 
13
- static get properties() {
14
- return {
15
- /**
16
- * REQUIRED: A description giving details about the empty state
17
- * @type {string}
18
- */
19
- description: { type: String, required: true },
20
- };
21
- }
13
+ static properties = {
14
+ /**
15
+ * REQUIRED: A description giving details about the empty state
16
+ * @type {string}
17
+ */
18
+ description: { type: String, required: true },
19
+ };
22
20
 
23
- static get styles() {
24
- return [bodyCompactStyles, emptyStateStyles, emptyStateSimpleStyles];
25
- }
21
+ static styles = [bodyCompactStyles, emptyStateStyles, emptyStateSimpleStyles];
26
22
 
27
23
  render() {
28
24
  return html`
@@ -20,67 +20,63 @@ export const states = {
20
20
  */
21
21
  class ExpandCollapseContent extends LitElement {
22
22
 
23
- static get properties() {
24
- return {
25
- /**
26
- * Specifies the expanded/collapsed state of the content
27
- * @type {boolean}
28
- */
29
- expanded: { type: Boolean, reflect: true },
30
- _height: { type: String },
31
- _state: { type: String }
32
- };
33
- }
34
-
35
- static get styles() {
36
- return css`
37
- :host {
38
- --d2l-expand-collapse-content-transition-duration: 0.2s;
39
- --d2l-expand-collapse-content-transition-function: cubic-bezier(0.4, 0.4, 0.25, 1);
40
- display: block;
41
- }
23
+ static properties = {
24
+ /**
25
+ * Specifies the expanded/collapsed state of the content
26
+ * @type {boolean}
27
+ */
28
+ expanded: { type: Boolean, reflect: true },
29
+ _height: { type: String },
30
+ _state: { type: String }
31
+ };
32
+
33
+ static styles = css`
34
+ :host {
35
+ --d2l-expand-collapse-content-transition-duration: 0.2s;
36
+ --d2l-expand-collapse-content-transition-function: cubic-bezier(0.4, 0.4, 0.25, 1);
37
+ display: block;
38
+ }
42
39
 
43
- :host([hidden]) {
44
- display: none;
45
- }
40
+ :host([hidden]) {
41
+ display: none;
42
+ }
46
43
 
47
- .d2l-expand-collapse-content-container {
48
- display: block;
49
- opacity: 0;
50
- overflow: hidden;
51
- transition:
52
- height var(--d2l-expand-collapse-content-transition-duration) var(--d2l-expand-collapse-content-transition-function),
53
- opacity var(--d2l-expand-collapse-content-transition-duration) var(--d2l-expand-collapse-content-transition-function);
54
- }
44
+ .d2l-expand-collapse-content-container {
45
+ display: block;
46
+ opacity: 0;
47
+ overflow: hidden;
48
+ transition:
49
+ height var(--d2l-expand-collapse-content-transition-duration) var(--d2l-expand-collapse-content-transition-function),
50
+ opacity var(--d2l-expand-collapse-content-transition-duration) var(--d2l-expand-collapse-content-transition-function);
51
+ }
55
52
 
56
- .d2l-expand-collapse-content-container[data-state="collapsed"] {
57
- display: none;
58
- }
53
+ .d2l-expand-collapse-content-container[data-state="collapsed"] {
54
+ display: none;
55
+ }
59
56
 
60
- .d2l-expand-collapse-content-container[data-state="expanded"] {
61
- overflow: visible;
62
- }
57
+ .d2l-expand-collapse-content-container[data-state="expanded"] {
58
+ overflow: visible;
59
+ }
63
60
 
64
61
 
65
- .d2l-expand-collapse-content-container[data-state="expanded"],
66
- .d2l-expand-collapse-content-container[data-state="expanding"] {
67
- opacity: 1;
68
- }
62
+ .d2l-expand-collapse-content-container[data-state="expanded"],
63
+ .d2l-expand-collapse-content-container[data-state="expanding"] {
64
+ opacity: 1;
65
+ }
69
66
 
70
- /* prevent margin colapse on slotted children */
71
- .d2l-expand-collapse-content-inner::before,
72
- .d2l-expand-collapse-content-inner::after {
73
- content: " ";
74
- display: table;
75
- }
67
+ /* prevent margin colapse on slotted children */
68
+ .d2l-expand-collapse-content-inner::before,
69
+ .d2l-expand-collapse-content-inner::after {
70
+ content: " ";
71
+ display: table;
72
+ }
76
73
 
77
- @media (prefers-reduced-motion: reduce) {
78
- .d2l-expand-collapse-content-container {
79
- transition: none;
80
- }
74
+ @media (prefers-reduced-motion: reduce) {
75
+ .d2l-expand-collapse-content-container {
76
+ transition: none;
81
77
  }
82
- `;
83
- }
78
+ }
79
+ `;
84
80
 
85
81
  constructor() {
86
82
  super();
@@ -9,42 +9,40 @@ import { LocalizeCoreElement } from '../../helpers/localize-core-element.js';
9
9
  */
10
10
  class FilterDimensionSetDateTextValue extends LocalizeCoreElement(LitElement) {
11
11
 
12
- static get properties() {
13
- return {
14
- /**
15
- * Whether this value in the filter is disabled or not
16
- * @type {boolean}
17
- */
18
- disabled: { type: Boolean, reflect: true },
19
- /**
20
- * @ignore
21
- */
22
- endValue: { type: String },
23
- /**
24
- * REQUIRED: Unique key to represent this value in the dimension
25
- * @type {string}
26
- */
27
- key: { type: String },
28
- /**
29
- * REQUIRED: The preset date/time range that the list item represents
30
- * @type {'today'|'lastHour'|'24hours'|'48hours'|'7days'|'14days'|'30days'|'6months'}
31
- */
32
- range: { type: String },
33
- /**
34
- * Whether this value in the filter is selected or not
35
- * @type {boolean}
36
- */
37
- selected: { type: Boolean, reflect: true },
38
- /**
39
- * @ignore
40
- */
41
- startValue: { type: String },
42
- /**
43
- * @ignore
44
- */
45
- text: { type: String, reflect: true }
46
- };
47
- }
12
+ static properties = {
13
+ /**
14
+ * Whether this value in the filter is disabled or not
15
+ * @type {boolean}
16
+ */
17
+ disabled: { type: Boolean, reflect: true },
18
+ /**
19
+ * @ignore
20
+ */
21
+ endValue: { type: String },
22
+ /**
23
+ * REQUIRED: Unique key to represent this value in the dimension
24
+ * @type {string}
25
+ */
26
+ key: { type: String },
27
+ /**
28
+ * REQUIRED: The preset date/time range that the list item represents
29
+ * @type {'today'|'lastHour'|'24hours'|'48hours'|'7days'|'14days'|'30days'|'6months'}
30
+ */
31
+ range: { type: String },
32
+ /**
33
+ * Whether this value in the filter is selected or not
34
+ * @type {boolean}
35
+ */
36
+ selected: { type: Boolean, reflect: true },
37
+ /**
38
+ * @ignore
39
+ */
40
+ startValue: { type: String },
41
+ /**
42
+ * @ignore
43
+ */
44
+ text: { type: String, reflect: true }
45
+ };
48
46
 
49
47
  constructor() {
50
48
  super();
@@ -13,53 +13,51 @@ import { LocalizeCoreElement } from '../../helpers/localize-core-element.js';
13
13
  */
14
14
  class FilterDimensionSetDateTimeRangeValue extends LocalizeCoreElement(LitElement) {
15
15
 
16
- static get properties() {
17
- return {
18
- /**
19
- * Whether this value in the filter is disabled or not
20
- * @type {boolean}
21
- */
22
- disabled: { type: Boolean, reflect: true },
23
- /**
24
- * Value of the end date or date-time input. Expected to be in UTC.
25
- * @type {string}
26
- */
27
- endValue: { type: String, attribute: 'end-value' },
28
- /**
29
- * @ignore
30
- */
31
- inactive: { type: Boolean },
32
- /**
33
- * REQUIRED: Unique key to represent this value in the dimension
34
- * @type {string}
35
- */
36
- key: { type: String },
37
- /**
38
- * Whether this value in the filter is selected or not
39
- * @type {boolean}
40
- */
41
- selected: { type: Boolean, reflect: true },
42
- /**
43
- * Value of the start date or date-time input. Expected to be in UTC.
44
- * @type {string}
45
- */
46
- startValue: { type: String, attribute: 'start-value' },
47
- /**
48
- * Defaults to "Custom Date Range" (localized). Can be overridden if desired.
49
- * @type {string}
50
- */
51
- text: { type: String, reflect: true },
52
- /**
53
- * Date/time range input type
54
- * @type {'date'|'date-time'}
55
- */
56
- type: { type: String },
57
- /**
58
- * @ignore
59
- */
60
- valueText: { type: String }
61
- };
62
- }
16
+ static properties = {
17
+ /**
18
+ * Whether this value in the filter is disabled or not
19
+ * @type {boolean}
20
+ */
21
+ disabled: { type: Boolean, reflect: true },
22
+ /**
23
+ * Value of the end date or date-time input. Expected to be in UTC.
24
+ * @type {string}
25
+ */
26
+ endValue: { type: String, attribute: 'end-value' },
27
+ /**
28
+ * @ignore
29
+ */
30
+ inactive: { type: Boolean },
31
+ /**
32
+ * REQUIRED: Unique key to represent this value in the dimension
33
+ * @type {string}
34
+ */
35
+ key: { type: String },
36
+ /**
37
+ * Whether this value in the filter is selected or not
38
+ * @type {boolean}
39
+ */
40
+ selected: { type: Boolean, reflect: true },
41
+ /**
42
+ * Value of the start date or date-time input. Expected to be in UTC.
43
+ * @type {string}
44
+ */
45
+ startValue: { type: String, attribute: 'start-value' },
46
+ /**
47
+ * Defaults to "Custom Date Range" (localized). Can be overridden if desired.
48
+ * @type {string}
49
+ */
50
+ text: { type: String, reflect: true },
51
+ /**
52
+ * Date/time range input type
53
+ * @type {'date'|'date-time'}
54
+ */
55
+ type: { type: String },
56
+ /**
57
+ * @ignore
58
+ */
59
+ valueText: { type: String }
60
+ };
63
61
 
64
62
  constructor() {
65
63
  super();
@@ -6,25 +6,23 @@ import { LitElement } from 'lit';
6
6
  */
7
7
  class FilterDimensionSetEmptyState extends LitElement {
8
8
 
9
- static get properties() {
10
- return {
11
- /**
12
- * The href that will be used for the empty state action. When set with action-text, d2l-filter will render a link action.
13
- * @type {string}
14
- */
15
- actionHref: { type: String, attribute: 'action-href' },
16
- /**
17
- * The text that will be displayed in the empty state action. When set, d2l-filter renders a button action, or a link if action-href is also defined.
18
- * @type {string}
19
- */
20
- actionText: { type: String, attribute: 'action-text' },
21
- /**
22
- * REQUIRED: The text that is displayed in the empty state description
23
- * @type {string}
24
- */
25
- description: { type: String }
26
- };
27
- }
9
+ static properties = {
10
+ /**
11
+ * The href that will be used for the empty state action. When set with action-text, d2l-filter will render a link action.
12
+ * @type {string}
13
+ */
14
+ actionHref: { type: String, attribute: 'action-href' },
15
+ /**
16
+ * The text that will be displayed in the empty state action. When set, d2l-filter renders a button action, or a link if action-href is also defined.
17
+ * @type {string}
18
+ */
19
+ actionText: { type: String, attribute: 'action-text' },
20
+ /**
21
+ * REQUIRED: The text that is displayed in the empty state description
22
+ * @type {string}
23
+ */
24
+ description: { type: String }
25
+ };
28
26
 
29
27
  constructor() {
30
28
  super();
@@ -6,35 +6,33 @@ import { LitElement } from 'lit';
6
6
  */
7
7
  class FilterDimensionSetValue extends LitElement {
8
8
 
9
- static get properties() {
10
- return {
11
- /**
12
- * Count for the value in the list. If no count is provided, no count will be displayed
13
- * @type {number}
14
- */
15
- count: { type: Number },
16
- /**
17
- * Whether this value in the filter is disabled or not
18
- * @type {boolean}
19
- */
20
- disabled: { type: Boolean, reflect: true },
21
- /**
22
- * REQUIRED: Unique key to represent this value in the dimension
23
- * @type {string}
24
- */
25
- key: { type: String },
26
- /**
27
- * Whether this value in the filter is selected or not
28
- * @type {boolean}
29
- */
30
- selected: { type: Boolean, reflect: true },
31
- /**
32
- * REQUIRED: The text that is displayed for the value
33
- * @type {string}
34
- */
35
- text: { type: String }
36
- };
37
- }
9
+ static properties = {
10
+ /**
11
+ * Count for the value in the list. If no count is provided, no count will be displayed
12
+ * @type {number}
13
+ */
14
+ count: { type: Number },
15
+ /**
16
+ * Whether this value in the filter is disabled or not
17
+ * @type {boolean}
18
+ */
19
+ disabled: { type: Boolean, reflect: true },
20
+ /**
21
+ * REQUIRED: Unique key to represent this value in the dimension
22
+ * @type {string}
23
+ */
24
+ key: { type: String },
25
+ /**
26
+ * Whether this value in the filter is selected or not
27
+ * @type {boolean}
28
+ */
29
+ selected: { type: Boolean, reflect: true },
30
+ /**
31
+ * REQUIRED: The text that is displayed for the value
32
+ * @type {string}
33
+ */
34
+ text: { type: String }
35
+ };
38
36
 
39
37
  constructor() {
40
38
  super();