@govtechsg/sgds-web-component 3.20.0-rc.4 → 3.20.0

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 (65) hide show
  1. package/components/Badge/badge.js +1 -1
  2. package/components/Badge/index.umd.min.js +4 -4
  3. package/components/Badge/index.umd.min.js.map +1 -1
  4. package/components/Badge/sgds-badge.js +9 -6
  5. package/components/Badge/sgds-badge.js.map +1 -1
  6. package/components/ComboBox/index.umd.min.js +10 -10
  7. package/components/ComboBox/index.umd.min.js.map +1 -1
  8. package/components/Datepicker/datepicker-input.d.ts +1 -0
  9. package/components/Datepicker/datepicker-input.js +23 -6
  10. package/components/Datepicker/datepicker-input.js.map +1 -1
  11. package/components/Datepicker/index.umd.min.js +5 -5
  12. package/components/Datepicker/index.umd.min.js.map +1 -1
  13. package/components/Datepicker/sgds-datepicker.js +4 -4
  14. package/components/Datepicker/sgds-datepicker.js.map +1 -1
  15. package/components/Input/index.umd.min.js +7 -7
  16. package/components/Input/index.umd.min.js.map +1 -1
  17. package/components/Input/input.js +1 -1
  18. package/components/QuantityToggle/index.umd.min.js +1 -1
  19. package/components/QuantityToggle/index.umd.min.js.map +1 -1
  20. package/components/Select/index.umd.min.js +1 -1
  21. package/components/Select/index.umd.min.js.map +1 -1
  22. package/components/Stepper/index.umd.min.js +1 -1
  23. package/components/Stepper/index.umd.min.js.map +1 -1
  24. package/components/Stepper/sgds-step.d.ts +3 -3
  25. package/components/Stepper/sgds-step.js +2 -2
  26. package/components/Stepper/sgds-step.js.map +1 -1
  27. package/components/Stepper/sgds-stepper.d.ts +4 -4
  28. package/components/Stepper/sgds-stepper.js +4 -5
  29. package/components/Stepper/sgds-stepper.js.map +1 -1
  30. package/components/Textarea/index.umd.min.js +1 -1
  31. package/components/Textarea/index.umd.min.js.map +1 -1
  32. package/components/index.umd.min.js +11 -11
  33. package/components/index.umd.min.js.map +1 -1
  34. package/custom-elements.json +8 -8
  35. package/index.umd.min.js +83 -83
  36. package/index.umd.min.js.map +1 -1
  37. package/package.json +1 -1
  38. package/react/components/Badge/badge.cjs.js +1 -1
  39. package/react/components/Badge/badge.js +1 -1
  40. package/react/components/Badge/sgds-badge.cjs.js +9 -6
  41. package/react/components/Badge/sgds-badge.cjs.js.map +1 -1
  42. package/react/components/Badge/sgds-badge.js +9 -6
  43. package/react/components/Badge/sgds-badge.js.map +1 -1
  44. package/react/components/Datepicker/datepicker-input.cjs.js +23 -6
  45. package/react/components/Datepicker/datepicker-input.cjs.js.map +1 -1
  46. package/react/components/Datepicker/datepicker-input.js +23 -6
  47. package/react/components/Datepicker/datepicker-input.js.map +1 -1
  48. package/react/components/Datepicker/sgds-datepicker.cjs.js +4 -4
  49. package/react/components/Datepicker/sgds-datepicker.cjs.js.map +1 -1
  50. package/react/components/Datepicker/sgds-datepicker.js +4 -4
  51. package/react/components/Datepicker/sgds-datepicker.js.map +1 -1
  52. package/react/components/Input/input.cjs.js +1 -1
  53. package/react/components/Input/input.js +1 -1
  54. package/react/components/Stepper/sgds-step.cjs.js +2 -2
  55. package/react/components/Stepper/sgds-step.cjs.js.map +1 -1
  56. package/react/components/Stepper/sgds-step.js +2 -2
  57. package/react/components/Stepper/sgds-step.js.map +1 -1
  58. package/react/components/Stepper/sgds-stepper.cjs.js +4 -5
  59. package/react/components/Stepper/sgds-stepper.cjs.js.map +1 -1
  60. package/react/components/Stepper/sgds-stepper.js +4 -5
  61. package/react/components/Stepper/sgds-stepper.js.map +1 -1
  62. package/react/styles/form-text-control.cjs.js +1 -1
  63. package/react/styles/form-text-control.js +1 -1
  64. package/styles/form-text-control.js +1 -1
  65. package/types/react.d.ts +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@govtechsg/sgds-web-component",
3
- "version": "3.20.0-rc.4",
3
+ "version": "3.20.0",
4
4
  "description": "",
5
5
  "main": "./index.umd.js",
6
6
  "module": "./index.js",
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var lit = require('lit');
7
7
 
8
- var css_248z = lit.css`:host{cursor:default;display:inline-flex;max-width:100%}:host([variant=accent]) .badge{background-color:var(--sgds-accent-surface-default)}:host([variant=success]) .badge{background-color:var(--sgds-success-surface-default)}:host([variant=danger]) .badge{background-color:var(--sgds-danger-surface-default)}:host([variant=warning]) .badge{background-color:var(--sgds-warning-surface-default);color:var(--sgds-color-fixed-dark)}:host([variant=cyan]) .badge{background-color:var(--sgds-cyan-surface-default)}:host([variant=purple]) .badge{background-color:var(--sgds-purple-surface-default)}:host([variant=neutral]) .badge{background-color:var(--sgds-neutral-surface-default)}:host([variant=white]) .badge{background-color:var(--sgds-surface-fixed-light);color:var(--sgds-color-fixed-dark)}:host([variant=accent][outlined]) .badge{background-color:var(--sgds-accent-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-accent-border-color-muted);color:var(--sgds-accent-color-fixed-dark)}:host([variant=success][outlined]) .badge{background-color:var(--sgds-success-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-success-border-color-muted);color:var(--sgds-success-color-fixed-dark)}:host([variant=danger][outlined]) .badge{background-color:var(--sgds-danger-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-danger-border-color-muted);color:var(--sgds-danger-color-fixed-dark)}:host([variant=warning][outlined]) .badge{background-color:var(--sgds-warning-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-warning-border-color-muted);color:var(--sgds-warning-color-fixed-dark)}:host([variant=cyan][outlined]) .badge{background-color:var(--sgds-cyan-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-cyan-border-color-muted);color:var(--sgds-cyan-color-fixed-dark)}:host([variant=purple][outlined]) .badge{background-color:var(--sgds-purple-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-purple-border-color-muted);color:var(--sgds-purple-color-fixed-dark)}:host([variant=neutral][outlined]) .badge{background-color:var(--sgds-neutral-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-neutral-border-color-muted);color:var(--sgds-color-fixed-dark)}:host([variant=white][outlined]) .badge{background-color:var(--sgds-surface-fixed-light);border:var(--sgds-border-width-1) solid var(--sgds-border-color-muted);color:var(--sgds-color-fixed-dark)}sgds-tooltip{display:block;max-width:100%}.badge{align-items:center;background-color:var(--sgds-primary-surface-default);border:var(--sgds-border-width-1) solid var(--sgds-border-color-transparent);border-radius:var(--sgds-border-radius-sm);color:var(--sgds-color-fixed-light);display:inline-flex;font-size:var(--sgds-font-size-label-xs);height:var(--sgds-dimension-24,24px);justify-content:center;line-height:var(--sgds-line-height-3-xs);max-width:var(--sgds-dimension-192,192px);min-width:var(--sgds-dimension-24);padding:var(--sgds-padding-none) var(--sgds-padding-xs)}.badge.outlined{background-color:var(--sgds-primary-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-primary-border-color-muted);color:var(--sgds-primary-color-fixed-dark)}.badge.full-width{max-width:100%}.badge-label{overflow:hidden;padding:var(--sgds-padding-none) var(--sgds-padding-3-xs);text-overflow:ellipsis;white-space:nowrap}.badge-dismissible{padding-right:0}.badge-dimissible sgds-close-button{--sgds-close-btn-border-radius:var(--sgds-border-radius-sm)}slot::slotted(*){color:inherit!important;font-size:inherit!important;font-weight:inherit!important;line-height:inherit!important;margin:inherit!important}`;
8
+ var css_248z = lit.css`:host{cursor:default;display:inline-flex;max-width:100%}:host([variant=accent]) .badge{background-color:var(--sgds-accent-surface-default)}:host([variant=success]) .badge{background-color:var(--sgds-success-surface-default)}:host([variant=danger]) .badge{background-color:var(--sgds-danger-surface-default)}:host([variant=warning]) .badge{background-color:var(--sgds-warning-surface-default);color:var(--sgds-color-fixed-dark)}:host([variant=cyan]) .badge{background-color:var(--sgds-cyan-surface-default)}:host([variant=purple]) .badge{background-color:var(--sgds-purple-surface-default)}:host([variant=neutral]) .badge{background-color:var(--sgds-neutral-surface-default)}:host([variant=white]) .badge{background-color:var(--sgds-surface-fixed-light);color:var(--sgds-color-fixed-dark)}:host([variant=accent][outlined]) .badge{background-color:var(--sgds-accent-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-accent-border-color-muted);color:var(--sgds-accent-color-fixed-dark)}:host([variant=success][outlined]) .badge{background-color:var(--sgds-success-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-success-border-color-muted);color:var(--sgds-success-color-fixed-dark)}:host([variant=danger][outlined]) .badge{background-color:var(--sgds-danger-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-danger-border-color-muted);color:var(--sgds-danger-color-fixed-dark)}:host([variant=warning][outlined]) .badge{background-color:var(--sgds-warning-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-warning-border-color-muted);color:var(--sgds-warning-color-fixed-dark)}:host([variant=cyan][outlined]) .badge{background-color:var(--sgds-cyan-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-cyan-border-color-muted);color:var(--sgds-cyan-color-fixed-dark)}:host([variant=purple][outlined]) .badge{background-color:var(--sgds-purple-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-purple-border-color-muted);color:var(--sgds-purple-color-fixed-dark)}:host([variant=neutral][outlined]) .badge{background-color:var(--sgds-neutral-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-neutral-border-color-muted);color:var(--sgds-color-fixed-dark)}:host([variant=white][outlined]) .badge{background-color:var(--sgds-surface-fixed-light);border:var(--sgds-border-width-1) solid var(--sgds-border-color-muted);color:var(--sgds-color-fixed-dark)}sgds-tooltip{display:block;max-width:100%}.badge{align-items:center;background-color:var(--sgds-primary-surface-default);border:var(--sgds-border-width-1) solid var(--sgds-border-color-transparent);border-radius:var(--sgds-border-radius-sm);color:var(--sgds-color-fixed-light);display:inline-flex;font-size:var(--sgds-font-size-label-xs);height:var(--sgds-dimension-24,24px);justify-content:center;line-height:var(--sgds-line-height-3-xs);max-width:var(--sgds-dimension-192);min-width:var(--sgds-dimension-24);padding:var(--sgds-padding-none) var(--sgds-padding-xs)}.badge.outlined{background-color:var(--sgds-primary-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-primary-border-color-muted);color:var(--sgds-primary-color-fixed-dark)}.badge.full-width{max-width:100%}.badge-label{padding:var(--sgds-padding-none) var(--sgds-padding-3-xs)}.badge-dismissible{padding-right:0}.badge-dimissible sgds-close-button{--sgds-close-btn-border-radius:var(--sgds-border-radius-sm)}.badge.truncated .badge-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}slot::slotted(*){color:inherit!important;font-size:inherit!important;font-weight:inherit!important;line-height:inherit!important;margin:inherit!important}`;
9
9
 
10
10
  exports["default"] = css_248z;
11
11
  //# sourceMappingURL=badge.cjs.js.map
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { css } from 'lit';
3
3
 
4
- var css_248z = css`:host{cursor:default;display:inline-flex;max-width:100%}:host([variant=accent]) .badge{background-color:var(--sgds-accent-surface-default)}:host([variant=success]) .badge{background-color:var(--sgds-success-surface-default)}:host([variant=danger]) .badge{background-color:var(--sgds-danger-surface-default)}:host([variant=warning]) .badge{background-color:var(--sgds-warning-surface-default);color:var(--sgds-color-fixed-dark)}:host([variant=cyan]) .badge{background-color:var(--sgds-cyan-surface-default)}:host([variant=purple]) .badge{background-color:var(--sgds-purple-surface-default)}:host([variant=neutral]) .badge{background-color:var(--sgds-neutral-surface-default)}:host([variant=white]) .badge{background-color:var(--sgds-surface-fixed-light);color:var(--sgds-color-fixed-dark)}:host([variant=accent][outlined]) .badge{background-color:var(--sgds-accent-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-accent-border-color-muted);color:var(--sgds-accent-color-fixed-dark)}:host([variant=success][outlined]) .badge{background-color:var(--sgds-success-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-success-border-color-muted);color:var(--sgds-success-color-fixed-dark)}:host([variant=danger][outlined]) .badge{background-color:var(--sgds-danger-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-danger-border-color-muted);color:var(--sgds-danger-color-fixed-dark)}:host([variant=warning][outlined]) .badge{background-color:var(--sgds-warning-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-warning-border-color-muted);color:var(--sgds-warning-color-fixed-dark)}:host([variant=cyan][outlined]) .badge{background-color:var(--sgds-cyan-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-cyan-border-color-muted);color:var(--sgds-cyan-color-fixed-dark)}:host([variant=purple][outlined]) .badge{background-color:var(--sgds-purple-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-purple-border-color-muted);color:var(--sgds-purple-color-fixed-dark)}:host([variant=neutral][outlined]) .badge{background-color:var(--sgds-neutral-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-neutral-border-color-muted);color:var(--sgds-color-fixed-dark)}:host([variant=white][outlined]) .badge{background-color:var(--sgds-surface-fixed-light);border:var(--sgds-border-width-1) solid var(--sgds-border-color-muted);color:var(--sgds-color-fixed-dark)}sgds-tooltip{display:block;max-width:100%}.badge{align-items:center;background-color:var(--sgds-primary-surface-default);border:var(--sgds-border-width-1) solid var(--sgds-border-color-transparent);border-radius:var(--sgds-border-radius-sm);color:var(--sgds-color-fixed-light);display:inline-flex;font-size:var(--sgds-font-size-label-xs);height:var(--sgds-dimension-24,24px);justify-content:center;line-height:var(--sgds-line-height-3-xs);max-width:var(--sgds-dimension-192,192px);min-width:var(--sgds-dimension-24);padding:var(--sgds-padding-none) var(--sgds-padding-xs)}.badge.outlined{background-color:var(--sgds-primary-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-primary-border-color-muted);color:var(--sgds-primary-color-fixed-dark)}.badge.full-width{max-width:100%}.badge-label{overflow:hidden;padding:var(--sgds-padding-none) var(--sgds-padding-3-xs);text-overflow:ellipsis;white-space:nowrap}.badge-dismissible{padding-right:0}.badge-dimissible sgds-close-button{--sgds-close-btn-border-radius:var(--sgds-border-radius-sm)}slot::slotted(*){color:inherit!important;font-size:inherit!important;font-weight:inherit!important;line-height:inherit!important;margin:inherit!important}`;
4
+ var css_248z = css`:host{cursor:default;display:inline-flex;max-width:100%}:host([variant=accent]) .badge{background-color:var(--sgds-accent-surface-default)}:host([variant=success]) .badge{background-color:var(--sgds-success-surface-default)}:host([variant=danger]) .badge{background-color:var(--sgds-danger-surface-default)}:host([variant=warning]) .badge{background-color:var(--sgds-warning-surface-default);color:var(--sgds-color-fixed-dark)}:host([variant=cyan]) .badge{background-color:var(--sgds-cyan-surface-default)}:host([variant=purple]) .badge{background-color:var(--sgds-purple-surface-default)}:host([variant=neutral]) .badge{background-color:var(--sgds-neutral-surface-default)}:host([variant=white]) .badge{background-color:var(--sgds-surface-fixed-light);color:var(--sgds-color-fixed-dark)}:host([variant=accent][outlined]) .badge{background-color:var(--sgds-accent-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-accent-border-color-muted);color:var(--sgds-accent-color-fixed-dark)}:host([variant=success][outlined]) .badge{background-color:var(--sgds-success-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-success-border-color-muted);color:var(--sgds-success-color-fixed-dark)}:host([variant=danger][outlined]) .badge{background-color:var(--sgds-danger-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-danger-border-color-muted);color:var(--sgds-danger-color-fixed-dark)}:host([variant=warning][outlined]) .badge{background-color:var(--sgds-warning-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-warning-border-color-muted);color:var(--sgds-warning-color-fixed-dark)}:host([variant=cyan][outlined]) .badge{background-color:var(--sgds-cyan-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-cyan-border-color-muted);color:var(--sgds-cyan-color-fixed-dark)}:host([variant=purple][outlined]) .badge{background-color:var(--sgds-purple-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-purple-border-color-muted);color:var(--sgds-purple-color-fixed-dark)}:host([variant=neutral][outlined]) .badge{background-color:var(--sgds-neutral-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-neutral-border-color-muted);color:var(--sgds-color-fixed-dark)}:host([variant=white][outlined]) .badge{background-color:var(--sgds-surface-fixed-light);border:var(--sgds-border-width-1) solid var(--sgds-border-color-muted);color:var(--sgds-color-fixed-dark)}sgds-tooltip{display:block;max-width:100%}.badge{align-items:center;background-color:var(--sgds-primary-surface-default);border:var(--sgds-border-width-1) solid var(--sgds-border-color-transparent);border-radius:var(--sgds-border-radius-sm);color:var(--sgds-color-fixed-light);display:inline-flex;font-size:var(--sgds-font-size-label-xs);height:var(--sgds-dimension-24,24px);justify-content:center;line-height:var(--sgds-line-height-3-xs);max-width:var(--sgds-dimension-192);min-width:var(--sgds-dimension-24);padding:var(--sgds-padding-none) var(--sgds-padding-xs)}.badge.outlined{background-color:var(--sgds-primary-surface-muted);border:var(--sgds-border-width-1) solid var(--sgds-primary-border-color-muted);color:var(--sgds-primary-color-fixed-dark)}.badge.full-width{max-width:100%}.badge-label{padding:var(--sgds-padding-none) var(--sgds-padding-3-xs)}.badge-dismissible{padding-right:0}.badge-dimissible sgds-close-button{--sgds-close-btn-border-radius:var(--sgds-border-radius-sm)}.badge.truncated .badge-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}slot::slotted(*){color:inherit!important;font-size:inherit!important;font-weight:inherit!important;line-height:inherit!important;margin:inherit!important}`;
5
5
 
6
6
  export { css_248z as default };
7
7
  //# sourceMappingURL=badge.js.map
@@ -74,11 +74,13 @@ class SgdsBadge extends sgdsElement["default"] {
74
74
  }
75
75
  /**@internal */
76
76
  _handleTruncation() {
77
- var _a;
78
- // check scroll width if its exceeding parent, it reflects truncation has happened
79
- const badgeLabel = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(".badge-label");
80
- if (badgeLabel) {
81
- this.truncated = badgeLabel.scrollWidth > badgeLabel.clientWidth;
77
+ // checking of text height if its exceeding parent, it needs to be truncated
78
+ const badge = this.shadowRoot.querySelector(".badge");
79
+ const badgeLabel = this.shadowRoot.querySelector(".badge-label");
80
+ if (badge && badgeLabel) {
81
+ const labelHeight = badgeLabel.getBoundingClientRect().height;
82
+ const badgeHeight = badge.getBoundingClientRect().height;
83
+ this.truncated = labelHeight > badgeHeight;
82
84
  }
83
85
  }
84
86
  _handleLabelSlotChange(e) {
@@ -93,6 +95,7 @@ class SgdsBadge extends sgdsElement["default"] {
93
95
  [`badge-dismissible`]: this.dismissible,
94
96
  badge: true,
95
97
  outlined: this.outlined,
98
+ truncated: this.truncated,
96
99
  "full-width": this.fullWidth
97
100
  })}"
98
101
  aria-hidden=${this.show ? "false" : "true"}
@@ -154,7 +157,7 @@ tslib.__decorate([
154
157
  watch.watch("show")
155
158
  ], SgdsBadge.prototype, "_handleShowChange", null);
156
159
  tslib.__decorate([
157
- watch.watch("text", { waitUntilFirstUpdate: true })
160
+ watch.watch("text")
158
161
  ], SgdsBadge.prototype, "_handleTruncation", null);
159
162
 
160
163
  exports.SgdsBadge = SgdsBadge;
@@ -1 +1 @@
1
- {"version":3,"file":"sgds-badge.cjs.js","sources":["../../../../src/components/Badge/sgds-badge.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\n\nimport { watch } from \"../../utils/watch\";\nimport badgeStyle from \"./badge.css\";\n\nimport SgdsElement from \"../../base/sgds-element\";\nimport SgdsTooltip from \"../Tooltip/sgds-tooltip\";\nimport SgdsCloseButton from \"../CloseButton/sgds-close-button\";\n\nimport { getTextContent } from \"../../utils/slot\";\n\nexport type BadgeVariant =\n | \"primary\"\n | \"accent\"\n | \"success\"\n | \"danger\"\n | \"warning\"\n | \"cyan\"\n | \"purple\"\n | \"neutral\"\n | \"white\"\n | \"info\";\n\n/**\n * @summary Badges can be used to highlight important bits of information such as labels, notifications & status.\n * When the text exceeds the width, it will be truncated with a tooltip that will be displayed on hover.\n *\n * @slot default - slot for badge\n * @slot icon - The slot for icon to the left of the badge text\n *\n * @event sgds-show - Emitted when the badge appears.\n * @event sgds-hide - Emitted when the badge is starting to close but has not closed.\n * @event sgds-after-show - Emitted after the badge has appeared\n * @event sgds-after-hide - Emitted after the badge has closed\n */\nexport class SgdsBadge extends SgdsElement {\n static styles = [...SgdsElement.styles, badgeStyle];\n\n /**@internal */\n static dependencies = {\n \"sgds-close-button\": SgdsCloseButton,\n \"sgds-tooltip\": SgdsTooltip\n };\n\n /** Controls the appearance of the dismissible badge. This prop only applies when dismissible is true */\n @property({ type: Boolean, reflect: true }) show = false;\n\n /**\n * One or more badge variant combinations.\n * Variants include: `primary`, `accent`, `success`, `danger`, `warning`, `cyan`, `purple`, `neutral`, `white`, `info`.\n *\n * (@deprecated) The `info` variant is deprecated. Use `primary` instead.\n */\n @property({ reflect: true }) variant: BadgeVariant = \"primary\";\n\n /** Manually set the outlined state to false */\n @property({ type: Boolean, reflect: true }) outlined = false;\n\n /** Manually set the dismissible state of the button to `false` */\n @property({ type: Boolean, reflect: true }) dismissible = false;\n\n /** Manually enable full width */\n @property({ type: Boolean, reflect: true }) fullWidth = false;\n\n @state() private truncated = false;\n @state() private text = \"\";\n\n /** Closes the badge */\n public close() {\n this.show = false;\n }\n\n /**@internal */\n @watch(\"show\")\n _handleShowChange() {\n if (this.show) {\n const sgdsShow = this.emit(\"sgds-show\", { cancelable: true });\n if (sgdsShow.defaultPrevented) {\n this.show = false;\n return;\n }\n // animations if any go here\n\n this.emit(\"sgds-after-show\");\n } else {\n const sgdsHide = this.emit(\"sgds-hide\", { cancelable: true });\n if (sgdsHide.defaultPrevented) {\n this.show = true;\n return;\n }\n // animations if any go here\n\n this.emit(\"sgds-after-hide\");\n }\n }\n\n /**@internal */\n @watch(\"text\", { waitUntilFirstUpdate: true })\n _handleTruncation() {\n // check scroll width if its exceeding parent, it reflects truncation has happened\n const badgeLabel = this.shadowRoot?.querySelector(\".badge-label\");\n if (badgeLabel) {\n this.truncated = badgeLabel.scrollWidth > badgeLabel.clientWidth;\n }\n }\n\n private _handleLabelSlotChange(e: Event) {\n this.text = getTextContent(e.target as HTMLSlotElement);\n return;\n }\n\n private _renderBadge() {\n const isDarkCloseButton = this.outlined || this.variant === \"warning\" || this.variant === \"white\";\n\n return html`<div\n class=\" \n ${classMap({\n [`badge-dismissible`]: this.dismissible,\n badge: true,\n outlined: this.outlined,\n \"full-width\": this.fullWidth\n })}\"\n aria-hidden=${this.show ? \"false\" : \"true\"}\n >\n ${!this.dismissible ? html`<slot name=\"icon\"></slot>` : nothing}\n\n <span class=\"badge-label\">\n <slot @slotchange=${this._handleLabelSlotChange}></slot>\n </span>\n\n ${this.dismissible\n ? html`<sgds-close-button\n size=\"sm\"\n aria-label=\"close the badge\"\n @click=${this.close}\n tone=${isDarkCloseButton ? \"fixed-dark\" : \"fixed-light\"}\n ></sgds-close-button>`\n : nothing}\n </div>`;\n }\n\n render() {\n return (this.dismissible && this.show) || !this.dismissible\n ? this.truncated\n ? html`<sgds-tooltip content=${this.text} @sgds-hide=${e => e.stopPropagation()}\n >${this._renderBadge()}</sgds-tooltip\n >`\n : this._renderBadge()\n : nothing;\n }\n}\n\nexport default SgdsBadge;\n"],"names":["SgdsElement","getTextContent","html","classMap","nothing","badgeStyle","SgdsCloseButton","SgdsTooltip","__decorate","property","state","watch"],"mappings":";;;;;;;;;;;;;;;;AAyBA;;;;;;;;;;;AAWG;AACG,MAAO,SAAU,SAAQA,sBAAW,CAAA;AAA1C,IAAA,WAAA,GAAA;;;QAU8C,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;AAEzD;;;;;AAKG;QAC0B,IAAO,CAAA,OAAA,GAAiB,SAAS,CAAC;;QAGnB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;;QAGjB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;;QAGpB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAE7C,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;KAqF5B;;IAlFQ,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;KACnB;;IAID,iBAAiB,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,YAAA,IAAI,QAAQ,CAAC,gBAAgB,EAAE;AAC7B,gBAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;gBAClB,OAAO;aACR;;AAGD,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAC9B;aAAM;AACL,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,YAAA,IAAI,QAAQ,CAAC,gBAAgB,EAAE;AAC7B,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,OAAO;aACR;;AAGD,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAC9B;KACF;;IAID,iBAAiB,GAAA;;;QAEf,MAAM,UAAU,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAC,cAAc,CAAC,CAAC;QAClE,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;SAClE;KACF;AAEO,IAAA,sBAAsB,CAAC,CAAQ,EAAA;QACrC,IAAI,CAAC,IAAI,GAAGC,mBAAc,CAAC,CAAC,CAAC,MAAyB,CAAC,CAAC;QACxD,OAAO;KACR;IAEO,YAAY,GAAA;AAClB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC;AAElG,QAAA,OAAOC,QAAI,CAAA,CAAA;;AAEH,UAAA,EAAAC,oBAAQ,CAAC;AACb,YAAA,CAAC,CAAmB,iBAAA,CAAA,GAAG,IAAI,CAAC,WAAW;AACvC,YAAA,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,IAAI,CAAC,SAAS;SAC7B,CAAC,CAAA;oBACY,IAAI,CAAC,IAAI,GAAG,OAAO,GAAG,MAAM,CAAA;;AAExC,MAAA,EAAA,CAAC,IAAI,CAAC,WAAW,GAAGD,QAAI,CAAA,CAA2B,yBAAA,CAAA,GAAGE,WAAO,CAAA;;;AAGzC,0BAAA,EAAA,IAAI,CAAC,sBAAsB,CAAA;;;AAG/C,MAAA,EAAA,IAAI,CAAC,WAAW;cACdF,QAAI,CAAA,CAAA;;;AAGO,mBAAA,EAAA,IAAI,CAAC,KAAK,CAAA;AACZ,iBAAA,EAAA,iBAAiB,GAAG,YAAY,GAAG,aAAa,CAAA;AACnC,+BAAA,CAAA;AACxB,cAAEE,WAAO,CAAA;WACN,CAAC;KACT;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW;cACvD,IAAI,CAAC,SAAS;AACd,kBAAEF,QAAI,CAAA,CAAA,sBAAA,EAAyB,IAAI,CAAC,IAAI,CAAe,YAAA,EAAA,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAA;eACxE,IAAI,CAAC,YAAY,EAAE,CAAA;AACtB,WAAA,CAAA;AACJ,kBAAE,IAAI,CAAC,YAAY,EAAE;cACrBE,WAAO,CAAC;KACb;;AAjHM,SAAM,CAAA,MAAA,GAAG,CAAC,GAAGJ,sBAAW,CAAC,MAAM,EAAEK,gBAAU,CAArC,CAAuC;AAEpD;AACO,SAAA,CAAA,YAAY,GAAG;AACpB,IAAA,mBAAmB,EAAEC,+BAAe;AACpC,IAAA,cAAc,EAAEC,uBAAW;AAC5B,CAHkB,CAGjB;AAG0CC,gBAAA,CAAA;IAA3CC,sBAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAc,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAQ5BD,gBAAA,CAAA;AAA5B,IAAAC,sBAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAmC,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGnBD,gBAAA,CAAA;IAA3CC,sBAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAkB,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGjBD,gBAAA,CAAA;IAA3CC,sBAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAqB,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGpBD,gBAAA,CAAA;IAA3CC,sBAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAmB,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAE7CD,gBAAA,CAAA;AAAhB,IAAAE,mBAAK,EAAE;AAA2B,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAClBF,gBAAA,CAAA;AAAhB,IAAAE,mBAAK,EAAE;AAAmB,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAS3BF,gBAAA,CAAA;IADCG,WAAK,CAAC,MAAM,CAAC;AAqBb,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA,CAAA;AAIDH,gBAAA,CAAA;IADCG,WAAK,CAAC,MAAM,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;AAO7C,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA;;;;;"}
1
+ {"version":3,"file":"sgds-badge.cjs.js","sources":["../../../../src/components/Badge/sgds-badge.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\n\nimport { watch } from \"../../utils/watch\";\nimport badgeStyle from \"./badge.css\";\n\nimport SgdsElement from \"../../base/sgds-element\";\nimport SgdsTooltip from \"../Tooltip/sgds-tooltip\";\nimport SgdsCloseButton from \"../CloseButton/sgds-close-button\";\n\nimport { getTextContent } from \"../../utils/slot\";\n\nexport type BadgeVariant =\n | \"primary\"\n | \"accent\"\n | \"success\"\n | \"danger\"\n | \"warning\"\n | \"cyan\"\n | \"purple\"\n | \"neutral\"\n | \"white\"\n | \"info\";\n\n/**\n * @summary Badges can be used to highlight important bits of information such as labels, notifications & status.\n * When the text exceeds the width, it will be truncated with a tooltip that will be displayed on hover.\n *\n * @slot default - slot for badge\n * @slot icon - The slot for icon to the left of the badge text\n *\n * @event sgds-show - Emitted when the badge appears.\n * @event sgds-hide - Emitted when the badge is starting to close but has not closed.\n * @event sgds-after-show - Emitted after the badge has appeared\n * @event sgds-after-hide - Emitted after the badge has closed\n */\nexport class SgdsBadge extends SgdsElement {\n static styles = [...SgdsElement.styles, badgeStyle];\n\n /**@internal */\n static dependencies = {\n \"sgds-close-button\": SgdsCloseButton,\n \"sgds-tooltip\": SgdsTooltip\n };\n\n /** Controls the appearance of the dismissible badge. This prop only applies when dismissible is true */\n @property({ type: Boolean, reflect: true }) show = false;\n\n /**\n * One or more badge variant combinations.\n * Variants include: `primary`, `accent`, `success`, `danger`, `warning`, `cyan`, `purple`, `neutral`, `white`, `info`.\n *\n * (@deprecated) The `info` variant is deprecated. Use `primary` instead.\n */\n @property({ reflect: true }) variant: BadgeVariant = \"primary\";\n\n /** Manually set the outlined state to false */\n @property({ type: Boolean, reflect: true }) outlined = false;\n\n /** Manually set the dismissible state of the button to `false` */\n @property({ type: Boolean, reflect: true }) dismissible = false;\n\n /** Manually enable full width */\n @property({ type: Boolean, reflect: true }) fullWidth = false;\n\n @state() private truncated = false;\n @state() private text = \"\";\n\n /** Closes the badge */\n public close() {\n this.show = false;\n }\n\n /**@internal */\n @watch(\"show\")\n _handleShowChange() {\n if (this.show) {\n const sgdsShow = this.emit(\"sgds-show\", { cancelable: true });\n if (sgdsShow.defaultPrevented) {\n this.show = false;\n return;\n }\n // animations if any go here\n\n this.emit(\"sgds-after-show\");\n } else {\n const sgdsHide = this.emit(\"sgds-hide\", { cancelable: true });\n if (sgdsHide.defaultPrevented) {\n this.show = true;\n return;\n }\n // animations if any go here\n\n this.emit(\"sgds-after-hide\");\n }\n }\n\n /**@internal */\n @watch(\"text\")\n _handleTruncation() {\n // checking of text height if its exceeding parent, it needs to be truncated\n const badge = this.shadowRoot.querySelector(\".badge\");\n const badgeLabel = this.shadowRoot.querySelector(\".badge-label\");\n\n if (badge && badgeLabel) {\n const labelHeight = badgeLabel.getBoundingClientRect().height;\n const badgeHeight = badge.getBoundingClientRect().height;\n\n this.truncated = labelHeight > badgeHeight;\n }\n }\n\n private _handleLabelSlotChange(e: Event) {\n this.text = getTextContent(e.target as HTMLSlotElement);\n return;\n }\n\n private _renderBadge() {\n const isDarkCloseButton = this.outlined || this.variant === \"warning\" || this.variant === \"white\";\n\n return html`<div\n class=\" \n ${classMap({\n [`badge-dismissible`]: this.dismissible,\n badge: true,\n outlined: this.outlined,\n truncated: this.truncated,\n \"full-width\": this.fullWidth\n })}\"\n aria-hidden=${this.show ? \"false\" : \"true\"}\n >\n ${!this.dismissible ? html`<slot name=\"icon\"></slot>` : nothing}\n\n <span class=\"badge-label\">\n <slot @slotchange=${this._handleLabelSlotChange}></slot>\n </span>\n\n ${this.dismissible\n ? html`<sgds-close-button\n size=\"sm\"\n aria-label=\"close the badge\"\n @click=${this.close}\n tone=${isDarkCloseButton ? \"fixed-dark\" : \"fixed-light\"}\n ></sgds-close-button>`\n : nothing}\n </div>`;\n }\n\n render() {\n return (this.dismissible && this.show) || !this.dismissible\n ? this.truncated\n ? html`<sgds-tooltip content=${this.text} @sgds-hide=${e => e.stopPropagation()}\n >${this._renderBadge()}</sgds-tooltip\n >`\n : this._renderBadge()\n : nothing;\n }\n}\n\nexport default SgdsBadge;\n"],"names":["SgdsElement","getTextContent","html","classMap","nothing","badgeStyle","SgdsCloseButton","SgdsTooltip","__decorate","property","state","watch"],"mappings":"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"}
@@ -70,11 +70,13 @@ class SgdsBadge extends SgdsElement {
70
70
  }
71
71
  /**@internal */
72
72
  _handleTruncation() {
73
- var _a;
74
- // check scroll width if its exceeding parent, it reflects truncation has happened
75
- const badgeLabel = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(".badge-label");
76
- if (badgeLabel) {
77
- this.truncated = badgeLabel.scrollWidth > badgeLabel.clientWidth;
73
+ // checking of text height if its exceeding parent, it needs to be truncated
74
+ const badge = this.shadowRoot.querySelector(".badge");
75
+ const badgeLabel = this.shadowRoot.querySelector(".badge-label");
76
+ if (badge && badgeLabel) {
77
+ const labelHeight = badgeLabel.getBoundingClientRect().height;
78
+ const badgeHeight = badge.getBoundingClientRect().height;
79
+ this.truncated = labelHeight > badgeHeight;
78
80
  }
79
81
  }
80
82
  _handleLabelSlotChange(e) {
@@ -89,6 +91,7 @@ class SgdsBadge extends SgdsElement {
89
91
  [`badge-dismissible`]: this.dismissible,
90
92
  badge: true,
91
93
  outlined: this.outlined,
94
+ truncated: this.truncated,
92
95
  "full-width": this.fullWidth
93
96
  })}"
94
97
  aria-hidden=${this.show ? "false" : "true"}
@@ -150,7 +153,7 @@ __decorate([
150
153
  watch("show")
151
154
  ], SgdsBadge.prototype, "_handleShowChange", null);
152
155
  __decorate([
153
- watch("text", { waitUntilFirstUpdate: true })
156
+ watch("text")
154
157
  ], SgdsBadge.prototype, "_handleTruncation", null);
155
158
 
156
159
  export { SgdsBadge, SgdsBadge as default };
@@ -1 +1 @@
1
- {"version":3,"file":"sgds-badge.js","sources":["../../../../src/components/Badge/sgds-badge.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\n\nimport { watch } from \"../../utils/watch\";\nimport badgeStyle from \"./badge.css\";\n\nimport SgdsElement from \"../../base/sgds-element\";\nimport SgdsTooltip from \"../Tooltip/sgds-tooltip\";\nimport SgdsCloseButton from \"../CloseButton/sgds-close-button\";\n\nimport { getTextContent } from \"../../utils/slot\";\n\nexport type BadgeVariant =\n | \"primary\"\n | \"accent\"\n | \"success\"\n | \"danger\"\n | \"warning\"\n | \"cyan\"\n | \"purple\"\n | \"neutral\"\n | \"white\"\n | \"info\";\n\n/**\n * @summary Badges can be used to highlight important bits of information such as labels, notifications & status.\n * When the text exceeds the width, it will be truncated with a tooltip that will be displayed on hover.\n *\n * @slot default - slot for badge\n * @slot icon - The slot for icon to the left of the badge text\n *\n * @event sgds-show - Emitted when the badge appears.\n * @event sgds-hide - Emitted when the badge is starting to close but has not closed.\n * @event sgds-after-show - Emitted after the badge has appeared\n * @event sgds-after-hide - Emitted after the badge has closed\n */\nexport class SgdsBadge extends SgdsElement {\n static styles = [...SgdsElement.styles, badgeStyle];\n\n /**@internal */\n static dependencies = {\n \"sgds-close-button\": SgdsCloseButton,\n \"sgds-tooltip\": SgdsTooltip\n };\n\n /** Controls the appearance of the dismissible badge. This prop only applies when dismissible is true */\n @property({ type: Boolean, reflect: true }) show = false;\n\n /**\n * One or more badge variant combinations.\n * Variants include: `primary`, `accent`, `success`, `danger`, `warning`, `cyan`, `purple`, `neutral`, `white`, `info`.\n *\n * (@deprecated) The `info` variant is deprecated. Use `primary` instead.\n */\n @property({ reflect: true }) variant: BadgeVariant = \"primary\";\n\n /** Manually set the outlined state to false */\n @property({ type: Boolean, reflect: true }) outlined = false;\n\n /** Manually set the dismissible state of the button to `false` */\n @property({ type: Boolean, reflect: true }) dismissible = false;\n\n /** Manually enable full width */\n @property({ type: Boolean, reflect: true }) fullWidth = false;\n\n @state() private truncated = false;\n @state() private text = \"\";\n\n /** Closes the badge */\n public close() {\n this.show = false;\n }\n\n /**@internal */\n @watch(\"show\")\n _handleShowChange() {\n if (this.show) {\n const sgdsShow = this.emit(\"sgds-show\", { cancelable: true });\n if (sgdsShow.defaultPrevented) {\n this.show = false;\n return;\n }\n // animations if any go here\n\n this.emit(\"sgds-after-show\");\n } else {\n const sgdsHide = this.emit(\"sgds-hide\", { cancelable: true });\n if (sgdsHide.defaultPrevented) {\n this.show = true;\n return;\n }\n // animations if any go here\n\n this.emit(\"sgds-after-hide\");\n }\n }\n\n /**@internal */\n @watch(\"text\", { waitUntilFirstUpdate: true })\n _handleTruncation() {\n // check scroll width if its exceeding parent, it reflects truncation has happened\n const badgeLabel = this.shadowRoot?.querySelector(\".badge-label\");\n if (badgeLabel) {\n this.truncated = badgeLabel.scrollWidth > badgeLabel.clientWidth;\n }\n }\n\n private _handleLabelSlotChange(e: Event) {\n this.text = getTextContent(e.target as HTMLSlotElement);\n return;\n }\n\n private _renderBadge() {\n const isDarkCloseButton = this.outlined || this.variant === \"warning\" || this.variant === \"white\";\n\n return html`<div\n class=\" \n ${classMap({\n [`badge-dismissible`]: this.dismissible,\n badge: true,\n outlined: this.outlined,\n \"full-width\": this.fullWidth\n })}\"\n aria-hidden=${this.show ? \"false\" : \"true\"}\n >\n ${!this.dismissible ? html`<slot name=\"icon\"></slot>` : nothing}\n\n <span class=\"badge-label\">\n <slot @slotchange=${this._handleLabelSlotChange}></slot>\n </span>\n\n ${this.dismissible\n ? html`<sgds-close-button\n size=\"sm\"\n aria-label=\"close the badge\"\n @click=${this.close}\n tone=${isDarkCloseButton ? \"fixed-dark\" : \"fixed-light\"}\n ></sgds-close-button>`\n : nothing}\n </div>`;\n }\n\n render() {\n return (this.dismissible && this.show) || !this.dismissible\n ? this.truncated\n ? html`<sgds-tooltip content=${this.text} @sgds-hide=${e => e.stopPropagation()}\n >${this._renderBadge()}</sgds-tooltip\n >`\n : this._renderBadge()\n : nothing;\n }\n}\n\nexport default SgdsBadge;\n"],"names":["badgeStyle"],"mappings":"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"}
1
+ {"version":3,"file":"sgds-badge.js","sources":["../../../../src/components/Badge/sgds-badge.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\n\nimport { watch } from \"../../utils/watch\";\nimport badgeStyle from \"./badge.css\";\n\nimport SgdsElement from \"../../base/sgds-element\";\nimport SgdsTooltip from \"../Tooltip/sgds-tooltip\";\nimport SgdsCloseButton from \"../CloseButton/sgds-close-button\";\n\nimport { getTextContent } from \"../../utils/slot\";\n\nexport type BadgeVariant =\n | \"primary\"\n | \"accent\"\n | \"success\"\n | \"danger\"\n | \"warning\"\n | \"cyan\"\n | \"purple\"\n | \"neutral\"\n | \"white\"\n | \"info\";\n\n/**\n * @summary Badges can be used to highlight important bits of information such as labels, notifications & status.\n * When the text exceeds the width, it will be truncated with a tooltip that will be displayed on hover.\n *\n * @slot default - slot for badge\n * @slot icon - The slot for icon to the left of the badge text\n *\n * @event sgds-show - Emitted when the badge appears.\n * @event sgds-hide - Emitted when the badge is starting to close but has not closed.\n * @event sgds-after-show - Emitted after the badge has appeared\n * @event sgds-after-hide - Emitted after the badge has closed\n */\nexport class SgdsBadge extends SgdsElement {\n static styles = [...SgdsElement.styles, badgeStyle];\n\n /**@internal */\n static dependencies = {\n \"sgds-close-button\": SgdsCloseButton,\n \"sgds-tooltip\": SgdsTooltip\n };\n\n /** Controls the appearance of the dismissible badge. This prop only applies when dismissible is true */\n @property({ type: Boolean, reflect: true }) show = false;\n\n /**\n * One or more badge variant combinations.\n * Variants include: `primary`, `accent`, `success`, `danger`, `warning`, `cyan`, `purple`, `neutral`, `white`, `info`.\n *\n * (@deprecated) The `info` variant is deprecated. Use `primary` instead.\n */\n @property({ reflect: true }) variant: BadgeVariant = \"primary\";\n\n /** Manually set the outlined state to false */\n @property({ type: Boolean, reflect: true }) outlined = false;\n\n /** Manually set the dismissible state of the button to `false` */\n @property({ type: Boolean, reflect: true }) dismissible = false;\n\n /** Manually enable full width */\n @property({ type: Boolean, reflect: true }) fullWidth = false;\n\n @state() private truncated = false;\n @state() private text = \"\";\n\n /** Closes the badge */\n public close() {\n this.show = false;\n }\n\n /**@internal */\n @watch(\"show\")\n _handleShowChange() {\n if (this.show) {\n const sgdsShow = this.emit(\"sgds-show\", { cancelable: true });\n if (sgdsShow.defaultPrevented) {\n this.show = false;\n return;\n }\n // animations if any go here\n\n this.emit(\"sgds-after-show\");\n } else {\n const sgdsHide = this.emit(\"sgds-hide\", { cancelable: true });\n if (sgdsHide.defaultPrevented) {\n this.show = true;\n return;\n }\n // animations if any go here\n\n this.emit(\"sgds-after-hide\");\n }\n }\n\n /**@internal */\n @watch(\"text\")\n _handleTruncation() {\n // checking of text height if its exceeding parent, it needs to be truncated\n const badge = this.shadowRoot.querySelector(\".badge\");\n const badgeLabel = this.shadowRoot.querySelector(\".badge-label\");\n\n if (badge && badgeLabel) {\n const labelHeight = badgeLabel.getBoundingClientRect().height;\n const badgeHeight = badge.getBoundingClientRect().height;\n\n this.truncated = labelHeight > badgeHeight;\n }\n }\n\n private _handleLabelSlotChange(e: Event) {\n this.text = getTextContent(e.target as HTMLSlotElement);\n return;\n }\n\n private _renderBadge() {\n const isDarkCloseButton = this.outlined || this.variant === \"warning\" || this.variant === \"white\";\n\n return html`<div\n class=\" \n ${classMap({\n [`badge-dismissible`]: this.dismissible,\n badge: true,\n outlined: this.outlined,\n truncated: this.truncated,\n \"full-width\": this.fullWidth\n })}\"\n aria-hidden=${this.show ? \"false\" : \"true\"}\n >\n ${!this.dismissible ? html`<slot name=\"icon\"></slot>` : nothing}\n\n <span class=\"badge-label\">\n <slot @slotchange=${this._handleLabelSlotChange}></slot>\n </span>\n\n ${this.dismissible\n ? html`<sgds-close-button\n size=\"sm\"\n aria-label=\"close the badge\"\n @click=${this.close}\n tone=${isDarkCloseButton ? \"fixed-dark\" : \"fixed-light\"}\n ></sgds-close-button>`\n : nothing}\n </div>`;\n }\n\n render() {\n return (this.dismissible && this.show) || !this.dismissible\n ? this.truncated\n ? html`<sgds-tooltip content=${this.text} @sgds-hide=${e => e.stopPropagation()}\n >${this._renderBadge()}</sgds-tooltip\n >`\n : this._renderBadge()\n : nothing;\n }\n}\n\nexport default SgdsBadge;\n"],"names":["badgeStyle"],"mappings":";;;;;;;;;;;;AAyBA;;;;;;;;;;;AAWG;AACG,MAAO,SAAU,SAAQ,WAAW,CAAA;AAA1C,IAAA,WAAA,GAAA;;;QAU8C,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;AAEzD;;;;;AAKG;QAC0B,IAAO,CAAA,OAAA,GAAiB,SAAS,CAAC;;QAGnB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;;QAGjB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;;QAGpB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAE7C,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;KA2F5B;;IAxFQ,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;KACnB;;IAID,iBAAiB,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,YAAA,IAAI,QAAQ,CAAC,gBAAgB,EAAE;AAC7B,gBAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;gBAClB,OAAO;aACR;;AAGD,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAC9B;aAAM;AACL,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,YAAA,IAAI,QAAQ,CAAC,gBAAgB,EAAE;AAC7B,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,OAAO;aACR;;AAGD,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAC9B;KACF;;IAID,iBAAiB,GAAA;;QAEf,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;AAEjE,QAAA,IAAI,KAAK,IAAI,UAAU,EAAE;YACvB,MAAM,WAAW,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YAC9D,MAAM,WAAW,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;AAEzD,YAAA,IAAI,CAAC,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;SAC5C;KACF;AAEO,IAAA,sBAAsB,CAAC,CAAQ,EAAA;QACrC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,MAAyB,CAAC,CAAC;QACxD,OAAO;KACR;IAEO,YAAY,GAAA;AAClB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC;AAElG,QAAA,OAAO,IAAI,CAAA,CAAA;;AAEH,UAAA,EAAA,QAAQ,CAAC;AACb,YAAA,CAAC,CAAmB,iBAAA,CAAA,GAAG,IAAI,CAAC,WAAW;AACvC,YAAA,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,SAAS;SAC7B,CAAC,CAAA;oBACY,IAAI,CAAC,IAAI,GAAG,OAAO,GAAG,MAAM,CAAA;;AAExC,MAAA,EAAA,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA,CAA2B,yBAAA,CAAA,GAAG,OAAO,CAAA;;;AAGzC,0BAAA,EAAA,IAAI,CAAC,sBAAsB,CAAA;;;AAG/C,MAAA,EAAA,IAAI,CAAC,WAAW;cACd,IAAI,CAAA,CAAA;;;AAGO,mBAAA,EAAA,IAAI,CAAC,KAAK,CAAA;AACZ,iBAAA,EAAA,iBAAiB,GAAG,YAAY,GAAG,aAAa,CAAA;AACnC,+BAAA,CAAA;AACxB,cAAE,OAAO,CAAA;WACN,CAAC;KACT;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW;cACvD,IAAI,CAAC,SAAS;AACd,kBAAE,IAAI,CAAA,CAAA,sBAAA,EAAyB,IAAI,CAAC,IAAI,CAAe,YAAA,EAAA,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAA;eACxE,IAAI,CAAC,YAAY,EAAE,CAAA;AACtB,WAAA,CAAA;AACJ,kBAAE,IAAI,CAAC,YAAY,EAAE;cACrB,OAAO,CAAC;KACb;;AAvHM,SAAM,CAAA,MAAA,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAEA,QAAU,CAArC,CAAuC;AAEpD;AACO,SAAA,CAAA,YAAY,GAAG;AACpB,IAAA,mBAAmB,EAAE,eAAe;AACpC,IAAA,cAAc,EAAE,WAAW;AAC5B,CAHkB,CAGjB;AAG0C,UAAA,CAAA;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAc,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAQ5B,UAAA,CAAA;AAA5B,IAAA,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAmC,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGnB,UAAA,CAAA;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAkB,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGjB,UAAA,CAAA;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAqB,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGpB,UAAA,CAAA;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAAmB,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAE7C,UAAA,CAAA;AAAhB,IAAA,KAAK,EAAE;AAA2B,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAClB,UAAA,CAAA;AAAhB,IAAA,KAAK,EAAE;AAAmB,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAS3B,UAAA,CAAA;IADC,KAAK,CAAC,MAAM,CAAC;AAqBb,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA,CAAA;AAID,UAAA,CAAA;IADC,KAAK,CAAC,MAAM,CAAC;AAYb,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA;;;;"}
@@ -34,23 +34,40 @@ class DatepickerInput extends sgdsInput.SgdsInput {
34
34
  dateFns.isAfter(date, time.setTimeToNoon(new Date(this.maxDate))));
35
35
  if (invalidDates.length > 0) {
36
36
  this.setInvalid(true);
37
- return this.emit("sgds-invalid-input");
37
+ return this.emit("i-sgds-invalid-input");
38
38
  }
39
39
  if (this.mode === "range" && dateArray.length === 1) {
40
40
  this.setInvalid(true);
41
- return this.emit("sgds-invalid-input");
41
+ return this.emit("i-sgds-invalid-input");
42
42
  }
43
43
  if (invalidDates.length === 0 && dateArray.length > 0) {
44
44
  this.setInvalid(false);
45
- return this.emit("sgds-selectdates-input", { detail: dateArray });
45
+ return this.emit("i-sgds-selectdates-input", { detail: dateArray });
46
46
  }
47
47
  if (dateArray.length === 0 && invalidDates.length === 0) {
48
48
  this.setInvalid(false);
49
- return this.emit("sgds-empty-input");
49
+ return this.emit("i-sgds-empty-input");
50
50
  }
51
51
  };
52
52
  this.type = "text";
53
- this._handleBlur = () => null;
53
+ }
54
+ _handleBlur() {
55
+ const dates = this.mask.value.split(" - ");
56
+ const noEmptyDates = dates.filter(d => d !== this.dateFormat);
57
+ const dateArray = noEmptyDates.map(date => time.setTimeToNoon(dateFns.parse(date, time.DATE_PATTERNS[this.dateFormat].fnsPattern, new Date())));
58
+ const invalidDates = dateArray.filter(date => !dateFns.isValid(date) ||
59
+ dateFns.isBefore(date, new Date(0, 0, 1)) ||
60
+ dateFns.isBefore(date, time.setTimeToNoon(new Date(this.minDate))) ||
61
+ dateFns.isAfter(date, time.setTimeToNoon(new Date(this.maxDate))));
62
+ // Only clear if the mask is complete AND there are invalid dates
63
+ // This clears complete but invalid dates like "20/20/2026"
64
+ // Incomplete dates remain in the input as-is (validation only runs on complete dates)
65
+ if (this.mask.masked.isComplete && invalidDates.length > 0 && dateArray.length > 0) {
66
+ this.value = "";
67
+ this.mask.value = "";
68
+ this.setInvalid(false);
69
+ }
70
+ this.emit("sgds-blur");
54
71
  }
55
72
  async _handleChange(e) {
56
73
  this.value = this.input.value;
@@ -103,7 +120,7 @@ class DatepickerInput extends sgdsInput.SgdsInput {
103
120
  this.mask = IMask__default["default"](shadowInput, maskOptions);
104
121
  this.mask.on("accept", () => {
105
122
  this.value = this.mask.masked.value;
106
- this.emit("sgds-mask-input-change", { detail: this.value });
123
+ this.emit("i-sgds-mask-input-change", { detail: this.value });
107
124
  });
108
125
  /**
109
126
  * Validation after date is complete
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker-input.cjs.js","sources":["../../../../src/components/Datepicker/datepicker-input.ts"],"sourcesContent":["import { isAfter, isBefore, isValid, parse } from \"date-fns\";\nimport IMask, { InputMask } from \"imask\";\nimport { html, PropertyValueMap } from \"lit\";\nimport { property, queryAsync } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DATE_PATTERNS, setTimeToNoon } from \"../../utils/time\";\nimport { SgdsInput } from \"../Input/sgds-input\";\nimport datepickerInputStyles from \"./datepicker-input.css\";\nexport type DateFormat = \"MM/DD/YYYY\" | \"DD/MM/YYYY\" | \"YYYY/MM/DD\";\n\nexport class DatepickerInput extends SgdsInput {\n static styles = [...SgdsInput.styles, datepickerInputStyles];\n /** Date format reflected on input */\n private dateFormat = \"DD/MM/YYYY\";\n\n /** ISO date string to set the lowest allowable date value. e.g. \"2016-05-19T12:00:00.000Z\" */\n @property({ type: String }) minDate: string;\n\n /** ISO date string to set the highest allowable date value. e.g. \"2016-05-19T12:00:00.000Z\" */\n @property({ type: String }) maxDate: string;\n\n /** Changes DatePicker to single date selection or range date selection */\n @property({ type: String, reflect: true }) mode: \"single\" | \"range\" = \"single\";\n\n @queryAsync(\"input\")\n shadowInput: Promise<HTMLInputElement>;\n\n private mask: InputMask;\n constructor() {\n super();\n this.type = \"text\";\n this._handleBlur = () => null;\n }\n protected override async _handleChange(e: Event) {\n this.value = this.input.value;\n this.emit(\"sgds-change\");\n super._mixinHandleChange(e);\n await this._validateInput();\n }\n\n async firstUpdated(changedProperties: PropertyValueMap<this>) {\n super.firstUpdated(changedProperties);\n this._applyInputMask(this.dateFormat);\n }\n private async _applyInputMask(dateFormat: string) {\n const shadowInput = await this.shadowInput;\n const imPattern =\n this.mode === \"single\" ? DATE_PATTERNS[dateFormat].imPattern : DATE_PATTERNS[dateFormat].imRangePattern;\n const blocks = {\n d: { mask: IMask.MaskedRange, placeholderChar: \"D\", from: 0, to: 9, maxLength: 1 },\n m: { mask: IMask.MaskedRange, placeholderChar: \"M\", from: 0, to: 9, maxLength: 1 },\n y: { mask: IMask.MaskedRange, placeholderChar: \"Y\", from: 0, to: 9, maxLength: 1 },\n D: { mask: IMask.MaskedRange, placeholderChar: \"D\", from: 0, to: 9, maxLength: 1 },\n M: { mask: IMask.MaskedRange, placeholderChar: \"M\", from: 0, to: 9, maxLength: 1 },\n Y: { mask: IMask.MaskedRange, placeholderChar: \"Y\", from: 0, to: 9, maxLength: 1 }\n };\n const maskOptions = {\n mask: imPattern,\n pattern: imPattern,\n eager: true,\n overwrite: true,\n // define str -> date convertion\n parse: function (str: string) {\n const dates = str.split(\" - \");\n return dates.map(date => parse(date, DATE_PATTERNS[dateFormat].fnsPattern, new Date()));\n },\n format: function (dateArr: Date[]) {\n const dateStrings = dateArr.map(date => {\n let dayStr: string,\n monthStr = \"\";\n const day = date.getDate();\n const month = date.getMonth() + 1;\n const year = date.getFullYear();\n\n if (day < 10) dayStr = \"0\" + day;\n if (month < 10) monthStr = \"0\" + month;\n\n return [dayStr, monthStr, year].join(\"/\");\n });\n return dateStrings.join(\" - \");\n },\n lazy: false,\n blocks\n };\n\n this.mask = IMask(shadowInput, maskOptions);\n this.mask.on(\"accept\", () => {\n this.value = this.mask.masked.value;\n this.emit(\"sgds-mask-input-change\", { detail: this.value });\n });\n /**\n * Validation after date is complete\n */\n this.mask.on(\"complete\", this._validateInput);\n }\n public updateMaskValue() {\n this.mask?.updateValue();\n }\n private _validateInput = async () => {\n const dates = this.mask.value.split(\" - \");\n const noEmptyDates = dates.filter(d => d !== this.dateFormat);\n const dateArray: Date[] | string[] = noEmptyDates.map(date =>\n setTimeToNoon(parse(date, DATE_PATTERNS[this.dateFormat].fnsPattern, new Date()))\n );\n const invalidDates = dateArray.filter(\n date =>\n !isValid(date) ||\n isBefore(date, new Date(0, 0, 1)) ||\n isBefore(date, setTimeToNoon(new Date(this.minDate))) ||\n isAfter(date, setTimeToNoon(new Date(this.maxDate)))\n );\n\n if (invalidDates.length > 0) {\n this.setInvalid(true);\n return this.emit(\"sgds-invalid-input\");\n }\n if (this.mode === \"range\" && dateArray.length === 1) {\n this.setInvalid(true);\n return this.emit(\"sgds-invalid-input\");\n }\n if (invalidDates.length === 0 && dateArray.length > 0) {\n this.setInvalid(false);\n return this.emit(\"sgds-selectdates-input\", { detail: dateArray });\n }\n if (dateArray.length === 0 && invalidDates.length === 0) {\n this.setInvalid(false);\n return this.emit(\"sgds-empty-input\");\n }\n };\n\n public destroyInputMask() {\n this.mask?.destroy();\n }\n public async applyInputMask() {\n return await this._applyInputMask(this.dateFormat);\n }\n public async focus() {\n const input = await this.shadowInput;\n return input.focus();\n }\n render() {\n return html`\n <div\n class=\"form-control-container ${classMap({\n disabled: this.disabled\n })}\"\n >\n ${this._renderLabel()}\n <div class=\"datepicker-input-container\">\n ${this._renderInput()}\n <slot name=\"calendar-btn\"></slot>\n </div>\n ${this._renderFeedback()}\n </div>\n `;\n }\n}\n\nexport default DatepickerInput;\n"],"names":["SgdsInput","setTimeToNoon","parse","DATE_PATTERNS","isValid","isBefore","isAfter","IMask","html","classMap","datepickerInputStyles","__decorate","property","queryAsync"],"mappings":"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"}
1
+ {"version":3,"file":"datepicker-input.cjs.js","sources":["../../../../src/components/Datepicker/datepicker-input.ts"],"sourcesContent":["import { isAfter, isBefore, isValid, parse } from \"date-fns\";\nimport IMask, { InputMask } from \"imask\";\nimport { html, PropertyValueMap } from \"lit\";\nimport { property, queryAsync } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DATE_PATTERNS, setTimeToNoon } from \"../../utils/time\";\nimport { SgdsInput } from \"../Input/sgds-input\";\nimport datepickerInputStyles from \"./datepicker-input.css\";\nexport type DateFormat = \"MM/DD/YYYY\" | \"DD/MM/YYYY\" | \"YYYY/MM/DD\";\n\nexport class DatepickerInput extends SgdsInput {\n static styles = [...SgdsInput.styles, datepickerInputStyles];\n /** Date format reflected on input */\n private dateFormat = \"DD/MM/YYYY\";\n\n /** ISO date string to set the lowest allowable date value. e.g. \"2016-05-19T12:00:00.000Z\" */\n @property({ type: String }) minDate: string;\n\n /** ISO date string to set the highest allowable date value. e.g. \"2016-05-19T12:00:00.000Z\" */\n @property({ type: String }) maxDate: string;\n\n /** Changes DatePicker to single date selection or range date selection */\n @property({ type: String, reflect: true }) mode: \"single\" | \"range\" = \"single\";\n\n @queryAsync(\"input\")\n shadowInput: Promise<HTMLInputElement>;\n\n private mask: InputMask;\n constructor() {\n super();\n this.type = \"text\";\n }\n\n protected override _handleBlur() {\n const dates = this.mask.value.split(\" - \");\n const noEmptyDates = dates.filter(d => d !== this.dateFormat);\n const dateArray: Date[] | string[] = noEmptyDates.map(date =>\n setTimeToNoon(parse(date, DATE_PATTERNS[this.dateFormat].fnsPattern, new Date()))\n );\n const invalidDates = dateArray.filter(\n date =>\n !isValid(date) ||\n isBefore(date, new Date(0, 0, 1)) ||\n isBefore(date, setTimeToNoon(new Date(this.minDate))) ||\n isAfter(date, setTimeToNoon(new Date(this.maxDate)))\n );\n\n // Only clear if the mask is complete AND there are invalid dates\n // This clears complete but invalid dates like \"20/20/2026\"\n // Incomplete dates remain in the input as-is (validation only runs on complete dates)\n if (this.mask.masked.isComplete && invalidDates.length > 0 && dateArray.length > 0) {\n this.value = \"\";\n this.mask.value = \"\";\n this.setInvalid(false);\n }\n\n this.emit(\"sgds-blur\");\n }\n\n protected override async _handleChange(e: Event) {\n this.value = this.input.value;\n this.emit(\"sgds-change\");\n super._mixinHandleChange(e);\n await this._validateInput();\n }\n\n async firstUpdated(changedProperties: PropertyValueMap<this>) {\n super.firstUpdated(changedProperties);\n this._applyInputMask(this.dateFormat);\n }\n private async _applyInputMask(dateFormat: string) {\n const shadowInput = await this.shadowInput;\n const imPattern =\n this.mode === \"single\" ? DATE_PATTERNS[dateFormat].imPattern : DATE_PATTERNS[dateFormat].imRangePattern;\n const blocks = {\n d: { mask: IMask.MaskedRange, placeholderChar: \"D\", from: 0, to: 9, maxLength: 1 },\n m: { mask: IMask.MaskedRange, placeholderChar: \"M\", from: 0, to: 9, maxLength: 1 },\n y: { mask: IMask.MaskedRange, placeholderChar: \"Y\", from: 0, to: 9, maxLength: 1 },\n D: { mask: IMask.MaskedRange, placeholderChar: \"D\", from: 0, to: 9, maxLength: 1 },\n M: { mask: IMask.MaskedRange, placeholderChar: \"M\", from: 0, to: 9, maxLength: 1 },\n Y: { mask: IMask.MaskedRange, placeholderChar: \"Y\", from: 0, to: 9, maxLength: 1 }\n };\n const maskOptions = {\n mask: imPattern,\n pattern: imPattern,\n eager: true,\n overwrite: true,\n // define str -> date convertion\n parse: function (str: string) {\n const dates = str.split(\" - \");\n return dates.map(date => parse(date, DATE_PATTERNS[dateFormat].fnsPattern, new Date()));\n },\n format: function (dateArr: Date[]) {\n const dateStrings = dateArr.map(date => {\n let dayStr: string,\n monthStr = \"\";\n const day = date.getDate();\n const month = date.getMonth() + 1;\n const year = date.getFullYear();\n\n if (day < 10) dayStr = \"0\" + day;\n if (month < 10) monthStr = \"0\" + month;\n\n return [dayStr, monthStr, year].join(\"/\");\n });\n return dateStrings.join(\" - \");\n },\n lazy: false,\n blocks\n };\n\n this.mask = IMask(shadowInput, maskOptions);\n this.mask.on(\"accept\", () => {\n this.value = this.mask.masked.value;\n this.emit(\"i-sgds-mask-input-change\", { detail: this.value });\n });\n /**\n * Validation after date is complete\n */\n this.mask.on(\"complete\", this._validateInput);\n }\n public updateMaskValue() {\n this.mask?.updateValue();\n }\n private _validateInput = async () => {\n const dates = this.mask.value.split(\" - \");\n const noEmptyDates = dates.filter(d => d !== this.dateFormat);\n const dateArray: Date[] | string[] = noEmptyDates.map(date =>\n setTimeToNoon(parse(date, DATE_PATTERNS[this.dateFormat].fnsPattern, new Date()))\n );\n const invalidDates = dateArray.filter(\n date =>\n !isValid(date) ||\n isBefore(date, new Date(0, 0, 1)) ||\n isBefore(date, setTimeToNoon(new Date(this.minDate))) ||\n isAfter(date, setTimeToNoon(new Date(this.maxDate)))\n );\n\n if (invalidDates.length > 0) {\n this.setInvalid(true);\n return this.emit(\"i-sgds-invalid-input\");\n }\n if (this.mode === \"range\" && dateArray.length === 1) {\n this.setInvalid(true);\n return this.emit(\"i-sgds-invalid-input\");\n }\n if (invalidDates.length === 0 && dateArray.length > 0) {\n this.setInvalid(false);\n return this.emit(\"i-sgds-selectdates-input\", { detail: dateArray });\n }\n if (dateArray.length === 0 && invalidDates.length === 0) {\n this.setInvalid(false);\n return this.emit(\"i-sgds-empty-input\");\n }\n };\n\n public destroyInputMask() {\n this.mask?.destroy();\n }\n public async applyInputMask() {\n return await this._applyInputMask(this.dateFormat);\n }\n public async focus() {\n const input = await this.shadowInput;\n return input.focus();\n }\n render() {\n return html`\n <div\n class=\"form-control-container ${classMap({\n disabled: this.disabled\n })}\"\n >\n ${this._renderLabel()}\n <div class=\"datepicker-input-container\">\n ${this._renderInput()}\n <slot name=\"calendar-btn\"></slot>\n </div>\n ${this._renderFeedback()}\n </div>\n `;\n }\n}\n\nexport default DatepickerInput;\n"],"names":["SgdsInput","setTimeToNoon","parse","DATE_PATTERNS","isValid","isBefore","isAfter","IMask","html","classMap","datepickerInputStyles","__decorate","property","queryAsync"],"mappings":"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"}
@@ -26,23 +26,40 @@ class DatepickerInput extends SgdsInput {
26
26
  isAfter(date, setTimeToNoon(new Date(this.maxDate))));
27
27
  if (invalidDates.length > 0) {
28
28
  this.setInvalid(true);
29
- return this.emit("sgds-invalid-input");
29
+ return this.emit("i-sgds-invalid-input");
30
30
  }
31
31
  if (this.mode === "range" && dateArray.length === 1) {
32
32
  this.setInvalid(true);
33
- return this.emit("sgds-invalid-input");
33
+ return this.emit("i-sgds-invalid-input");
34
34
  }
35
35
  if (invalidDates.length === 0 && dateArray.length > 0) {
36
36
  this.setInvalid(false);
37
- return this.emit("sgds-selectdates-input", { detail: dateArray });
37
+ return this.emit("i-sgds-selectdates-input", { detail: dateArray });
38
38
  }
39
39
  if (dateArray.length === 0 && invalidDates.length === 0) {
40
40
  this.setInvalid(false);
41
- return this.emit("sgds-empty-input");
41
+ return this.emit("i-sgds-empty-input");
42
42
  }
43
43
  };
44
44
  this.type = "text";
45
- this._handleBlur = () => null;
45
+ }
46
+ _handleBlur() {
47
+ const dates = this.mask.value.split(" - ");
48
+ const noEmptyDates = dates.filter(d => d !== this.dateFormat);
49
+ const dateArray = noEmptyDates.map(date => setTimeToNoon(parse(date, DATE_PATTERNS[this.dateFormat].fnsPattern, new Date())));
50
+ const invalidDates = dateArray.filter(date => !isValid(date) ||
51
+ isBefore(date, new Date(0, 0, 1)) ||
52
+ isBefore(date, setTimeToNoon(new Date(this.minDate))) ||
53
+ isAfter(date, setTimeToNoon(new Date(this.maxDate))));
54
+ // Only clear if the mask is complete AND there are invalid dates
55
+ // This clears complete but invalid dates like "20/20/2026"
56
+ // Incomplete dates remain in the input as-is (validation only runs on complete dates)
57
+ if (this.mask.masked.isComplete && invalidDates.length > 0 && dateArray.length > 0) {
58
+ this.value = "";
59
+ this.mask.value = "";
60
+ this.setInvalid(false);
61
+ }
62
+ this.emit("sgds-blur");
46
63
  }
47
64
  async _handleChange(e) {
48
65
  this.value = this.input.value;
@@ -95,7 +112,7 @@ class DatepickerInput extends SgdsInput {
95
112
  this.mask = IMask(shadowInput, maskOptions);
96
113
  this.mask.on("accept", () => {
97
114
  this.value = this.mask.masked.value;
98
- this.emit("sgds-mask-input-change", { detail: this.value });
115
+ this.emit("i-sgds-mask-input-change", { detail: this.value });
99
116
  });
100
117
  /**
101
118
  * Validation after date is complete
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker-input.js","sources":["../../../../src/components/Datepicker/datepicker-input.ts"],"sourcesContent":["import { isAfter, isBefore, isValid, parse } from \"date-fns\";\nimport IMask, { InputMask } from \"imask\";\nimport { html, PropertyValueMap } from \"lit\";\nimport { property, queryAsync } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DATE_PATTERNS, setTimeToNoon } from \"../../utils/time\";\nimport { SgdsInput } from \"../Input/sgds-input\";\nimport datepickerInputStyles from \"./datepicker-input.css\";\nexport type DateFormat = \"MM/DD/YYYY\" | \"DD/MM/YYYY\" | \"YYYY/MM/DD\";\n\nexport class DatepickerInput extends SgdsInput {\n static styles = [...SgdsInput.styles, datepickerInputStyles];\n /** Date format reflected on input */\n private dateFormat = \"DD/MM/YYYY\";\n\n /** ISO date string to set the lowest allowable date value. e.g. \"2016-05-19T12:00:00.000Z\" */\n @property({ type: String }) minDate: string;\n\n /** ISO date string to set the highest allowable date value. e.g. \"2016-05-19T12:00:00.000Z\" */\n @property({ type: String }) maxDate: string;\n\n /** Changes DatePicker to single date selection or range date selection */\n @property({ type: String, reflect: true }) mode: \"single\" | \"range\" = \"single\";\n\n @queryAsync(\"input\")\n shadowInput: Promise<HTMLInputElement>;\n\n private mask: InputMask;\n constructor() {\n super();\n this.type = \"text\";\n this._handleBlur = () => null;\n }\n protected override async _handleChange(e: Event) {\n this.value = this.input.value;\n this.emit(\"sgds-change\");\n super._mixinHandleChange(e);\n await this._validateInput();\n }\n\n async firstUpdated(changedProperties: PropertyValueMap<this>) {\n super.firstUpdated(changedProperties);\n this._applyInputMask(this.dateFormat);\n }\n private async _applyInputMask(dateFormat: string) {\n const shadowInput = await this.shadowInput;\n const imPattern =\n this.mode === \"single\" ? DATE_PATTERNS[dateFormat].imPattern : DATE_PATTERNS[dateFormat].imRangePattern;\n const blocks = {\n d: { mask: IMask.MaskedRange, placeholderChar: \"D\", from: 0, to: 9, maxLength: 1 },\n m: { mask: IMask.MaskedRange, placeholderChar: \"M\", from: 0, to: 9, maxLength: 1 },\n y: { mask: IMask.MaskedRange, placeholderChar: \"Y\", from: 0, to: 9, maxLength: 1 },\n D: { mask: IMask.MaskedRange, placeholderChar: \"D\", from: 0, to: 9, maxLength: 1 },\n M: { mask: IMask.MaskedRange, placeholderChar: \"M\", from: 0, to: 9, maxLength: 1 },\n Y: { mask: IMask.MaskedRange, placeholderChar: \"Y\", from: 0, to: 9, maxLength: 1 }\n };\n const maskOptions = {\n mask: imPattern,\n pattern: imPattern,\n eager: true,\n overwrite: true,\n // define str -> date convertion\n parse: function (str: string) {\n const dates = str.split(\" - \");\n return dates.map(date => parse(date, DATE_PATTERNS[dateFormat].fnsPattern, new Date()));\n },\n format: function (dateArr: Date[]) {\n const dateStrings = dateArr.map(date => {\n let dayStr: string,\n monthStr = \"\";\n const day = date.getDate();\n const month = date.getMonth() + 1;\n const year = date.getFullYear();\n\n if (day < 10) dayStr = \"0\" + day;\n if (month < 10) monthStr = \"0\" + month;\n\n return [dayStr, monthStr, year].join(\"/\");\n });\n return dateStrings.join(\" - \");\n },\n lazy: false,\n blocks\n };\n\n this.mask = IMask(shadowInput, maskOptions);\n this.mask.on(\"accept\", () => {\n this.value = this.mask.masked.value;\n this.emit(\"sgds-mask-input-change\", { detail: this.value });\n });\n /**\n * Validation after date is complete\n */\n this.mask.on(\"complete\", this._validateInput);\n }\n public updateMaskValue() {\n this.mask?.updateValue();\n }\n private _validateInput = async () => {\n const dates = this.mask.value.split(\" - \");\n const noEmptyDates = dates.filter(d => d !== this.dateFormat);\n const dateArray: Date[] | string[] = noEmptyDates.map(date =>\n setTimeToNoon(parse(date, DATE_PATTERNS[this.dateFormat].fnsPattern, new Date()))\n );\n const invalidDates = dateArray.filter(\n date =>\n !isValid(date) ||\n isBefore(date, new Date(0, 0, 1)) ||\n isBefore(date, setTimeToNoon(new Date(this.minDate))) ||\n isAfter(date, setTimeToNoon(new Date(this.maxDate)))\n );\n\n if (invalidDates.length > 0) {\n this.setInvalid(true);\n return this.emit(\"sgds-invalid-input\");\n }\n if (this.mode === \"range\" && dateArray.length === 1) {\n this.setInvalid(true);\n return this.emit(\"sgds-invalid-input\");\n }\n if (invalidDates.length === 0 && dateArray.length > 0) {\n this.setInvalid(false);\n return this.emit(\"sgds-selectdates-input\", { detail: dateArray });\n }\n if (dateArray.length === 0 && invalidDates.length === 0) {\n this.setInvalid(false);\n return this.emit(\"sgds-empty-input\");\n }\n };\n\n public destroyInputMask() {\n this.mask?.destroy();\n }\n public async applyInputMask() {\n return await this._applyInputMask(this.dateFormat);\n }\n public async focus() {\n const input = await this.shadowInput;\n return input.focus();\n }\n render() {\n return html`\n <div\n class=\"form-control-container ${classMap({\n disabled: this.disabled\n })}\"\n >\n ${this._renderLabel()}\n <div class=\"datepicker-input-container\">\n ${this._renderInput()}\n <slot name=\"calendar-btn\"></slot>\n </div>\n ${this._renderFeedback()}\n </div>\n `;\n }\n}\n\nexport default DatepickerInput;\n"],"names":["datepickerInputStyles"],"mappings":"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"}
1
+ {"version":3,"file":"datepicker-input.js","sources":["../../../../src/components/Datepicker/datepicker-input.ts"],"sourcesContent":["import { isAfter, isBefore, isValid, parse } from \"date-fns\";\nimport IMask, { InputMask } from \"imask\";\nimport { html, PropertyValueMap } from \"lit\";\nimport { property, queryAsync } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DATE_PATTERNS, setTimeToNoon } from \"../../utils/time\";\nimport { SgdsInput } from \"../Input/sgds-input\";\nimport datepickerInputStyles from \"./datepicker-input.css\";\nexport type DateFormat = \"MM/DD/YYYY\" | \"DD/MM/YYYY\" | \"YYYY/MM/DD\";\n\nexport class DatepickerInput extends SgdsInput {\n static styles = [...SgdsInput.styles, datepickerInputStyles];\n /** Date format reflected on input */\n private dateFormat = \"DD/MM/YYYY\";\n\n /** ISO date string to set the lowest allowable date value. e.g. \"2016-05-19T12:00:00.000Z\" */\n @property({ type: String }) minDate: string;\n\n /** ISO date string to set the highest allowable date value. e.g. \"2016-05-19T12:00:00.000Z\" */\n @property({ type: String }) maxDate: string;\n\n /** Changes DatePicker to single date selection or range date selection */\n @property({ type: String, reflect: true }) mode: \"single\" | \"range\" = \"single\";\n\n @queryAsync(\"input\")\n shadowInput: Promise<HTMLInputElement>;\n\n private mask: InputMask;\n constructor() {\n super();\n this.type = \"text\";\n }\n\n protected override _handleBlur() {\n const dates = this.mask.value.split(\" - \");\n const noEmptyDates = dates.filter(d => d !== this.dateFormat);\n const dateArray: Date[] | string[] = noEmptyDates.map(date =>\n setTimeToNoon(parse(date, DATE_PATTERNS[this.dateFormat].fnsPattern, new Date()))\n );\n const invalidDates = dateArray.filter(\n date =>\n !isValid(date) ||\n isBefore(date, new Date(0, 0, 1)) ||\n isBefore(date, setTimeToNoon(new Date(this.minDate))) ||\n isAfter(date, setTimeToNoon(new Date(this.maxDate)))\n );\n\n // Only clear if the mask is complete AND there are invalid dates\n // This clears complete but invalid dates like \"20/20/2026\"\n // Incomplete dates remain in the input as-is (validation only runs on complete dates)\n if (this.mask.masked.isComplete && invalidDates.length > 0 && dateArray.length > 0) {\n this.value = \"\";\n this.mask.value = \"\";\n this.setInvalid(false);\n }\n\n this.emit(\"sgds-blur\");\n }\n\n protected override async _handleChange(e: Event) {\n this.value = this.input.value;\n this.emit(\"sgds-change\");\n super._mixinHandleChange(e);\n await this._validateInput();\n }\n\n async firstUpdated(changedProperties: PropertyValueMap<this>) {\n super.firstUpdated(changedProperties);\n this._applyInputMask(this.dateFormat);\n }\n private async _applyInputMask(dateFormat: string) {\n const shadowInput = await this.shadowInput;\n const imPattern =\n this.mode === \"single\" ? DATE_PATTERNS[dateFormat].imPattern : DATE_PATTERNS[dateFormat].imRangePattern;\n const blocks = {\n d: { mask: IMask.MaskedRange, placeholderChar: \"D\", from: 0, to: 9, maxLength: 1 },\n m: { mask: IMask.MaskedRange, placeholderChar: \"M\", from: 0, to: 9, maxLength: 1 },\n y: { mask: IMask.MaskedRange, placeholderChar: \"Y\", from: 0, to: 9, maxLength: 1 },\n D: { mask: IMask.MaskedRange, placeholderChar: \"D\", from: 0, to: 9, maxLength: 1 },\n M: { mask: IMask.MaskedRange, placeholderChar: \"M\", from: 0, to: 9, maxLength: 1 },\n Y: { mask: IMask.MaskedRange, placeholderChar: \"Y\", from: 0, to: 9, maxLength: 1 }\n };\n const maskOptions = {\n mask: imPattern,\n pattern: imPattern,\n eager: true,\n overwrite: true,\n // define str -> date convertion\n parse: function (str: string) {\n const dates = str.split(\" - \");\n return dates.map(date => parse(date, DATE_PATTERNS[dateFormat].fnsPattern, new Date()));\n },\n format: function (dateArr: Date[]) {\n const dateStrings = dateArr.map(date => {\n let dayStr: string,\n monthStr = \"\";\n const day = date.getDate();\n const month = date.getMonth() + 1;\n const year = date.getFullYear();\n\n if (day < 10) dayStr = \"0\" + day;\n if (month < 10) monthStr = \"0\" + month;\n\n return [dayStr, monthStr, year].join(\"/\");\n });\n return dateStrings.join(\" - \");\n },\n lazy: false,\n blocks\n };\n\n this.mask = IMask(shadowInput, maskOptions);\n this.mask.on(\"accept\", () => {\n this.value = this.mask.masked.value;\n this.emit(\"i-sgds-mask-input-change\", { detail: this.value });\n });\n /**\n * Validation after date is complete\n */\n this.mask.on(\"complete\", this._validateInput);\n }\n public updateMaskValue() {\n this.mask?.updateValue();\n }\n private _validateInput = async () => {\n const dates = this.mask.value.split(\" - \");\n const noEmptyDates = dates.filter(d => d !== this.dateFormat);\n const dateArray: Date[] | string[] = noEmptyDates.map(date =>\n setTimeToNoon(parse(date, DATE_PATTERNS[this.dateFormat].fnsPattern, new Date()))\n );\n const invalidDates = dateArray.filter(\n date =>\n !isValid(date) ||\n isBefore(date, new Date(0, 0, 1)) ||\n isBefore(date, setTimeToNoon(new Date(this.minDate))) ||\n isAfter(date, setTimeToNoon(new Date(this.maxDate)))\n );\n\n if (invalidDates.length > 0) {\n this.setInvalid(true);\n return this.emit(\"i-sgds-invalid-input\");\n }\n if (this.mode === \"range\" && dateArray.length === 1) {\n this.setInvalid(true);\n return this.emit(\"i-sgds-invalid-input\");\n }\n if (invalidDates.length === 0 && dateArray.length > 0) {\n this.setInvalid(false);\n return this.emit(\"i-sgds-selectdates-input\", { detail: dateArray });\n }\n if (dateArray.length === 0 && invalidDates.length === 0) {\n this.setInvalid(false);\n return this.emit(\"i-sgds-empty-input\");\n }\n };\n\n public destroyInputMask() {\n this.mask?.destroy();\n }\n public async applyInputMask() {\n return await this._applyInputMask(this.dateFormat);\n }\n public async focus() {\n const input = await this.shadowInput;\n return input.focus();\n }\n render() {\n return html`\n <div\n class=\"form-control-container ${classMap({\n disabled: this.disabled\n })}\"\n >\n ${this._renderLabel()}\n <div class=\"datepicker-input-container\">\n ${this._renderInput()}\n <slot name=\"calendar-btn\"></slot>\n </div>\n ${this._renderFeedback()}\n </div>\n `;\n }\n}\n\nexport default DatepickerInput;\n"],"names":["datepickerInputStyles"],"mappings":"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"}
@@ -166,8 +166,8 @@ class SgdsDatepicker extends validatorMixin.SgdsFormValidatorMixin(dropdownEleme
166
166
  this.addEventListener("sgds-selectmonth", this._handleSelectMonth);
167
167
  this.addEventListener("sgds-selectyear", this._handleSelectYear);
168
168
  this.addEventListener("sgds-selectdates", this._handleSelectDatesAndClose);
169
- this.addEventListener("sgds-selectdates-input", this._handleSelectDatesInput);
170
- this.addEventListener("sgds-empty-input", this._handleEmptyInput);
169
+ this.addEventListener("i-sgds-selectdates-input", this._handleSelectDatesInput);
170
+ this.addEventListener("i-sgds-empty-input", this._handleEmptyInput);
171
171
  this.addEventListener("keydown", this._handleTab);
172
172
  this.addEventListener("sgds-hide", this._handleCloseMenu);
173
173
  this.addEventListener("sgds-show", this._handleOpenMenu);
@@ -372,8 +372,8 @@ class SgdsDatepicker extends validatorMixin.SgdsFormValidatorMixin(dropdownEleme
372
372
  placeholder=${this.mode === "single" ? "DD/MM/YYYY" : "DD/MM/YYYY - DD/MM/YYYY"}
373
373
  mode=${this.mode}
374
374
  invalidFeedback=${ifDefined_js.ifDefined(this.invalidFeedback ? this.invalidFeedback : this._mixinGetValidationMessage())}
375
- @sgds-mask-input-change=${this._handleInputMaskChange}
376
- @sgds-invalid-input=${this._handleInvalidInput}
375
+ @i-sgds-mask-input-change=${this._handleInputMaskChange}
376
+ @i-sgds-invalid-input=${this._handleInvalidInput}
377
377
  minDate=${this.minDate}
378
378
  maxDate=${this.maxDate}
379
379
  label=${this.label}