@sellmate/design-system 1.0.53 → 1.0.55

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 (86) hide show
  1. package/dist/cjs/{component.textinput-DIDZPtYE.js → component.textinput-BWW8c3OY.js} +10 -1
  2. package/dist/cjs/design-system.cjs.js +1 -1
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/sd-barcode-input.cjs.entry.js +1 -1
  5. package/dist/cjs/{sd-button_5.cjs.entry.js → sd-button_4.cjs.entry.js} +2 -146
  6. package/dist/cjs/sd-ghost-button.cjs.entry.js +148 -0
  7. package/dist/cjs/sd-input_2.cjs.entry.js +9 -3
  8. package/dist/cjs/sd-textarea.cjs.entry.js +76 -37
  9. package/dist/cjs/sd-toast-container.cjs.entry.js +1 -1
  10. package/dist/cjs/sd-toast.cjs.entry.js +2 -2
  11. package/dist/cjs/sd-toggle-button.cjs.entry.js +1 -1
  12. package/dist/cjs/sd-toggle.cjs.entry.js +1 -1
  13. package/dist/collection/components/sd-input/sd-input.js +124 -2
  14. package/dist/collection/components/sd-textarea/sd-textarea.config.js +16 -0
  15. package/dist/collection/components/sd-textarea/sd-textarea.css +13 -53
  16. package/dist/collection/components/sd-textarea/sd-textarea.js +445 -60
  17. package/dist/collection/components/sd-toast/sd-toast.js +2 -2
  18. package/dist/collection/components/sd-toast-container/sd-toast-container.js +1 -1
  19. package/dist/collection/components/sd-toggle/sd-toggle.js +1 -1
  20. package/dist/collection/components/sd-toggle-button/sd-toggle-button.js +1 -1
  21. package/dist/collection/components/sd-tooltip/sd-tooltip.js +2 -2
  22. package/dist/components/{p-hWm-Llzv.js → p-BM4qDFZj.js} +1 -1
  23. package/dist/components/p-BR0LWoJL.js +1 -0
  24. package/dist/components/p-C8kA64_1.js +1 -0
  25. package/dist/components/{p-CnUsbdL7.js → p-Cbtpfl9F.js} +1 -1
  26. package/dist/components/{p-UUxu2akd.js → p-CmXAKr-2.js} +1 -1
  27. package/dist/components/p-DSNs8RRn.js +1 -0
  28. package/dist/components/{p-CpGiSLY_.js → p-DxzIjbQJ.js} +1 -1
  29. package/dist/components/{p-eOGZo-WB.js → p-w3CsjVGg.js} +1 -1
  30. package/dist/components/sd-barcode-input.js +1 -1
  31. package/dist/components/sd-date-picker.js +1 -1
  32. package/dist/components/sd-date-range-picker.js +1 -1
  33. package/dist/components/sd-field.js +1 -1
  34. package/dist/components/sd-file-picker.js +1 -1
  35. package/dist/components/sd-input.js +1 -1
  36. package/dist/components/sd-number-input.js +1 -1
  37. package/dist/components/sd-select-dropdown.js +1 -1
  38. package/dist/components/sd-select-group.js +1 -1
  39. package/dist/components/sd-select-multiple-group.js +1 -1
  40. package/dist/components/sd-select-multiple.js +1 -1
  41. package/dist/components/sd-select-search-input.js +1 -1
  42. package/dist/components/sd-select-v2.js +1 -1
  43. package/dist/components/sd-select.js +1 -1
  44. package/dist/components/sd-table.js +1 -1
  45. package/dist/components/sd-textarea.js +1 -1
  46. package/dist/components/sd-toast-container.js +1 -1
  47. package/dist/components/sd-toast.js +1 -1
  48. package/dist/components/sd-toggle-button.js +1 -1
  49. package/dist/components/sd-toggle.js +1 -1
  50. package/dist/components/sd-tooltip.js +1 -1
  51. package/dist/design-system/design-system.esm.js +1 -1
  52. package/dist/design-system/{p-47931c26.entry.js → p-184649a9.entry.js} +1 -1
  53. package/dist/design-system/{p-64f2a188.entry.js → p-266ff86b.entry.js} +1 -1
  54. package/dist/design-system/{p-cebaca7c.entry.js → p-391cf704.entry.js} +1 -1
  55. package/dist/design-system/p-4e9413c0.entry.js +1 -0
  56. package/dist/design-system/p-5213773b.entry.js +1 -0
  57. package/dist/design-system/{p-4487b2ec.entry.js → p-99b6157f.entry.js} +1 -1
  58. package/dist/design-system/p-DSNs8RRn.js +1 -0
  59. package/dist/design-system/p-c2a0f10d.entry.js +1 -0
  60. package/dist/design-system/{p-c9af0fc9.entry.js → p-efe684e6.entry.js} +1 -1
  61. package/dist/design-system/{p-ea768c2e.entry.js → p-fdf7ed87.entry.js} +1 -1
  62. package/dist/esm/{component.textinput-BGovA1BG.js → component.textinput-DSNs8RRn.js} +10 -1
  63. package/dist/esm/design-system.js +1 -1
  64. package/dist/esm/loader.js +1 -1
  65. package/dist/esm/sd-barcode-input.entry.js +1 -1
  66. package/dist/esm/{sd-button_5.entry.js → sd-button_4.entry.js} +3 -146
  67. package/dist/esm/sd-ghost-button.entry.js +146 -0
  68. package/dist/esm/sd-input_2.entry.js +9 -3
  69. package/dist/esm/sd-textarea.entry.js +76 -37
  70. package/dist/esm/sd-toast-container.entry.js +1 -1
  71. package/dist/esm/sd-toast.entry.js +2 -2
  72. package/dist/esm/sd-toggle-button.entry.js +1 -1
  73. package/dist/esm/sd-toggle.entry.js +1 -1
  74. package/dist/types/components/sd-input/sd-input.d.ts +6 -0
  75. package/dist/types/components/sd-textarea/sd-textarea.config.d.ts +34 -0
  76. package/dist/types/components/sd-textarea/sd-textarea.d.ts +28 -9
  77. package/dist/types/components.d.ts +172 -8
  78. package/hydrate/index.js +128 -54
  79. package/hydrate/index.mjs +128 -54
  80. package/package.json +1 -1
  81. package/dist/components/p-BGovA1BG.js +0 -1
  82. package/dist/components/p-Ck-2jtzb.js +0 -1
  83. package/dist/components/p-Dx7R5s53.js +0 -1
  84. package/dist/design-system/p-52d6d7b5.entry.js +0 -1
  85. package/dist/design-system/p-BGovA1BG.js +0 -1
  86. package/dist/design-system/p-c9bc4fa6.entry.js +0 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  var index = require('./index-BQt-JC6r.js');
4
4
  var index$1 = require('./index-BUvXpPc3.js');
5
- var component_textinput = require('./component.textinput-DIDZPtYE.js');
5
+ var component_textinput = require('./component.textinput-BWW8c3OY.js');
6
6
 
7
7
  const sm = component_textinput.inputTokens.input.sm;
8
8
  const md = component_textinput.inputTokens.input.md;
@@ -51,6 +51,12 @@ const SdInput = class {
51
51
  width = '';
52
52
  rules = [];
53
53
  autoFocus = false;
54
+ autocomplete = '';
55
+ maxlength;
56
+ minlength;
57
+ inputmode;
58
+ enterkeyhint;
59
+ spellcheck = false;
54
60
  status;
55
61
  hint = '';
56
62
  errorMessage = '';
@@ -142,12 +148,12 @@ const SdInput = class {
142
148
  '--sd-system-size-field-sm-height': `${sizeTokens.height}px`,
143
149
  '--sd-system-radius-field-sm': `${sizeTokens.radius}px`,
144
150
  };
145
- return (index.h("sd-field", { key: '942bba44bffb9c047ce07c07c9cefd02b6b50e62', name: this.name, label: this.label, addonLabel: this.addonLabel, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, status: this.status, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, index.h("label", { key: '67b37ad7d802c11f9fc1bb372371040a267b9fb9', class: "sd-input__content" }, index.h("slot", { key: '0068eac35163a12efe74288eb7a0871bf1bbbf81', name: "prefix" }), index.h("input", { key: '5c48d3c102ff8cb01a98a60a2128bdd5422aa032', name: this.name, ref: el => (this.nativeEl = el), class: `sd-input__native ${this.inputClass}`, type: this.type === 'password' && this.passwordVisible ? 'text' : this.type, value: this.internalValue || '', placeholder: this.placeholder, disabled: this.disabled, readonly: this.readonly, autofocus: this.autoFocus, onInput: this.handleInput, onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event), style: this.inputStyle }), index.h("slot", { key: 'faa652d843aaba6229961566590ea564604fd183', name: "suffix" }), this.clearable && this.internalValue && !this.disabled && (index.h("sd-ghost-button", { key: '2935121a60b1cdbb2d1fdfc83d29fdad5da796c3', icon: "close", ariaLabel: "close", size: "xxs", disabled: this.disabled, class: "sd-input__clear-icon", onClick: async () => {
151
+ return (index.h("sd-field", { key: 'd5f554784340cbb9246165fb15124098e4f7165b', name: this.name, label: this.label, addonLabel: this.addonLabel, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, status: this.status, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, index.h("label", { key: '02225d57c5bd17dbe78c680f243ad3a9a4ab3b5d', class: "sd-input__content" }, index.h("slot", { key: '1011876ea9726e62a19047b28a82932e43762436', name: "prefix" }), index.h("input", { key: '10f4c594382aa002ba09a0012979ff930154fc7a', name: this.name, ref: el => (this.nativeEl = el), class: `sd-input__native ${this.inputClass}`, type: this.type === 'password' && this.passwordVisible ? 'text' : this.type, value: this.internalValue || '', placeholder: this.placeholder, disabled: this.disabled, readonly: this.readonly, autofocus: this.autoFocus, autocomplete: this.autocomplete || undefined, maxlength: this.maxlength, minlength: this.minlength, inputmode: this.inputmode, enterkeyhint: this.enterkeyhint, spellcheck: this.spellcheck, onInput: this.handleInput, onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event), style: this.inputStyle }), index.h("slot", { key: '007d15357a81f13ab4db5ddf237110b9d1f1728b', name: "suffix" }), this.clearable && this.internalValue && !this.disabled && (index.h("sd-ghost-button", { key: '92dfd40117cccdb48ebfc0056aa9e093546bbf6b', icon: "close", ariaLabel: "close", size: "xxs", disabled: this.disabled, class: "sd-input__clear-icon", onClick: async () => {
146
152
  if (this.disabled)
147
153
  return;
148
154
  this.internalValue = '';
149
155
  await this.formField?.sdValidate();
150
- } })), this.type === 'password' && (index.h("sd-ghost-button", { key: '800f789b3cff3b8b32fe2c048f8fabe332f69d66', icon: this.passwordVisible ? 'visibilityOn' : 'visibilityOff', ariaLabel: "visibility", size: "xxs", disabled: this.disabled, class: "sd-input__password-icon", onClick: () => {
156
+ } })), this.type === 'password' && (index.h("sd-ghost-button", { key: 'a4bef720b55a94a4a6ada002f4a2ffd1d0f8da24', icon: this.passwordVisible ? 'visibilityOn' : 'visibilityOff', ariaLabel: "visibility", size: "xxs", disabled: this.disabled, class: "sd-input__password-icon", onClick: () => {
151
157
  if (this.disabled)
152
158
  return;
153
159
  this.passwordVisible = !this.passwordVisible;
@@ -1,8 +1,24 @@
1
1
  'use strict';
2
2
 
3
3
  var index = require('./index-BQt-JC6r.js');
4
+ var index$1 = require('./index-BUvXpPc3.js');
5
+ var component_textinput = require('./component.textinput-BWW8c3OY.js');
4
6
 
5
- const sdTextareaCss = () => `sd-textarea{display:block}sd-textarea .sd-textarea{display:flex;flex-direction:column;color:#333333;font-size:12px;line-height:20px}sd-textarea .sd-textarea .sd-textarea__content{width:100%;display:flex;border:1px solid #AAAAAA;border-radius:4px;background:white}sd-textarea .sd-textarea .sd-textarea__content .sd-textarea__native{width:100%;min-height:100px;border:none;outline:none;background:transparent;padding:4px 8px;font-family:inherit;font-size:12px;line-height:20px;color:#333333;resize:vertical}sd-textarea .sd-textarea .sd-textarea__content .sd-textarea__native::placeholder{color:#AAAAAA}sd-textarea .sd-textarea--hovered .sd-textarea__content,sd-textarea .sd-textarea--focused .sd-textarea__content{border-color:#0075FF;box-shadow:0 0 4px 0 rgba(0, 113, 255, 0.4)}sd-textarea .sd-textarea--disabled{cursor:not-allowed !important;box-shadow:none !important}sd-textarea .sd-textarea--disabled .sd-textarea__content{background:#EEEEEE !important;border:1px solid #CCCCCC !important;color:#888888 !important}sd-textarea .sd-textarea--disabled .sd-textarea__content .sd-textarea__native{cursor:not-allowed !important;color:#888888 !important}sd-textarea .sd-textarea .sd-textarea__footer{display:flex;justify-content:space-between;align-items:center;margin-top:4px;font-size:12px;line-height:20px}sd-textarea .sd-textarea .sd-textarea__help-text{font-size:12px;line-height:20px;font-weight:400;color:#222222}sd-textarea .sd-textarea .sd-textarea__counter{color:#CCCCCC;margin-left:auto}`;
7
+ const TEXTAREA_TOKENS = {
8
+ paddingX: component_textinput.inputTokens.input.sm.paddingX,
9
+ paddingY: component_textinput.inputTokens.input.sm.paddingY,
10
+ radius: component_textinput.inputTokens.input.sm.radius,
11
+ fontSize: component_textinput.inputTokens.input.sm.typography.fontSize,
12
+ lineHeight: component_textinput.inputTokens.input.sm.typography.lineHeight,
13
+ fontWeight: component_textinput.inputTokens.input.sm.typography.fontWeight};
14
+ const TEXTAREA_COLORS = {
15
+ text: component_textinput.inputTokens.input.text,
16
+ bg: component_textinput.inputTokens.input.bg,
17
+ border: component_textinput.inputTokens.input.border,
18
+ resizer: component_textinput.inputTokens.input.resizer,
19
+ };
20
+
21
+ const sdTextareaCss = () => `sd-textarea{display:inline-flex}sd-textarea .sd-textarea__content{width:100%;display:flex}sd-textarea .sd-textarea__content .sd-textarea__native{width:100%;min-height:100px;border:none;outline:none;background:transparent;padding:var(--sd-textarea-padding-y) var(--sd-textarea-padding-x);font-family:inherit;font-size:var(--sd-textarea-font-size);line-height:var(--sd-textarea-line-height);font-weight:var(--sd-textarea-font-weight);color:var(--sd-textarea-text-color);resize:vertical}sd-textarea .sd-textarea__content .sd-textarea__native::placeholder{color:var(--sd-textarea-placeholder-color)}sd-textarea .sd-textarea__content .sd-textarea__native:disabled{cursor:not-allowed;color:var(--sd-textarea-disabled-color)}`;
6
22
 
7
23
  const SdTextarea = class {
8
24
  constructor(hostRef) {
@@ -13,17 +29,33 @@ const SdTextarea = class {
13
29
  }
14
30
  get host() { return index.getElement(this); }
15
31
  value = null;
16
- name;
32
+ placeholder = '입력해 주세요.';
17
33
  disabled = false;
34
+ readonly = false;
18
35
  autoFocus = false;
19
36
  textareaClass = '';
20
- helpText;
37
+ textareaStyle = {};
21
38
  maxLength;
22
- placeholder = '입력해 주세요.';
23
- internalValue = null;
39
+ rows;
40
+ spellcheck = false;
41
+ width = '';
42
+ // props - sd-field
43
+ label = '';
44
+ addonLabel = '';
45
+ hint = '';
46
+ errorMessage = '';
47
+ icon = undefined;
48
+ labelTooltip = '';
49
+ labelTooltipProps = null;
50
+ rules = [];
51
+ error = false;
52
+ status;
24
53
  focused = false;
25
54
  hovered = false;
55
+ internalValue = null;
26
56
  nativeEl = undefined;
57
+ formField;
58
+ name = index$1.nanoid();
27
59
  input;
28
60
  focus;
29
61
  blur;
@@ -36,12 +68,21 @@ const SdTextarea = class {
36
68
  this.input?.emit(this.value);
37
69
  }
38
70
  }
39
- async sdFocus() {
40
- this.nativeEl?.focus();
41
- }
42
- async getNativeElement() {
71
+ async sdGetNativeElement() {
43
72
  return this.nativeEl || null;
44
73
  }
74
+ async sdValidate() {
75
+ this.formField?.sdValidate();
76
+ }
77
+ async sdReset() {
78
+ this.formField?.sdReset();
79
+ }
80
+ async sdResetValidate() {
81
+ this.formField?.sdResetValidation();
82
+ }
83
+ async sdFocus() {
84
+ this.formField?.sdFocus();
85
+ }
45
86
  componentWillLoad() {
46
87
  if (this.value !== null && this.value !== undefined) {
47
88
  this.internalValue = this.value;
@@ -52,44 +93,42 @@ const SdTextarea = class {
52
93
  this.nativeEl?.focus();
53
94
  }
54
95
  }
55
- handleInput(event) {
96
+ handleInput = (event) => {
56
97
  const target = event.target;
57
98
  this.internalValue = target.value;
58
- }
59
- handleFocus(type, event) {
99
+ };
100
+ handleFocus = async (type, event) => {
60
101
  this.focused = type === 'focus';
61
102
  if (type === 'blur') {
103
+ if (this.rules && this.rules.length > 0) {
104
+ await this.formField?.sdValidate();
105
+ }
62
106
  this.blur?.emit(event);
63
107
  }
64
108
  else {
65
109
  this.focus?.emit(event);
66
110
  }
67
- }
68
- getTextareaStatus() {
69
- if (this.disabled)
70
- return 'sd-textarea--disabled';
71
- if (this.hovered)
72
- return 'sd-textarea--hovered';
73
- if (this.focused)
74
- return 'sd-textarea--focused';
75
- return '';
76
- }
77
- getMaxLengthCounter() {
78
- if (this.maxLength === undefined) {
79
- return null;
80
- }
81
- const currentLength = (this.internalValue || '').length;
82
- return `${currentLength}/${this.maxLength}`;
83
- }
84
- hasFooter() {
85
- return this.helpText !== undefined || this.maxLength !== undefined;
86
- }
111
+ };
87
112
  render() {
88
- const maxLengthCounter = this.getMaxLengthCounter();
89
- return (index.h("div", { key: '05fa25ff5bc2a8a0927fbc5301c1404a92e26d5c', class: {
90
- 'sd-textarea': true,
91
- [this.getTextareaStatus()]: true,
92
- }, onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false) }, index.h("div", { key: 'a15fabde4ef35369129cb638aa0a680f4c8e231c', class: "sd-textarea__content" }, index.h("textarea", { key: '1967728740bfa9b749040eefbd813116f281db91', name: this.name, ref: el => (this.nativeEl = el), class: `sd-textarea__native ${this.textareaClass}`, value: this.internalValue || '', placeholder: this.placeholder, disabled: this.disabled, autofocus: this.autoFocus, maxLength: this.maxLength, onInput: this.handleInput.bind(this), onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event) })), this.hasFooter() && (index.h("div", { key: 'ad466295bab42461aeb7a29e81ca147cc473cbea', class: "sd-textarea__footer" }, this.helpText !== undefined && index.h("span", { key: 'd3ad4c9ae5e16114b2b1216ae643c5a53b7bd02a', class: "sd-textarea__help-text" }, this.helpText), maxLengthCounter !== null && index.h("span", { key: 'bd8ee146625f96e4b19b15247ca72a3b0816d2a9', class: "sd-textarea__counter" }, maxLengthCounter)))));
113
+ const cssVars = {
114
+ '--sd-textarea-font-size': `${TEXTAREA_TOKENS.fontSize}px`,
115
+ '--sd-textarea-line-height': `${TEXTAREA_TOKENS.lineHeight}px`,
116
+ '--sd-textarea-font-weight': TEXTAREA_TOKENS.fontWeight,
117
+ '--sd-textarea-padding-x': `${TEXTAREA_TOKENS.paddingX}px`,
118
+ '--sd-textarea-padding-y': `${TEXTAREA_TOKENS.paddingY}px`,
119
+ '--sd-textarea-radius': `${TEXTAREA_TOKENS.radius}px`,
120
+ '--sd-textarea-text-color': TEXTAREA_COLORS.text.default,
121
+ '--sd-textarea-placeholder-color': TEXTAREA_COLORS.text.placeholder,
122
+ '--sd-textarea-disabled-color': TEXTAREA_COLORS.text.disabled,
123
+ '--sd-textarea-bg-color': TEXTAREA_COLORS.bg.default,
124
+ '--sd-textarea-disabled-bg-color': TEXTAREA_COLORS.bg.disabled,
125
+ '--sd-textarea-border-color': TEXTAREA_COLORS.border.default,
126
+ '--sd-textarea-resizer-color': TEXTAREA_COLORS.resizer.color,
127
+ // sd-field 시스템 변수 override (textarea는 고정 높이가 아닌 auto)
128
+ '--sd-system-size-field-sm-height': 'auto',
129
+ '--sd-system-radius-field-sm': `${TEXTAREA_TOKENS.radius}px`,
130
+ };
131
+ return (index.h("sd-field", { key: '390028112d84c22766c6e00fa3625312b8096629', name: this.name, label: this.label, addonLabel: this.addonLabel, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, status: this.status, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, index.h("div", { key: '026ec0293049da167e7dbab5d3a28593d5e6b291', class: "sd-textarea__content" }, index.h("textarea", { key: 'd30b5e1bc61535c1c350f09bf2ea289f0b09001b', name: this.name, ref: el => (this.nativeEl = el), class: `sd-textarea__native ${this.textareaClass}`, value: this.internalValue || '', placeholder: this.placeholder, disabled: this.disabled, readOnly: this.readonly, autofocus: this.autoFocus, maxLength: this.maxLength, rows: this.rows, spellcheck: this.spellcheck, onInput: this.handleInput, onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event), style: this.textareaStyle }))));
93
132
  }
94
133
  static get watchers() { return {
95
134
  "value": [{
@@ -234,7 +234,7 @@ const SdToastContainer = class {
234
234
  const activeToasts = toasts.filter(t => t.state !== 'exiting').reverse();
235
235
  const indexMap = new Map();
236
236
  activeToasts.forEach((t, i) => indexMap.set(t.id, i));
237
- return (index.h("div", { key: '857b7a794e3dd945d706744519456ad033672760', class: "sd-toast-container", style: this.getContainerStyles(), onMouseEnter: () => {
237
+ return (index.h("div", { key: '7d2c4a095a0762710024c4c102ce49c7c7163368', class: "sd-toast-container", style: this.getContainerStyles(), onMouseEnter: () => {
238
238
  this.expanded = true;
239
239
  this.pauseTimers();
240
240
  }, onMouseLeave: () => {
@@ -57,10 +57,10 @@ const SdToast = class {
57
57
  render() {
58
58
  const typeConfig = TOAST_TYPE_CONFIG[this.type] ?? TOAST_TYPE_CONFIG.default;
59
59
  const iconSize = Number(TOAST_LAYOUT.iconSize);
60
- return (index.h("div", { key: '630fa227d71315f8e0e61bb19d0f37ca8363b856', style: {
60
+ return (index.h("div", { key: 'cb42937774233de10872edb8414db88f03868eb3', style: {
61
61
  '--sd-toast-bg': typeConfig.bg,
62
62
  '--sd-toast-text': typeConfig.content,
63
- } }, index.h("div", { key: '49fd9cb53f3c12aa372b44191ccd9f09cc159deb', class: "sd-toast", role: "status", "aria-live": "polite", "aria-atomic": "true" }, this.icon && (index.h("div", { key: 'c57ccceb89350863b19f00b7d725c20ddde33789', class: "sd-toast__icon" }, index.h("sd-icon", { key: 'f17a78f7e326005117d69dddcb03e8c0a1443efe', name: this.icon, size: iconSize, color: typeConfig.content }))), index.h("div", { key: '713c2c40003b17f29c6921826b4ef3a68d201761', class: "sd-toast__content" }, index.h("span", { key: '50e48da188d6ab805d7cce55705be5da19207724', class: "sd-toast__message" }, this.message)), this.link && (index.h("a", { key: 'f04fa2c7386cfb1655bfcfd76e6c1dcb1c5c1ea4', href: this.link, class: "sd-toast__link", target: "_blank", rel: "noopener noreferrer" }, this.linkLabel || this.link)), this.useClose && (index.h("sd-ghost-button", { key: '994248033b0d762693a9bacded1454ae1b66c770', class: "sd-toast__close", icon: "close", ariaLabel: "close", size: "xs", onClick: () => this.close.emit() })))));
63
+ } }, index.h("div", { key: 'e58b3335c4d7c450ef3686c53138636502c4e0f3', class: "sd-toast", role: "status", "aria-live": "polite", "aria-atomic": "true" }, this.icon && (index.h("div", { key: '62e42c814ab2f15d563b3f75c4e9dd3e559318a0', class: "sd-toast__icon" }, index.h("sd-icon", { key: '3e346baecd3207ee817ba843427ed2076fd7cc7c', name: this.icon, size: iconSize, color: typeConfig.content }))), index.h("div", { key: '700c7127a1d59409103b5ceb917e584020078736', class: "sd-toast__content" }, index.h("span", { key: 'd4165f0e324048edcb2492f3050795d26ce1fc86', class: "sd-toast__message" }, this.message)), this.link && (index.h("a", { key: 'f87089865b4e4fd5b488185478c453641920ac92', href: this.link, class: "sd-toast__link", target: "_blank", rel: "noopener noreferrer" }, this.linkLabel || this.link)), this.useClose && (index.h("sd-ghost-button", { key: '33de3a35d1532cd15215751996827a462a7b8cad', class: "sd-toast__close", icon: "close", ariaLabel: "close", size: "xs", onClick: () => this.close.emit() })))));
64
64
  }
65
65
  };
66
66
  SdToast.style = sdToastCss();
@@ -41,7 +41,7 @@ const SdToggleButton = class {
41
41
  this.change.emit(newValue);
42
42
  };
43
43
  render() {
44
- return (index.h("label", { key: '964590e261c212de41cae1cbb6e7e2054182d1f6', class: this.buttonClasses, "aria-label": this.label || 'toggle button' }, this.label, index.h("input", { key: 'f1bfd190408a6e2899cdcd1d66688b94a8d2ecc0', style: { display: 'none' }, type: "checkbox", onInput: this.handleChange })));
44
+ return (index.h("label", { key: '9d98201d5ab361d0d2d5c8c61ce1e5b129f4d588', class: this.buttonClasses, "aria-label": this.label || 'toggle button' }, this.label, index.h("input", { key: 'a745715a752bf99a94ab01d8c07c87d0f507a8ef', style: { display: 'none' }, type: "checkbox", onInput: this.handleChange })));
45
45
  }
46
46
  };
47
47
  SdToggleButton.style = sdToggleButtonCss();
@@ -37,7 +37,7 @@ const SdToggle = class {
37
37
  this.change.emit(newValue);
38
38
  };
39
39
  render() {
40
- return (index.h("label", { key: '2a50a4c8bd89f40db18b78ad5e5ed5885596f0d0', "aria-label": this.label || 'toggle', class: this.toggleClasses }, index.h("input", { key: 'cfdea2ecd3d5946f3b4264d05da09af6e82ca4cd', type: "checkbox", checked: this.value, disabled: this.disabled, onInput: this.handleChange }), this.label && index.h("span", { key: 'f27cc85d92d47649f31e096ba09894c85a934c52', class: "sd-toggle__label" }, this.label), index.h("div", { key: '4a19cae7fdc7e3b12e03281e31b8b3a2a4cfc88b', class: "sd-toggle__track" }, index.h("div", { key: 'e99a72c39e20e8ea6b4d2df14e74c592b3b0eb22', class: "sd-toggle__thumb" }))));
40
+ return (index.h("label", { key: '9f4cf71a2aab588deb68d8e6908f0988ddbacb90', "aria-label": this.label || 'toggle', class: this.toggleClasses }, index.h("input", { key: '6d1279761ea384a233bff234c549030709fd4ea3', type: "checkbox", checked: this.value, disabled: this.disabled, onInput: this.handleChange }), this.label && index.h("span", { key: '7ecd96f5e2c48fda17ed0086ab3cc8bc1caab458', class: "sd-toggle__label" }, this.label), index.h("div", { key: '26f4d468e4ff0c4473e2ce00b7e69a855a249a96', class: "sd-toggle__track" }, index.h("div", { key: '3a7f4019197cfa23dc268ee95308e60d7159ba28', class: "sd-toggle__thumb" }))));
41
41
  }
42
42
  };
43
43
  SdToggle.style = sdToggleCss();
@@ -13,6 +13,12 @@ export class SdInput {
13
13
  width = '';
14
14
  rules = [];
15
15
  autoFocus = false;
16
+ autocomplete = '';
17
+ maxlength;
18
+ minlength;
19
+ inputmode;
20
+ enterkeyhint;
21
+ spellcheck = false;
16
22
  status;
17
23
  hint = '';
18
24
  errorMessage = '';
@@ -104,12 +110,12 @@ export class SdInput {
104
110
  '--sd-system-size-field-sm-height': `${sizeTokens.height}px`,
105
111
  '--sd-system-radius-field-sm': `${sizeTokens.radius}px`,
106
112
  };
107
- return (h("sd-field", { key: '942bba44bffb9c047ce07c07c9cefd02b6b50e62', name: this.name, label: this.label, addonLabel: this.addonLabel, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, status: this.status, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, h("label", { key: '67b37ad7d802c11f9fc1bb372371040a267b9fb9', class: "sd-input__content" }, h("slot", { key: '0068eac35163a12efe74288eb7a0871bf1bbbf81', name: "prefix" }), h("input", { key: '5c48d3c102ff8cb01a98a60a2128bdd5422aa032', name: this.name, ref: el => (this.nativeEl = el), class: `sd-input__native ${this.inputClass}`, type: this.type === 'password' && this.passwordVisible ? 'text' : this.type, value: this.internalValue || '', placeholder: this.placeholder, disabled: this.disabled, readonly: this.readonly, autofocus: this.autoFocus, onInput: this.handleInput, onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event), style: this.inputStyle }), h("slot", { key: 'faa652d843aaba6229961566590ea564604fd183', name: "suffix" }), this.clearable && this.internalValue && !this.disabled && (h("sd-ghost-button", { key: '2935121a60b1cdbb2d1fdfc83d29fdad5da796c3', icon: "close", ariaLabel: "close", size: "xxs", disabled: this.disabled, class: "sd-input__clear-icon", onClick: async () => {
113
+ return (h("sd-field", { key: 'd5f554784340cbb9246165fb15124098e4f7165b', name: this.name, label: this.label, addonLabel: this.addonLabel, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, status: this.status, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, h("label", { key: '02225d57c5bd17dbe78c680f243ad3a9a4ab3b5d', class: "sd-input__content" }, h("slot", { key: '1011876ea9726e62a19047b28a82932e43762436', name: "prefix" }), h("input", { key: '10f4c594382aa002ba09a0012979ff930154fc7a', name: this.name, ref: el => (this.nativeEl = el), class: `sd-input__native ${this.inputClass}`, type: this.type === 'password' && this.passwordVisible ? 'text' : this.type, value: this.internalValue || '', placeholder: this.placeholder, disabled: this.disabled, readonly: this.readonly, autofocus: this.autoFocus, autocomplete: this.autocomplete || undefined, maxlength: this.maxlength, minlength: this.minlength, inputmode: this.inputmode, enterkeyhint: this.enterkeyhint, spellcheck: this.spellcheck, onInput: this.handleInput, onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event), style: this.inputStyle }), h("slot", { key: '007d15357a81f13ab4db5ddf237110b9d1f1728b', name: "suffix" }), this.clearable && this.internalValue && !this.disabled && (h("sd-ghost-button", { key: '92dfd40117cccdb48ebfc0056aa9e093546bbf6b', icon: "close", ariaLabel: "close", size: "xxs", disabled: this.disabled, class: "sd-input__clear-icon", onClick: async () => {
108
114
  if (this.disabled)
109
115
  return;
110
116
  this.internalValue = '';
111
117
  await this.formField?.sdValidate();
112
- } })), this.type === 'password' && (h("sd-ghost-button", { key: '800f789b3cff3b8b32fe2c048f8fabe332f69d66', icon: this.passwordVisible ? 'visibilityOn' : 'visibilityOff', ariaLabel: "visibility", size: "xxs", disabled: this.disabled, class: "sd-input__password-icon", onClick: () => {
118
+ } })), this.type === 'password' && (h("sd-ghost-button", { key: 'a4bef720b55a94a4a6ada002f4a2ffd1d0f8da24', icon: this.passwordVisible ? 'visibilityOn' : 'visibilityOff', ariaLabel: "visibility", size: "xxs", disabled: this.disabled, class: "sd-input__password-icon", onClick: () => {
113
119
  if (this.disabled)
114
120
  return;
115
121
  this.passwordVisible = !this.passwordVisible;
@@ -340,6 +346,122 @@ export class SdInput {
340
346
  "attribute": "auto-focus",
341
347
  "defaultValue": "false"
342
348
  },
349
+ "autocomplete": {
350
+ "type": "string",
351
+ "mutable": false,
352
+ "complexType": {
353
+ "original": "string",
354
+ "resolved": "string",
355
+ "references": {}
356
+ },
357
+ "required": false,
358
+ "optional": false,
359
+ "docs": {
360
+ "tags": [],
361
+ "text": ""
362
+ },
363
+ "getter": false,
364
+ "setter": false,
365
+ "reflect": false,
366
+ "attribute": "autocomplete",
367
+ "defaultValue": "''"
368
+ },
369
+ "maxlength": {
370
+ "type": "number",
371
+ "mutable": false,
372
+ "complexType": {
373
+ "original": "number",
374
+ "resolved": "number | undefined",
375
+ "references": {}
376
+ },
377
+ "required": false,
378
+ "optional": true,
379
+ "docs": {
380
+ "tags": [],
381
+ "text": ""
382
+ },
383
+ "getter": false,
384
+ "setter": false,
385
+ "reflect": false,
386
+ "attribute": "maxlength"
387
+ },
388
+ "minlength": {
389
+ "type": "number",
390
+ "mutable": false,
391
+ "complexType": {
392
+ "original": "number",
393
+ "resolved": "number | undefined",
394
+ "references": {}
395
+ },
396
+ "required": false,
397
+ "optional": true,
398
+ "docs": {
399
+ "tags": [],
400
+ "text": ""
401
+ },
402
+ "getter": false,
403
+ "setter": false,
404
+ "reflect": false,
405
+ "attribute": "minlength"
406
+ },
407
+ "inputmode": {
408
+ "type": "string",
409
+ "mutable": false,
410
+ "complexType": {
411
+ "original": "'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'",
412
+ "resolved": "\"decimal\" | \"email\" | \"none\" | \"numeric\" | \"search\" | \"tel\" | \"text\" | \"url\" | undefined",
413
+ "references": {}
414
+ },
415
+ "required": false,
416
+ "optional": true,
417
+ "docs": {
418
+ "tags": [],
419
+ "text": ""
420
+ },
421
+ "getter": false,
422
+ "setter": false,
423
+ "reflect": false,
424
+ "attribute": "inputmode"
425
+ },
426
+ "enterkeyhint": {
427
+ "type": "string",
428
+ "mutable": false,
429
+ "complexType": {
430
+ "original": "'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'",
431
+ "resolved": "\"done\" | \"enter\" | \"go\" | \"next\" | \"previous\" | \"search\" | \"send\" | undefined",
432
+ "references": {}
433
+ },
434
+ "required": false,
435
+ "optional": true,
436
+ "docs": {
437
+ "tags": [],
438
+ "text": ""
439
+ },
440
+ "getter": false,
441
+ "setter": false,
442
+ "reflect": false,
443
+ "attribute": "enterkeyhint"
444
+ },
445
+ "spellcheck": {
446
+ "type": "boolean",
447
+ "mutable": false,
448
+ "complexType": {
449
+ "original": "boolean",
450
+ "resolved": "boolean",
451
+ "references": {}
452
+ },
453
+ "required": false,
454
+ "optional": false,
455
+ "docs": {
456
+ "tags": [],
457
+ "text": ""
458
+ },
459
+ "getter": false,
460
+ "setter": false,
461
+ "reflect": false,
462
+ "attribute": "spellcheck",
463
+ "defaultValue": "false"
464
+ },
343
465
  "status": {
344
466
  "type": "string",
345
467
  "mutable": false,
@@ -0,0 +1,16 @@
1
+ import inputTokens from "../../tokens/generated/component.textinput.json";
2
+ export const TEXTAREA_TOKENS = {
3
+ paddingX: inputTokens.input.sm.paddingX,
4
+ paddingY: inputTokens.input.sm.paddingY,
5
+ radius: inputTokens.input.sm.radius,
6
+ fontSize: inputTokens.input.sm.typography.fontSize,
7
+ lineHeight: inputTokens.input.sm.typography.lineHeight,
8
+ fontWeight: inputTokens.input.sm.typography.fontWeight,
9
+ borderWidth: inputTokens.input.borderWidth,
10
+ };
11
+ export const TEXTAREA_COLORS = {
12
+ text: inputTokens.input.text,
13
+ bg: inputTokens.input.bg,
14
+ border: inputTokens.input.border,
15
+ resizer: inputTokens.input.resizer,
16
+ };
@@ -1,68 +1,28 @@
1
1
  sd-textarea {
2
- display: block;
2
+ display: inline-flex;
3
3
  }
4
- sd-textarea .sd-textarea {
5
- display: flex;
6
- flex-direction: column;
7
- color: #333333;
8
- font-size: 12px;
9
- line-height: 20px;
10
- }
11
- sd-textarea .sd-textarea .sd-textarea__content {
4
+ sd-textarea .sd-textarea__content {
12
5
  width: 100%;
13
6
  display: flex;
14
- border: 1px solid #AAAAAA;
15
- border-radius: 4px;
16
- background: white;
17
7
  }
18
- sd-textarea .sd-textarea .sd-textarea__content .sd-textarea__native {
8
+ sd-textarea .sd-textarea__content .sd-textarea__native {
19
9
  width: 100%;
20
10
  min-height: 100px;
21
11
  border: none;
22
12
  outline: none;
23
13
  background: transparent;
24
- padding: 4px 8px;
14
+ padding: var(--sd-textarea-padding-y) var(--sd-textarea-padding-x);
25
15
  font-family: inherit;
26
- font-size: 12px;
27
- line-height: 20px;
28
- color: #333333;
16
+ font-size: var(--sd-textarea-font-size);
17
+ line-height: var(--sd-textarea-line-height);
18
+ font-weight: var(--sd-textarea-font-weight);
19
+ color: var(--sd-textarea-text-color);
29
20
  resize: vertical;
30
21
  }
31
- sd-textarea .sd-textarea .sd-textarea__content .sd-textarea__native::placeholder {
32
- color: #AAAAAA;
33
- }
34
- sd-textarea .sd-textarea--hovered .sd-textarea__content, sd-textarea .sd-textarea--focused .sd-textarea__content {
35
- border-color: #0075FF;
36
- box-shadow: 0 0 4px 0 rgba(0, 113, 255, 0.4);
37
- }
38
- sd-textarea .sd-textarea--disabled {
39
- cursor: not-allowed !important;
40
- box-shadow: none !important;
41
- }
42
- sd-textarea .sd-textarea--disabled .sd-textarea__content {
43
- background: #EEEEEE !important;
44
- border: 1px solid #CCCCCC !important;
45
- color: #888888 !important;
46
- }
47
- sd-textarea .sd-textarea--disabled .sd-textarea__content .sd-textarea__native {
48
- cursor: not-allowed !important;
49
- color: #888888 !important;
50
- }
51
- sd-textarea .sd-textarea .sd-textarea__footer {
52
- display: flex;
53
- justify-content: space-between;
54
- align-items: center;
55
- margin-top: 4px;
56
- font-size: 12px;
57
- line-height: 20px;
58
- }
59
- sd-textarea .sd-textarea .sd-textarea__help-text {
60
- font-size: 12px;
61
- line-height: 20px;
62
- font-weight: 400;
63
- color: #222222;
22
+ sd-textarea .sd-textarea__content .sd-textarea__native::placeholder {
23
+ color: var(--sd-textarea-placeholder-color);
64
24
  }
65
- sd-textarea .sd-textarea .sd-textarea__counter {
66
- color: #CCCCCC;
67
- margin-left: auto;
25
+ sd-textarea .sd-textarea__content .sd-textarea__native:disabled {
26
+ cursor: not-allowed;
27
+ color: var(--sd-textarea-disabled-color);
68
28
  }