@politiet/sheriff-web-components 1.3.1 → 2.0.0-beta.1

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 (188) hide show
  1. package/dist/frameworks/preact.d.ts +3 -5
  2. package/dist/frameworks/preact.d.ts.map +1 -1
  3. package/dist/frameworks/react.d.ts +55 -20
  4. package/dist/frameworks/react.d.ts.map +1 -1
  5. package/dist/frameworks/solidjs.d.ts +3 -5
  6. package/dist/frameworks/solidjs.d.ts.map +1 -1
  7. package/dist/frameworks/svelte.d.ts +3 -5
  8. package/dist/frameworks/svelte.d.ts.map +1 -1
  9. package/dist/frameworks/vue.d.ts +3 -5
  10. package/dist/frameworks/vue.d.ts.map +1 -1
  11. package/dist/index.d.ts +21 -6
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +4 -6
  14. package/dist/index.js.map +1 -1
  15. package/dist/react-wrappers/SDSAlertWrapper.d.ts +5 -0
  16. package/dist/react-wrappers/SDSAlertWrapper.d.ts.map +1 -0
  17. package/dist/react-wrappers/SDSAlertWrapper.js +12 -0
  18. package/dist/react-wrappers/SDSAlertWrapper.js.map +1 -0
  19. package/dist/react-wrappers/SDSCardWrapper.d.ts +3 -0
  20. package/dist/react-wrappers/SDSCardWrapper.d.ts.map +1 -0
  21. package/dist/react-wrappers/SDSCardWrapper.js +10 -0
  22. package/dist/react-wrappers/SDSCardWrapper.js.map +1 -0
  23. package/dist/react-wrappers/SDSTagWrapper.d.ts +3 -0
  24. package/dist/react-wrappers/SDSTagWrapper.d.ts.map +1 -0
  25. package/dist/react-wrappers/SDSTagWrapper.js +10 -0
  26. package/dist/react-wrappers/SDSTagWrapper.js.map +1 -0
  27. package/dist/react-wrappers/SDSTextAreaWrapper.d.ts +2 -2
  28. package/dist/react-wrappers/SDSTextAreaWrapper.d.ts.map +1 -1
  29. package/dist/react-wrappers/SDSTextAreaWrapper.js +2 -2
  30. package/dist/react-wrappers/SDSTextAreaWrapper.js.map +1 -1
  31. package/dist/react-wrappers/index.d.ts +2 -6
  32. package/dist/react-wrappers/index.d.ts.map +1 -1
  33. package/dist/react-wrappers/index.js +2 -6
  34. package/dist/react-wrappers/index.js.map +1 -1
  35. package/dist/sds-alert/sds-alert.d.ts +27 -0
  36. package/dist/sds-alert/sds-alert.d.ts.map +1 -0
  37. package/dist/sds-alert/sds-alert.js +65 -0
  38. package/dist/sds-alert/sds-alert.js.map +1 -0
  39. package/dist/sds-alert/sds-alert.styles.d.ts +2 -0
  40. package/dist/sds-alert/sds-alert.styles.d.ts.map +1 -0
  41. package/dist/sds-alert/sds-alert.styles.js +166 -0
  42. package/dist/sds-alert/sds-alert.styles.js.map +1 -0
  43. package/dist/sds-button/sds-button.d.ts +23 -14
  44. package/dist/sds-button/sds-button.d.ts.map +1 -1
  45. package/dist/sds-button/sds-button.js +42 -27
  46. package/dist/sds-button/sds-button.js.map +1 -1
  47. package/dist/sds-button/sds-button.spec.js +53 -38
  48. package/dist/sds-button/sds-button.spec.js.map +1 -1
  49. package/dist/sds-button/sds-button.styles.d.ts.map +1 -1
  50. package/dist/sds-button/sds-button.styles.js +107 -92
  51. package/dist/sds-button/sds-button.styles.js.map +1 -1
  52. package/dist/sds-card/sds-card.d.ts +18 -0
  53. package/dist/sds-card/sds-card.d.ts.map +1 -0
  54. package/dist/sds-card/sds-card.js +58 -0
  55. package/dist/sds-card/sds-card.js.map +1 -0
  56. package/dist/sds-card/sds-card.styles.d.ts +2 -0
  57. package/dist/sds-card/sds-card.styles.d.ts.map +1 -0
  58. package/dist/sds-card/sds-card.styles.js +124 -0
  59. package/dist/sds-card/sds-card.styles.js.map +1 -0
  60. package/dist/sds-checkbox/sds-checkbox.d.ts +9 -0
  61. package/dist/sds-checkbox/sds-checkbox.d.ts.map +1 -1
  62. package/dist/sds-checkbox/sds-checkbox.js +40 -35
  63. package/dist/sds-checkbox/sds-checkbox.js.map +1 -1
  64. package/dist/sds-checkbox/sds-checkbox.styles.d.ts.map +1 -1
  65. package/dist/sds-checkbox/sds-checkbox.styles.js +162 -62
  66. package/dist/sds-checkbox/sds-checkbox.styles.js.map +1 -1
  67. package/dist/sds-checkbox-group/sds-checkbox-group.d.ts +14 -0
  68. package/dist/sds-checkbox-group/sds-checkbox-group.d.ts.map +1 -1
  69. package/dist/sds-checkbox-group/sds-checkbox-group.js +58 -6
  70. package/dist/sds-checkbox-group/sds-checkbox-group.js.map +1 -1
  71. package/dist/sds-checkbox-group/sds-checkbox-group.styles.d.ts.map +1 -1
  72. package/dist/sds-checkbox-group/sds-checkbox-group.styles.js +61 -22
  73. package/dist/sds-checkbox-group/sds-checkbox-group.styles.js.map +1 -1
  74. package/dist/sds-chip/sds-chip.d.ts +3 -1
  75. package/dist/sds-chip/sds-chip.d.ts.map +1 -1
  76. package/dist/sds-chip/sds-chip.js +21 -15
  77. package/dist/sds-chip/sds-chip.js.map +1 -1
  78. package/dist/sds-chip/sds-chip.styles.d.ts.map +1 -1
  79. package/dist/sds-chip/sds-chip.styles.js +105 -40
  80. package/dist/sds-chip/sds-chip.styles.js.map +1 -1
  81. package/dist/sds-detail/sds-detail.styles.js +2 -2
  82. package/dist/sds-detail/sds-detail.styles.js.map +1 -1
  83. package/dist/sds-heading/sds-heading.d.ts +2 -1
  84. package/dist/sds-heading/sds-heading.d.ts.map +1 -1
  85. package/dist/sds-heading/sds-heading.js +12 -15
  86. package/dist/sds-heading/sds-heading.js.map +1 -1
  87. package/dist/sds-heading/sds-heading.styles.d.ts.map +1 -1
  88. package/dist/sds-heading/sds-heading.styles.js +89 -42
  89. package/dist/sds-heading/sds-heading.styles.js.map +1 -1
  90. package/dist/sds-icon/sds-icon-names.d.ts +1 -1
  91. package/dist/sds-icon/sds-icon-names.d.ts.map +1 -1
  92. package/dist/sds-icon/sds-icon-names.js +3626 -554
  93. package/dist/sds-icon/sds-icon-names.js.map +1 -1
  94. package/dist/sds-icon/sds-icon.allowed-colors.js +12 -12
  95. package/dist/sds-icon/sds-icon.color-types.d.ts +1 -1
  96. package/dist/sds-icon/sds-icon.d.ts +10 -1
  97. package/dist/sds-icon/sds-icon.d.ts.map +1 -1
  98. package/dist/sds-icon/sds-icon.js +3 -10
  99. package/dist/sds-icon/sds-icon.js.map +1 -1
  100. package/dist/sds-icon/sds-icon.styles.d.ts.map +1 -1
  101. package/dist/sds-icon/sds-icon.styles.js +20 -6
  102. package/dist/sds-icon/sds-icon.styles.js.map +1 -1
  103. package/dist/sds-label/sds-label.styles.js +2 -2
  104. package/dist/sds-label/sds-label.styles.js.map +1 -1
  105. package/dist/sds-link/sds-link.styles.js +6 -6
  106. package/dist/sds-link/sds-link.styles.js.map +1 -1
  107. package/dist/sds-loader/sds-loader.d.ts +4 -3
  108. package/dist/sds-loader/sds-loader.d.ts.map +1 -1
  109. package/dist/sds-loader/sds-loader.js +16 -8
  110. package/dist/sds-loader/sds-loader.js.map +1 -1
  111. package/dist/sds-loader/sds-loader.styles.d.ts.map +1 -1
  112. package/dist/sds-loader/sds-loader.styles.js +65 -20
  113. package/dist/sds-loader/sds-loader.styles.js.map +1 -1
  114. package/dist/sds-nav-card/sds-nav-card.styles.d.ts.map +1 -1
  115. package/dist/sds-nav-card/sds-nav-card.styles.js +18 -25
  116. package/dist/sds-nav-card/sds-nav-card.styles.js.map +1 -1
  117. package/dist/sds-notification/sds-notification.d.ts +6 -2
  118. package/dist/sds-notification/sds-notification.d.ts.map +1 -1
  119. package/dist/sds-notification/sds-notification.js +31 -19
  120. package/dist/sds-notification/sds-notification.js.map +1 -1
  121. package/dist/sds-notification/sds-notification.styles.d.ts.map +1 -1
  122. package/dist/sds-notification/sds-notification.styles.js +93 -113
  123. package/dist/sds-notification/sds-notification.styles.js.map +1 -1
  124. package/dist/sds-paragraph/sds-paragraph.styles.js +2 -2
  125. package/dist/sds-paragraph/sds-paragraph.styles.js.map +1 -1
  126. package/dist/sds-radio/sds-radio.d.ts +9 -0
  127. package/dist/sds-radio/sds-radio.d.ts.map +1 -1
  128. package/dist/sds-radio/sds-radio.js +43 -33
  129. package/dist/sds-radio/sds-radio.js.map +1 -1
  130. package/dist/sds-radio/sds-radio.spec.js +0 -7
  131. package/dist/sds-radio/sds-radio.spec.js.map +1 -1
  132. package/dist/sds-radio/sds-radio.styles.d.ts.map +1 -1
  133. package/dist/sds-radio/sds-radio.styles.js +150 -64
  134. package/dist/sds-radio/sds-radio.styles.js.map +1 -1
  135. package/dist/sds-radio-group/sds-radio-group.d.ts +17 -1
  136. package/dist/sds-radio-group/sds-radio-group.d.ts.map +1 -1
  137. package/dist/sds-radio-group/sds-radio-group.js +79 -13
  138. package/dist/sds-radio-group/sds-radio-group.js.map +1 -1
  139. package/dist/sds-radio-group/sds-radio-group.styles.d.ts.map +1 -1
  140. package/dist/sds-radio-group/sds-radio-group.styles.js +73 -23
  141. package/dist/sds-radio-group/sds-radio-group.styles.js.map +1 -1
  142. package/dist/sds-switch/sds-switch.d.ts +7 -1
  143. package/dist/sds-switch/sds-switch.d.ts.map +1 -1
  144. package/dist/sds-switch/sds-switch.js +27 -10
  145. package/dist/sds-switch/sds-switch.js.map +1 -1
  146. package/dist/sds-switch/sds-switch.styles.d.ts.map +1 -1
  147. package/dist/sds-switch/sds-switch.styles.js +92 -64
  148. package/dist/sds-switch/sds-switch.styles.js.map +1 -1
  149. package/dist/sds-tag/sds-tag.d.ts +21 -0
  150. package/dist/sds-tag/sds-tag.d.ts.map +1 -0
  151. package/dist/sds-tag/sds-tag.js +38 -0
  152. package/dist/sds-tag/sds-tag.js.map +1 -0
  153. package/dist/sds-tag/sds-tag.styles.d.ts +2 -0
  154. package/dist/sds-tag/sds-tag.styles.d.ts.map +1 -0
  155. package/dist/sds-tag/sds-tag.styles.js +90 -0
  156. package/dist/sds-tag/sds-tag.styles.js.map +1 -0
  157. package/dist/sds-text/sds-text.d.ts +6 -1
  158. package/dist/sds-text/sds-text.d.ts.map +1 -1
  159. package/dist/sds-text/sds-text.js +11 -11
  160. package/dist/sds-text/sds-text.js.map +1 -1
  161. package/dist/sds-text/sds-text.styles.d.ts.map +1 -1
  162. package/dist/sds-text/sds-text.styles.js +257 -14
  163. package/dist/sds-text/sds-text.styles.js.map +1 -1
  164. package/dist/sds-textarea/sds-textarea.d.ts +7 -0
  165. package/dist/sds-textarea/sds-textarea.d.ts.map +1 -1
  166. package/dist/sds-textarea/sds-textarea.js +21 -24
  167. package/dist/sds-textarea/sds-textarea.js.map +1 -1
  168. package/dist/sds-textarea/sds-textarea.styles.d.ts.map +1 -1
  169. package/dist/sds-textarea/sds-textarea.styles.js +121 -58
  170. package/dist/sds-textarea/sds-textarea.styles.js.map +1 -1
  171. package/dist/sds-textfield/sds-textfield.d.ts +5 -0
  172. package/dist/sds-textfield/sds-textfield.d.ts.map +1 -1
  173. package/dist/sds-textfield/sds-textfield.js +7 -5
  174. package/dist/sds-textfield/sds-textfield.js.map +1 -1
  175. package/dist/sds-textfield/sds-textfield.styles.d.ts.map +1 -1
  176. package/dist/sds-textfield/sds-textfield.styles.js +104 -62
  177. package/dist/sds-textfield/sds-textfield.styles.js.map +1 -1
  178. package/dist/sheriff-web-components.js +2931 -1966
  179. package/dist/types.d.ts +5 -0
  180. package/dist/types.d.ts.map +1 -0
  181. package/dist/types.js +2 -0
  182. package/dist/types.js.map +1 -0
  183. package/dist/utils/renderErrorMessage.js +1 -1
  184. package/dist/utils/slot-validator.d.ts +2 -0
  185. package/dist/utils/slot-validator.d.ts.map +1 -0
  186. package/dist/utils/slot-validator.js +24 -0
  187. package/dist/utils/slot-validator.js.map +1 -0
  188. package/package.json +24 -29
@@ -0,0 +1,65 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { LitElement, html, nothing } from 'lit';
8
+ import { property } from 'lit/decorators.js';
9
+ import { guardedCustomElement } from '../utils/guarded-custom-element';
10
+ import { styles } from './sds-alert.styles';
11
+ import '../sds-icon/sds-icon';
12
+ import '../sds-button/sds-button';
13
+ const alertIcons = {
14
+ info: 'InformationSquareFill-aksel-filled',
15
+ success: 'check_circle-material-filled',
16
+ attention: 'warning-material-filled',
17
+ danger: 'dangerous-material-filled',
18
+ };
19
+ let SDSAlert = class SDSAlert extends LitElement {
20
+ constructor() {
21
+ super(...arguments);
22
+ this.color = 'info';
23
+ this.variant = 'primary';
24
+ this._remove = () => {
25
+ this.dispatchEvent(new CustomEvent('sds-remove', {
26
+ bubbles: true,
27
+ composed: true,
28
+ }));
29
+ };
30
+ }
31
+ render() {
32
+ const buttonColor = this.color === 'danger' ? 'danger' : 'accent';
33
+ return html `<div class="sds-alert">
34
+ <div class="sds-alert__type">
35
+ <sds-icon class="sds-alert__icon" name="${alertIcons[this.color]}" size="md"></sds-icon>
36
+ </div>
37
+ <div class="sds-alert__content">
38
+ <slot name="title"></slot>
39
+ <slot name="message"></slot>
40
+ </div>
41
+ ${this.removableLabel && this.variant === 'primary'
42
+ ? html `<div class="sds-alert__actions">
43
+ <sds-button icon variant="tertiary" color="${buttonColor}" size="sm" @click=${this._remove} aria-label="${this.removableLabel}">
44
+ <sds-icon name="close-material-outlined" size="sm"></sds-icon>
45
+ </sds-button>
46
+ </div>`
47
+ : nothing}
48
+ </div>`;
49
+ }
50
+ };
51
+ SDSAlert.styles = [styles];
52
+ __decorate([
53
+ property({ type: String, reflect: true })
54
+ ], SDSAlert.prototype, "color", void 0);
55
+ __decorate([
56
+ property({ type: String, reflect: true })
57
+ ], SDSAlert.prototype, "variant", void 0);
58
+ __decorate([
59
+ property({ type: String, attribute: 'removable-label', reflect: true })
60
+ ], SDSAlert.prototype, "removableLabel", void 0);
61
+ SDSAlert = __decorate([
62
+ guardedCustomElement('sds-alert')
63
+ ], SDSAlert);
64
+ export { SDSAlert };
65
+ //# sourceMappingURL=sds-alert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sds-alert.js","sourceRoot":"","sources":["../../src/sds-alert/sds-alert.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,OAAO,sBAAsB,CAAC;AAC9B,OAAO,0BAA0B,CAAC;AAKlC,MAAM,UAAU,GAAiC;IAChD,IAAI,EAAE,oCAAoC;IAC1C,OAAO,EAAE,8BAA8B;IACvC,SAAS,EAAE,yBAAyB;IACpC,MAAM,EAAE,2BAA2B;CACnC,CAAC;AAUK,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,UAAU;IAAjC;;QAGqC,UAAK,GAAiB,MAAM,CAAC;QAC7B,YAAO,GAAa,SAAS,CAAC;QAGxD,YAAO,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,aAAa,CACjB,IAAI,WAAW,CAAC,YAAY,EAAE;gBAC7B,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI;aACd,CAAC,CACF,CAAC;QACH,CAAC,CAAC;IAsBH,CAAC;IApBS,MAAM;QACd,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAElE,OAAO,IAAI,CAAA;;8CAEiC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;;KAM/D,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAClD,CAAC,CAAC,IAAI,CAAA;mDACyC,WAAW,sBAAsB,IAAI,CAAC,OAAO,gBAAgB,IAAI,CAAC,cAAc;;;YAGvH;YACR,CAAC,CAAC,OAAO;SACJ,CAAC;IACT,CAAC;;AAlCe,eAAM,GAAG,CAAC,MAAM,CAAC,AAAX,CAAY;AAES;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;uCAA8B;AAC7B;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;yCAA+B;AACA;IAAxE,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gDAAyB;AALrF,QAAQ;IADpB,oBAAoB,CAAC,WAAW,CAAC;GACrB,QAAQ,CAoCpB","sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { guardedCustomElement } from '../utils/guarded-custom-element';\nimport { styles } from './sds-alert.styles';\nimport { SDS_COLOR_PALETTES, SDS_VARIANTS } from '../types';\n\nimport '../sds-icon/sds-icon';\nimport '../sds-button/sds-button';\n\ntype ColorPalette = Extract<SDS_COLOR_PALETTES, 'info' | 'success' | 'attention' | 'danger'>;\ntype Variants = Extract<SDS_VARIANTS, 'primary' | 'secondary'>;\n\nconst alertIcons: Record<ColorPalette, string> = {\n\tinfo: 'InformationSquareFill-aksel-filled',\n\tsuccess: 'check_circle-material-filled',\n\tattention: 'warning-material-filled',\n\tdanger: 'dangerous-material-filled',\n};\n\nexport interface SDSAlertProps {\n\tcolor?: ColorPalette;\n\tvariant?: Variants;\n\t'removable-label'?: string;\n\tonSdsRemove?: (event: CustomEvent) => void;\n}\n\n@guardedCustomElement('sds-alert')\nexport class SDSAlert extends LitElement {\n\tstatic override styles = [styles];\n\n\t@property({ type: String, reflect: true }) color: ColorPalette = 'info';\n\t@property({ type: String, reflect: true }) variant: Variants = 'primary';\n\t@property({ type: String, attribute: 'removable-label', reflect: true }) removableLabel?: string;\n\n\tprivate readonly _remove = () => {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent('sds-remove', {\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t})\n\t\t);\n\t};\n\n\toverride render() {\n\t\tconst buttonColor = this.color === 'danger' ? 'danger' : 'accent';\n\n\t\treturn html`<div class=\"sds-alert\">\n\t\t\t<div class=\"sds-alert__type\">\n\t\t\t\t<sds-icon class=\"sds-alert__icon\" name=\"${alertIcons[this.color]}\" size=\"md\"></sds-icon>\n\t\t\t</div>\n\t\t\t<div class=\"sds-alert__content\">\n\t\t\t\t<slot name=\"title\"></slot>\n\t\t\t\t<slot name=\"message\"></slot>\n\t\t\t</div>\n\t\t\t${this.removableLabel && this.variant === 'primary'\n\t\t\t\t? html`<div class=\"sds-alert__actions\">\n\t\t\t\t\t\t<sds-button icon variant=\"tertiary\" color=\"${buttonColor}\" size=\"sm\" @click=${this._remove} aria-label=\"${this.removableLabel}\">\n\t\t\t\t\t\t\t<sds-icon name=\"close-material-outlined\" size=\"sm\"></sds-icon>\n\t\t\t\t\t\t</sds-button>\n\t\t\t\t\t</div>`\n\t\t\t\t: nothing}\n\t\t</div>`;\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sds-alert': SDSAlert;\n\t}\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const styles: import("lit").CSSResult;
2
+ //# sourceMappingURL=sds-alert.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sds-alert.styles.d.ts","sourceRoot":"","sources":["../../src/sds-alert/sds-alert.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBAmKlB,CAAC"}
@@ -0,0 +1,166 @@
1
+ import { css } from 'lit';
2
+ export const styles = css `
3
+ :host {
4
+ --_sds-alert-background-color: var(--sds-alert-background-color, var(--sds-color-alert-info-surface-tinted));
5
+
6
+ --_sds-alert-border-color: var(--sds-alert-border-color, var(--sds-color-alert-info-border-default));
7
+ --_sds-alert-border-radius: var(--sds-alert-border-radius, var(--sds-radius-sm));
8
+ --_sds-alert-border-width: var(--sds-alert-border-width, var(--sds-border-sm));
9
+
10
+ --_sds-alert-column-gap: var(--sds-alert-column-gap, var(--sds-spacing-2xs));
11
+ --_sds-alert-content-gap: var(--sds-alert-content-gap, var(--sds-spacing-3xs));
12
+
13
+ --_sds-alert-font-family: var(--sds-alert-font-family, var(--sds-typography-font-family-roboto));
14
+ --_sds-alert-font-size: var(--sds-alert-font-size, var(--sds-components-font-size-md));
15
+ --_sds-alert-font-weight: var(--sds-alert-font-weight, var(--sds-typography-body-md-desktop-font-weight));
16
+ --_sds-alert-line-height: var(--sds-alert-line-height, var(--sds-components-line-height-squeezed-md));
17
+ --_sds-alert-text-color: var(--sds-alert-text-color, var(--sds-color-alert-info-text-default));
18
+
19
+ --_sds-alert-title-font-size: var(--sds-alert-title-font-size, var(--sds-typography-body-lg-desktop-tall-font-size));
20
+ --_sds-alert-title-font-weight: var(--sds-alert-title-font-weight, var(--sds-typography-body-lg-strong-tall-desktop-font-weight));
21
+ --_sds-alert-title-line-height: var(--sds-alert-title-line-height, var(--sds-typography-body-lg-strong-tall-desktop-line-height));
22
+
23
+ --_sds-alert-icon-color: var(--sds-alert-icon-color, var(--sds-color-alert-info-text-subtle));
24
+ --_sds-alert-max-line-width: var(--sds-alert-max-line-width, var(--sds-typography-max-line-width));
25
+ --_sds-alert-padding: var(--sds-alert-padding, var(--sds-spacing-sm));
26
+
27
+ display: block;
28
+ }
29
+
30
+ .sds-alert {
31
+ display: flex;
32
+ gap: var(--_sds-alert-column-gap);
33
+ padding: var(--_sds-alert-padding);
34
+
35
+ background-color: var(--_sds-alert-background-color);
36
+ border: var(--_sds-alert-border-width) solid var(--_sds-alert-border-color);
37
+ border-radius: var(--_sds-alert-border-radius);
38
+ color: var(--_sds-alert-text-color);
39
+
40
+ font-family: var(--_sds-alert-font-family);
41
+ text-align: left;
42
+ }
43
+
44
+ .sds-alert__type {
45
+ color: var(--_sds-alert-icon-color);
46
+ }
47
+
48
+ .sds-alert__content {
49
+ align-self: center;
50
+ display: flex;
51
+ flex: 1;
52
+ flex-direction: column;
53
+ gap: var(--_sds-alert-content-gap);
54
+ }
55
+
56
+ .sds-alert__actions {
57
+ --sds-button-padding-inline: 0;
58
+ }
59
+
60
+ .sds-alert__icon {
61
+ display: block;
62
+ position: relative;
63
+ z-index: 1;
64
+ }
65
+
66
+ :host([color='success']) {
67
+ --_sds-alert-background-color: var(--sds-alert-background-color, var(--sds-color-alert-success-surface-tinted));
68
+ --_sds-alert-border-color: var(--sds-alert-border-color, var(--sds-color-alert-success-border-default));
69
+ --_sds-alert-text-color: var(--sds-alert-text-color, var(--sds-color-alert-attention-text-default));
70
+ --_sds-alert-icon-color: var(--sds-alert-icon-color, var(--sds-color-alert-success-text-subtle));
71
+
72
+ sds-button {
73
+ --sds-button-text-color: var(--sds-color-alert-success-action-default);
74
+ }
75
+
76
+ sds-button:hover {
77
+ --sds-button-background-color: var(--sds-color-alert-success-surface-hover);
78
+ --sds-button-border-color: var(--sds-color-alert-success-surface-hover);
79
+ }
80
+
81
+ sds-button:active {
82
+ --sds-button-background-color: var(--sds-color-alert-success-surface-active);
83
+ --sds-button-border-color: var(--sds-color-alert-success-surface-active);
84
+ }
85
+ }
86
+
87
+ :host([color='attention']) {
88
+ --_sds-alert-background-color: var(--sds-alert-background-color, var(--sds-color-alert-attention-surface-tinted));
89
+ --_sds-alert-border-color: var(--sds-alert-border-color, var(--sds-color-alert-attention-border-default));
90
+ --_sds-alert-text-color: var(--sds-alert-text-color, var(--sds-color-alert-attention-text-default));
91
+ --_sds-alert-icon-color: var(--sds-alert-icon-color, var(--sds-color-alert-attention-text-subtle));
92
+
93
+ sds-button {
94
+ --sds-button-text-color: var(--sds-color-alert-attention-border-default);
95
+ }
96
+
97
+ sds-button:hover {
98
+ --sds-button-background-color: var(--sds-color-alert-attention-surface-hover);
99
+ --sds-button-border-color: var(--sds-color-alert-attention-surface-hover);
100
+ }
101
+
102
+ sds-button:active {
103
+ --sds-button-background-color: var(--sds-color-alert-attention-surface-active);
104
+ --sds-button-border-color: var(--sds-color-alert-attention-surface-active);
105
+ }
106
+ }
107
+
108
+ :host([color='danger']) {
109
+ --_sds-alert-background-color: var(--sds-alert-background-color, var(--sds-color-alert-danger-surface-tinted));
110
+ --_sds-alert-border-color: var(--sds-alert-border-color, var(--sds-color-alert-danger-border-default));
111
+ --_sds-alert-text-color: var(--sds-alert-text-color, var(--sds-color-alert-danger-text-default));
112
+ --_sds-alert-icon-color: var(--sds-alert-icon-color, var(--sds-color-alert-danger-text-subtle));
113
+ }
114
+
115
+ :host([variant='secondary']) {
116
+ --_sds-alert-background-color: var(--sds-alert-background-color, transparent);
117
+ --_sds-alert-border-color: var(--sds-alert-border-color, transparent);
118
+ --_sds-alert-padding: var(--sds-alert-padding, 0);
119
+ --_sds-alert-column-gap: var(--sds-alert-column-gap, var(--sds-spacing-3xs));
120
+ --_sds-alert-content-gap: var(--sds-alert-content-gap, 0);
121
+
122
+ ::slotted([slot='message']) {
123
+ padding: 3px 0 !important;
124
+ }
125
+ }
126
+
127
+ :host([variant='secondary']):host([color='info']) {
128
+ --_sds-alert-text-color: var(--sds-alert-text-color, var(--sds-color-alert-info-text-subtle));
129
+ }
130
+
131
+ :host([variant='secondary']):host([color='success']) {
132
+ --_sds-alert-text-color: var(--sds-alert-text-color, var(--sds-color-alert-success-text-subtle));
133
+ }
134
+
135
+ :host([variant='secondary']):host([color='attention']) {
136
+ --_sds-alert-text-color: var(--sds-alert-text-color, var(--sds-color-alert-attention-text-subtle));
137
+ --_sds-alert-icon-color: var(--sds-alert-icon-color, var(--sds-color-alert-attention-action-default));
138
+ }
139
+
140
+ :host([variant='secondary']):host([color='danger']) {
141
+ --_sds-alert-text-color: var(--sds-alert-text-color, var(--sds-color-alert-danger-text-subtle));
142
+ }
143
+
144
+ ::slotted([slot='title']),
145
+ ::slotted(:is(h1, h2, h3, h4, h5, h6)) {
146
+ color: var(--_sds-alert-text-color) !important;
147
+ font-size: var(--_sds-alert-title-font-size) !important;
148
+ font-style: normal !important;
149
+ font-weight: var(--_sds-alert-title-font-weight) !important;
150
+ line-height: var(--_sds-alert-title-line-height) !important;
151
+ margin: 0 !important;
152
+ max-width: var(--_sds-alert-max-line-width) !important;
153
+ }
154
+
155
+ ::slotted([slot='message']),
156
+ ::slotted(:is(p)) {
157
+ color: var(--_sds-alert-text-color) !important;
158
+ font-size: var(--_sds-alert-font-size) !important;
159
+ font-style: normal !important;
160
+ font-weight: var(--_sds-alert-font-weight) !important;
161
+ line-height: var(--_sds-alert-line-height) !important;
162
+ margin: 0 !important;
163
+ max-width: var(--_sds-alert-max-line-width) !important;
164
+ }
165
+ `;
166
+ //# sourceMappingURL=sds-alert.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sds-alert.styles.js","sourceRoot":"","sources":["../../src/sds-alert/sds-alert.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmKxB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`\n\t:host {\n\t\t--_sds-alert-background-color: var(--sds-alert-background-color, var(--sds-color-alert-info-surface-tinted));\n\n\t\t--_sds-alert-border-color: var(--sds-alert-border-color, var(--sds-color-alert-info-border-default));\n\t\t--_sds-alert-border-radius: var(--sds-alert-border-radius, var(--sds-radius-sm));\n\t\t--_sds-alert-border-width: var(--sds-alert-border-width, var(--sds-border-sm));\n\n\t\t--_sds-alert-column-gap: var(--sds-alert-column-gap, var(--sds-spacing-2xs));\n\t\t--_sds-alert-content-gap: var(--sds-alert-content-gap, var(--sds-spacing-3xs));\n\n\t\t--_sds-alert-font-family: var(--sds-alert-font-family, var(--sds-typography-font-family-roboto));\n\t\t--_sds-alert-font-size: var(--sds-alert-font-size, var(--sds-components-font-size-md));\n\t\t--_sds-alert-font-weight: var(--sds-alert-font-weight, var(--sds-typography-body-md-desktop-font-weight));\n\t\t--_sds-alert-line-height: var(--sds-alert-line-height, var(--sds-components-line-height-squeezed-md));\n\t\t--_sds-alert-text-color: var(--sds-alert-text-color, var(--sds-color-alert-info-text-default));\n\n\t\t--_sds-alert-title-font-size: var(--sds-alert-title-font-size, var(--sds-typography-body-lg-desktop-tall-font-size));\n\t\t--_sds-alert-title-font-weight: var(--sds-alert-title-font-weight, var(--sds-typography-body-lg-strong-tall-desktop-font-weight));\n\t\t--_sds-alert-title-line-height: var(--sds-alert-title-line-height, var(--sds-typography-body-lg-strong-tall-desktop-line-height));\n\n\t\t--_sds-alert-icon-color: var(--sds-alert-icon-color, var(--sds-color-alert-info-text-subtle));\n\t\t--_sds-alert-max-line-width: var(--sds-alert-max-line-width, var(--sds-typography-max-line-width));\n\t\t--_sds-alert-padding: var(--sds-alert-padding, var(--sds-spacing-sm));\n\n\t\tdisplay: block;\n\t}\n\n\t.sds-alert {\n\t\tdisplay: flex;\n\t\tgap: var(--_sds-alert-column-gap);\n\t\tpadding: var(--_sds-alert-padding);\n\n\t\tbackground-color: var(--_sds-alert-background-color);\n\t\tborder: var(--_sds-alert-border-width) solid var(--_sds-alert-border-color);\n\t\tborder-radius: var(--_sds-alert-border-radius);\n\t\tcolor: var(--_sds-alert-text-color);\n\n\t\tfont-family: var(--_sds-alert-font-family);\n\t\ttext-align: left;\n\t}\n\n\t.sds-alert__type {\n\t\tcolor: var(--_sds-alert-icon-color);\n\t}\n\n\t.sds-alert__content {\n\t\talign-self: center;\n\t\tdisplay: flex;\n\t\tflex: 1;\n\t\tflex-direction: column;\n\t\tgap: var(--_sds-alert-content-gap);\n\t}\n\n\t.sds-alert__actions {\n\t\t--sds-button-padding-inline: 0;\n\t}\n\n\t.sds-alert__icon {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tz-index: 1;\n\t}\n\n\t:host([color='success']) {\n\t\t--_sds-alert-background-color: var(--sds-alert-background-color, var(--sds-color-alert-success-surface-tinted));\n\t\t--_sds-alert-border-color: var(--sds-alert-border-color, var(--sds-color-alert-success-border-default));\n\t\t--_sds-alert-text-color: var(--sds-alert-text-color, var(--sds-color-alert-attention-text-default));\n\t\t--_sds-alert-icon-color: var(--sds-alert-icon-color, var(--sds-color-alert-success-text-subtle));\n\n\t\tsds-button {\n\t\t\t--sds-button-text-color: var(--sds-color-alert-success-action-default);\n\t\t}\n\n\t\tsds-button:hover {\n\t\t\t--sds-button-background-color: var(--sds-color-alert-success-surface-hover);\n\t\t\t--sds-button-border-color: var(--sds-color-alert-success-surface-hover);\n\t\t}\n\n\t\tsds-button:active {\n\t\t\t--sds-button-background-color: var(--sds-color-alert-success-surface-active);\n\t\t\t--sds-button-border-color: var(--sds-color-alert-success-surface-active);\n\t\t}\n\t}\n\n\t:host([color='attention']) {\n\t\t--_sds-alert-background-color: var(--sds-alert-background-color, var(--sds-color-alert-attention-surface-tinted));\n\t\t--_sds-alert-border-color: var(--sds-alert-border-color, var(--sds-color-alert-attention-border-default));\n\t\t--_sds-alert-text-color: var(--sds-alert-text-color, var(--sds-color-alert-attention-text-default));\n\t\t--_sds-alert-icon-color: var(--sds-alert-icon-color, var(--sds-color-alert-attention-text-subtle));\n\n\t\tsds-button {\n\t\t\t--sds-button-text-color: var(--sds-color-alert-attention-border-default);\n\t\t}\n\n\t\tsds-button:hover {\n\t\t\t--sds-button-background-color: var(--sds-color-alert-attention-surface-hover);\n\t\t\t--sds-button-border-color: var(--sds-color-alert-attention-surface-hover);\n\t\t}\n\n\t\tsds-button:active {\n\t\t\t--sds-button-background-color: var(--sds-color-alert-attention-surface-active);\n\t\t\t--sds-button-border-color: var(--sds-color-alert-attention-surface-active);\n\t\t}\n\t}\n\n\t:host([color='danger']) {\n\t\t--_sds-alert-background-color: var(--sds-alert-background-color, var(--sds-color-alert-danger-surface-tinted));\n\t\t--_sds-alert-border-color: var(--sds-alert-border-color, var(--sds-color-alert-danger-border-default));\n\t\t--_sds-alert-text-color: var(--sds-alert-text-color, var(--sds-color-alert-danger-text-default));\n\t\t--_sds-alert-icon-color: var(--sds-alert-icon-color, var(--sds-color-alert-danger-text-subtle));\n\t}\n\n\t:host([variant='secondary']) {\n\t\t--_sds-alert-background-color: var(--sds-alert-background-color, transparent);\n\t\t--_sds-alert-border-color: var(--sds-alert-border-color, transparent);\n\t\t--_sds-alert-padding: var(--sds-alert-padding, 0);\n\t\t--_sds-alert-column-gap: var(--sds-alert-column-gap, var(--sds-spacing-3xs));\n\t\t--_sds-alert-content-gap: var(--sds-alert-content-gap, 0);\n\n\t\t::slotted([slot='message']) {\n\t\t\tpadding: 3px 0 !important;\n\t\t}\n\t}\n\n\t:host([variant='secondary']):host([color='info']) {\n\t\t--_sds-alert-text-color: var(--sds-alert-text-color, var(--sds-color-alert-info-text-subtle));\n\t}\n\n\t:host([variant='secondary']):host([color='success']) {\n\t\t--_sds-alert-text-color: var(--sds-alert-text-color, var(--sds-color-alert-success-text-subtle));\n\t}\n\n\t:host([variant='secondary']):host([color='attention']) {\n\t\t--_sds-alert-text-color: var(--sds-alert-text-color, var(--sds-color-alert-attention-text-subtle));\n\t\t--_sds-alert-icon-color: var(--sds-alert-icon-color, var(--sds-color-alert-attention-action-default));\n\t}\n\n\t:host([variant='secondary']):host([color='danger']) {\n\t\t--_sds-alert-text-color: var(--sds-alert-text-color, var(--sds-color-alert-danger-text-subtle));\n\t}\n\n\t::slotted([slot='title']),\n\t::slotted(:is(h1, h2, h3, h4, h5, h6)) {\n\t\tcolor: var(--_sds-alert-text-color) !important;\n\t\tfont-size: var(--_sds-alert-title-font-size) !important;\n\t\tfont-style: normal !important;\n\t\tfont-weight: var(--_sds-alert-title-font-weight) !important;\n\t\tline-height: var(--_sds-alert-title-line-height) !important;\n\t\tmargin: 0 !important;\n\t\tmax-width: var(--_sds-alert-max-line-width) !important;\n\t}\n\n\t::slotted([slot='message']),\n\t::slotted(:is(p)) {\n\t\tcolor: var(--_sds-alert-text-color) !important;\n\t\tfont-size: var(--_sds-alert-font-size) !important;\n\t\tfont-style: normal !important;\n\t\tfont-weight: var(--_sds-alert-font-weight) !important;\n\t\tline-height: var(--_sds-alert-line-height) !important;\n\t\tmargin: 0 !important;\n\t\tmax-width: var(--_sds-alert-max-line-width) !important;\n\t}\n`;\n"]}
@@ -1,36 +1,45 @@
1
- import { LitElement } from 'lit';
1
+ import { LitElement, PropertyValues } from 'lit';
2
+ import { SDS_COLOR_PALETTES, SDS_SIZES, SDS_VARIANTS } from '../types';
2
3
  type ButtonType = 'button' | 'submit' | 'reset';
3
- type ButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'critical';
4
- type ButtonSize = 'large' | 'medium' | 'small';
4
+ type ButtonVariant = SDS_VARIANTS | 'critical';
5
+ type ButtonColorPalette = Extract<SDS_COLOR_PALETTES, 'accent' | 'danger'>;
6
+ type ButtonSize = 'large' | 'medium' | 'small' | Extract<SDS_SIZES, 'lg' | 'md' | 'sm'>;
5
7
  type TargetTypes = '_self' | '_blank' | '_parent' | '_top';
6
8
  export interface SDSButtonProps {
7
- type?: ButtonType;
8
- variant?: ButtonVariant;
9
- size?: ButtonSize;
9
+ color?: ButtonColorPalette;
10
10
  disabled?: boolean;
11
- name?: string;
12
- value?: string;
13
11
  form?: string;
14
12
  href?: string;
13
+ icon?: boolean;
14
+ loading?: boolean;
15
+ name?: string;
16
+ size?: ButtonSize;
15
17
  target?: TargetTypes;
18
+ type?: ButtonType;
19
+ value?: string;
20
+ variant?: ButtonVariant;
16
21
  onClick?: (event: CustomEvent) => void;
17
- onSubmit?: (event: CustomEvent) => void;
18
22
  onReset?: (event: CustomEvent) => void;
23
+ onSubmit?: (event: CustomEvent) => void;
19
24
  }
20
25
  export declare class SDSButton extends LitElement {
21
26
  static styles: import("lit").CSSResult[];
22
27
  static formAssociated: boolean;
23
28
  readonly internals: ElementInternals;
24
- type: ButtonType;
25
- variant: ButtonVariant;
26
- size: ButtonSize;
27
29
  disabled: boolean;
28
- name?: string;
29
- value: string;
30
+ icon: boolean;
31
+ loading: boolean;
32
+ color?: ButtonColorPalette;
30
33
  form?: string;
31
34
  href?: string;
35
+ name?: string;
36
+ size: ButtonSize;
32
37
  target?: TargetTypes;
38
+ type: ButtonType;
39
+ value: string;
40
+ variant: ButtonVariant;
33
41
  constructor();
42
+ updated(changed: PropertyValues): void;
34
43
  private readonly _handleClick;
35
44
  focus(): void;
36
45
  blur(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"sds-button.d.ts","sourceRoot":"","sources":["../../src/sds-button/sds-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAOvC,KAAK,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAChD,KAAK,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC;AACvE,KAAK,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC/C,KAAK,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC9B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CACvC;AAED,qBACa,SAAU,SAAQ,UAAU;IACxC,OAAgB,MAAM,4BAAY;IAElC,MAAM,CAAC,cAAc,UAAQ;IAC7B,SAAgB,SAAS,EAAE,gBAAgB,CAAC;IAG5C,IAAI,EAAE,UAAU,CAAY;IAG5B,OAAO,EAAE,aAAa,CAAa;IAGnC,IAAI,EAAE,UAAU,CAAW;IAEiB,QAAQ,EAAE,OAAO,CAAS;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAM;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,CAAC;;IAQhE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAuD3B;IAEO,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAIZ,KAAK,IAAI,IAAI;IAIb,MAAM;CAyCf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,YAAY,EAAE,SAAS,CAAC;KACxB;CACD"}
1
+ {"version":3,"file":"sds-button.d.ts","sourceRoot":"","sources":["../../src/sds-button/sds-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAiB,MAAM,KAAK,CAAC;AAOhE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEvE,KAAK,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAChD,KAAK,aAAa,GAAG,YAAY,GAAG,UAAU,CAAC;AAC/C,KAAK,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAC;AAC3E,KAAK,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AACxF,KAAK,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC9B,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CACxC;AAED,qBACa,SAAU,SAAQ,UAAU;IACxC,OAAgB,MAAM,4BAAY;IAElC,MAAM,CAAC,cAAc,UAAQ;IAC7B,SAAgB,SAAS,EAAE,gBAAgB,CAAC;IAEA,QAAQ,EAAE,OAAO,CAAS;IAC1B,IAAI,EAAE,OAAO,CAAS;IACtB,OAAO,EAAE,OAAO,CAAS;IAC1B,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAQ;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,UAAU,CAAY;IAC5B,KAAK,EAAE,MAAM,CAAM;IACnB,OAAO,EAAE,aAAa,CAAa;;IAQrE,OAAO,CAAC,OAAO,EAAE,cAAc;IAQxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAuD3B;IAEO,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAIZ,KAAK,IAAI,IAAI;IAIb,MAAM;CAsCf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,YAAY,EAAE,SAAS,CAAC;KACxB;CACD"}
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { LitElement, html } from 'lit';
7
+ import { LitElement, html, nothing } from 'lit';
8
8
  import { property } from 'lit/decorators.js';
9
9
  import { classMap } from 'lit/directives/class-map.js';
10
10
  import { ifDefined } from 'lit/directives/if-defined.js';
@@ -13,11 +13,13 @@ import { styles } from './sds-button.styles';
13
13
  let SDSButton = class SDSButton extends LitElement {
14
14
  constructor() {
15
15
  super();
16
- this.type = 'button';
17
- this.variant = 'primary';
18
- this.size = 'large';
19
16
  this.disabled = false;
17
+ this.icon = false;
18
+ this.loading = false;
19
+ this.size = 'lg';
20
+ this.type = 'button';
20
21
  this.value = '';
22
+ this.variant = 'primary';
21
23
  this._handleClick = (event) => {
22
24
  event.preventDefault();
23
25
  event.stopImmediatePropagation();
@@ -72,6 +74,13 @@ let SDSButton = class SDSButton extends LitElement {
72
74
  this.internals = this.attachInternals();
73
75
  this.attachShadow({ mode: 'open', delegatesFocus: true });
74
76
  }
77
+ updated(changed) {
78
+ // Cast critical variant to primary and color to danger to prevent breaking changes
79
+ if (changed.has('variant') && this.variant === 'critical') {
80
+ this.variant = 'primary';
81
+ this.color = 'danger';
82
+ }
83
+ }
75
84
  focus() {
76
85
  if (!this.disabled)
77
86
  this.shadowRoot?.querySelector('button')?.focus();
@@ -87,20 +96,17 @@ let SDSButton = class SDSButton extends LitElement {
87
96
  render() {
88
97
  const buttonClasses = {
89
98
  'sds-button': true,
90
- 'sds-button--secondary': this.variant === 'secondary',
91
- 'sds-button--tertiary': this.variant === 'tertiary',
92
- 'sds-button--critical': this.variant === 'critical',
93
- 'sds-button--medium': this.size === 'medium',
94
- 'sds-button--small': this.size === 'small',
95
99
  'sds-button--as-link': !!this.href,
96
100
  };
101
+ let loaderColor;
102
+ if (this.color === 'danger') {
103
+ loaderColor = ['primary', 'critical'].includes(this.variant) ? 'danger' : 'danger-contrast';
104
+ }
105
+ else {
106
+ loaderColor = ['primary', 'critical'].includes(this.variant) ? 'accent' : 'accent-contrast';
107
+ }
97
108
  if (this.href) {
98
- return html ` <a
99
- id="link"
100
- class="${classMap(buttonClasses)}"
101
- href="${this.href}"
102
- target="${ifDefined(this.target)}"
103
- >
109
+ return html ` <a id="link" class="${classMap(buttonClasses)}" href="${this.href}" target="${ifDefined(this.target)}">
104
110
  <slot name="before"></slot>
105
111
  <slot></slot>
106
112
  <slot name="after"></slot>
@@ -117,9 +123,9 @@ let SDSButton = class SDSButton extends LitElement {
117
123
  ?disabled="${this.disabled}"
118
124
  @click="${this._handleClick}"
119
125
  >
120
- <slot name="before"></slot>
126
+ ${this.loading ? html `<sds-loader slot="before" color=${loaderColor}></sds-loader>` : nothing} ${this.loading ? nothing : html `<slot name="before"></slot>`}
121
127
  <slot></slot>
122
- <slot name="after"></slot>
128
+ ${this.loading ? nothing : html `<slot name="after"></slot>`}
123
129
  </button>
124
130
  `;
125
131
  }
@@ -127,32 +133,41 @@ let SDSButton = class SDSButton extends LitElement {
127
133
  SDSButton.styles = [styles];
128
134
  SDSButton.formAssociated = true;
129
135
  __decorate([
130
- property({ type: String, reflect: true })
131
- ], SDSButton.prototype, "type", void 0);
136
+ property({ type: Boolean, reflect: true })
137
+ ], SDSButton.prototype, "disabled", void 0);
138
+ __decorate([
139
+ property({ type: Boolean, reflect: true })
140
+ ], SDSButton.prototype, "icon", void 0);
141
+ __decorate([
142
+ property({ type: Boolean, reflect: true })
143
+ ], SDSButton.prototype, "loading", void 0);
132
144
  __decorate([
133
145
  property({ type: String, reflect: true })
134
- ], SDSButton.prototype, "variant", void 0);
146
+ ], SDSButton.prototype, "color", void 0);
135
147
  __decorate([
136
148
  property({ type: String, reflect: true })
137
- ], SDSButton.prototype, "size", void 0);
149
+ ], SDSButton.prototype, "form", void 0);
138
150
  __decorate([
139
- property({ type: Boolean, reflect: true })
140
- ], SDSButton.prototype, "disabled", void 0);
151
+ property({ type: String, reflect: true })
152
+ ], SDSButton.prototype, "href", void 0);
141
153
  __decorate([
142
154
  property({ type: String, reflect: true })
143
155
  ], SDSButton.prototype, "name", void 0);
144
156
  __decorate([
145
157
  property({ type: String, reflect: true })
146
- ], SDSButton.prototype, "value", void 0);
158
+ ], SDSButton.prototype, "size", void 0);
147
159
  __decorate([
148
160
  property({ type: String, reflect: true })
149
- ], SDSButton.prototype, "form", void 0);
161
+ ], SDSButton.prototype, "target", void 0);
150
162
  __decorate([
151
163
  property({ type: String, reflect: true })
152
- ], SDSButton.prototype, "href", void 0);
164
+ ], SDSButton.prototype, "type", void 0);
153
165
  __decorate([
154
166
  property({ type: String, reflect: true })
155
- ], SDSButton.prototype, "target", void 0);
167
+ ], SDSButton.prototype, "value", void 0);
168
+ __decorate([
169
+ property({ type: String, reflect: true })
170
+ ], SDSButton.prototype, "variant", void 0);
156
171
  SDSButton = __decorate([
157
172
  guardedCustomElement('sds-button')
158
173
  ], SDSButton);
@@ -1 +1 @@
1
- {"version":3,"file":"sds-button.js","sourceRoot":"","sources":["../../src/sds-button/sds-button.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAuBtC,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,UAAU;IAsBxC;QACC,KAAK,EAAE,CAAC;QAhBT,SAAI,GAAe,QAAQ,CAAC;QAG5B,YAAO,GAAkB,SAAS,CAAC;QAGnC,SAAI,GAAe,OAAO,CAAC;QAEiB,aAAQ,GAAY,KAAK,CAAC;QAE3B,UAAK,GAAW,EAAE,CAAC;QAW7C,iBAAY,GAAG,CAAC,KAAiB,EAAE,EAAE;YACrD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;YAEjC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;oBACnB,KAAK,QAAQ,CAAC,CAAC,CAAC;wBACf,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE;4BAC7C,OAAO,EAAE,IAAI;4BACb,QAAQ,EAAE,IAAI;4BACd,UAAU,EAAE,IAAI;yBAChB,CAAC,CAAC;wBACH,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;wBAErD,IAAI,YAAY,EAAE,CAAC;4BAClB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gCACf,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAA2B,CAAC;gCACzD,MAAM,WAAW,GAA2B,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gCACpF,WAAW,EAAE,aAAa,EAAE,CAAC;4BAC9B,CAAC;iCAAM,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gCAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;4BACrC,CAAC;wBACF,CAAC;wBACD,MAAM;oBACP,CAAC;oBAED,KAAK,OAAO,CAAC,CAAC,CAAC;wBACd,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE;4BAC3C,OAAO,EAAE,IAAI;4BACb,QAAQ,EAAE,IAAI;4BACd,UAAU,EAAE,IAAI;yBAChB,CAAC,CAAC;wBACH,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;wBAEnD,IAAI,WAAW,EAAE,CAAC;4BACjB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gCACf,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAA2B,CAAC;gCACzD,MAAM,WAAW,GAA2B,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gCACpF,WAAW,EAAE,KAAK,EAAE,CAAC;4BACtB,CAAC;iCAAM,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gCAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;4BAC7B,CAAC;wBACF,CAAC;wBACD,MAAM;oBACP,CAAC;oBAED;wBACC,IAAI,CAAC,aAAa,CACjB,IAAI,WAAW,CAAC,OAAO,EAAE;4BACxB,OAAO,EAAE,IAAI;4BACb,QAAQ,EAAE,IAAI;yBACd,CAAC,CACF,CAAC;gBACJ,CAAC;YACF,CAAC;QACF,CAAC,CAAC;QA3DD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACxC,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IA2DQ,KAAK;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;IACvE,CAAC;IAEQ,IAAI;QACZ,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;IACtE,CAAC;IAEQ,KAAK;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;IACvE,CAAC;IAEQ,MAAM;QACd,MAAM,aAAa,GAAG;YACrB,YAAY,EAAE,IAAI;YAClB,uBAAuB,EAAE,IAAI,CAAC,OAAO,KAAK,WAAW;YACrD,sBAAsB,EAAE,IAAI,CAAC,OAAO,KAAK,UAAU;YACnD,sBAAsB,EAAE,IAAI,CAAC,OAAO,KAAK,UAAU;YACnD,oBAAoB,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ;YAC5C,mBAAmB,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO;YAC1C,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;SAClC,CAAC;QAEF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,IAAI,CAAA;;aAED,QAAQ,CAAC,aAAa,CAAC;YACxB,IAAI,CAAC,IAAI;cACP,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;;;;;QAK5B,CAAC;QACP,CAAC;QAED,OAAO,IAAI,CAAA;;;YAGD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;aACnB,QAAQ,CAAC,aAAa,CAAC;YACxB,IAAI,CAAC,IAAI;YACT,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;aACnB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;iBACjB,IAAI,CAAC,QAAQ;cAChB,IAAI,CAAC,YAAY;;;;;;GAM5B,CAAC;IACH,CAAC;;AAxIe,gBAAM,GAAG,CAAC,MAAM,CAAC,AAAX,CAAY;AAE3B,wBAAc,GAAG,IAAI,AAAP,CAAQ;AAI7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;uCACd;AAG5B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CACP;AAGnC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;uCACf;AAEiB;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;2CAA2B;AAC3B;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;uCAAe;AACd;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;wCAAoB;AACnB;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;uCAAe;AACd;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;uCAAe;AACd;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;yCAAsB;AApBpD,SAAS;IADrB,oBAAoB,CAAC,YAAY,CAAC;GACtB,SAAS,CA0IrB","sourcesContent":["import { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { guardedCustomElement } from '../utils/guarded-custom-element';\nimport { styles } from './sds-button.styles';\n\ntype ButtonType = 'button' | 'submit' | 'reset';\ntype ButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'critical';\ntype ButtonSize = 'large' | 'medium' | 'small';\ntype TargetTypes = '_self' | '_blank' | '_parent' | '_top';\n\nexport interface SDSButtonProps {\n\ttype?: ButtonType;\n\tvariant?: ButtonVariant;\n\tsize?: ButtonSize;\n\tdisabled?: boolean;\n\tname?: string;\n\tvalue?: string;\n\tform?: string;\n\thref?: string;\n\ttarget?: TargetTypes;\n\tonClick?: (event: CustomEvent) => void;\n\tonSubmit?: (event: CustomEvent) => void;\n\tonReset?: (event: CustomEvent) => void;\n}\n\n@guardedCustomElement('sds-button')\nexport class SDSButton extends LitElement {\n\tstatic override styles = [styles];\n\n\tstatic formAssociated = true;\n\tpublic readonly internals: ElementInternals;\n\n\t@property({ type: String, reflect: true })\n\ttype: ButtonType = 'button';\n\n\t@property({ type: String, reflect: true })\n\tvariant: ButtonVariant = 'primary';\n\n\t@property({ type: String, reflect: true })\n\tsize: ButtonSize = 'large';\n\n\t@property({ type: Boolean, reflect: true }) disabled: boolean = false;\n\t@property({ type: String, reflect: true }) name?: string;\n\t@property({ type: String, reflect: true }) value: string = '';\n\t@property({ type: String, reflect: true }) form?: string;\n\t@property({ type: String, reflect: true }) href?: string;\n\t@property({ type: String, reflect: true }) target?: TargetTypes;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.internals = this.attachInternals();\n\t\tthis.attachShadow({ mode: 'open', delegatesFocus: true });\n\t}\n\n\tprivate readonly _handleClick = (event: MouseEvent) => {\n\t\tevent.preventDefault();\n\t\tevent.stopImmediatePropagation();\n\n\t\tif (!this.disabled) {\n\t\t\tswitch (this.type) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitEvent = new CustomEvent('submit', {\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\tcancelable: true,\n\t\t\t\t\t});\n\t\t\t\t\tconst shouldSubmit = this.dispatchEvent(submitEvent);\n\n\t\t\t\t\tif (shouldSubmit) {\n\t\t\t\t\t\tif (this.form) {\n\t\t\t\t\t\t\tconst root = this.getRootNode() as Document | ShadowRoot;\n\t\t\t\t\t\t\tconst formElement: HTMLFormElement | null = root.querySelector(`form#${this.form}`);\n\t\t\t\t\t\t\tformElement?.requestSubmit();\n\t\t\t\t\t\t} else if (this.internals.form) {\n\t\t\t\t\t\t\tthis.internals.form.requestSubmit();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase 'reset': {\n\t\t\t\t\tconst resetEvent = new CustomEvent('reset', {\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\tcancelable: true,\n\t\t\t\t\t});\n\t\t\t\t\tconst shouldReset = this.dispatchEvent(resetEvent);\n\n\t\t\t\t\tif (shouldReset) {\n\t\t\t\t\t\tif (this.form) {\n\t\t\t\t\t\t\tconst root = this.getRootNode() as Document | ShadowRoot;\n\t\t\t\t\t\t\tconst formElement: HTMLFormElement | null = root.querySelector(`form#${this.form}`);\n\t\t\t\t\t\t\tformElement?.reset();\n\t\t\t\t\t\t} else if (this.internals.form) {\n\t\t\t\t\t\t\tthis.internals.form.reset();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent('click', {\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n\n\toverride focus(): void {\n\t\tif (!this.disabled) this.shadowRoot?.querySelector('button')?.focus();\n\t}\n\n\toverride blur(): void {\n\t\tif (!this.disabled) this.shadowRoot?.querySelector('button')?.blur();\n\t}\n\n\toverride click(): void {\n\t\tif (!this.disabled) this.shadowRoot?.querySelector('button')?.click();\n\t}\n\n\toverride render() {\n\t\tconst buttonClasses = {\n\t\t\t'sds-button': true,\n\t\t\t'sds-button--secondary': this.variant === 'secondary',\n\t\t\t'sds-button--tertiary': this.variant === 'tertiary',\n\t\t\t'sds-button--critical': this.variant === 'critical',\n\t\t\t'sds-button--medium': this.size === 'medium',\n\t\t\t'sds-button--small': this.size === 'small',\n\t\t\t'sds-button--as-link': !!this.href,\n\t\t};\n\n\t\tif (this.href) {\n\t\t\treturn html` <a\n\t\t\t\tid=\"link\"\n\t\t\t\tclass=\"${classMap(buttonClasses)}\"\n\t\t\t\thref=\"${this.href}\"\n\t\t\t\ttarget=\"${ifDefined(this.target)}\"\n\t\t\t>\n\t\t\t\t<slot name=\"before\"></slot>\n\t\t\t\t<slot></slot>\n\t\t\t\t<slot name=\"after\"></slot>\n\t\t\t</a>`;\n\t\t}\n\n\t\treturn html`\n\t\t\t<button\n\t\t\t\tid=\"control\"\n\t\t\t\tform=\"${ifDefined(this.form)}\"\n\t\t\t\tclass=\"${classMap(buttonClasses)}\"\n\t\t\t\ttype=\"${this.type}\"\n\t\t\t\tname=\"${ifDefined(this.name)}\"\n\t\t\t\tvalue=\"${ifDefined(this.value)}\"\n\t\t\t\t?disabled=\"${this.disabled}\"\n\t\t\t\t@click=\"${this._handleClick}\"\n\t\t\t>\n\t\t\t\t<slot name=\"before\"></slot>\n\t\t\t\t<slot></slot>\n\t\t\t\t<slot name=\"after\"></slot>\n\t\t\t</button>\n\t\t`;\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sds-button': SDSButton;\n\t}\n}\n"]}
1
+ {"version":3,"file":"sds-button.js","sourceRoot":"","sources":["../../src/sds-button/sds-button.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, PropertyValues, html, nothing } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { guardedCustomElement } from '../utils/guarded-custom-element';\nimport { styles } from './sds-button.styles';\nimport { ColorMode as LoaderColorMode } from '../sds-loader/sds-loader';\nimport { SDS_COLOR_PALETTES, SDS_SIZES, SDS_VARIANTS } from '../types';\n\ntype ButtonType = 'button' | 'submit' | 'reset';\ntype ButtonVariant = SDS_VARIANTS | 'critical';\ntype ButtonColorPalette = Extract<SDS_COLOR_PALETTES, 'accent' | 'danger'>;\ntype ButtonSize = 'large' | 'medium' | 'small' | Extract<SDS_SIZES, 'lg' | 'md' | 'sm'>;\ntype TargetTypes = '_self' | '_blank' | '_parent' | '_top';\n\nexport interface SDSButtonProps {\n\tcolor?: ButtonColorPalette;\n\tdisabled?: boolean;\n\tform?: string;\n\thref?: string;\n\ticon?: boolean;\n\tloading?: boolean;\n\tname?: string;\n\tsize?: ButtonSize;\n\ttarget?: TargetTypes;\n\ttype?: ButtonType;\n\tvalue?: string;\n\tvariant?: ButtonVariant;\n\tonClick?: (event: CustomEvent) => void;\n\tonReset?: (event: CustomEvent) => void;\n\tonSubmit?: (event: CustomEvent) => void;\n}\n\n@guardedCustomElement('sds-button')\nexport class SDSButton extends LitElement {\n\tstatic override styles = [styles];\n\n\tstatic formAssociated = true;\n\tpublic readonly internals: ElementInternals;\n\n\t@property({ type: Boolean, reflect: true }) disabled: boolean = false;\n\t@property({ type: Boolean, reflect: true }) icon: boolean = false;\n\t@property({ type: Boolean, reflect: true }) loading: boolean = false;\n\t@property({ type: String, reflect: true }) color?: ButtonColorPalette;\n\t@property({ type: String, reflect: true }) form?: string;\n\t@property({ type: String, reflect: true }) href?: string;\n\t@property({ type: String, reflect: true }) name?: string;\n\t@property({ type: String, reflect: true }) size: ButtonSize = 'lg';\n\t@property({ type: String, reflect: true }) target?: TargetTypes;\n\t@property({ type: String, reflect: true }) type: ButtonType = 'button';\n\t@property({ type: String, reflect: true }) value: string = '';\n\t@property({ type: String, reflect: true }) variant: ButtonVariant = 'primary';\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.internals = this.attachInternals();\n\t\tthis.attachShadow({ mode: 'open', delegatesFocus: true });\n\t}\n\n\toverride updated(changed: PropertyValues) {\n\t\t// Cast critical variant to primary and color to danger to prevent breaking changes\n\t\tif (changed.has('variant') && this.variant === 'critical') {\n\t\t\tthis.variant = 'primary';\n\t\t\tthis.color = 'danger';\n\t\t}\n\t}\n\n\tprivate readonly _handleClick = (event: MouseEvent) => {\n\t\tevent.preventDefault();\n\t\tevent.stopImmediatePropagation();\n\n\t\tif (!this.disabled) {\n\t\t\tswitch (this.type) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitEvent = new CustomEvent('submit', {\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\tcancelable: true,\n\t\t\t\t\t});\n\t\t\t\t\tconst shouldSubmit = this.dispatchEvent(submitEvent);\n\n\t\t\t\t\tif (shouldSubmit) {\n\t\t\t\t\t\tif (this.form) {\n\t\t\t\t\t\t\tconst root = this.getRootNode() as Document | ShadowRoot;\n\t\t\t\t\t\t\tconst formElement: HTMLFormElement | null = root.querySelector(`form#${this.form}`);\n\t\t\t\t\t\t\tformElement?.requestSubmit();\n\t\t\t\t\t\t} else if (this.internals.form) {\n\t\t\t\t\t\t\tthis.internals.form.requestSubmit();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase 'reset': {\n\t\t\t\t\tconst resetEvent = new CustomEvent('reset', {\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\tcancelable: true,\n\t\t\t\t\t});\n\t\t\t\t\tconst shouldReset = this.dispatchEvent(resetEvent);\n\n\t\t\t\t\tif (shouldReset) {\n\t\t\t\t\t\tif (this.form) {\n\t\t\t\t\t\t\tconst root = this.getRootNode() as Document | ShadowRoot;\n\t\t\t\t\t\t\tconst formElement: HTMLFormElement | null = root.querySelector(`form#${this.form}`);\n\t\t\t\t\t\t\tformElement?.reset();\n\t\t\t\t\t\t} else if (this.internals.form) {\n\t\t\t\t\t\t\tthis.internals.form.reset();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent('click', {\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n\n\toverride focus(): void {\n\t\tif (!this.disabled) this.shadowRoot?.querySelector('button')?.focus();\n\t}\n\n\toverride blur(): void {\n\t\tif (!this.disabled) this.shadowRoot?.querySelector('button')?.blur();\n\t}\n\n\toverride click(): void {\n\t\tif (!this.disabled) this.shadowRoot?.querySelector('button')?.click();\n\t}\n\n\toverride render() {\n\t\tconst buttonClasses = {\n\t\t\t'sds-button': true,\n\t\t\t'sds-button--as-link': !!this.href,\n\t\t};\n\n\t\tlet loaderColor: LoaderColorMode;\n\t\tif (this.color === 'danger') {\n\t\t\tloaderColor = ['primary', 'critical'].includes(this.variant) ? 'danger' : 'danger-contrast';\n\t\t} else {\n\t\t\tloaderColor = ['primary', 'critical'].includes(this.variant) ? 'accent' : 'accent-contrast';\n\t\t}\n\n\t\tif (this.href) {\n\t\t\treturn html` <a id=\"link\" class=\"${classMap(buttonClasses)}\" href=\"${this.href}\" target=\"${ifDefined(this.target)}\">\n\t\t\t\t<slot name=\"before\"></slot>\n\t\t\t\t<slot></slot>\n\t\t\t\t<slot name=\"after\"></slot>\n\t\t\t</a>`;\n\t\t}\n\n\t\treturn html`\n\t\t\t<button\n\t\t\t\tid=\"control\"\n\t\t\t\tform=\"${ifDefined(this.form)}\"\n\t\t\t\tclass=\"${classMap(buttonClasses)}\"\n\t\t\t\ttype=\"${this.type}\"\n\t\t\t\tname=\"${ifDefined(this.name)}\"\n\t\t\t\tvalue=\"${ifDefined(this.value)}\"\n\t\t\t\t?disabled=\"${this.disabled}\"\n\t\t\t\t@click=\"${this._handleClick}\"\n\t\t\t>\n\t\t\t\t${this.loading ? html`<sds-loader slot=\"before\" color=${loaderColor}></sds-loader>` : nothing} ${this.loading ? nothing : html`<slot name=\"before\"></slot>`}\n\t\t\t\t<slot></slot>\n\t\t\t\t${this.loading ? nothing : html`<slot name=\"after\"></slot>`}\n\t\t\t</button>\n\t\t`;\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sds-button': SDSButton;\n\t}\n}\n"]}