@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.
- package/dist/cjs/sdds-toast.cjs.entry.js +1 -1
- package/dist/cjs/sdds-toast.cjs.entry.js.map +1 -1
- package/dist/collection/components/toast/sdds-toast.js +2 -2
- package/dist/collection/components/toast/sdds-toast.js.map +1 -1
- package/dist/components/dropdown-option.js +103 -0
- package/dist/components/dropdown-option.js.map +1 -0
- package/dist/components/dropdown.js +306 -0
- package/dist/components/dropdown.js.map +1 -0
- package/dist/components/icon.js +61 -0
- package/dist/components/icon.js.map +1 -0
- package/dist/components/index.d.ts +27 -0
- package/dist/components/index.js +3 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/popper.js +1801 -0
- package/dist/components/popper.js.map +1 -0
- package/dist/components/sdds-accordion-item.d.ts +11 -0
- package/dist/components/sdds-accordion-item.js +63 -0
- package/dist/components/sdds-accordion-item.js.map +1 -0
- package/dist/components/sdds-accordion.d.ts +11 -0
- package/dist/components/sdds-accordion.js +41 -0
- package/dist/components/sdds-accordion.js.map +1 -0
- package/dist/components/sdds-badges.d.ts +11 -0
- package/dist/components/sdds-badges.js +78 -0
- package/dist/components/sdds-badges.js.map +1 -0
- package/dist/components/sdds-banner.d.ts +11 -0
- package/dist/components/sdds-banner.js +122 -0
- package/dist/components/sdds-banner.js.map +1 -0
- package/dist/components/sdds-block.d.ts +11 -0
- package/dist/components/sdds-block.js +51 -0
- package/dist/components/sdds-block.js.map +1 -0
- package/dist/components/sdds-body-cell.d.ts +11 -0
- package/dist/components/sdds-body-cell.js +8 -0
- package/dist/components/sdds-body-cell.js.map +1 -0
- package/dist/components/sdds-breadcrumb-item.d.ts +11 -0
- package/dist/components/sdds-breadcrumb-item.js +46 -0
- package/dist/components/sdds-breadcrumb-item.js.map +1 -0
- package/dist/components/sdds-breadcrumb.d.ts +11 -0
- package/dist/components/sdds-breadcrumb.js +40 -0
- package/dist/components/sdds-breadcrumb.js.map +1 -0
- package/dist/components/sdds-button.d.ts +11 -0
- package/dist/components/sdds-button.js +62 -0
- package/dist/components/sdds-button.js.map +1 -0
- package/dist/components/sdds-card.d.ts +11 -0
- package/dist/components/sdds-card.js +87 -0
- package/dist/components/sdds-card.js.map +1 -0
- package/dist/components/sdds-checkbox.d.ts +11 -0
- package/dist/components/sdds-checkbox.js +79 -0
- package/dist/components/sdds-checkbox.js.map +1 -0
- package/dist/components/sdds-datetime.d.ts +11 -0
- package/dist/components/sdds-datetime.js +132 -0
- package/dist/components/sdds-datetime.js.map +1 -0
- package/dist/components/sdds-dropdown-filter.d.ts +11 -0
- package/dist/components/sdds-dropdown-filter.js +141 -0
- package/dist/components/sdds-dropdown-filter.js.map +1 -0
- package/dist/components/sdds-dropdown-option.d.ts +11 -0
- package/dist/components/sdds-dropdown-option.js +8 -0
- package/dist/components/sdds-dropdown-option.js.map +1 -0
- package/dist/components/sdds-dropdown.d.ts +11 -0
- package/dist/components/sdds-dropdown.js +8 -0
- package/dist/components/sdds-dropdown.js.map +1 -0
- package/dist/components/sdds-header-cell.d.ts +11 -0
- package/dist/components/sdds-header-cell.js +173 -0
- package/dist/components/sdds-header-cell.js.map +1 -0
- package/dist/components/sdds-icon.d.ts +11 -0
- package/dist/components/sdds-icon.js +8 -0
- package/dist/components/sdds-icon.js.map +1 -0
- package/dist/components/sdds-inline-tab.d.ts +11 -0
- package/dist/components/sdds-inline-tab.js +43 -0
- package/dist/components/sdds-inline-tab.js.map +1 -0
- package/dist/components/sdds-inline-tabs-fullbleed.d.ts +11 -0
- package/dist/components/sdds-inline-tabs-fullbleed.js +120 -0
- package/dist/components/sdds-inline-tabs-fullbleed.js.map +1 -0
- package/dist/components/sdds-inline-tabs.d.ts +11 -0
- package/dist/components/sdds-inline-tabs.js +248 -0
- package/dist/components/sdds-inline-tabs.js.map +1 -0
- package/dist/components/sdds-link.d.ts +11 -0
- package/dist/components/sdds-link.js +8 -0
- package/dist/components/sdds-link.js.map +1 -0
- package/dist/components/sdds-link2.js +47 -0
- package/dist/components/sdds-link2.js.map +1 -0
- package/dist/components/sdds-message.d.ts +11 -0
- package/dist/components/sdds-message.js +70 -0
- package/dist/components/sdds-message.js.map +1 -0
- package/dist/components/sdds-modal.d.ts +11 -0
- package/dist/components/sdds-modal.js +80 -0
- package/dist/components/sdds-modal.js.map +1 -0
- package/dist/components/sdds-navigation-tabs.d.ts +11 -0
- package/dist/components/sdds-navigation-tabs.js +120 -0
- package/dist/components/sdds-navigation-tabs.js.map +1 -0
- package/dist/components/sdds-popover-canvas.d.ts +11 -0
- package/dist/components/sdds-popover-canvas.js +111 -0
- package/dist/components/sdds-popover-canvas.js.map +1 -0
- package/dist/components/sdds-popover-menu.d.ts +11 -0
- package/dist/components/sdds-popover-menu.js +112 -0
- package/dist/components/sdds-popover-menu.js.map +1 -0
- package/dist/components/sdds-radio-button.d.ts +11 -0
- package/dist/components/sdds-radio-button.js +55 -0
- package/dist/components/sdds-radio-button.js.map +1 -0
- package/dist/components/sdds-slider.d.ts +11 -0
- package/dist/components/sdds-slider.js +397 -0
- package/dist/components/sdds-slider.js.map +1 -0
- package/dist/components/sdds-spinner.d.ts +11 -0
- package/dist/components/sdds-spinner.js +40 -0
- package/dist/components/sdds-spinner.js.map +1 -0
- package/dist/components/sdds-table-body-row-expandable.d.ts +11 -0
- package/dist/components/sdds-table-body-row-expandable.js +108 -0
- package/dist/components/sdds-table-body-row-expandable.js.map +1 -0
- package/dist/components/sdds-table-body-row.d.ts +11 -0
- package/dist/components/sdds-table-body-row.js +8 -0
- package/dist/components/sdds-table-body-row.js.map +1 -0
- package/dist/components/sdds-table-body.d.ts +11 -0
- package/dist/components/sdds-table-body.js +340 -0
- package/dist/components/sdds-table-body.js.map +1 -0
- package/dist/components/sdds-table-footer.d.ts +11 -0
- package/dist/components/sdds-table-footer.js +198 -0
- package/dist/components/sdds-table-footer.js.map +1 -0
- package/dist/components/sdds-table-header.d.ts +11 -0
- package/dist/components/sdds-table-header.js +127 -0
- package/dist/components/sdds-table-header.js.map +1 -0
- package/dist/components/sdds-table-toolbar.d.ts +11 -0
- package/dist/components/sdds-table-toolbar.js +90 -0
- package/dist/components/sdds-table-toolbar.js.map +1 -0
- package/dist/components/sdds-table.d.ts +11 -0
- package/dist/components/sdds-table.js +94 -0
- package/dist/components/sdds-table.js.map +1 -0
- package/dist/components/sdds-textarea.d.ts +11 -0
- package/dist/components/sdds-textarea.js +112 -0
- package/dist/components/sdds-textarea.js.map +1 -0
- package/dist/components/sdds-textfield.d.ts +11 -0
- package/dist/components/sdds-textfield.js +130 -0
- package/dist/components/sdds-textfield.js.map +1 -0
- package/dist/components/sdds-toast.d.ts +11 -0
- package/dist/components/sdds-toast.js +120 -0
- package/dist/components/sdds-toast.js.map +1 -0
- package/dist/components/sdds-toggle.d.ts +11 -0
- package/dist/components/sdds-toggle.js +72 -0
- package/dist/components/sdds-toggle.js.map +1 -0
- package/dist/components/sdds-tooltip.d.ts +11 -0
- package/dist/components/sdds-tooltip.js +130 -0
- package/dist/components/sdds-tooltip.js.map +1 -0
- package/dist/components/table-body-cell.js +104 -0
- package/dist/components/table-body-cell.js.map +1 -0
- package/dist/components/table-body-row.js +123 -0
- package/dist/components/table-body-row.js.map +1 -0
- package/dist/esm/sdds-toast.entry.js +1 -1
- package/dist/esm/sdds-toast.entry.js.map +1 -1
- package/dist/tegel/{p-46013562.entry.js → p-f51fe381.entry.js} +2 -2
- package/dist/tegel/p-f51fe381.entry.js.map +1 -0
- package/dist/tegel/tegel.esm.js +1 -1
- package/dist/types/components/toast/sdds-toast.d.ts +1 -1
- package/dist/types/components.d.ts +2 -2
- package/package.json +2 -2
- 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;
|