@scania/tegel 0.0.31 → 0.0.32

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 (153) hide show
  1. package/dist/cjs/sdds-toast.cjs.entry.js +1 -1
  2. package/dist/cjs/sdds-toast.cjs.entry.js.map +1 -1
  3. package/dist/collection/components/toast/sdds-toast.js +2 -2
  4. package/dist/collection/components/toast/sdds-toast.js.map +1 -1
  5. package/dist/components/dropdown-option.js +103 -0
  6. package/dist/components/dropdown-option.js.map +1 -0
  7. package/dist/components/dropdown.js +306 -0
  8. package/dist/components/dropdown.js.map +1 -0
  9. package/dist/components/icon.js +61 -0
  10. package/dist/components/icon.js.map +1 -0
  11. package/dist/components/index.d.ts +27 -0
  12. package/dist/components/index.js +3 -0
  13. package/dist/components/index.js.map +1 -0
  14. package/dist/components/popper.js +1801 -0
  15. package/dist/components/popper.js.map +1 -0
  16. package/dist/components/sdds-accordion-item.d.ts +11 -0
  17. package/dist/components/sdds-accordion-item.js +63 -0
  18. package/dist/components/sdds-accordion-item.js.map +1 -0
  19. package/dist/components/sdds-accordion.d.ts +11 -0
  20. package/dist/components/sdds-accordion.js +41 -0
  21. package/dist/components/sdds-accordion.js.map +1 -0
  22. package/dist/components/sdds-badges.d.ts +11 -0
  23. package/dist/components/sdds-badges.js +78 -0
  24. package/dist/components/sdds-badges.js.map +1 -0
  25. package/dist/components/sdds-banner.d.ts +11 -0
  26. package/dist/components/sdds-banner.js +122 -0
  27. package/dist/components/sdds-banner.js.map +1 -0
  28. package/dist/components/sdds-block.d.ts +11 -0
  29. package/dist/components/sdds-block.js +51 -0
  30. package/dist/components/sdds-block.js.map +1 -0
  31. package/dist/components/sdds-body-cell.d.ts +11 -0
  32. package/dist/components/sdds-body-cell.js +8 -0
  33. package/dist/components/sdds-body-cell.js.map +1 -0
  34. package/dist/components/sdds-breadcrumb-item.d.ts +11 -0
  35. package/dist/components/sdds-breadcrumb-item.js +46 -0
  36. package/dist/components/sdds-breadcrumb-item.js.map +1 -0
  37. package/dist/components/sdds-breadcrumb.d.ts +11 -0
  38. package/dist/components/sdds-breadcrumb.js +40 -0
  39. package/dist/components/sdds-breadcrumb.js.map +1 -0
  40. package/dist/components/sdds-button.d.ts +11 -0
  41. package/dist/components/sdds-button.js +62 -0
  42. package/dist/components/sdds-button.js.map +1 -0
  43. package/dist/components/sdds-card.d.ts +11 -0
  44. package/dist/components/sdds-card.js +87 -0
  45. package/dist/components/sdds-card.js.map +1 -0
  46. package/dist/components/sdds-checkbox.d.ts +11 -0
  47. package/dist/components/sdds-checkbox.js +79 -0
  48. package/dist/components/sdds-checkbox.js.map +1 -0
  49. package/dist/components/sdds-datetime.d.ts +11 -0
  50. package/dist/components/sdds-datetime.js +132 -0
  51. package/dist/components/sdds-datetime.js.map +1 -0
  52. package/dist/components/sdds-dropdown-filter.d.ts +11 -0
  53. package/dist/components/sdds-dropdown-filter.js +141 -0
  54. package/dist/components/sdds-dropdown-filter.js.map +1 -0
  55. package/dist/components/sdds-dropdown-option.d.ts +11 -0
  56. package/dist/components/sdds-dropdown-option.js +8 -0
  57. package/dist/components/sdds-dropdown-option.js.map +1 -0
  58. package/dist/components/sdds-dropdown.d.ts +11 -0
  59. package/dist/components/sdds-dropdown.js +8 -0
  60. package/dist/components/sdds-dropdown.js.map +1 -0
  61. package/dist/components/sdds-header-cell.d.ts +11 -0
  62. package/dist/components/sdds-header-cell.js +173 -0
  63. package/dist/components/sdds-header-cell.js.map +1 -0
  64. package/dist/components/sdds-icon.d.ts +11 -0
  65. package/dist/components/sdds-icon.js +8 -0
  66. package/dist/components/sdds-icon.js.map +1 -0
  67. package/dist/components/sdds-inline-tab.d.ts +11 -0
  68. package/dist/components/sdds-inline-tab.js +43 -0
  69. package/dist/components/sdds-inline-tab.js.map +1 -0
  70. package/dist/components/sdds-inline-tabs-fullbleed.d.ts +11 -0
  71. package/dist/components/sdds-inline-tabs-fullbleed.js +120 -0
  72. package/dist/components/sdds-inline-tabs-fullbleed.js.map +1 -0
  73. package/dist/components/sdds-inline-tabs.d.ts +11 -0
  74. package/dist/components/sdds-inline-tabs.js +248 -0
  75. package/dist/components/sdds-inline-tabs.js.map +1 -0
  76. package/dist/components/sdds-link.d.ts +11 -0
  77. package/dist/components/sdds-link.js +8 -0
  78. package/dist/components/sdds-link.js.map +1 -0
  79. package/dist/components/sdds-link2.js +47 -0
  80. package/dist/components/sdds-link2.js.map +1 -0
  81. package/dist/components/sdds-message.d.ts +11 -0
  82. package/dist/components/sdds-message.js +70 -0
  83. package/dist/components/sdds-message.js.map +1 -0
  84. package/dist/components/sdds-modal.d.ts +11 -0
  85. package/dist/components/sdds-modal.js +80 -0
  86. package/dist/components/sdds-modal.js.map +1 -0
  87. package/dist/components/sdds-navigation-tabs.d.ts +11 -0
  88. package/dist/components/sdds-navigation-tabs.js +120 -0
  89. package/dist/components/sdds-navigation-tabs.js.map +1 -0
  90. package/dist/components/sdds-popover-canvas.d.ts +11 -0
  91. package/dist/components/sdds-popover-canvas.js +111 -0
  92. package/dist/components/sdds-popover-canvas.js.map +1 -0
  93. package/dist/components/sdds-popover-menu.d.ts +11 -0
  94. package/dist/components/sdds-popover-menu.js +112 -0
  95. package/dist/components/sdds-popover-menu.js.map +1 -0
  96. package/dist/components/sdds-radio-button.d.ts +11 -0
  97. package/dist/components/sdds-radio-button.js +55 -0
  98. package/dist/components/sdds-radio-button.js.map +1 -0
  99. package/dist/components/sdds-slider.d.ts +11 -0
  100. package/dist/components/sdds-slider.js +397 -0
  101. package/dist/components/sdds-slider.js.map +1 -0
  102. package/dist/components/sdds-spinner.d.ts +11 -0
  103. package/dist/components/sdds-spinner.js +40 -0
  104. package/dist/components/sdds-spinner.js.map +1 -0
  105. package/dist/components/sdds-table-body-row-expandable.d.ts +11 -0
  106. package/dist/components/sdds-table-body-row-expandable.js +108 -0
  107. package/dist/components/sdds-table-body-row-expandable.js.map +1 -0
  108. package/dist/components/sdds-table-body-row.d.ts +11 -0
  109. package/dist/components/sdds-table-body-row.js +8 -0
  110. package/dist/components/sdds-table-body-row.js.map +1 -0
  111. package/dist/components/sdds-table-body.d.ts +11 -0
  112. package/dist/components/sdds-table-body.js +340 -0
  113. package/dist/components/sdds-table-body.js.map +1 -0
  114. package/dist/components/sdds-table-footer.d.ts +11 -0
  115. package/dist/components/sdds-table-footer.js +198 -0
  116. package/dist/components/sdds-table-footer.js.map +1 -0
  117. package/dist/components/sdds-table-header.d.ts +11 -0
  118. package/dist/components/sdds-table-header.js +127 -0
  119. package/dist/components/sdds-table-header.js.map +1 -0
  120. package/dist/components/sdds-table-toolbar.d.ts +11 -0
  121. package/dist/components/sdds-table-toolbar.js +90 -0
  122. package/dist/components/sdds-table-toolbar.js.map +1 -0
  123. package/dist/components/sdds-table.d.ts +11 -0
  124. package/dist/components/sdds-table.js +94 -0
  125. package/dist/components/sdds-table.js.map +1 -0
  126. package/dist/components/sdds-textarea.d.ts +11 -0
  127. package/dist/components/sdds-textarea.js +112 -0
  128. package/dist/components/sdds-textarea.js.map +1 -0
  129. package/dist/components/sdds-textfield.d.ts +11 -0
  130. package/dist/components/sdds-textfield.js +130 -0
  131. package/dist/components/sdds-textfield.js.map +1 -0
  132. package/dist/components/sdds-toast.d.ts +11 -0
  133. package/dist/components/sdds-toast.js +120 -0
  134. package/dist/components/sdds-toast.js.map +1 -0
  135. package/dist/components/sdds-toggle.d.ts +11 -0
  136. package/dist/components/sdds-toggle.js +72 -0
  137. package/dist/components/sdds-toggle.js.map +1 -0
  138. package/dist/components/sdds-tooltip.d.ts +11 -0
  139. package/dist/components/sdds-tooltip.js +130 -0
  140. package/dist/components/sdds-tooltip.js.map +1 -0
  141. package/dist/components/table-body-cell.js +104 -0
  142. package/dist/components/table-body-cell.js.map +1 -0
  143. package/dist/components/table-body-row.js +123 -0
  144. package/dist/components/table-body-row.js.map +1 -0
  145. package/dist/esm/sdds-toast.entry.js +1 -1
  146. package/dist/esm/sdds-toast.entry.js.map +1 -1
  147. package/dist/tegel/{p-46013562.entry.js → p-f51fe381.entry.js} +2 -2
  148. package/dist/tegel/p-f51fe381.entry.js.map +1 -0
  149. package/dist/tegel/tegel.esm.js +1 -1
  150. package/dist/types/components/toast/sdds-toast.d.ts +1 -1
  151. package/dist/types/components.d.ts +2 -2
  152. package/package.json +2 -2
  153. package/dist/tegel/p-46013562.entry.js.map +0 -1
@@ -0,0 +1,94 @@
1
+ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
+
3
+ const tableCss = ":host,.sdds-table{border-collapse:collapse;display:table;box-sizing:border-box}:host *,.sdds-table *{box-sizing:border-box}:host(.sdds-table--responsive),.sdds-table--responsive{width:100%}";
4
+
5
+ const Table = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
6
+ constructor() {
7
+ super();
8
+ this.__registerHost();
9
+ this.__attachShadow();
10
+ this.tablePropsChangedEvent = createEvent(this, "tablePropsChangedEvent", 7);
11
+ this.verticalDividers = false;
12
+ this.compactDesign = false;
13
+ this.noMinWidth = undefined;
14
+ this.enableMultiselect = false;
15
+ this.enableExpandableRows = false;
16
+ this.enableResponsive = false;
17
+ this.modeVariant = null;
18
+ this.tableId = crypto.randomUUID();
19
+ }
20
+ emitTablePropsChangedEvent(changedValueName, changedValue) {
21
+ this.tablePropsChangedEvent.emit({
22
+ tableId: this.tableId,
23
+ changed: [changedValueName],
24
+ [changedValueName]: changedValue,
25
+ });
26
+ }
27
+ enableMultiselectChanged(newValue) {
28
+ this.emitTablePropsChangedEvent('enableMultiselect', newValue);
29
+ }
30
+ enableExpandableRowsChanged(newValue) {
31
+ this.emitTablePropsChangedEvent('enableExpandableRows', newValue);
32
+ }
33
+ compactDesignChanged(newValue) {
34
+ this.emitTablePropsChangedEvent('compactDesign', newValue);
35
+ }
36
+ verticalDividersChanged(newValue) {
37
+ this.emitTablePropsChangedEvent('verticalDividers', newValue);
38
+ }
39
+ noMinWidthChanged(newValue) {
40
+ this.emitTablePropsChangedEvent('noMinWidth', newValue);
41
+ }
42
+ modeVariantChanged(newValue) {
43
+ this.emitTablePropsChangedEvent('modeVariant', newValue);
44
+ }
45
+ render() {
46
+ return (h(Host, { class: { 'sdds-table--responsive': this.enableResponsive } }, h("table", { class: {
47
+ 'sdds-table': true,
48
+ 'sdds-table--compact': this.compactDesign,
49
+ 'sdds-table--divider': this.verticalDividers,
50
+ 'sdds-table--no-min-width': this.noMinWidth,
51
+ 'sdds-table--responsive': this.enableResponsive,
52
+ } }, h("slot", null))));
53
+ }
54
+ get host() { return this; }
55
+ static get watchers() { return {
56
+ "enableMultiselect": ["enableMultiselectChanged"],
57
+ "enableExpandableRows": ["enableExpandableRowsChanged"],
58
+ "compactDesign": ["compactDesignChanged"],
59
+ "verticalDividers": ["verticalDividersChanged"],
60
+ "noMinWidth": ["noMinWidthChanged"],
61
+ "modeVariant": ["modeVariantChanged"]
62
+ }; }
63
+ static get style() { return tableCss; }
64
+ }, [1, "sdds-table", {
65
+ "verticalDividers": [516, "vertical-dividers"],
66
+ "compactDesign": [516, "compact-design"],
67
+ "noMinWidth": [516, "no-min-width"],
68
+ "enableMultiselect": [516, "enable-multiselect"],
69
+ "enableExpandableRows": [516, "enable-expandable-rows"],
70
+ "enableResponsive": [516, "enable-responsive"],
71
+ "modeVariant": [513, "mode-variant"],
72
+ "tableId": [1, "table-id"]
73
+ }]);
74
+ function defineCustomElement$1() {
75
+ if (typeof customElements === "undefined") {
76
+ return;
77
+ }
78
+ const components = ["sdds-table"];
79
+ components.forEach(tagName => { switch (tagName) {
80
+ case "sdds-table":
81
+ if (!customElements.get(tagName)) {
82
+ customElements.define(tagName, Table);
83
+ }
84
+ break;
85
+ } });
86
+ }
87
+ defineCustomElement$1();
88
+
89
+ const SddsTable = Table;
90
+ const defineCustomElement = defineCustomElement$1;
91
+
92
+ export { SddsTable, defineCustomElement };
93
+
94
+ //# sourceMappingURL=sdds-table.js.map
@@ -0,0 +1 @@
1
+ {"file":"sdds-table.js","mappings":";;AAAA,MAAM,QAAQ,GAAG,+LAA+L;;MCyBnM,KAAK;;;;;;4BAEqC,KAAK;yBAGR,KAAK;;6BAOD,KAAK;gCAGF,KAAK;4BAGT,KAAK;uBAGM,IAAI;mBAM1C,MAAM,CAAC,UAAU,EAAE;;EAa7C,0BAA0B,CAAC,gBAA6B,EAAE,YAAgC;IACxF,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;MAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;MACrB,OAAO,EAAE,CAAC,gBAAgB,CAAC;MAC3B,CAAC,gBAAgB,GAAG,YAAY;KACjC,CAAC,CAAC;GACJ;EAGD,wBAAwB,CAAC,QAAiB;IACxC,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;GAChE;EAGD,2BAA2B,CAAC,QAAiB;IAC3C,IAAI,CAAC,0BAA0B,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;GACnE;EAGD,oBAAoB,CAAC,QAAiB;IACpC,IAAI,CAAC,0BAA0B,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;GAC5D;EAGD,uBAAuB,CAAC,QAAiB;IACvC,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;GAC/D;EAGD,iBAAiB,CAAC,QAAiB;IACjC,IAAI,CAAC,0BAA0B,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;GACzD;EAGD,kBAAkB,CAAC,QAAwC;IACzD,IAAI,CAAC,0BAA0B,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;GAC1D;EAED,MAAM;IACJ,QACE,EAAC,IAAI,IAAC,KAAK,EAAE,EAAE,wBAAwB,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAC9D,aACE,KAAK,EAAE;QACL,YAAY,EAAE,IAAI;QAClB,qBAAqB,EAAE,IAAI,CAAC,aAAa;QACzC,qBAAqB,EAAE,IAAI,CAAC,gBAAgB;QAC5C,0BAA0B,EAAE,IAAI,CAAC,UAAU;QAC3C,wBAAwB,EAAE,IAAI,CAAC,gBAAgB;OAChD,IAED,eAAQ,CACF,CACH,EACP;GACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["./src/components/data-table/table/table.scss?tag=sdds-table&encapsulation=shadow","./src/components/data-table/table/table.tsx"],"sourcesContent":["@import '../../../mixins/box-sizing';\n\n:host,\n.sdds-table {\n border-collapse: collapse;\n display: table;\n @include sdds-box-sizing;\n}\n\n:host(.sdds-table--responsive),\n.sdds-table--responsive {\n width: 100%;\n}\n","// https://stackoverflow.com/questions/63051941/how-to-pass-data-as-array-of-object-in-stencil-js\n// https://medium.com/@scottmgerstl/passing-an-object-or-array-to-stencil-dd62b7d92641\n\nimport { Component, Prop, h, Host, Event, EventEmitter, Element, Watch } from '@stencil/core';\n\ntype Props = {\n verticalDividers: boolean;\n compactDesign: boolean;\n noMinWidth: boolean;\n enableMultiselect: boolean;\n enableExpandableRows: boolean;\n enableResponsive: boolean;\n modeVariant: 'primary' | 'secondary' | null;\n};\n\nexport type TablePropsChangedEvent = {\n tableId: string;\n changed: Array<keyof Props>;\n} & Partial<Props>;\n\n@Component({\n tag: 'sdds-table',\n styleUrl: 'table.scss',\n shadow: true,\n})\nexport class Table {\n /** Enables style with vertical dividers between columns */\n @Prop({ reflect: true }) verticalDividers: boolean = false;\n\n /** Enables style where data-table toolbar, rows and footer are less high */\n @Prop({ reflect: true }) compactDesign: boolean = false;\n\n /** Enables to customise width on data-table columns */\n @Prop({ reflect: true }) noMinWidth: boolean;\n // TODO: Due to unknown reason, one of this items has to be left as is. If all are false, it seems like emitting is not properly done and it affects other events in data table. Try setting it and observe text-align set on header cell\n\n /** Enables multiselect feature of data-table */\n @Prop({ reflect: true }) enableMultiselect: boolean = false;\n\n /** Enables extended row feature of data-table */\n @Prop({ reflect: true }) enableExpandableRows: boolean = false;\n\n /** Enables table to take 100% available width with equal spacing of columns */\n @Prop({ reflect: true }) enableResponsive: boolean = false;\n\n /** Variant of the component, based on current mode. */\n @Prop({ reflect: true }) modeVariant: 'primary' | 'secondary' = null;\n\n /** ID used for internal table functionality and events, must be unique.\n *\n * **NOTE**: If you're listening for table events you need to set this ID yourself to identify the table, as the default ID is random and will be different every time.\n */\n @Prop() tableId: string = crypto.randomUUID();\n\n @Element() host: HTMLElement;\n\n /** Broadcasts changes to the tables props */\n @Event({\n eventName: 'tablePropsChangedEvent',\n bubbles: true,\n composed: true,\n cancelable: true,\n })\n tablePropsChangedEvent: EventEmitter<TablePropsChangedEvent>;\n\n emitTablePropsChangedEvent(changedValueName: keyof Props, changedValue: Props[keyof Props]) {\n this.tablePropsChangedEvent.emit({\n tableId: this.tableId,\n changed: [changedValueName],\n [changedValueName]: changedValue,\n });\n }\n\n @Watch('enableMultiselect')\n enableMultiselectChanged(newValue: boolean) {\n this.emitTablePropsChangedEvent('enableMultiselect', newValue);\n }\n\n @Watch('enableExpandableRows')\n enableExpandableRowsChanged(newValue: boolean) {\n this.emitTablePropsChangedEvent('enableExpandableRows', newValue);\n }\n\n @Watch('compactDesign')\n compactDesignChanged(newValue: boolean) {\n this.emitTablePropsChangedEvent('compactDesign', newValue);\n }\n\n @Watch('verticalDividers')\n verticalDividersChanged(newValue: boolean) {\n this.emitTablePropsChangedEvent('verticalDividers', newValue);\n }\n\n @Watch('noMinWidth')\n noMinWidthChanged(newValue: boolean) {\n this.emitTablePropsChangedEvent('noMinWidth', newValue);\n }\n\n @Watch('modeVariant')\n modeVariantChanged(newValue: 'primary' | 'secondary' | null) {\n this.emitTablePropsChangedEvent('modeVariant', newValue);\n }\n\n render() {\n return (\n <Host class={{ 'sdds-table--responsive': this.enableResponsive }}>\n <table\n class={{\n 'sdds-table': true,\n 'sdds-table--compact': this.compactDesign,\n 'sdds-table--divider': this.verticalDividers,\n 'sdds-table--no-min-width': this.noMinWidth,\n 'sdds-table--responsive': this.enableResponsive,\n }}\n >\n <slot />\n </table>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface SddsTextarea extends Components.SddsTextarea, HTMLElement {}
4
+ export const SddsTextarea: {
5
+ prototype: SddsTextarea;
6
+ new (): SddsTextarea;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,112 @@
1
+ import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
2
+ import { d as defineCustomElement$2 } from './icon.js';
3
+
4
+ const textareaCss = ":root,.sdds-mode-light{--sdds-textarea-background-primary:var(--sdds-grey-50);--sdds-textarea-background-secondary:var(--sdds-white);--sdds-textarea-background:var(--sdds-textarea-background-primary);--sdds-textarea-color:var(--sdds-grey-868);--sdds-textarea-placeholder:var(--sdds-grey-500);--sdds-textarea-placeholder-focus-color:var(--sdds-grey-500);--sdds-textarea-disabled-color:var(--sdds-grey-400);--sdds-textarea-disabled-background:var(--sdds-white);--sdds-textarea-disabled-placeholder:var(--sdds-grey-400);--sdds-textarea-disabled-label:var(--sdds-grey-400);--sdds-textarea-label-color:var(--sdds-grey-958);--sdds-textarea-label-inside-color:var(--sdds-grey-700);--sdds-textarea-placeholder-focus-color:var(--sdds-grey-500);--sdds-textarea-helper:var(--sdds-grey-700);--sdds-textarea-helper-error:var(--sdds-negative);--sdds-textarea-bar:var(--sdds-blue-400);--sdds-textarea-bar-error:var(--sdds-negative);--sdds-textarea-textcounter:var(--sdds-grey-700);--sdds-textarea-textcounter-divider:var(--sdds-grey-500);--sdds-textarea-border-bottom:var(--sdds-grey-600);--sdds-textarea-border-bottom-hover:var(--sdds-grey-800);--sdds-textarea-border-bottom-success:var(--sdds-grey-958);--sdds-textarea-border-bottom-error:var(--sdds-negative);--sdds-textarea-icon-read-only-color:var(--sdds-grey-958);--sdds-textarea-icon-read-only-label-color:var(--sdds-grey-958);--sdds-textarea-resize-icon:var(--sdds-grey-500)}:root .sdds-mode-variant-primary,.sdds-mode-light .sdds-mode-variant-primary{--sdds-textarea-background:var(--sdds-textarea-background-primary)}:root .sdds-mode-variant-secondary,.sdds-mode-light .sdds-mode-variant-secondary{--sdds-textarea-background:var(--sdds-textarea-background-secondary)}.sdds-mode-dark{--sdds-textarea-background-primary:var(--sdds-grey-900);--sdds-textarea-background-secondary:var(--sdds-grey-868);--sdds-textarea-background:var(--sdds-textarea-background-primary);--sdds-textarea-color:var(--sdds-grey-200);--sdds-textarea-placeholder:var(--sdds-grey-600);--sdds-textarea-placeholder-focus-color:var(--sdds-grey-700);--sdds-textarea-disabled-color:var(--sdds-grey-800);--sdds-textarea-disabled-background:var(--sdds-grey-868);--sdds-textarea-disabled-placeholder:var(--sdds-grey-800);--sdds-textarea-disabled-label:var(--sdds-grey-700);--sdds-textarea-label-color:var(--sdds-grey-100);--sdds-textarea-label-inside-color:var(--sdds-grey-400);--sdds-textarea-placeholder-focus-color:var(--sdds-grey-700);--sdds-textarea-helper:var(--sdds-grey-600);--sdds-textarea-helper-error:var(--sdds-negative);--sdds-textarea-bar:var(--sdds-blue-400);--sdds-textarea-bar-error:var(--sdds-negative);--sdds-textarea-textcounter:var(--sdds-grey-600);--sdds-textarea-textcounter-divider:var(--sdds-grey-700);--sdds-textarea-border-bottom:var(--sdds-grey-600);--sdds-textarea-border-bottom-hover:var(--sdds-grey-400);--sdds-textarea-border-bottom-success:var(--sdds-grey-50);--sdds-textarea-border-bottom-error:var(--sdds-negative);--sdds-textarea-icon-read-only-color:var(--sdds-grey-100);--sdds-textarea-icon-read-only-label-color:var(--sdds-grey-50);--sdds-textarea-resize-icon:var(--sdds-grey-500)}.sdds-mode-dark .sdds-mode-variant-primary{--sdds-textarea-background:var(--sdds-textarea-background-primary)}.sdds-mode-dark .sdds-mode-variant-secondary{--sdds-textarea-background:var(--sdds-textarea-background-secondary)}.sdds-textarea-container{border-radius:4px 4px 0 0;position:relative;box-sizing:border-box;height:auto;width:100%;min-width:208px;display:inline-flex;background-color:transparent;flex-flow:row wrap;border-bottom:0}.sdds-textarea-container .sdds-textarea-wrapper{position:relative;width:unset;min-width:100%}.sdds-textarea-container:not(.sdds-textarea-disabled) .sdds-textarea-wrapper::before,.sdds-textarea-container:not(.sdds-textarea-disabled) .sdds-textarea-wrapper::after{content:\"\";height:2px;width:0;position:absolute;background:var(--sdds-textarea-bar);transition:0.35s ease all}.sdds-textarea-container:not(.sdds-textarea-disabled) .sdds-textarea-wrapper::before{left:50%}.sdds-textarea-container:not(.sdds-textarea-disabled) .sdds-textarea-wrapper::after{right:50%}.sdds-textarea-container:not(.sdds-textarea-disabled) .sdds-textarea-wrapper::after,.sdds-textarea-container:not(.sdds-textarea-disabled) .sdds-textarea-wrapper::before{top:calc(100% - 2px)}.sdds-textarea-input{border-radius:4px 4px 0 0;width:100%;box-sizing:border-box;margin:0;border:none;outline:none;height:100%;color:var(--sdds-textarea-color);background-color:var(--sdds-textarea-background);font:var(--sdds-detail-02);letter-spacing:var(--sdds-detail-02-ls);padding:var(--sdds-spacing-element-20) var(--sdds-spacing-element-16);display:block;resize:vertical;border-bottom:1px solid var(--sdds-textarea-border-bottom);transition:border-bottom-color 200ms ease}.sdds-textarea-input::placeholder{opacity:1;color:var(--sdds-textarea-placeholder)}.sdds-textarea-input:focus::placeholder{color:var(--sdds-textarea-placeholder-focus-color)}.sdds-textarea-input:disabled{background-color:var(--sdds-textarea-disabled-background);color:var(--sdds-textarea-disabled-color);cursor:not-allowed}.sdds-textarea-input:disabled::placeholder{color:var(--sdds-textarea-disabled-placeholder)}.sdds-textarea-input:disabled~.sdds-textfield-label-inside{color:var(--sdds-textarea-disabled-label)}.sdds-textarea-input::-webkit-resizer{display:none}.sdds-textarea-input:hover{border-bottom-color:var(--sdds-textarea-border-bottom-hover)}.sdds-textarea-resizer-icon{color:var(--sdds-textarea-resize-icon);position:absolute;display:block;bottom:2px;right:1px;padding-bottom:2px;padding-right:2px;pointer-events:none;background-color:var(--sdds-textarea-background)}.sdds-textarea-resizer-icon svg{display:block}.sdds-textarea-label{font:var(--sdds-detail-05);letter-spacing:var(--sdds-detail-05-ls);display:block;z-index:1;margin-bottom:var(--sdds-spacing-element-8);color:var(--sdds-textarea-label-color)}.sdds-textarea-container.sdds-textarea-label-inside .sdds-textarea-label{font:var(--sdds-detail-02);letter-spacing:var(--sdds-detail-02-ls);transition:0.1s ease all;color:var(--sdds-textarea-label-inside-color);position:absolute;top:var(--sdds-spacing-element-20);left:var(--sdds-spacing-element-16)}.sdds-textarea-container.sdds-textarea-label-inside .sdds-textarea-input::placeholder{color:transparent}.sdds-textarea-container.sdds-textarea-label-inside .sdds-textarea-input ::placeholder{color:transparent}.sdds-textarea-container.sdds-textarea-label-inside .sdds-textarea-input:focus::placeholder{transition:color 0.35s ease;color:var(--sdds-textarea-placeholder-focus-color)}.sdds-textarea-container.sdds-textarea-focus.sdds-textarea-label-inside .sdds-textarea-label{font:var(--sdds-detail-07);letter-spacing:var(--sdds-detail-07-ls);top:var(--sdds-spacing-element-8)}.sdds-textarea-container.sdds-textarea-focus .sdds-textarea-wrapper::before,.sdds-textarea-container.sdds-textarea-focus .sdds-textarea-wrapper::after{width:50%}.sdds-textarea-container.sdds-textarea-data.sdds-textarea-label-inside .sdds-textarea-label{font:var(--sdds-detail-07);letter-spacing:var(--sdds-detail-07-ls);top:var(--sdds-spacing-element-8)}.sdds-textarea-textcounter{font:var(--sdds-detail-05);letter-spacing:var(--sdds-detail-05-ls);color:var(--sdds-textarea-textcounter);float:right;flex-basis:100%;text-align:right;padding-top:var(--sdds-spacing-element-4)}.sdds-textarea-textcounter .sdds-textfield-textcounter-divider{font:var(--sdds-detail-05);letter-spacing:var(--sdds-detail-05-ls);color:var(--sdds-textarea-textcounter-divider)}.sdds-textarea-helper{font:var(--sdds-detail-05);letter-spacing:var(--sdds-detail-05-ls);display:flex;gap:8px;align-items:center;padding-top:var(--sdds-spacing-element-4);color:var(--sdds-textarea-helper);flex-grow:2;flex-basis:auto}.sdds-textarea-helper~.sdds-textarea-textcounter{flex-basis:auto}.sdds-textarea-success .sdds-textarea-input{border-bottom-color:var(--sdds-textarea-border-bottom-success)}.sdds-textarea-error .sdds-textarea-input{border-bottom-color:var(--sdds-textarea-border-bottom-error)}.sdds-textarea-error .sdds-textarea-wrapper::after,.sdds-textarea-error .sdds-textarea-wrapper::before{background:var(--sdds-textarea-bar-error)}.sdds-textarea-error .sdds-textarea-helper{color:var(--sdds-textarea-helper-error)}.sdds-textarea-disabled .sdds-textarea-input{border-bottom-color:transparent}.sdds-textarea-disabled .sdds-textarea-label{color:var(--sdds-textarea-disabled-label)}.sdds-textarea-icon__readonly{display:none;position:absolute;right:18px;top:18px;color:var(--sdds-textarea-icon-read-only-color)}.sdds-textarea-icon__readonly-label{display:none;position:absolute;right:18px;top:48px;font:var(--sdds-detail-05);letter-spacing:var(--sdds-detail-05-ls);padding:8px;color:var(--sdds-textarea-icon-read-only-label-color);background-color:var(--sdds-textarea-icon-read-only-label-background);white-space:nowrap;border-radius:4px 0 4px 4px}.sdds-textarea-readonly{pointer-events:none}.sdds-textarea-readonly .sdds-textarea-icon__readonly{display:block}.sdds-textarea-readonly .sdds-textarea-icon__readonly:hover~.sdds-textarea-icon__readonly-label{display:block}.sdds-textarea-readonly .sdds-textfield-input{padding-right:54px;background-color:transparent}.sdds-textarea-readonly .sdds-textfield-container{background-color:transparent}";
5
+
6
+ const Textarea = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
7
+ constructor() {
8
+ super();
9
+ this.__registerHost();
10
+ this.sddsChange = createEvent(this, "sddsChange", 6);
11
+ this.sddsBlur = createEvent(this, "sddsBlur", 6);
12
+ this.sddsInput = createEvent(this, "sddsInput", 6);
13
+ this.sddsFocus = createEvent(this, "sddsFocus", 6);
14
+ this.label = '';
15
+ this.name = '';
16
+ this.helper = undefined;
17
+ this.cols = undefined;
18
+ this.rows = undefined;
19
+ this.labelPosition = 'no-label';
20
+ this.placeholder = '';
21
+ this.value = '';
22
+ this.disabled = false;
23
+ this.readOnly = false;
24
+ this.state = 'default';
25
+ this.maxLength = undefined;
26
+ this.modeVariant = null;
27
+ this.autoFocus = false;
28
+ this.focusInput = undefined;
29
+ }
30
+ handleChange(event) {
31
+ this.sddsChange.emit(event);
32
+ }
33
+ handleBlur(event) {
34
+ this.sddsBlur.emit(event);
35
+ this.focusInput = false;
36
+ }
37
+ // Data input event in value prop
38
+ handleInput(event) {
39
+ this.sddsInput.emit(event);
40
+ this.value = event.target.value;
41
+ }
42
+ /* Set the input as focus when clicking the whole textfield with suffix/prefix */
43
+ handleFocus(event) {
44
+ this.textEl.focus();
45
+ this.focusInput = true;
46
+ this.sddsFocus.emit(event);
47
+ }
48
+ render() {
49
+ var _a;
50
+ return (h("div", { class: `
51
+ sdds-textarea-container
52
+ ${this.labelPosition === 'inside' ? 'sdds-textarea-label-inside' : ''}
53
+ ${this.focusInput ? 'sdds-textarea-focus' : ''}
54
+ ${this.disabled ? 'sdds-textarea-disabled' : ''}
55
+ ${this.readOnly ? 'sdds-textarea-readonly' : ''}
56
+ ${this.modeVariant !== null ? `sdds-mode-variant-${this.modeVariant}` : ''}
57
+ ${this.value ? 'sdds-textarea-data' : ''}
58
+ ${this.state === 'error' || this.state === 'success' ? `sdds-textarea-${this.state}` : ''}
59
+ ` }, this.labelPosition !== 'no-label' && (h("span", { class: 'sdds-textarea-label' }, this.label)), h("div", { class: "sdds-textarea-wrapper" }, h("textarea", { class: 'sdds-textarea-input', ref: (inputEl) => (this.textEl = inputEl), disabled: this.disabled, readonly: this.readOnly, placeholder: this.placeholder, value: this.value, name: this.name, autofocus: this.autoFocus, maxlength: this.maxLength, cols: this.cols, rows: this.rows, onFocus: (event) => {
60
+ if (!this.readOnly) {
61
+ this.handleFocus(event);
62
+ }
63
+ }, onBlur: (event) => {
64
+ if (!this.readOnly) {
65
+ this.handleBlur(event);
66
+ }
67
+ }, onInput: (event) => this.handleInput(event), onChange: (event) => this.handleChange(event) }), h("span", { class: "sdds-textarea-resizer-icon" }, h("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, h("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M11.8536 0.853553C12.0488 0.658291 12.0488 0.341709 11.8536 0.146447C11.6583 -0.0488155 11.3417 -0.0488155 11.1464 0.146447L0.146447 11.1464C-0.0488155 11.3417 -0.0488155 11.6583 0.146447 11.8536C0.341709 12.0488 0.658291 12.0488 0.853553 11.8536L11.8536 0.853553ZM11.8536 4.64645C12.0488 4.84171 12.0488 5.15829 11.8536 5.35355L5.35355 11.8536C5.15829 12.0488 4.84171 12.0488 4.64645 11.8536C4.45118 11.6583 4.45118 11.3417 4.64645 11.1464L11.1464 4.64645C11.3417 4.45118 11.6583 4.45118 11.8536 4.64645ZM11.8536 8.64645C12.0488 8.84171 12.0488 9.15829 11.8536 9.35355L9.35355 11.8536C9.15829 12.0488 8.84171 12.0488 8.64645 11.8536C8.45118 11.6583 8.45118 11.3417 8.64645 11.1464L11.1464 8.64645C11.3417 8.45118 11.6583 8.45118 11.8536 8.64645Z", fill: "currentColor" }))), h("span", { class: "sdds-textarea-icon__readonly" }, h("sdds-icon", { name: "edit_inactive" })), h("span", { class: "sdds-textarea-icon__readonly-label" }, "This field is non-editable")), h("span", { class: 'sdds-textarea-helper' }, this.state === 'error' && h("sdds-icon", { name: "error", size: "16px" }), this.helper), this.maxLength > 0 && (h("div", { class: 'sdds-textarea-textcounter' }, this.value === null ? 0 : (_a = this.value) === null || _a === void 0 ? void 0 : _a.length, h("span", { class: "sdds-textfield-textcounter-divider" }, " / "), " ", this.maxLength))));
68
+ }
69
+ static get style() { return textareaCss; }
70
+ }, [0, "sdds-textarea", {
71
+ "label": [1],
72
+ "name": [1],
73
+ "helper": [1],
74
+ "cols": [2],
75
+ "rows": [2],
76
+ "labelPosition": [1, "label-position"],
77
+ "placeholder": [1],
78
+ "value": [1],
79
+ "disabled": [4],
80
+ "readOnly": [4, "read-only"],
81
+ "state": [1],
82
+ "maxLength": [2, "max-length"],
83
+ "modeVariant": [1, "mode-variant"],
84
+ "autoFocus": [4, "auto-focus"],
85
+ "focusInput": [32]
86
+ }]);
87
+ function defineCustomElement$1() {
88
+ if (typeof customElements === "undefined") {
89
+ return;
90
+ }
91
+ const components = ["sdds-textarea", "sdds-icon"];
92
+ components.forEach(tagName => { switch (tagName) {
93
+ case "sdds-textarea":
94
+ if (!customElements.get(tagName)) {
95
+ customElements.define(tagName, Textarea);
96
+ }
97
+ break;
98
+ case "sdds-icon":
99
+ if (!customElements.get(tagName)) {
100
+ defineCustomElement$2();
101
+ }
102
+ break;
103
+ } });
104
+ }
105
+ defineCustomElement$1();
106
+
107
+ const SddsTextarea = Textarea;
108
+ const defineCustomElement = defineCustomElement$1;
109
+
110
+ export { SddsTextarea, defineCustomElement };
111
+
112
+ //# sourceMappingURL=sdds-textarea.js.map
@@ -0,0 +1 @@
1
+ {"file":"sdds-textarea.js","mappings":"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","names":[],"sources":["./src/components/textarea/textarea.scss?tag=sdds-textarea","./src/components/textarea/textarea.tsx"],"sourcesContent":["@import './textarea-theme-vars.scss';\n\n@mixin textfield-base {\n border-radius: 4px 4px 0 0;\n width: 100%;\n box-sizing: border-box;\n margin: 0;\n border: none;\n outline: none;\n height: 100%;\n color: var(--sdds-textarea-color);\n background-color: var(--sdds-textarea-background);\n\n &::placeholder {\n opacity: 1;\n color: var(--sdds-textarea-placeholder);\n }\n\n &:focus::placeholder {\n color: var(--sdds-textarea-placeholder-focus-color);\n }\n\n &:disabled {\n background-color: var(--sdds-textarea-disabled-background);\n color: var(--sdds-textarea-disabled-color);\n cursor: not-allowed;\n\n &::placeholder {\n color: var(--sdds-textarea-disabled-placeholder);\n }\n\n ~ .sdds-textfield-label-inside {\n color: var(--sdds-textarea-disabled-label);\n }\n }\n}\n\n@mixin placeholder-label {\n &::placeholder {\n color: transparent;\n }\n\n ::placeholder {\n color: transparent;\n }\n\n //Input field in focus\n &:focus::placeholder {\n transition: color 0.35s ease;\n color: var(--sdds-textarea-placeholder-focus-color);\n }\n}\n\n.sdds-textarea-container {\n //@extend .sdds-textfield-container;\n border-radius: 4px 4px 0 0;\n position: relative;\n box-sizing: border-box;\n\n //@extend end\n\n height: auto;\n width: 100%;\n min-width: 208px;\n display: inline-flex;\n background-color: transparent;\n flex-flow: row wrap;\n border-bottom: 0;\n}\n\n.sdds-textarea-container {\n .sdds-textarea-wrapper {\n position: relative;\n width: unset;\n min-width: 100%;\n }\n}\n\n.sdds-textarea-container:not(.sdds-textarea-disabled) {\n .sdds-textarea-wrapper {\n &::before,\n &::after {\n content: '';\n height: 2px;\n width: 0;\n position: absolute;\n background: var(--sdds-textarea-bar);\n transition: 0.35s ease all;\n }\n\n &::before {\n left: 50%;\n }\n\n &::after {\n right: 50%;\n }\n\n &::after,\n &::before {\n top: calc(100% - 2px);\n }\n }\n}\n\n.sdds-textarea-input {\n @include textfield-base;\n\n font: var(--sdds-detail-02);\n letter-spacing: var(--sdds-detail-02-ls);\n padding: var(--sdds-spacing-element-20) var(--sdds-spacing-element-16);\n display: block;\n resize: vertical;\n border-bottom: 1px solid var(--sdds-textarea-border-bottom);\n transition: border-bottom-color 200ms ease;\n\n // Display none only works in Chrome\n &::-webkit-resizer {\n display: none;\n }\n\n &:hover {\n border-bottom-color: var(--sdds-textarea-border-bottom-hover);\n }\n}\n\n// Need to override default resizer in FF & Safari\n.sdds-textarea-resizer-icon {\n color: var(--sdds-textarea-resize-icon);\n position: absolute;\n display: block;\n bottom: 2px;\n right: 1px;\n padding-bottom: 2px;\n padding-right: 2px;\n pointer-events: none;\n background-color: var(--sdds-textarea-background);\n\n svg {\n display: block;\n }\n}\n\n.sdds-textarea-label {\n font: var(--sdds-detail-05);\n letter-spacing: var(--sdds-detail-05-ls);\n display: block;\n z-index: 1;\n margin-bottom: var(--sdds-spacing-element-8);\n color: var(--sdds-textarea-label-color);\n}\n\n.sdds-textarea-container {\n &.sdds-textarea-label-inside {\n .sdds-textarea-label {\n font: var(--sdds-detail-02);\n letter-spacing: var(--sdds-detail-02-ls);\n transition: 0.1s ease all;\n\n //@include end\n\n color: var(--sdds-textarea-label-inside-color);\n position: absolute;\n top: var(--sdds-spacing-element-20);\n left: var(--sdds-spacing-element-16);\n }\n\n .sdds-textarea-input {\n @include placeholder-label;\n }\n }\n\n &.sdds-textarea-focus {\n &.sdds-textarea-label-inside {\n .sdds-textarea-label {\n font: var(--sdds-detail-07);\n letter-spacing: var(--sdds-detail-07-ls);\n top: var(--sdds-spacing-element-8);\n }\n }\n\n .sdds-textarea-wrapper {\n &::before,\n &::after {\n width: 50%;\n }\n }\n }\n\n &.sdds-textarea-data {\n &.sdds-textarea-label-inside {\n .sdds-textarea-label {\n font: var(--sdds-detail-07);\n letter-spacing: var(--sdds-detail-07-ls);\n top: var(--sdds-spacing-element-8);\n }\n }\n }\n}\n\n.sdds-textarea-textcounter {\n //@extend .sdds-textfield-textcounter;\n font: var(--sdds-detail-05);\n letter-spacing: var(--sdds-detail-05-ls);\n color: var(--sdds-textarea-textcounter);\n float: right;\n\n & .sdds-textfield-textcounter-divider {\n font: var(--sdds-detail-05);\n letter-spacing: var(--sdds-detail-05-ls);\n color: var(--sdds-textarea-textcounter-divider);\n }\n\n //@extend end\n\n flex-basis: 100%;\n text-align: right;\n padding-top: var(--sdds-spacing-element-4);\n}\n\n.sdds-textarea-helper {\n font: var(--sdds-detail-05);\n letter-spacing: var(--sdds-detail-05-ls);\n display: flex;\n gap: 8px;\n align-items: center;\n padding-top: var(--sdds-spacing-element-4);\n color: var(--sdds-textarea-helper);\n flex-grow: 2;\n flex-basis: auto;\n\n ~ .sdds-textarea-textcounter {\n flex-basis: auto;\n }\n}\n\n// Different state\n\n.sdds-textarea-success {\n .sdds-textarea-input {\n border-bottom-color: var(--sdds-textarea-border-bottom-success);\n }\n}\n\n.sdds-textarea-error {\n .sdds-textarea-input {\n border-bottom-color: var(--sdds-textarea-border-bottom-error);\n }\n\n .sdds-textarea-wrapper {\n &::after,\n &::before {\n background: var(--sdds-textarea-bar-error);\n }\n }\n\n .sdds-textarea-helper {\n color: var(--sdds-textarea-helper-error);\n }\n}\n\n//Disabled state\n.sdds-textarea-disabled {\n .sdds-textarea-input {\n border-bottom-color: transparent;\n }\n\n .sdds-textarea-label {\n color: var(--sdds-textarea-disabled-label);\n }\n}\n\n//Read only state\n\n.sdds-textarea-icon__readonly {\n display: none;\n position: absolute;\n right: 18px;\n top: 18px;\n color: var(--sdds-textarea-icon-read-only-color);\n\n &-label {\n display: none;\n position: absolute;\n right: 18px;\n top: 48px;\n font: var(--sdds-detail-05);\n letter-spacing: var(--sdds-detail-05-ls);\n padding: 8px;\n color: var(--sdds-textarea-icon-read-only-label-color);\n background-color: var(--sdds-textarea-icon-read-only-label-background);\n white-space: nowrap;\n border-radius: 4px 0 4px 4px;\n }\n}\n\n.sdds-textarea-readonly {\n pointer-events: none;\n\n .sdds-textarea-icon__readonly {\n display: block;\n\n &:hover {\n ~ .sdds-textarea-icon__readonly-label {\n display: block;\n }\n }\n }\n\n .sdds-textfield-input {\n padding-right: 54px;\n background-color: transparent;\n }\n\n .sdds-textfield-container {\n background-color: transparent;\n }\n}\n","import { Component, h, Prop, State, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'sdds-textarea',\n styleUrl: 'textarea.scss',\n shadow: false,\n})\nexport class Textarea {\n /** Textinput for focus state */\n textEl?: HTMLTextAreaElement;\n\n /** Label text */\n @Prop() label: string = '';\n\n /** Name attribute */\n @Prop() name: string = '';\n\n /** Helper text */\n @Prop() helper: string;\n\n /** Textarea cols attribute */\n @Prop() cols: number;\n\n /** Textarea rows attribute */\n @Prop() rows: number;\n\n /** Position of the label for the textfield. */\n @Prop() labelPosition: 'inside' | 'outside' | 'no-label' = 'no-label';\n\n /** Placeholder text */\n @Prop() placeholder: string = '';\n\n /** Value of the input text */\n @Prop() value: string = '';\n\n /** Set input in disabled state */\n @Prop() disabled: boolean = false;\n\n /** Set input in readonly state */\n @Prop() readOnly: boolean = false;\n\n /** Error state of input */\n @Prop() state: 'error' | 'success' | 'default' = 'default';\n\n /** Max length of input */\n @Prop() maxLength: number;\n\n /** Mode variant of the textarea */\n @Prop() modeVariant: 'primary' | 'secondary' = null;\n\n /** Control of autofocus */\n @Prop() autoFocus: boolean = false;\n\n /** Listen to the focus state of the input */\n @State() focusInput;\n\n /** Change event for the textarea */\n @Event({\n eventName: 'sddsChange',\n composed: true,\n bubbles: true,\n cancelable: false,\n })\n sddsChange: EventEmitter;\n\n handleChange(event): void {\n this.sddsChange.emit(event);\n }\n\n /** Blur event for the textarea */\n @Event({\n eventName: 'sddsBlur',\n composed: true,\n bubbles: true,\n cancelable: false,\n })\n sddsBlur: EventEmitter<FocusEvent>;\n\n handleBlur(event): void {\n this.sddsBlur.emit(event);\n this.focusInput = false;\n }\n\n /** Input event for the textarea */\n @Event({\n eventName: 'sddsInput',\n composed: true,\n bubbles: true,\n cancelable: false,\n })\n sddsInput: EventEmitter<InputEvent>;\n\n // Data input event in value prop\n handleInput(event): void {\n this.sddsInput.emit(event);\n this.value = event.target.value;\n }\n\n /** Focus event for the textarea */\n @Event({\n eventName: 'sddsFocus',\n composed: true,\n bubbles: true,\n cancelable: false,\n })\n sddsFocus: EventEmitter<FocusEvent>;\n\n /* Set the input as focus when clicking the whole textfield with suffix/prefix */\n handleFocus(event): void {\n this.textEl.focus();\n this.focusInput = true;\n this.sddsFocus.emit(event);\n }\n\n render() {\n return (\n <div\n class={`\n sdds-textarea-container\n ${this.labelPosition === 'inside' ? 'sdds-textarea-label-inside' : ''}\n ${this.focusInput ? 'sdds-textarea-focus' : ''}\n ${this.disabled ? 'sdds-textarea-disabled' : ''}\n ${this.readOnly ? 'sdds-textarea-readonly' : ''}\n ${this.modeVariant !== null ? `sdds-mode-variant-${this.modeVariant}` : ''}\n ${this.value ? 'sdds-textarea-data' : ''}\n ${this.state === 'error' || this.state === 'success' ? `sdds-textarea-${this.state}` : ''}\n `}\n >\n {this.labelPosition !== 'no-label' && (\n <span class={'sdds-textarea-label'}>{this.label}</span>\n )}\n <div class=\"sdds-textarea-wrapper\">\n <textarea\n class={'sdds-textarea-input'}\n ref={(inputEl) => (this.textEl = inputEl as HTMLTextAreaElement)}\n disabled={this.disabled}\n readonly={this.readOnly}\n placeholder={this.placeholder}\n value={this.value}\n name={this.name}\n autofocus={this.autoFocus}\n maxlength={this.maxLength}\n cols={this.cols}\n rows={this.rows}\n onFocus={(event) => {\n if (!this.readOnly) {\n this.handleFocus(event);\n }\n }}\n onBlur={(event) => {\n if (!this.readOnly) {\n this.handleBlur(event);\n }\n }}\n onInput={(event) => this.handleInput(event)}\n onChange={(event) => this.handleChange(event)}\n ></textarea>\n <span class=\"sdds-textarea-resizer-icon\">\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11.8536 0.853553C12.0488 0.658291 12.0488 0.341709 11.8536 0.146447C11.6583 -0.0488155 11.3417 -0.0488155 11.1464 0.146447L0.146447 11.1464C-0.0488155 11.3417 -0.0488155 11.6583 0.146447 11.8536C0.341709 12.0488 0.658291 12.0488 0.853553 11.8536L11.8536 0.853553ZM11.8536 4.64645C12.0488 4.84171 12.0488 5.15829 11.8536 5.35355L5.35355 11.8536C5.15829 12.0488 4.84171 12.0488 4.64645 11.8536C4.45118 11.6583 4.45118 11.3417 4.64645 11.1464L11.1464 4.64645C11.3417 4.45118 11.6583 4.45118 11.8536 4.64645ZM11.8536 8.64645C12.0488 8.84171 12.0488 9.15829 11.8536 9.35355L9.35355 11.8536C9.15829 12.0488 8.84171 12.0488 8.64645 11.8536C8.45118 11.6583 8.45118 11.3417 8.64645 11.1464L11.1464 8.64645C11.3417 8.45118 11.6583 8.45118 11.8536 8.64645Z\"\n fill=\"currentColor\"\n />\n </svg>\n </span>\n <span class=\"sdds-textarea-icon__readonly\">\n <sdds-icon name=\"edit_inactive\"></sdds-icon>\n </span>\n <span class=\"sdds-textarea-icon__readonly-label\">This field is non-editable</span>\n </div>\n <span class={'sdds-textarea-helper'}>\n {this.state === 'error' && <sdds-icon name=\"error\" size=\"16px\"></sdds-icon>}\n {this.helper}\n </span>\n\n {this.maxLength > 0 && (\n <div class={'sdds-textarea-textcounter'}>\n {this.value === null ? 0 : this.value?.length}\n <span class=\"sdds-textfield-textcounter-divider\"> / </span> {this.maxLength}\n </div>\n )}\n </div>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface SddsTextfield extends Components.SddsTextfield, HTMLElement {}
4
+ export const SddsTextfield: {
5
+ prototype: SddsTextfield;
6
+ new (): SddsTextfield;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,130 @@
1
+ import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
2
+ import { d as defineCustomElement$2 } from './icon.js';
3
+
4
+ const textfieldCss = ":root,.sdds-mode-light{--sdds-textfield-background-primary:var(--sdds-grey-50);--sdds-textfield-background-secondary:var(--sdds-white);--sdds-textfield-background:var(--sdds-textfield-background-primary);--sdds-textfield-color:var(--sdds-grey-868);--sdds-textfield-placeholder:var(--sdds-grey-500);--sdds-textfield-background-disabled-primary:var(--sdds-grey-50);--sdds-textfield-background-disabled-secondary:var(--sdds-white);--sdds-textfield-background-disabled:var(--sdds-textfield-background-disabled-primary);--sdds-textfield-color-disabled:var(--sdds-grey-400);--sdds-textfield-placeholder-disabled:var(--sdds-grey-400);--sdds-textfield-label-disabled:var(--sdds-grey-400);--sdds-textfield-ps-color-disabled:var(--sdds-grey-400);--sdds-textfield-label-color:var(--sdds-grey-958);--sdds-textfield-label-inside-color:var(--sdds-grey-700);--sdds-textfield-placeholder-focus-color:var(--sdds-grey-500);--sdds-textfield-bar:var(--sdds-blue-400);--sdds-textfield-helper:var(--sdds-grey-700);--sdds-textfield-border-bottom-error:var(--sdds-negative);--sdds-textfield-helper-error:var(--sdds-negative);--sdds-textfield-bar-error:var(--sdds-negative);--sdds-textfield-icon-error:var(--sdds-negative);--sdds-textfield-textcounter:var(--sdds-grey-700);--sdds-textfield-textcounter-divider:var(--sdds-grey-500);--sdds-textfield-ps-color:var(--sdds-grey-600);--sdds-textfield-resize-icon:var(--sdds-grey-500);--sdds-textfield-background-secondary:var(--sdds-white);--sdds-textfield-border-bottom:var(--sdds-grey-600);--sdds-textfield-border-bottom-hover:var(--sdds-grey-800);--sdds-textfield-border-bottom-success:var(--sdds-grey-958);--sdds-textfield-border-bottom-error:var(--sdds-negative);--sdds-textfield-icon-read-only-color:var(--sdds-grey-958);--sdds-textfield-icon-read-only-label-color:var(--sdds-grey-958)}:root .sdds-mode-variant-primary,.sdds-mode-light .sdds-mode-variant-primary{--sdds-textfield-background:var(--sdds-textfield-background-primary);--sdds-textfield-background-disabled:var(--sdds-textfield-background-disabled-primary)}:root .sdds-mode-variant-secondary,.sdds-mode-light .sdds-mode-variant-secondary{--sdds-textfield-background:var(--sdds-textfield-background-secondary);--sdds-textfield-background-disabled:var(--sdds-textfield-background-disabled-secondary)}.sdds-mode-dark{--sdds-textfield-background-primary:var(--sdds-grey-900);--sdds-textfield-background:var(--sdds-textfield-background-primary);--sdds-textfield-background-secondary:var(--sdds-grey-868);--sdds-textfield-color:var(--sdds-grey-200);--sdds-textfield-placeholder:var(--sdds-grey-600);--sdds-textfield-ps-color-disabled:var(--sdds-grey-700);--sdds-textfield-color-disabled:var(--sdds-grey-800);--sdds-textfield-background-disabled-primary:var(--sdds-grey-900);--sdds-textfield-background-disabled-secondary:var(--sdds-grey-868);--sdds-textfield-background-disabled:var(--sdds-textfield-background-disabled-primary);--sdds-textfield-placeholder-disabled:var(--sdds-grey-800);--sdds-textfield-label-disabled:var(--sdds-grey-700);--sdds-textfield-label-color:var(--sdds-grey-100);--sdds-textfield-label-inside-color:var(--sdds-grey-400);--sdds-textfield-placeholder-focus-color:var(--sdds-grey-700);--sdds-textfield-bar:var(--sdds-blue-400);--sdds-textfield-helper:var(--sdds-grey-600);--sdds-textfield-helper-error:var(--sdds-negative);--sdds-textfield-bar-error:var(--sdds-negative);--sdds-textfield-icon-error:var(--sdds-negative);--sdds-textfield-textcounter:var(--sdds-grey-600);--sdds-textfield-textcounter-divider:var(--sdds-grey-700);--sdds-textfield-ps-color:var(--sdds-grey-100);--sdds-textfield-resize-icon:var(--sdds-grey-500);--sdds-textfield-border-bottom:var(--sdds-grey-600);--sdds-textfield-border-bottom-hover:var(--sdds-grey-400);--sdds-textfield-border-bottom-success:var(--sdds-grey-50);--sdds-textfield-border-bottom-error:var(--sdds-negative);--sdds-textfield-icon-read-only-color:var(--sdds-grey-100);--sdds-textfield-icon-read-only-label-color:var(--sdds-grey-50)}.sdds-mode-dark .sdds-mode-variant-primary{--sdds-textfield-background:var(--sdds-textfield-background-primary);--sdds-textfield-background-disabled:var(--sdds-textfield-background-disabled-primary)}.sdds-mode-dark .sdds-mode-variant-secondary{--sdds-textfield-background:var(--sdds-textfield-background-secondary);--sdds-textfield-background-disabled:var(--sdds-textfield-background-disabled-secondary)}.sdds-textfield-input{border-radius:4px 4px 0 0;width:100%;box-sizing:border-box;margin:0;border:none;outline:none;height:100%;color:var(--sdds-textfield-color);background-color:var(--sdds-textfield-background);font:var(--sdds-detail-02);letter-spacing:var(--sdds-detail-02-ls);padding:var(--sdds-spacing-element-20) var(--sdds-spacing-element-16)}.sdds-textfield-input::placeholder{opacity:1;color:var(--sdds-textfield-placeholder)}.sdds-textfield-input:focus::placeholder{color:var(--sdds-textfield-placeholder-focus-color)}.sdds-textfield-input:disabled{cursor:not-allowed;background-color:var(--sdds-textfield-background-disabled);color:var(--sdds-textfield-color-disabled)}.sdds-textfield-input:disabled::placeholder{color:var(--sdds-textfield-placeholder-disabled)}.sdds-textfield-input:disabled~.sdds-textfield-label-inside{color:var(--sdds-textfield-label-disabled)}.sdds-textfield-input-md{border-radius:4px 4px 0 0;width:100%;box-sizing:border-box;margin:0;border:none;outline:none;height:100%;color:var(--sdds-textfield-color);background-color:var(--sdds-textfield-background);font:var(--sdds-detail-02);letter-spacing:var(--sdds-detail-02-ls);padding:var(--sdds-spacing-element-16)}.sdds-textfield-input-md::placeholder{opacity:1;color:var(--sdds-textfield-placeholder)}.sdds-textfield-input-md:focus::placeholder{color:var(--sdds-textfield-placeholder-focus-color)}.sdds-textfield-input-md:disabled{cursor:not-allowed;background-color:var(--sdds-textfield-background-disabled);color:var(--sdds-textfield-color-disabled)}.sdds-textfield-input-md:disabled::placeholder{color:var(--sdds-textfield-placeholder-disabled)}.sdds-textfield-input-md:disabled~.sdds-textfield-label-inside{color:var(--sdds-textfield-label-disabled)}.sdds-textfield-input-sm{border-radius:4px 4px 0 0;width:100%;box-sizing:border-box;margin:0;border:none;outline:none;height:100%;color:var(--sdds-textfield-color);background-color:var(--sdds-textfield-background);font:var(--sdds-detail-02);letter-spacing:var(--sdds-detail-02-ls);padding:var(--sdds-spacing-element-16)}.sdds-textfield-input-sm::placeholder{opacity:1;color:var(--sdds-textfield-placeholder)}.sdds-textfield-input-sm:focus::placeholder{color:var(--sdds-textfield-placeholder-focus-color)}.sdds-textfield-input-sm:disabled{cursor:not-allowed;background-color:var(--sdds-textfield-background-disabled);color:var(--sdds-textfield-color-disabled)}.sdds-textfield-input-sm:disabled::placeholder{color:var(--sdds-textfield-placeholder-disabled)}.sdds-textfield-input-sm:disabled~.sdds-textfield-label-inside{color:var(--sdds-textfield-label-disabled)}.sdds-textfield-container{border-radius:4px 4px 0 0;display:flex;position:relative;height:56px;box-sizing:border-box;background-color:var(--sdds-textfield-background);border-bottom:1px solid var(--sdds-textfield-border-bottom);transition:border-bottom-color 200ms ease}.sdds-textfield-container:hover{border-bottom-color:var(--sdds-textfield-border-bottom-hover)}.sdds-form-textfield-md .sdds-textfield-container{height:48px}.sdds-form-textfield-sm .sdds-textfield-container{height:40px}.sdds-textfield-input-container{position:relative;width:100%}.sdds-textfield-label-outside>*{font:var(--sdds-detail-05);letter-spacing:var(--sdds-detail-05-ls);display:block;margin-bottom:var(--sdds-spacing-element-8);color:var(--sdds-textfield-label-color)}.sdds-textfield-label-inside{font:var(--sdds-detail-02);letter-spacing:var(--sdds-detail-02-ls);position:absolute;pointer-events:none;color:var(--sdds-textfield-label-inside-color);left:16px}.sdds-form-textfield{display:block;min-width:208px}.sdds-form-textfield-nomin{min-width:auto}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input{padding-top:var(--sdds-spacing-element-24);padding-bottom:15px}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input~.sdds-textfield-label-inside{top:20px}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input::placeholder{color:transparent}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input::input-placeholder{color:transparent}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input:placeholder{color:transparent}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input ::placeholder{color:transparent}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input:focus::placeholder{transition:color 0.35s ease;color:var(--sdds-textfield-placeholder-focus-color)}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input-md{padding-top:var(--sdds-spacing-element-20);padding-bottom:11px}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input-md~.sdds-textfield-label-inside{top:16px}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input-md::placeholder{color:transparent}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input-md::input-placeholder{color:transparent}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input-md:placeholder{color:transparent}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input-md ::placeholder{color:transparent}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input-md:focus::placeholder{transition:color 0.35s ease;color:var(--sdds-textfield-placeholder-focus-color)}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input-sm{padding-top:var(--sdds-spacing-element-20);padding-bottom:11px}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input-sm~.sdds-textfield-label-inside{top:16px}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input-sm::placeholder{color:transparent}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input-sm::input-placeholder{color:transparent}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input-sm:placeholder{color:transparent}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input-sm ::placeholder{color:transparent}.sdds-form-textfield.sdds-textfield-container-label-inside .sdds-textfield-input-sm:focus::placeholder{transition:color 0.35s ease;color:var(--sdds-textfield-placeholder-focus-color)}.sdds-form-textfield.sdds-textfield-container-label-inside.sdds-textfield-focus .sdds-textfield-input-sm~.sdds-textfield-label-inside,.sdds-form-textfield.sdds-textfield-container-label-inside.sdds-textfield-data .sdds-textfield-input-sm~.sdds-textfield-label-inside{font:var(--sdds-detail-07);letter-spacing:var(--sdds-detail-07-ls);transition:0.1s ease all;top:8px}.sdds-form-textfield.sdds-textfield-container-label-inside.sdds-textfield-focus .sdds-textfield-input-md~.sdds-textfield-label-inside,.sdds-form-textfield.sdds-textfield-container-label-inside.sdds-textfield-data .sdds-textfield-input-md~.sdds-textfield-label-inside{font:var(--sdds-detail-07);letter-spacing:var(--sdds-detail-07-ls);transition:0.1s ease all;top:8px}.sdds-form-textfield.sdds-textfield-container-label-inside.sdds-textfield-focus .sdds-textfield-input~.sdds-textfield-label-inside,.sdds-form-textfield.sdds-textfield-container-label-inside.sdds-textfield-data .sdds-textfield-input~.sdds-textfield-label-inside{font:var(--sdds-detail-07);letter-spacing:var(--sdds-detail-07-ls);transition:0.1s ease all;top:12px}.sdds-textfield-bar{position:absolute;width:100%}.sdds-textfield-bar::before,.sdds-textfield-bar::after{content:\"\";height:2px;top:54px;width:0;position:absolute;background:var(--sdds-textfield-bar);transition:0.35s ease all}.sdds-form-textfield-md .sdds-textfield-bar::before,.sdds-form-textfield-md .sdds-textfield-bar::after{top:46px}.sdds-form-textfield-sm .sdds-textfield-bar::before,.sdds-form-textfield-sm .sdds-textfield-bar::after{top:40px}.sdds-textfield-bar::before{left:50%}.sdds-textfield-bar::after{right:50%}.sdds-textfield-focus .sdds-textfield-bar::before,.sdds-textfield-focus .sdds-textfield-bar::after{width:50%}.sdds-textfield-helper{font:var(--sdds-detail-05);letter-spacing:var(--sdds-detail-05-ls);display:flex;gap:8px;justify-content:space-between;flex-basis:100%;padding-top:var(--sdds-spacing-element-4);color:var(--sdds-textfield-helper)}.sdds-textfield-helper .sdds-textfield-textcounter{margin-left:auto}.sdds-form-textfield-disabled .sdds-textfield-container{border-bottom-color:transparent}.sdds-form-textfield-disabled .sdds-textfield-slot-wrap-prefix>*,.sdds-form-textfield-disabled .sdds-textfield-slot-wrap-suffix>*{color:var(--sdds-textfield-ps-color-disabled)}.sdds-form-textfield-disabled .sdds-textfield-label-outside>*{color:var(--sdds-textfield-label-disabled)}.sdds-textfield-icon__readonly{display:none;position:absolute;right:18px;top:18px;color:var(--sdds-textfield-icon-read-only-label-color)}.sdds-textfield-icon__readonly-label{display:none;position:absolute;right:18px;top:48px;font:var(--sdds-detail-05);letter-spacing:var(--sdds-detail-05-ls);padding:8px;white-space:nowrap;border-radius:4px 0 4px 4px;background-color:var(--sdds-textfield-icon-read-only-label-background)}.sdds-form-textfield-readonly{pointer-events:none}.sdds-form-textfield-readonly .sdds-textfield-icon__readonly{display:block}.sdds-form-textfield-readonly .sdds-textfield-icon__readonly:hover~.sdds-textfield-icon__readonly-label{display:block}.sdds-form-textfield-readonly .sdds-textfield-input{padding-right:54px;background-color:transparent}.sdds-form-textfield-success .sdds-textfield-container{border-bottom-color:var(--sdds-textfield-border-bottom-success)}.sdds-form-textfield-error .sdds-textfield-helper{color:var(--sdds-textfield-helper-error)}.sdds-form-textfield-error .sdds-textfield-container{border-bottom-color:var(--sdds-textfield-border-bottom-error)}.sdds-form-textfield-error .sdds-textfield-bar::before,.sdds-form-textfield-error .sdds-textfield-bar::after{background:var(--sdds-textfield-bar-error)}.sdds-form-textfield-error slot[name=sdds-prefix]::slotted(sdds-icon),.sdds-form-textfield-error slot[name=sdds-suffix]::slotted(sdds-icon){color:var(--sdds-textfield-icon-error)}.sdds-textfield-helper-error-state{display:flex;gap:8px;flex-wrap:nowrap}.sdds-textfield-textcounter{font:var(--sdds-detail-05);letter-spacing:var(--sdds-detail-05-ls);color:var(--sdds-textfield-textcounter);float:right}.sdds-textfield-textcounter .sdds-textfield-textcounter-divider{color:var(--sdds-textfield-textcounter-divider)}.sdds-textfield-slot-wrap-prefix{align-self:center}.sdds-textfield-slot-wrap-prefix>*{font:var(--sdds-detail-02);letter-spacing:var(--sdds-detail-02-ls);margin-left:16px;color:var(--sdds-textfield-ps-color)}.sdds-textfield-slot-wrap-prefix.sdds-textfield-error sdds-icon,.sdds-textfield-slot-wrap-prefix.sdds-textfield-error .sdds-icon{color:var(--sdds-negative)}.sdds-textfield-slot-wrap-suffix{align-self:center}.sdds-textfield-slot-wrap-suffix>*{font:var(--sdds-detail-02);letter-spacing:var(--sdds-detail-02-ls);margin-right:16px;color:var(--sdds-textfield-ps-color)}.sdds-textfield-slot-wrap-suffix.sdds-textfield-error sdds-icon,.sdds-textfield-slot-wrap-suffix.sdds-textfield-error .sdds-icon{color:var(--sdds-negative)}slot[name=sdds-prefix]::slotted(sdds-icon),slot[name=sdds-suffix]::slotted(sdds-icon){font-size:24px;line-height:0}slot[name=sdds-prefix]::slotted(*){padding-left:var(--sdds-spacing-element-20)}slot[name=sdds-prefix]::slotted(*)~.sdds-textfield-input{padding-left:var(--sdds-spacing-element-12)}slot[name=sdds-suffix]::slotted(*){padding-right:var(--sdds-spacing-element-20)}";
5
+
6
+ const Textfield = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
7
+ constructor() {
8
+ super();
9
+ this.__registerHost();
10
+ this.sddsChange = createEvent(this, "sddsChange", 6);
11
+ this.sddsInput = createEvent(this, "sddsInput", 6);
12
+ this.sddsFocus = createEvent(this, "sddsFocus", 6);
13
+ this.sddsBlur = createEvent(this, "sddsBlur", 6);
14
+ this.type = 'text';
15
+ this.labelPosition = 'no-label';
16
+ this.label = '';
17
+ this.helper = undefined;
18
+ this.placeholder = '';
19
+ this.value = '';
20
+ this.disabled = false;
21
+ this.readOnly = false;
22
+ this.size = 'lg';
23
+ this.modeVariant = null;
24
+ this.noMinWidth = false;
25
+ this.name = '';
26
+ this.state = 'default';
27
+ this.maxLength = undefined;
28
+ this.autofocus = false;
29
+ this.focusInput = undefined;
30
+ }
31
+ handleChange(event) {
32
+ this.sddsChange.emit(event);
33
+ }
34
+ // Data input event in value prop
35
+ handleInput(event) {
36
+ this.sddsInput.emit(event);
37
+ this.value = event.target.value;
38
+ }
39
+ /** Set the input as focus when clicking the whole textfield with suffix/prefix */
40
+ handleFocus(event) {
41
+ this.textInput.focus();
42
+ this.focusInput = true;
43
+ this.sddsFocus.emit(event);
44
+ }
45
+ /** Set the input as focus when clicking the whole textfield with suffix/prefix */
46
+ handleBlur(event) {
47
+ this.focusInput = false;
48
+ this.sddsBlur.emit(event);
49
+ }
50
+ render() {
51
+ var _a;
52
+ let className = ' sdds-textfield-input';
53
+ if (this.size === 'md') {
54
+ className += `${className}-md`;
55
+ }
56
+ if (this.size === 'sm') {
57
+ className += `${className}-sm`;
58
+ }
59
+ return (h("div", { class: `
60
+ ${this.noMinWidth ? 'sdds-form-textfield-nomin' : ''}
61
+ ${this.focusInput && !this.disabled
62
+ ? 'sdds-form-textfield sdds-textfield-focus'
63
+ : ' sdds-form-textfield'}
64
+ ${this.value ? 'sdds-textfield-data' : ''}
65
+ ${this.labelPosition === 'inside' && this.size !== 'sm'
66
+ ? 'sdds-textfield-container-label-inside'
67
+ : ''}
68
+ ${this.disabled ? 'sdds-form-textfield-disabled' : ''}
69
+ ${this.readOnly ? 'sdds-form-textfield-readonly' : ''}
70
+ ${this.modeVariant !== null ? `sdds-mode-variant-${this.modeVariant}` : ''}
71
+ ${this.size === 'md' ? 'sdds-form-textfield-md' : ''}
72
+ ${this.size === 'sm' ? 'sdds-form-textfield-sm' : ''}
73
+ ${this.state === 'error' || this.state === 'success'
74
+ ? `sdds-form-textfield-${this.state}`
75
+ : ''}
76
+ ` }, this.labelPosition === 'outside' && (h("div", { class: "sdds-textfield-label-outside" }, h("div", null, this.label))), h("div", { onClick: () => this.textInput.focus(), class: "sdds-textfield-container" }, h("div", { class: `sdds-textfield-slot-wrap-prefix sdds-textfield-${this.state}` }, h("slot", { name: "sdds-prefix" })), h("div", { class: "sdds-textfield-input-container" }, h("input", { ref: (inputEl) => (this.textInput = inputEl), class: className, type: this.type, disabled: this.disabled, readonly: this.readOnly, placeholder: this.placeholder, value: this.value, autofocus: this.autofocus, maxlength: this.maxLength, name: this.name, onInput: (event) => this.handleInput(event), onChange: (event) => this.handleChange(event), onFocus: (event) => {
77
+ if (!this.readOnly) {
78
+ this.handleFocus(event);
79
+ }
80
+ }, onBlur: (event) => {
81
+ if (!this.readOnly) {
82
+ this.handleBlur(event);
83
+ }
84
+ } }), this.labelPosition === 'inside' && this.size !== 'sm' && (h("label", { class: "sdds-textfield-label-inside" }, this.label))), h("div", { class: "sdds-textfield-bar" }), h("div", { class: `sdds-textfield-slot-wrap-suffix sdds-textfield-${this.state}` }, h("slot", { name: "sdds-suffix" })), h("span", { class: "sdds-textfield-icon__readonly" }, h("sdds-icon", { name: "edit_inactive", size: "20px" })), h("span", { class: "sdds-textfield-icon__readonly-label" }, "This field is non-editable")), h("div", { class: "sdds-textfield-helper" }, this.state === 'error' && (h("div", { class: "sdds-textfield-helper-error-state" }, h("sdds-icon", { name: "error", size: "16px" }), this.helper)), this.state !== 'error' && this.helper, this.maxLength > 0 && (h("div", { class: "sdds-textfield-textcounter" }, this.value === null ? 0 : (_a = this.value) === null || _a === void 0 ? void 0 : _a.length, h("span", { class: "sdds-textfield-textcounter-divider" }, " / "), this.maxLength)))));
85
+ }
86
+ static get style() { return textfieldCss; }
87
+ }, [4, "sdds-textfield", {
88
+ "type": [513],
89
+ "labelPosition": [1, "label-position"],
90
+ "label": [1],
91
+ "helper": [1],
92
+ "placeholder": [1],
93
+ "value": [513],
94
+ "disabled": [4],
95
+ "readOnly": [4, "read-only"],
96
+ "size": [1],
97
+ "modeVariant": [1, "mode-variant"],
98
+ "noMinWidth": [4, "no-min-width"],
99
+ "name": [1],
100
+ "state": [1],
101
+ "maxLength": [2, "max-length"],
102
+ "autofocus": [4],
103
+ "focusInput": [32]
104
+ }]);
105
+ function defineCustomElement$1() {
106
+ if (typeof customElements === "undefined") {
107
+ return;
108
+ }
109
+ const components = ["sdds-textfield", "sdds-icon"];
110
+ components.forEach(tagName => { switch (tagName) {
111
+ case "sdds-textfield":
112
+ if (!customElements.get(tagName)) {
113
+ customElements.define(tagName, Textfield);
114
+ }
115
+ break;
116
+ case "sdds-icon":
117
+ if (!customElements.get(tagName)) {
118
+ defineCustomElement$2();
119
+ }
120
+ break;
121
+ } });
122
+ }
123
+ defineCustomElement$1();
124
+
125
+ const SddsTextfield = Textfield;
126
+ const defineCustomElement = defineCustomElement$1;
127
+
128
+ export { SddsTextfield, defineCustomElement };
129
+
130
+ //# sourceMappingURL=sdds-textfield.js.map
@@ -0,0 +1 @@
1
+ {"file":"sdds-textfield.js","mappings":"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","names":[],"sources":["./src/components/textfield/textfield.scss?tag=sdds-textfield","./src/components/textfield/textfield.tsx"],"sourcesContent":["@import './textfield-theme-vars.scss';\n\n@mixin textfield-base {\n border-radius: 4px 4px 0 0;\n width: 100%;\n box-sizing: border-box;\n margin: 0;\n border: none;\n outline: none;\n height: 100%;\n color: var(--sdds-textfield-color);\n background-color: var(--sdds-textfield-background);\n\n &::placeholder {\n opacity: 1;\n color: var(--sdds-textfield-placeholder);\n }\n\n &:focus::placeholder {\n color: var(--sdds-textfield-placeholder-focus-color);\n }\n\n &:disabled {\n cursor: not-allowed;\n background-color: var(--sdds-textfield-background-disabled);\n color: var(--sdds-textfield-color-disabled);\n\n &::placeholder {\n color: var(--sdds-textfield-placeholder-disabled);\n }\n\n ~ .sdds-textfield-label-inside {\n color: var(--sdds-textfield-label-disabled);\n }\n }\n}\n\n//Sizes\n.sdds-textfield-input {\n @include textfield-base;\n\n font: var(--sdds-detail-02);\n letter-spacing: var(--sdds-detail-02-ls);\n padding: var(--sdds-spacing-element-20) var(--sdds-spacing-element-16);\n}\n\n.sdds-textfield-input-md {\n @include textfield-base;\n\n font: var(--sdds-detail-02);\n letter-spacing: var(--sdds-detail-02-ls);\n padding: var(--sdds-spacing-element-16);\n}\n\n.sdds-textfield-input-sm {\n @include textfield-base;\n\n font: var(--sdds-detail-02);\n letter-spacing: var(--sdds-detail-02-ls);\n padding: var(--sdds-spacing-element-16);\n}\n\n//Container for input field and prefix/suffix\n.sdds-textfield-container {\n border-radius: 4px 4px 0 0;\n display: flex;\n position: relative;\n height: 56px;\n box-sizing: border-box;\n background-color: var(--sdds-textfield-background);\n border-bottom: 1px solid var(--sdds-textfield-border-bottom);\n transition: border-bottom-color 200ms ease;\n\n &:hover {\n border-bottom-color: var(--sdds-textfield-border-bottom-hover);\n }\n\n .sdds-form-textfield-md & {\n height: 48px;\n }\n\n .sdds-form-textfield-sm & {\n height: 40px;\n }\n}\n\n.sdds-textfield-input-container {\n position: relative;\n width: 100%;\n}\n\n//Textfield label\n\n/* slot[name=\"sdds-label\"]::slotted(*) {\n @include type-style(\"detail-05\");\n display: block;\n margin-bottom: var(--sdds-spacing-element-8);\n color: var(--sdds-textfield-label-color);\n} */\n\n//Textfield label\n.sdds-textfield-label-outside > * {\n font: var(--sdds-detail-05);\n letter-spacing: var(--sdds-detail-05-ls);\n display: block;\n margin-bottom: var(--sdds-spacing-element-8);\n color: var(--sdds-textfield-label-color);\n}\n\n.sdds-textfield-label-inside {\n font: var(--sdds-detail-02);\n letter-spacing: var(--sdds-detail-02-ls);\n position: absolute;\n pointer-events: none;\n color: var(--sdds-textfield-label-inside-color);\n left: 16px;\n}\n\n@mixin placeholder-label {\n &::placeholder {\n color: transparent;\n }\n\n &::input-placeholder {\n color: transparent;\n }\n\n &:placeholder {\n color: transparent;\n }\n\n ::placeholder {\n color: transparent;\n }\n\n //Input field in focus\n &:focus::placeholder {\n transition: color 0.35s ease;\n color: var(--sdds-textfield-placeholder-focus-color);\n }\n}\n\n@mixin label-inside-transition {\n transition: 0.1s ease all;\n}\n\n//Form control\n.sdds-form-textfield {\n display: block;\n min-width: 208px;\n\n &-nomin {\n min-width: auto;\n }\n}\n\n//Textfield container with label inside\n//Handling position, focus and transition for label inside\n.sdds-form-textfield.sdds-textfield-container-label-inside {\n .sdds-textfield-input {\n padding-top: var(--sdds-spacing-element-24);\n padding-bottom: 15px;\n\n ~ .sdds-textfield-label-inside {\n top: 20px;\n }\n\n @include placeholder-label;\n }\n\n .sdds-textfield-input-md {\n padding-top: var(--sdds-spacing-element-20);\n padding-bottom: 11px;\n\n ~ .sdds-textfield-label-inside {\n top: 16px;\n }\n\n @include placeholder-label;\n }\n\n .sdds-textfield-input-sm {\n padding-top: var(--sdds-spacing-element-20);\n padding-bottom: 11px;\n\n ~ .sdds-textfield-label-inside {\n top: 16px;\n }\n\n @include placeholder-label;\n }\n\n &.sdds-textfield-focus,\n &.sdds-textfield-data {\n .sdds-textfield-input-sm ~ .sdds-textfield-label-inside {\n font: var(--sdds-detail-07);\n letter-spacing: var(--sdds-detail-07-ls);\n\n @include label-inside-transition;\n\n top: 8px;\n }\n\n .sdds-textfield-input-md ~ .sdds-textfield-label-inside {\n font: var(--sdds-detail-07);\n letter-spacing: var(--sdds-detail-07-ls);\n\n @include label-inside-transition;\n\n top: 8px;\n }\n\n .sdds-textfield-input ~ .sdds-textfield-label-inside {\n font: var(--sdds-detail-07);\n letter-spacing: var(--sdds-detail-07-ls);\n\n @include label-inside-transition;\n\n top: 12px;\n }\n }\n}\n\n//Textfield bottom bar when in focus\n.sdds-textfield-bar {\n position: absolute;\n width: 100%;\n\n &::before,\n &::after {\n content: '';\n height: 2px;\n top: 54px;\n width: 0;\n position: absolute;\n background: var(--sdds-textfield-bar);\n transition: 0.35s ease all;\n\n .sdds-form-textfield-md & {\n top: 46px;\n }\n\n .sdds-form-textfield-sm & {\n top: 40px;\n }\n }\n\n &::before {\n left: 50%;\n }\n\n &::after {\n right: 50%;\n }\n\n .sdds-textfield-focus &::before,\n .sdds-textfield-focus &::after {\n width: 50%;\n }\n}\n\n//Helper text\n.sdds-textfield-helper {\n font: var(--sdds-detail-05);\n letter-spacing: var(--sdds-detail-05-ls);\n display: flex;\n gap: 8px;\n justify-content: space-between;\n\n & .sdds-textfield-textcounter {\n margin-left: auto;\n }\n\n flex-basis: 100%;\n padding-top: var(--sdds-spacing-element-4);\n color: var(--sdds-textfield-helper);\n}\n\n//Disabled state\n.sdds-form-textfield-disabled {\n .sdds-textfield-container {\n border-bottom-color: transparent;\n }\n\n .sdds-textfield-slot-wrap-prefix,\n .sdds-textfield-slot-wrap-suffix {\n > * {\n color: var(--sdds-textfield-ps-color-disabled);\n }\n }\n\n .sdds-textfield-label-outside {\n > * {\n color: var(--sdds-textfield-label-disabled);\n }\n }\n\n}\n\n//Read only state\n\n.sdds-textfield-icon__readonly {\n display: none;\n position: absolute;\n right: 18px;\n top: 18px;\n color: var(--sdds-textfield-icon-read-only-label-color);\n\n &-label {\n display: none;\n position: absolute;\n right: 18px;\n top: 48px;\n font: var(--sdds-detail-05);\n letter-spacing: var(--sdds-detail-05-ls);\n padding: 8px;\n white-space: nowrap;\n border-radius: 4px 0 4px 4px;\n background-color: var(--sdds-textfield-icon-read-only-label-background);\n }\n}\n\n.sdds-form-textfield-readonly {\n pointer-events: none;\n\n .sdds-textfield-icon__readonly {\n display: block;\n\n &:hover {\n ~ .sdds-textfield-icon__readonly-label {\n display: block;\n }\n }\n }\n\n .sdds-textfield-input {\n padding-right: 54px;\n background-color: transparent;\n }\n}\n\n//Success state\n.sdds-form-textfield-success {\n .sdds-textfield-container {\n border-bottom-color: var(--sdds-textfield-border-bottom-success);\n }\n}\n\n//Error State\n.sdds-form-textfield-error {\n .sdds-textfield-helper {\n color: var(--sdds-textfield-helper-error);\n }\n\n .sdds-textfield-container {\n border-bottom-color: var(--sdds-textfield-border-bottom-error);\n }\n\n .sdds-textfield-bar {\n &::before,\n &::after {\n background: var(--sdds-textfield-bar-error);\n }\n }\n\n slot[name='sdds-prefix']::slotted(sdds-icon),\n slot[name='sdds-suffix']::slotted(sdds-icon) {\n color: var(--sdds-textfield-icon-error);\n }\n}\n\n// .sdds-textfield-textcounter {\n.sdds-textfield-helper-error-state {\n display: flex;\n gap: 8px;\n flex-wrap: nowrap;\n}\n\n.sdds-textfield-textcounter {\n font: var(--sdds-detail-05);\n letter-spacing: var(--sdds-detail-05-ls);\n color: var(--sdds-textfield-textcounter);\n float: right;\n\n & .sdds-textfield-textcounter-divider {\n // @include type-style('detail-05');\n color: var(--sdds-textfield-textcounter-divider);\n }\n}\n\n/* slot[name=\"sdds-prefix\"]::slotted(*),\nslot[name=\"sdds-suffix\"]::slotted(*) {\n @include type-style(\"detail-02\");\n align-self: center;\n color: var(--sdds-textfield-ps-color);\n} */\n\n.sdds-textfield-slot-wrap-prefix {\n align-self: center;\n\n > * {\n font: var(--sdds-detail-02);\n letter-spacing: var(--sdds-detail-02-ls);\n margin-left: 16px;\n color: var(--sdds-textfield-ps-color);\n }\n\n &.sdds-textfield-error {\n sdds-icon,\n .sdds-icon {\n color: var(--sdds-negative);\n }\n }\n}\n\n.sdds-textfield-slot-wrap-suffix {\n align-self: center;\n\n > * {\n font: var(--sdds-detail-02);\n letter-spacing: var(--sdds-detail-02-ls);\n margin-right: 16px;\n color: var(--sdds-textfield-ps-color);\n }\n\n &.sdds-textfield-error {\n sdds-icon,\n .sdds-icon {\n color: var(--sdds-negative);\n }\n }\n}\n\n//TODO: When new icons are avaliable have a look at this one\nslot[name='sdds-prefix']::slotted(sdds-icon),\nslot[name='sdds-suffix']::slotted(sdds-icon) {\n font-size: 24px; //FIXME: When new icons is avaliable it should be 16x16\n line-height: 0;\n}\n\n//Text gerenerated infront of the input field\nslot[name='sdds-prefix']::slotted(*) {\n padding-left: var(--sdds-spacing-element-20);\n\n & ~ .sdds-textfield-input {\n padding-left: var(--sdds-spacing-element-12);\n }\n}\n\n//Text generated after the input field\nslot[name='sdds-suffix']::slotted(*) {\n padding-right: var(--sdds-spacing-element-20);\n}\n","import { Component, h, State, Prop, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'sdds-textfield',\n styleUrl: 'textfield.scss',\n shadow: false,\n})\nexport class Textfield {\n /** Textinput for focus state */\n textInput?: HTMLInputElement;\n\n /** Which input type, text, password or similar */\n @Prop({ reflect: true }) type: 'text' | 'password' = 'text';\n\n /** Position of the label for the textfield. */\n @Prop() labelPosition: 'inside' | 'outside' | 'no-label' = 'no-label';\n\n /** Label text */\n @Prop() label: string = '';\n\n /** Helper text */\n @Prop() helper: string;\n\n /** Placeholder text */\n @Prop() placeholder: string = '';\n\n /** Value of the input text */\n @Prop({ reflect: true }) value: string = '';\n\n /** Set input in disabled state */\n @Prop() disabled: boolean = false;\n\n /** Set input in readonly state */\n @Prop() readOnly: boolean = false;\n\n /** Size of the input */\n @Prop() size: 'sm' | 'md' | 'lg' = 'lg';\n\n /** Mode variant of the textfield */\n\n @Prop() modeVariant: 'primary' | 'secondary' = null;\n\n /** With setting */\n @Prop() noMinWidth: boolean = false;\n\n /** Name property */\n @Prop() name = '';\n\n /** Error state of input */\n @Prop() state: 'error' | 'success' | 'default' = 'default';\n\n /** Max length of input */\n @Prop() maxLength: number;\n\n /** Autofocus for input */\n @Prop() autofocus: boolean = false;\n\n /** Listen to the focus state of the input */\n @State() focusInput;\n\n /** Change event for the textfield */\n @Event({\n eventName: 'sddsChange',\n composed: true,\n bubbles: true,\n cancelable: false,\n })\n sddsChange: EventEmitter;\n\n handleChange(event): void {\n this.sddsChange.emit(event);\n }\n\n /** Input event for the textfield */\n @Event({\n eventName: 'sddsInput',\n composed: true,\n bubbles: true,\n cancelable: false,\n })\n sddsInput: EventEmitter<InputEvent>;\n\n // Data input event in value prop\n handleInput(event): void {\n this.sddsInput.emit(event);\n this.value = event.target.value;\n }\n\n /** Focus event for the textfield */\n @Event({\n eventName: 'sddsFocus',\n composed: true,\n bubbles: true,\n cancelable: false,\n })\n sddsFocus: EventEmitter<FocusEvent>;\n\n /** Set the input as focus when clicking the whole textfield with suffix/prefix */\n handleFocus(event): void {\n this.textInput.focus();\n this.focusInput = true;\n this.sddsFocus.emit(event);\n }\n\n /** Blur event for the textfield */\n @Event({\n eventName: 'sddsBlur',\n composed: true,\n bubbles: true,\n cancelable: false,\n })\n sddsBlur: EventEmitter<FocusEvent>;\n\n /** Set the input as focus when clicking the whole textfield with suffix/prefix */\n handleBlur(event): void {\n this.focusInput = false;\n this.sddsBlur.emit(event);\n }\n\n render() {\n let className = ' sdds-textfield-input';\n if (this.size === 'md') {\n className += `${className}-md`;\n }\n if (this.size === 'sm') {\n className += `${className}-sm`;\n }\n return (\n <div\n class={`\n ${this.noMinWidth ? 'sdds-form-textfield-nomin' : ''}\n ${\n this.focusInput && !this.disabled\n ? 'sdds-form-textfield sdds-textfield-focus'\n : ' sdds-form-textfield'\n }\n ${this.value ? 'sdds-textfield-data' : ''}\n ${\n this.labelPosition === 'inside' && this.size !== 'sm'\n ? 'sdds-textfield-container-label-inside'\n : ''\n }\n ${this.disabled ? 'sdds-form-textfield-disabled' : ''}\n ${this.readOnly ? 'sdds-form-textfield-readonly' : ''}\n ${this.modeVariant !== null ? `sdds-mode-variant-${this.modeVariant}` : ''}\n ${this.size === 'md' ? 'sdds-form-textfield-md' : ''}\n ${this.size === 'sm' ? 'sdds-form-textfield-sm' : ''}\n ${\n this.state === 'error' || this.state === 'success'\n ? `sdds-form-textfield-${this.state}`\n : ''\n }\n `}\n >\n {this.labelPosition === 'outside' && (\n <div class=\"sdds-textfield-label-outside\">\n <div>{this.label}</div>\n </div>\n )}\n <div onClick={() => this.textInput.focus()} class=\"sdds-textfield-container\">\n <div class={`sdds-textfield-slot-wrap-prefix sdds-textfield-${this.state}`}>\n <slot name=\"sdds-prefix\" />\n </div>\n\n <div class=\"sdds-textfield-input-container\">\n <input\n ref={(inputEl) => (this.textInput = inputEl as HTMLInputElement)}\n class={className}\n type={this.type}\n disabled={this.disabled}\n readonly={this.readOnly}\n placeholder={this.placeholder}\n value={this.value}\n autofocus={this.autofocus}\n maxlength={this.maxLength}\n name={this.name}\n onInput={(event) => this.handleInput(event)}\n onChange={(event) => this.handleChange(event)}\n onFocus={(event) => {\n if (!this.readOnly) {\n this.handleFocus(event);\n }\n }}\n onBlur={(event) => {\n if (!this.readOnly) {\n this.handleBlur(event);\n }\n }}\n />\n\n {this.labelPosition === 'inside' && this.size !== 'sm' && (\n <label class=\"sdds-textfield-label-inside\">{this.label}</label>\n )}\n </div>\n <div class=\"sdds-textfield-bar\"></div>\n\n <div class={`sdds-textfield-slot-wrap-suffix sdds-textfield-${this.state}`}>\n <slot name=\"sdds-suffix\" />\n </div>\n <span class=\"sdds-textfield-icon__readonly\">\n <sdds-icon name=\"edit_inactive\" size=\"20px\"></sdds-icon>\n </span>\n <span class=\"sdds-textfield-icon__readonly-label\">This field is non-editable</span>\n </div>\n\n <div class=\"sdds-textfield-helper\">\n {this.state === 'error' && (\n <div class=\"sdds-textfield-helper-error-state\">\n <sdds-icon name=\"error\" size=\"16px\"></sdds-icon>\n {this.helper}\n </div>\n )}\n {this.state !== 'error' && this.helper}\n\n {this.maxLength > 0 && (\n <div class=\"sdds-textfield-textcounter\">\n {this.value === null ? 0 : this.value?.length}\n <span class=\"sdds-textfield-textcounter-divider\"> / </span>\n {this.maxLength}\n </div>\n )}\n </div>\n </div>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface SddsToast extends Components.SddsToast, HTMLElement {}
4
+ export const SddsToast: {
5
+ prototype: SddsToast;
6
+ new (): SddsToast;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;