@progressive-development/pd-forms 0.9.2 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -2
- package/README.md +56 -62
- package/dist/base/pd-base-input-element.d.ts +10 -10
- package/dist/base/pd-base-input-element.d.ts.map +1 -1
- package/dist/base/pd-base-input-element.js +8 -1
- package/dist/base/pd-base-ui-input.d.ts +41 -16
- package/dist/base/pd-base-ui-input.d.ts.map +1 -1
- package/dist/base/pd-base-ui-input.js +25 -6
- package/dist/base/pd-base-ui.js +0 -18
- package/dist/generated/locales/be.d.ts +3 -0
- package/dist/generated/locales/be.d.ts.map +1 -1
- package/dist/generated/locales/de.d.ts +3 -0
- package/dist/generated/locales/de.d.ts.map +1 -1
- package/dist/generated/locales/en.d.ts +3 -0
- package/dist/generated/locales/en.d.ts.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/locales/be.js +4 -1
- package/dist/locales/de.js +4 -1
- package/dist/locales/en.js +4 -1
- package/dist/pd-button/PdButton.d.ts +172 -37
- package/dist/pd-button/PdButton.d.ts.map +1 -1
- package/dist/pd-button/PdButton.js +507 -71
- package/dist/pd-button/pd-button.stories.d.ts +82 -10
- package/dist/pd-button/pd-button.stories.d.ts.map +1 -1
- package/dist/pd-button-group/PdButtonGroup.d.ts +25 -0
- package/dist/pd-button-group/PdButtonGroup.d.ts.map +1 -1
- package/dist/pd-button-group/PdButtonGroup.js +52 -27
- package/dist/pd-button-group/pd-button-group.stories.d.ts +42 -17
- package/dist/pd-button-group/pd-button-group.stories.d.ts.map +1 -1
- package/dist/pd-button-select-group/PdButtonSelectGroup.d.ts +17 -3
- package/dist/pd-button-select-group/PdButtonSelectGroup.d.ts.map +1 -1
- package/dist/pd-button-select-group/PdButtonSelectGroup.js +23 -19
- package/dist/pd-button-select-group/pd-button-select-group.stories.d.ts +43 -18
- package/dist/pd-button-select-group/pd-button-select-group.stories.d.ts.map +1 -1
- package/dist/pd-checkbox/PdCheckbox.d.ts +23 -2
- package/dist/pd-checkbox/PdCheckbox.d.ts.map +1 -1
- package/dist/pd-checkbox/PdCheckbox.js +85 -21
- package/dist/pd-checkbox/pd-checkbox.stories.d.ts +43 -27
- package/dist/pd-checkbox/pd-checkbox.stories.d.ts.map +1 -1
- package/dist/pd-form-container/PdFormContainer.d.ts +30 -9
- package/dist/pd-form-container/PdFormContainer.d.ts.map +1 -1
- package/dist/pd-form-container/PdFormContainer.js +59 -8
- package/dist/pd-form-container/pd-form-container.stories.d.ts +49 -0
- package/dist/pd-form-container/pd-form-container.stories.d.ts.map +1 -0
- package/dist/pd-form-field/PdFormField.d.ts +35 -0
- package/dist/pd-form-field/PdFormField.d.ts.map +1 -0
- package/dist/pd-form-field/PdFormField.js +38 -0
- package/dist/pd-form-field/pd-form-field.d.ts +3 -0
- package/dist/pd-form-field/pd-form-field.d.ts.map +1 -0
- package/dist/pd-form-field/pd-form-field.stories.d.ts +40 -0
- package/dist/pd-form-field/pd-form-field.stories.d.ts.map +1 -0
- package/dist/pd-form-field.d.ts +2 -0
- package/dist/pd-form-field.js +8 -0
- package/dist/pd-form-fieldset/PdFormFieldset.d.ts +144 -0
- package/dist/pd-form-fieldset/PdFormFieldset.d.ts.map +1 -0
- package/dist/pd-form-fieldset/PdFormFieldset.js +364 -0
- package/dist/pd-form-fieldset/index.d.ts +2 -0
- package/dist/pd-form-fieldset/index.d.ts.map +1 -0
- package/dist/pd-form-fieldset/pd-form-fieldset.d.ts +3 -0
- package/dist/pd-form-fieldset/pd-form-fieldset.d.ts.map +1 -0
- package/dist/pd-form-fieldset/pd-form-fieldset.js +8 -0
- package/dist/pd-form-fieldset/pd-form-fieldset.stories.d.ts +38 -0
- package/dist/pd-form-fieldset/pd-form-fieldset.stories.d.ts.map +1 -0
- package/dist/pd-form-row/PdFormRow.d.ts +35 -5
- package/dist/pd-form-row/PdFormRow.d.ts.map +1 -1
- package/dist/pd-form-row/PdFormRow.js +135 -69
- package/dist/pd-form-row/pd-form-row.stories.d.ts +41 -25
- package/dist/pd-form-row/pd-form-row.stories.d.ts.map +1 -1
- package/dist/pd-generic-form/PdGenericForm.d.ts +50 -0
- package/dist/pd-generic-form/PdGenericForm.d.ts.map +1 -0
- package/dist/pd-generic-form/PdGenericForm.js +334 -0
- package/dist/pd-generic-form/pd-generic-form.d.ts +3 -0
- package/dist/pd-generic-form/pd-generic-form.d.ts.map +1 -0
- package/dist/pd-generic-form/pd-generic-form.stories.d.ts +35 -0
- package/dist/pd-generic-form/pd-generic-form.stories.d.ts.map +1 -0
- package/dist/pd-generic-form/pd-generic-form.styles.d.ts +2 -0
- package/dist/pd-generic-form/pd-generic-form.styles.d.ts.map +1 -0
- package/dist/pd-generic-form/pd-generic-form.styles.js +110 -0
- package/dist/pd-generic-form/pd-generic-form.test.d.ts +1 -0
- package/dist/pd-generic-form/pd-generic-form.test.d.ts.map +1 -0
- package/dist/pd-generic-form.d.ts +2 -0
- package/dist/pd-generic-form.js +8 -0
- package/dist/pd-hover-box/PdHoverBox.d.ts +61 -11
- package/dist/pd-hover-box/PdHoverBox.d.ts.map +1 -1
- package/dist/pd-hover-box/PdHoverBox.js +130 -28
- package/dist/pd-hover-box/pd-hover-box.stories.d.ts +28 -5
- package/dist/pd-hover-box/pd-hover-box.stories.d.ts.map +1 -1
- package/dist/pd-input/PdComboboxInput.d.ts +20 -0
- package/dist/pd-input/PdComboboxInput.d.ts.map +1 -0
- package/dist/pd-input/PdComboboxInput.js +67 -0
- package/dist/pd-input/PdInput.d.ts +33 -15
- package/dist/pd-input/PdInput.d.ts.map +1 -1
- package/dist/pd-input/PdInput.js +49 -21
- package/dist/pd-input/pd-input.stories.d.ts +71 -35
- package/dist/pd-input/pd-input.stories.d.ts.map +1 -1
- package/dist/pd-input-area/PdInputArea.d.ts +19 -6
- package/dist/pd-input-area/PdInputArea.d.ts.map +1 -1
- package/dist/pd-input-area/PdInputArea.js +17 -15
- package/dist/pd-input-area/pd-input-area.stories.d.ts +65 -52
- package/dist/pd-input-area/pd-input-area.stories.d.ts.map +1 -1
- package/dist/pd-input-file/PdInputFile.d.ts +24 -0
- package/dist/pd-input-file/PdInputFile.d.ts.map +1 -1
- package/dist/pd-input-file/PdInputFile.js +53 -22
- package/dist/pd-input-file/pd-input-file.stories.d.ts +51 -47
- package/dist/pd-input-file/pd-input-file.stories.d.ts.map +1 -1
- package/dist/pd-input-time/PdInputTime.d.ts +21 -0
- package/dist/pd-input-time/PdInputTime.d.ts.map +1 -1
- package/dist/pd-input-time/PdInputTime.js +48 -22
- package/dist/pd-input-time/pd-input-time.stories.d.ts +94 -0
- package/dist/pd-input-time/pd-input-time.stories.d.ts.map +1 -0
- package/dist/pd-panel-button/PdPanelButton.d.ts +50 -34
- package/dist/pd-panel-button/PdPanelButton.d.ts.map +1 -1
- package/dist/pd-panel-button/PdPanelButton.js +149 -262
- package/dist/pd-panel-button/pd-panel-button.stories.d.ts +55 -25
- package/dist/pd-panel-button/pd-panel-button.stories.d.ts.map +1 -1
- package/dist/pd-radio-group/PdRadioGroup.d.ts +14 -0
- package/dist/pd-radio-group/PdRadioGroup.d.ts.map +1 -1
- package/dist/pd-radio-group/PdRadioGroup.js +48 -11
- package/dist/pd-radio-group/pd-radio-group.stories.d.ts +37 -7
- package/dist/pd-radio-group/pd-radio-group.stories.d.ts.map +1 -1
- package/dist/pd-range/PdRange.d.ts +22 -2
- package/dist/pd-range/PdRange.d.ts.map +1 -1
- package/dist/pd-range/PdRange.js +54 -43
- package/dist/pd-range/pd-range.stories.d.ts +49 -7
- package/dist/pd-range/pd-range.stories.d.ts.map +1 -1
- package/dist/pd-select/PdSelect.d.ts +16 -4
- package/dist/pd-select/PdSelect.d.ts.map +1 -1
- package/dist/pd-select/PdSelect.js +23 -21
- package/dist/pd-select/pd-select.stories.d.ts +56 -35
- package/dist/pd-select/pd-select.stories.d.ts.map +1 -1
- package/dist/pd-suggestion-box/PdSuggestionBox.d.ts +74 -0
- package/dist/pd-suggestion-box/PdSuggestionBox.d.ts.map +1 -0
- package/dist/pd-suggestion-box/PdSuggestionBox.js +277 -0
- package/dist/pd-suggestion-box/PdSuggestionPanel.d.ts +42 -0
- package/dist/pd-suggestion-box/PdSuggestionPanel.d.ts.map +1 -0
- package/dist/pd-suggestion-box/PdSuggestionPanel.js +227 -0
- package/dist/pd-suggestion-box/pd-suggestion-box.d.ts +3 -0
- package/dist/pd-suggestion-box/pd-suggestion-box.d.ts.map +1 -0
- package/dist/pd-suggestion-box/pd-suggestion-box.stories.d.ts +79 -0
- package/dist/pd-suggestion-box/pd-suggestion-box.stories.d.ts.map +1 -0
- package/dist/pd-suggestion-box.d.ts +2 -0
- package/dist/pd-suggestion-box.js +8 -0
- package/dist/pd-utils/dist/position-helper.js +35 -0
- package/dist/stories/pd-forms-overview.stories.d.ts +48 -0
- package/dist/stories/pd-forms-overview.stories.d.ts.map +1 -0
- package/dist/stories/story-helpers.d.ts +10 -0
- package/dist/stories/story-helpers.d.ts.map +1 -0
- package/dist/styles/shared-input-field-styles.d.ts.map +1 -1
- package/dist/styles/shared-input-field-styles.js +13 -19
- package/dist/styles/shared-input-styles.d.ts.map +1 -1
- package/dist/styles/shared-input-styles.js +18 -14
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -4
- package/dist/pd-form-container/form-container.stories.d.ts +0 -28
- package/dist/pd-form-container/form-container.stories.d.ts.map +0 -1
- package/dist/pd-form-container/form-container2.stories.d.ts +0 -8
- package/dist/pd-form-container/form-container2.stories.d.ts.map +0 -1
- package/dist/pd-form-container/form-container3.stories.d.ts +0 -11
- package/dist/pd-form-container/form-container3.stories.d.ts.map +0 -1
- package/dist/stories/01_index.stories.d.ts +0 -58
- package/dist/stories/01_index.stories.d.ts.map +0 -1
|
@@ -78,11 +78,17 @@ class PdCheckbox extends PdBaseUIInput {
|
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
.readonly .label {
|
|
81
|
-
color: var(
|
|
81
|
+
color: var(
|
|
82
|
+
--pd-cb-font-col-readonly,
|
|
83
|
+
var(--pd-default-disabled-text-col)
|
|
84
|
+
);
|
|
82
85
|
}
|
|
83
86
|
|
|
84
87
|
.disabled .label {
|
|
85
|
-
color: var(
|
|
88
|
+
color: var(
|
|
89
|
+
--pd-cb-font-col-disabled,
|
|
90
|
+
var(--pd-default-disabled-text-col)
|
|
91
|
+
);
|
|
86
92
|
}
|
|
87
93
|
|
|
88
94
|
/*
|
|
@@ -90,23 +96,36 @@ class PdCheckbox extends PdBaseUIInput {
|
|
|
90
96
|
*/
|
|
91
97
|
.checkbox {
|
|
92
98
|
display: flex;
|
|
93
|
-
border-radius:
|
|
99
|
+
border-radius: var(--pd-cb-border-radius, var(--pd-radius-md));
|
|
94
100
|
line-height: 0;
|
|
95
101
|
align-items: center;
|
|
96
102
|
justify-content: center;
|
|
103
|
+
margin-right: 0.2rem;
|
|
104
|
+
margin-bottom: 0.2rem;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.checkbox:focus {
|
|
108
|
+
outline: none;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.checkbox:focus-visible {
|
|
112
|
+
outline: 2px solid var(--pd-focus-ring-col);
|
|
113
|
+
outline-offset: 2px;
|
|
114
|
+
border-radius: var(--pd-cb-border-radius, var(--pd-radius-sm));
|
|
97
115
|
}
|
|
98
116
|
|
|
99
117
|
.checkbox pd-icon {
|
|
100
118
|
--pd-icon-size: 1.3rem;
|
|
101
|
-
margin-right: 0.2rem;
|
|
102
|
-
margin-bottom: 0.2rem;
|
|
103
119
|
border: 2px solid var(--pd-cb-border-col, var(--pd-default-col));
|
|
104
|
-
border-radius: var(--pd-cb-border-radius,
|
|
120
|
+
border-radius: var(--pd-cb-border-radius, var(--pd-radius-sm));
|
|
105
121
|
}
|
|
106
122
|
|
|
107
123
|
.readonly .checkbox pd-icon,
|
|
108
124
|
.disabled .checkbox pd-icon {
|
|
109
|
-
border-color: var(
|
|
125
|
+
border-color: var(
|
|
126
|
+
--pd-cb-border-col-readonly,
|
|
127
|
+
var(--pd-default-disabled-col)
|
|
128
|
+
);
|
|
110
129
|
}
|
|
111
130
|
|
|
112
131
|
/*
|
|
@@ -122,6 +141,16 @@ class PdCheckbox extends PdBaseUIInput {
|
|
|
122
141
|
justify-content: center;
|
|
123
142
|
}
|
|
124
143
|
|
|
144
|
+
.radio:focus {
|
|
145
|
+
outline: none;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.radio:focus-visible {
|
|
149
|
+
outline: 2px solid var(--pd-focus-ring-col);
|
|
150
|
+
outline-offset: 2px;
|
|
151
|
+
border-radius: 50%;
|
|
152
|
+
}
|
|
153
|
+
|
|
125
154
|
.radio pd-icon {
|
|
126
155
|
--pd-icon-size: 1.5rem;
|
|
127
156
|
--pd-icon-round-padding: 0.1rem;
|
|
@@ -130,20 +159,32 @@ class PdCheckbox extends PdBaseUIInput {
|
|
|
130
159
|
|
|
131
160
|
.readonly .radio pd-icon,
|
|
132
161
|
.disabled .radio pd-icon {
|
|
133
|
-
border-color: var(
|
|
162
|
+
border-color: var(
|
|
163
|
+
--pd-cb-border-col-readonly,
|
|
164
|
+
var(--pd-default-disabled-col)
|
|
165
|
+
);
|
|
134
166
|
}
|
|
135
167
|
|
|
136
168
|
/* Switch styles */
|
|
137
169
|
.switch {
|
|
138
170
|
height: var(--pd-cb-switch-height);
|
|
139
171
|
position: relative;
|
|
140
|
-
outline: 0;
|
|
141
172
|
-webkit-user-select: none;
|
|
142
173
|
-moz-user-select: none;
|
|
143
174
|
-ms-user-select: none;
|
|
144
175
|
user-select: none;
|
|
145
176
|
}
|
|
146
177
|
|
|
178
|
+
.switch-paddle:focus {
|
|
179
|
+
outline: none;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.switch-paddle:focus-visible {
|
|
183
|
+
outline: 2px solid var(--pd-focus-ring-col);
|
|
184
|
+
outline-offset: 2px;
|
|
185
|
+
border-radius: var(--pd-cb-border-radius, var(--pd-radius-md));
|
|
186
|
+
}
|
|
187
|
+
|
|
147
188
|
.switch .label {
|
|
148
189
|
margin-left: 0.5rem;
|
|
149
190
|
}
|
|
@@ -156,7 +197,7 @@ class PdCheckbox extends PdBaseUIInput {
|
|
|
156
197
|
min-width: 4.1rem;
|
|
157
198
|
max-width: 4.1rem;
|
|
158
199
|
height: 1.9rem;
|
|
159
|
-
border-radius:
|
|
200
|
+
border-radius: var(--pd-cb-border-radius, var(--pd-radius-md));
|
|
160
201
|
background: var(--pd-cb-switch-paddle-col, var(--pd-default-col));
|
|
161
202
|
cursor: pointer;
|
|
162
203
|
}
|
|
@@ -170,8 +211,8 @@ class PdCheckbox extends PdBaseUIInput {
|
|
|
170
211
|
-webkit-transform: translate3d(0, 0, 0);
|
|
171
212
|
transform: translate3d(0, 0, 0);
|
|
172
213
|
border: 2px solid var(--pd-cb-border-col, var(--pd-default-col));
|
|
173
|
-
box-shadow:
|
|
174
|
-
border-radius: var(--pd-cb-border-radius,
|
|
214
|
+
box-shadow: var(--pd-shadow-sm);
|
|
215
|
+
border-radius: var(--pd-cb-border-radius, var(--pd-radius-md));
|
|
175
216
|
-webkit-transition: all 0.25s ease-out;
|
|
176
217
|
transition: all 0.25s ease-out;
|
|
177
218
|
content: "";
|
|
@@ -236,14 +277,23 @@ class PdCheckbox extends PdBaseUIInput {
|
|
|
236
277
|
isChecked: checked,
|
|
237
278
|
isUnchecked: !checked
|
|
238
279
|
};
|
|
280
|
+
const role = this.checkType === "RADIO" ? "radio" : this.checkType === "SWITCH" ? "switch" : "checkbox";
|
|
239
281
|
return html`
|
|
240
282
|
${this._renderLabel(inputId)}
|
|
241
|
-
<div @click
|
|
242
|
-
<div
|
|
283
|
+
<div @click="${this._onClick}" class="${classMap(classMapVal)}">
|
|
284
|
+
<div
|
|
285
|
+
class="${classMap(aClassMap)}"
|
|
286
|
+
tabindex="${this.disabled ? -1 : 0}"
|
|
287
|
+
@keydown="${this._onKeyDown}"
|
|
288
|
+
role="${role}"
|
|
289
|
+
aria-checked="${checked}"
|
|
290
|
+
aria-disabled="${this.disabled}"
|
|
291
|
+
aria-readonly="${this.readonly}"
|
|
292
|
+
>
|
|
243
293
|
<pd-icon
|
|
244
|
-
icon
|
|
294
|
+
icon="${this.checkType === "SWITCH" ? pdIcons.ICON_CHECKBOX : this.checkType === "RADIO" ? pdIcons.ICON_CIRCLE : pdIcons.ICON_CHECKBOX_ONLY_CHECK}"
|
|
245
295
|
class="${this.checkType === "RADIO" ? "round" : ""}"
|
|
246
|
-
?activeIcon
|
|
296
|
+
?activeIcon="${checked}"
|
|
247
297
|
></pd-icon>
|
|
248
298
|
</div>
|
|
249
299
|
<span class="label"><slot></slot></span>
|
|
@@ -256,21 +306,35 @@ class PdCheckbox extends PdBaseUIInput {
|
|
|
256
306
|
const checked = this._value === "true";
|
|
257
307
|
this._handleChangedValue(!checked ? "true" : "false", event, true);
|
|
258
308
|
}
|
|
259
|
-
|
|
260
|
-
|
|
309
|
+
_onKeyDown(event) {
|
|
310
|
+
if (this.disabled || this.readonly) return;
|
|
261
311
|
if (event.key === " " || event.code === "Space") {
|
|
312
|
+
event.preventDefault();
|
|
262
313
|
this._onClick(event);
|
|
314
|
+
} else if (event.key === "Enter") {
|
|
315
|
+
event.preventDefault();
|
|
316
|
+
this.dispatchEvent(
|
|
317
|
+
new CustomEvent("enter-pressed", {
|
|
318
|
+
detail: {
|
|
319
|
+
value: this._value,
|
|
320
|
+
name: this.valueName || this.id || "field"
|
|
321
|
+
},
|
|
322
|
+
bubbles: true,
|
|
323
|
+
composed: true
|
|
324
|
+
})
|
|
325
|
+
);
|
|
263
326
|
}
|
|
264
327
|
}
|
|
265
|
-
_onLinkClick(event) {
|
|
266
|
-
event.preventDefault();
|
|
267
|
-
}
|
|
268
328
|
_getInitialValue(reset) {
|
|
269
329
|
return reset ? this.initValue || "false" : this.initValue || this._value || "false";
|
|
270
330
|
}
|
|
271
331
|
clear() {
|
|
272
332
|
this.reset();
|
|
273
333
|
}
|
|
334
|
+
_getParsedValue() {
|
|
335
|
+
const truthy = /* @__PURE__ */ new Set([true, "true", "on", "1", 1]);
|
|
336
|
+
return truthy.has(this._value);
|
|
337
|
+
}
|
|
274
338
|
}
|
|
275
339
|
__decorateClass([
|
|
276
340
|
property({ type: String, reflect: true })
|
|
@@ -1,29 +1,45 @@
|
|
|
1
|
-
import { StoryObj } from '@storybook/web-components';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/web-components-vite';
|
|
2
|
+
/**
|
|
3
|
+
* Story arguments interface for pd-checkbox component.
|
|
4
|
+
* Defines all configurable properties available in Storybook controls.
|
|
5
|
+
*/
|
|
6
|
+
interface PdCheckboxArgs {
|
|
7
|
+
/** The label text displayed next to the checkbox */
|
|
8
|
+
label: string;
|
|
9
|
+
/** The name attribute for form submission */
|
|
10
|
+
valueName: string;
|
|
11
|
+
/** Initial checked state ("true" or "false") */
|
|
12
|
+
initValue: string;
|
|
13
|
+
/** Type of checkbox control: CHECK, RADIO, or SWITCH */
|
|
14
|
+
checkType: "CHECK" | "RADIO" | "SWITCH";
|
|
15
|
+
/** Whether the checkbox is disabled */
|
|
16
|
+
disabled: boolean;
|
|
17
|
+
/** Whether the checkbox is read-only */
|
|
18
|
+
readonly: boolean;
|
|
19
|
+
/** Whether the checkbox is required */
|
|
20
|
+
required: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* ## pd-checkbox
|
|
24
|
+
*
|
|
25
|
+
* A versatile checkbox component supporting three visual styles:
|
|
26
|
+
* standard checkbox, radio button, and toggle switch.
|
|
27
|
+
*
|
|
28
|
+
* ### Features
|
|
29
|
+
* - **Three Check Types**: CHECK (standard checkbox), RADIO (radio button style), SWITCH (toggle switch)
|
|
30
|
+
* - **States**: Supports checked, unchecked, disabled, readonly, and required states
|
|
31
|
+
* - **Accessibility**: Keyboard navigation with Space/Enter support
|
|
32
|
+
* - **Form Integration**: Works with pd-form-container for validation
|
|
33
|
+
*/
|
|
34
|
+
declare const meta: Meta<PdCheckboxArgs>;
|
|
24
35
|
export default meta;
|
|
25
|
-
type Story = StoryObj
|
|
26
|
-
|
|
27
|
-
export declare const
|
|
28
|
-
|
|
36
|
+
type Story = StoryObj<PdCheckboxArgs>;
|
|
37
|
+
/** Default unchecked checkbox with a label. Interactive via Controls panel. */
|
|
38
|
+
export declare const Default: Story;
|
|
39
|
+
/** All check types and states at a glance. */
|
|
40
|
+
export declare const AllVariants: Story;
|
|
41
|
+
/** Required checkbox with form validation pattern. */
|
|
42
|
+
export declare const Required: Story;
|
|
43
|
+
/** CSS Custom Properties -- Branded and Redesigned variants. */
|
|
44
|
+
export declare const CustomStyling: Story;
|
|
29
45
|
//# sourceMappingURL=pd-checkbox.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pd-checkbox.stories.d.ts","sourceRoot":"","sources":["../../src/pd-checkbox/pd-checkbox.stories.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pd-checkbox.stories.d.ts","sourceRoot":"","sources":["../../src/pd-checkbox/pd-checkbox.stories.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,kBAAkB,CAAC;AAC1B,OAAO,2CAA2C,CAAC;AACnD,OAAO,+BAA+B,CAAC;AACvC,OAAO,2BAA2B,CAAC;AAMnC;;;GAGG;AACH,UAAU,cAAc;IACtB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,SAAS,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IACxC,uCAAuC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,wCAAwC;IACxC,QAAQ,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAMD;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,cAAc,CAuF9B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;AAMtC,+EAA+E;AAC/E,eAAO,MAAM,OAAO,EAAE,KAOrB,CAAC;AAMF,8CAA8C;AAC9C,eAAO,MAAM,WAAW,EAAE,KA+IzB,CAAC;AAMF,sDAAsD;AACtD,eAAO,MAAM,QAAQ,EAAE,KA0CtB,CAAC;AAMF,gEAAgE;AAChE,eAAO,MAAM,aAAa,EAAE,KAsK3B,CAAC"}
|
|
@@ -2,41 +2,62 @@ import { CSSResultGroup, TemplateResult } from 'lit';
|
|
|
2
2
|
import { PdBaseUI } from '../base/pd-base-ui.js';
|
|
3
3
|
import { PdFormElementStatus } from '../types.js';
|
|
4
4
|
/**
|
|
5
|
+
* Form container for managing and validating pd-* form elements.
|
|
6
|
+
*
|
|
5
7
|
* @tagname pd-form-container
|
|
8
|
+
* @summary Container for form fields with validation and state management.
|
|
9
|
+
*
|
|
10
|
+
* @event pd-form-change - Fired when any form element changes with `{overallValidity}` detail.
|
|
11
|
+
*
|
|
12
|
+
* @slot - pd-* form elements to manage.
|
|
13
|
+
*
|
|
14
|
+
* @cssprop --pd-form-container-row-gap - Gap between form rows. Default: `var(--pd-spacing-sm, 0.5rem)`.
|
|
15
|
+
* @cssprop --pd-form-info-font-size - Validation info font size. Default: `0.8em`.
|
|
16
|
+
* @cssprop --pd-form-container-default-col - Default info text color. Default: `var(--pd-default-dark-col)`.
|
|
17
|
+
* @cssprop --pd-form-container-valid-col - Valid state text color. Default: `var(--pd-default-success-dark-col)`.
|
|
18
|
+
* @cssprop --pd-form-container-invalid-col - Invalid state text color. Default: `var(--pd-default-error-dark-col)`.
|
|
6
19
|
*/
|
|
7
20
|
export declare class PdFormContainer extends PdBaseUI {
|
|
8
|
-
/**
|
|
9
|
-
* If true, display info about required fields
|
|
10
|
-
*/
|
|
21
|
+
/** Display info about required fields validation status. */
|
|
11
22
|
requiredFieldInfo: boolean;
|
|
12
|
-
/**
|
|
13
|
-
* If true, trim fields when values are returned.
|
|
14
|
-
*/
|
|
23
|
+
/** Trim field values when calling getValues(). */
|
|
15
24
|
autoTrimm: boolean;
|
|
16
|
-
/**
|
|
17
|
-
* Optional general error message
|
|
18
|
-
*/
|
|
25
|
+
/** General error message to display. */
|
|
19
26
|
commonError: string;
|
|
27
|
+
/** @ignore */
|
|
20
28
|
private _fields;
|
|
21
29
|
static styles: CSSResultGroup;
|
|
22
30
|
connectedCallback(): void;
|
|
23
31
|
disconnectedCallback(): void;
|
|
24
32
|
render(): TemplateResult;
|
|
25
33
|
private _renderValidationInfo;
|
|
34
|
+
/** @ignore */
|
|
26
35
|
private _onRegister;
|
|
36
|
+
/** @ignore */
|
|
27
37
|
private _onUnRegister;
|
|
38
|
+
/** @ignore */
|
|
28
39
|
private _onUnRegisterBound;
|
|
40
|
+
/** @ignore */
|
|
29
41
|
private _onChange;
|
|
42
|
+
/** @ignore */
|
|
30
43
|
private _onBlur;
|
|
44
|
+
/** @ignore */
|
|
31
45
|
private _onFocus;
|
|
32
46
|
private _getOverallValidity;
|
|
47
|
+
/** Runs all field validators and returns overall validity. */
|
|
33
48
|
triggerValidate(): Promise<boolean>;
|
|
49
|
+
/** Returns all field values as origin and parsed objects. */
|
|
34
50
|
getValues(): {
|
|
35
51
|
origin: Record<string, any>;
|
|
36
52
|
parsed: Record<string, any>;
|
|
37
53
|
};
|
|
54
|
+
/** Resets all form fields to their initial values. */
|
|
38
55
|
reset(): void;
|
|
56
|
+
/** Clear all form fields. */
|
|
57
|
+
clear(): void;
|
|
58
|
+
/** Returns the current status map of all registered fields. */
|
|
39
59
|
getStatus(): Map<string, PdFormElementStatus>;
|
|
60
|
+
/** Whether all form fields are currently valid. */
|
|
40
61
|
get valid(): boolean;
|
|
41
62
|
}
|
|
42
63
|
//# sourceMappingURL=PdFormContainer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PdFormContainer.d.ts","sourceRoot":"","sources":["../../src/pd-form-container/PdFormContainer.ts"],"names":[],"mappings":"AACA
|
|
1
|
+
{"version":3,"file":"PdFormContainer.d.ts","sourceRoot":"","sources":["../../src/pd-form-container/PdFormContainer.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAIb,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,4DAA4D;IAE5D,iBAAiB,UAAS;IAE1B,kDAAkD;IAElD,SAAS,UAAS;IAElB,wCAAwC;IAExC,WAAW,SAAM;IAEjB,cAAc;IAEd,OAAO,CAAC,OAAO,CAA+C;IAE9D,OAAgB,MAAM,EAAE,cAAc,CAsDpC;IAEO,iBAAiB,IAAI,IAAI;IA0BzB,oBAAoB,IAAI,IAAI;IA0B5B,MAAM,IAAI,cAAc;IAWjC,OAAO,CAAC,qBAAqB;IAmB7B,cAAc;IACd,OAAO,CAAC,WAAW,CA8BjB;IAEF,cAAc;IACd,OAAO,CAAC,aAAa,CAkBnB;IAEF,cAAc;IACd,OAAO,CAAC,kBAAkB,CAAiC;IAE3D,cAAc;IACd,OAAO,CAAC,SAAS,CA2Bf;IAEF,cAAc;IACd,OAAO,CAAC,OAAO,CAQb;IAEF,cAAc;IACd,OAAO,CAAC,QAAQ,CAOd;IAEF,OAAO,CAAC,mBAAmB;IAa3B,8DAA8D;IACjD,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAYhD,6DAA6D;IACtD,SAAS,IAAI;QAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC7B;IAcD,sDAAsD;IAC/C,KAAK,IAAI,IAAI;IASpB,6BAA6B;IACtB,KAAK,IAAI,IAAI;IASpB,+DAA+D;IACxD,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAIpD,mDAAmD;IACnD,IAAI,KAAK,YAER;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { css, html } from 'lit';
|
|
1
|
+
import { css, nothing, html } from 'lit';
|
|
2
2
|
import { property, state } from 'lit/decorators.js';
|
|
3
3
|
import { msg } from '@lit/localize';
|
|
4
4
|
import { PdBaseUI } from '../base/pd-base-ui.js';
|
|
@@ -19,6 +19,7 @@ class PdFormContainer extends PdBaseUI {
|
|
|
19
19
|
this.autoTrimm = false;
|
|
20
20
|
this.commonError = "";
|
|
21
21
|
this._fields = /* @__PURE__ */ new Map();
|
|
22
|
+
/** @ignore */
|
|
22
23
|
this._onRegister = (e) => {
|
|
23
24
|
const { name, value, parsedValue, state: state2 } = e.detail;
|
|
24
25
|
console.debug("###### _onRegister", name, value, state2);
|
|
@@ -34,7 +35,7 @@ class PdFormContainer extends PdBaseUI {
|
|
|
34
35
|
touched: state2.touched,
|
|
35
36
|
focused: state2.focus,
|
|
36
37
|
errors: {},
|
|
37
|
-
element: e.target
|
|
38
|
+
element: e.composedPath()[0] ?? e.target
|
|
38
39
|
});
|
|
39
40
|
this.requestUpdate();
|
|
40
41
|
this.dispatchEvent(
|
|
@@ -47,6 +48,7 @@ class PdFormContainer extends PdBaseUI {
|
|
|
47
48
|
}
|
|
48
49
|
e.stopPropagation();
|
|
49
50
|
};
|
|
51
|
+
/** @ignore */
|
|
50
52
|
this._onUnRegister = (e) => {
|
|
51
53
|
const { name, value } = e.detail;
|
|
52
54
|
console.debug("###### _onUnRegister", name, value);
|
|
@@ -63,7 +65,9 @@ class PdFormContainer extends PdBaseUI {
|
|
|
63
65
|
}
|
|
64
66
|
e.stopPropagation();
|
|
65
67
|
};
|
|
68
|
+
/** @ignore */
|
|
66
69
|
this._onUnRegisterBound = this._onUnRegister.bind(this);
|
|
70
|
+
/** @ignore */
|
|
67
71
|
this._onChange = (e) => {
|
|
68
72
|
const { name, value, parsedValue, state: state2 } = e.detail;
|
|
69
73
|
console.debug("###### _onChange", name, value, state2);
|
|
@@ -91,6 +95,7 @@ class PdFormContainer extends PdBaseUI {
|
|
|
91
95
|
}
|
|
92
96
|
e.stopPropagation();
|
|
93
97
|
};
|
|
98
|
+
/** @ignore */
|
|
94
99
|
this._onBlur = (e) => {
|
|
95
100
|
const { name } = e.detail;
|
|
96
101
|
const field = this._fields.get(name);
|
|
@@ -100,6 +105,7 @@ class PdFormContainer extends PdBaseUI {
|
|
|
100
105
|
}
|
|
101
106
|
e.stopPropagation();
|
|
102
107
|
};
|
|
108
|
+
/** @ignore */
|
|
103
109
|
this._onFocus = (e) => {
|
|
104
110
|
const { name } = e.detail;
|
|
105
111
|
const field = this._fields.get(name);
|
|
@@ -114,9 +120,22 @@ class PdFormContainer extends PdBaseUI {
|
|
|
114
120
|
PdBaseUI.styles,
|
|
115
121
|
css`
|
|
116
122
|
:host {
|
|
123
|
+
--_row-gap: var(--pd-form-container-row-gap, var(--pd-spacing-md));
|
|
124
|
+
|
|
125
|
+
display: block;
|
|
126
|
+
width: 100%;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
form {
|
|
117
130
|
display: flex;
|
|
118
131
|
flex-direction: column;
|
|
119
|
-
|
|
132
|
+
gap: var(--_row-gap);
|
|
133
|
+
width: 100%;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/* Ensure pd-form-row children take full width */
|
|
137
|
+
::slotted(pd-form-row) {
|
|
138
|
+
width: 100%;
|
|
120
139
|
}
|
|
121
140
|
|
|
122
141
|
.validation-info {
|
|
@@ -139,6 +158,17 @@ class PdFormContainer extends PdBaseUI {
|
|
|
139
158
|
var(--pd-default-error-dark-col)
|
|
140
159
|
);
|
|
141
160
|
}
|
|
161
|
+
|
|
162
|
+
.error-message {
|
|
163
|
+
color: var(--pd-error-col, #dc3545);
|
|
164
|
+
background-color: var(--pd-error-bg-col, #f8d7da);
|
|
165
|
+
border: 1px solid var(--pd-error-border-col, #f5c6cb);
|
|
166
|
+
border-radius: var(--pd-radius-md);
|
|
167
|
+
padding: 0.75rem 1rem;
|
|
168
|
+
margin-bottom: 1rem;
|
|
169
|
+
font-size: 0.875rem;
|
|
170
|
+
width: fit-content;
|
|
171
|
+
}
|
|
142
172
|
`
|
|
143
173
|
];
|
|
144
174
|
}
|
|
@@ -192,18 +222,22 @@ class PdFormContainer extends PdBaseUI {
|
|
|
192
222
|
return html`
|
|
193
223
|
<form>
|
|
194
224
|
<slot></slot>
|
|
195
|
-
${this.requiredFieldInfo || this.commonError ? this._renderValidationInfo() :
|
|
225
|
+
${this.requiredFieldInfo || this.commonError ? this._renderValidationInfo() : nothing}
|
|
196
226
|
</form>
|
|
197
227
|
`;
|
|
198
228
|
}
|
|
199
229
|
_renderValidationInfo() {
|
|
200
230
|
const allValid = this._getOverallValidity() && !this.commonError;
|
|
201
231
|
return html`
|
|
202
|
-
|
|
203
|
-
|
|
232
|
+
${this.commonError ? html`
|
|
233
|
+
<div class="error-message" role="alert">${this.commonError}</div>
|
|
234
|
+
` : html`
|
|
235
|
+
<p class="validation-info ${allValid ? "valid" : "invalid"}">
|
|
236
|
+
${allValid ? msg("* Felder ausgefüllt", { id: "pd.form.required.valid" }) : msg("* Pflichtfeld fehlt oder fehlerhaft", {
|
|
204
237
|
id: "pd.form.required.missing"
|
|
205
238
|
})}
|
|
206
|
-
|
|
239
|
+
</p>
|
|
240
|
+
`}
|
|
207
241
|
`;
|
|
208
242
|
}
|
|
209
243
|
_getOverallValidity() {
|
|
@@ -217,6 +251,7 @@ class PdFormContainer extends PdBaseUI {
|
|
|
217
251
|
}
|
|
218
252
|
return true;
|
|
219
253
|
}
|
|
254
|
+
/** Runs all field validators and returns overall validity. */
|
|
220
255
|
async triggerValidate() {
|
|
221
256
|
const validations = [];
|
|
222
257
|
this._fields.forEach((field) => {
|
|
@@ -228,6 +263,7 @@ class PdFormContainer extends PdBaseUI {
|
|
|
228
263
|
await Promise.all(validations);
|
|
229
264
|
return this._getOverallValidity();
|
|
230
265
|
}
|
|
266
|
+
/** Returns all field values as origin and parsed objects. */
|
|
231
267
|
getValues() {
|
|
232
268
|
const origin = {};
|
|
233
269
|
const parsed = {};
|
|
@@ -241,14 +277,29 @@ class PdFormContainer extends PdBaseUI {
|
|
|
241
277
|
});
|
|
242
278
|
return { origin, parsed };
|
|
243
279
|
}
|
|
280
|
+
/** Resets all form fields to their initial values. */
|
|
244
281
|
reset() {
|
|
245
282
|
this._fields.forEach((field) => {
|
|
246
|
-
field.element
|
|
283
|
+
const element = field.element;
|
|
284
|
+
if (typeof element?.reset === "function") {
|
|
285
|
+
element.reset();
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
/** Clear all form fields. */
|
|
290
|
+
clear() {
|
|
291
|
+
this._fields.forEach((field) => {
|
|
292
|
+
const element = field.element;
|
|
293
|
+
if (typeof element?.clear === "function") {
|
|
294
|
+
element.clear();
|
|
295
|
+
}
|
|
247
296
|
});
|
|
248
297
|
}
|
|
298
|
+
/** Returns the current status map of all registered fields. */
|
|
249
299
|
getStatus() {
|
|
250
300
|
return this._fields;
|
|
251
301
|
}
|
|
302
|
+
/** Whether all form fields are currently valid. */
|
|
252
303
|
get valid() {
|
|
253
304
|
return this._getOverallValidity();
|
|
254
305
|
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/web-components-vite';
|
|
2
|
+
interface PdFormContainerArgs {
|
|
3
|
+
requiredFieldInfo: boolean;
|
|
4
|
+
autoTrimm: boolean;
|
|
5
|
+
commonError: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* ## pd-form-container
|
|
9
|
+
*
|
|
10
|
+
* Container element for managing form fields with validation and state tracking.
|
|
11
|
+
*
|
|
12
|
+
* ### Features
|
|
13
|
+
* - Automatic field registration and tracking
|
|
14
|
+
* - Form-wide validation with triggerValidate()
|
|
15
|
+
* - Value collection with getValues()
|
|
16
|
+
* - Form reset functionality
|
|
17
|
+
* - Required field indicator
|
|
18
|
+
* - Common error message display
|
|
19
|
+
* - Auto-trim option for string values
|
|
20
|
+
*
|
|
21
|
+
* ### Methods
|
|
22
|
+
* | Method | Returns | Description |
|
|
23
|
+
* |--------|---------|-------------|
|
|
24
|
+
* | `triggerValidate()` | `Promise<boolean>` | Runs all field validators and returns overall validity |
|
|
25
|
+
* | `getValues()` | `{origin, parsed}` | Returns all field values as origin and parsed objects |
|
|
26
|
+
* | `reset()` | `void` | Resets all form fields to their initial values |
|
|
27
|
+
* | `getStatus()` | `Map<string, PdFormElementStatus>` | Returns the current status map of all registered fields |
|
|
28
|
+
* | `valid` (getter) | `boolean` | Whether all form fields are currently valid |
|
|
29
|
+
*/
|
|
30
|
+
declare const meta: Meta<PdFormContainerArgs>;
|
|
31
|
+
export default meta;
|
|
32
|
+
type Story = StoryObj<PdFormContainerArgs>;
|
|
33
|
+
/** Default form container with basic fields. Interactive via Controls panel. */
|
|
34
|
+
export declare const Default: Story;
|
|
35
|
+
/** Form container displaying a common error message. */
|
|
36
|
+
export declare const WithCommonError: Story;
|
|
37
|
+
/** Form container with auto-trim enabled — spaces are trimmed on getValues(). */
|
|
38
|
+
export declare const WithAutoTrim: Story;
|
|
39
|
+
/** Form with pre-filled initial values — reset returns to these values. */
|
|
40
|
+
export declare const WithInitialValues: Story;
|
|
41
|
+
/** Comprehensive form with all supported field types. */
|
|
42
|
+
export declare const AllFieldTypes: Story;
|
|
43
|
+
/** Form with fieldsets for grouped/nested data (e.g. billing + shipping). */
|
|
44
|
+
export declare const WithFieldsets: Story;
|
|
45
|
+
/** Real-world registration form pattern. */
|
|
46
|
+
export declare const RegistrationForm: Story;
|
|
47
|
+
/** CSS Custom Properties — Branded and Redesigned variants. */
|
|
48
|
+
export declare const CustomStyling: Story;
|
|
49
|
+
//# sourceMappingURL=pd-form-container.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pd-form-container.stories.d.ts","sourceRoot":"","sources":["../../src/pd-form-container/pd-form-container.stories.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAKhE,OAAO,wBAAwB,CAAC;AAChC,OAAO,+BAA+B,CAAC;AACvC,OAAO,yCAAyC,CAAC;AACjD,OAAO,yBAAyB,CAAC;AACjC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,yBAAyB,CAAC;AACjC,OAAO,2BAA2B,CAAC;AACnC,OAAO,qCAAqC,CAAC;AAC7C,OAAO,+BAA+B,CAAC;AACvC,OAAO,2BAA2B,CAAC;AAMnC,UAAU,mBAAmB;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAqED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAiEnC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AAM3C,gFAAgF;AAChF,eAAO,MAAM,OAAO,EAAE,KAmCrB,CAAC;AAMF,wDAAwD;AACxD,eAAO,MAAM,eAAe,EAAE,KAuB7B,CAAC;AAMF,iFAAiF;AACjF,eAAO,MAAM,YAAY,EAAE,KAwB1B,CAAC;AAMF,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,EAAE,KAoC/B,CAAC;AAMF,yDAAyD;AACzD,eAAO,MAAM,aAAa,EAAE,KAoE3B,CAAC;AAMF,6EAA6E;AAC7E,eAAO,MAAM,aAAa,EAAE,KAiF3B,CAAC;AAMF,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,EAAE,KAyD9B,CAAC;AAMF,+DAA+D;AAC/D,eAAO,MAAM,aAAa,EAAE,KA0H3B,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { CSSResultGroup, TemplateResult } from 'lit';
|
|
2
|
+
import { PdBaseUI } from '../base/pd-base-ui.js';
|
|
3
|
+
/**
|
|
4
|
+
* Wrapper for custom content within pd-form-row.
|
|
5
|
+
*
|
|
6
|
+
* Use this component to include non-pd form elements (custom components,
|
|
7
|
+
* native HTML, etc.) in a pd-form-row while maintaining proper grid layout.
|
|
8
|
+
*
|
|
9
|
+
* @tagname pd-form-field
|
|
10
|
+
* @summary Grid-aware wrapper for non-pd form elements.
|
|
11
|
+
*
|
|
12
|
+
* @slot - Custom content to display.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```html
|
|
16
|
+
* <pd-form-row>
|
|
17
|
+
* <pd-input span="half" label="Name"></pd-input>
|
|
18
|
+
* <pd-form-field span="half">
|
|
19
|
+
* <my-custom-component></my-custom-component>
|
|
20
|
+
* </pd-form-field>
|
|
21
|
+
* </pd-form-row>
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare class PdFormField extends PdBaseUI {
|
|
25
|
+
/**
|
|
26
|
+
* Grid span for width control within pd-form-row.
|
|
27
|
+
*
|
|
28
|
+
* Semantic values: quarter, third, half, two-thirds, three-quarters, full
|
|
29
|
+
* Numeric values: 1-12
|
|
30
|
+
*/
|
|
31
|
+
span: string;
|
|
32
|
+
static styles: CSSResultGroup;
|
|
33
|
+
render(): TemplateResult;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=PdFormField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PdFormField.d.ts","sourceRoot":"","sources":["../../src/pd-form-field/PdFormField.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAa,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAGhE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,WAAY,SAAQ,QAAQ;IACvC;;;;;OAKG;IAEH,IAAI,EAAE,MAAM,CAAU;IAEtB,OAAgB,MAAM,EAAE,cAAc,CAQpC;IAEO,MAAM,IAAI,cAAc;CAGlC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { css, html } from 'lit';
|
|
2
|
+
import { property } from 'lit/decorators.js';
|
|
3
|
+
import { PdBaseUI } from '../base/pd-base-ui.js';
|
|
4
|
+
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
7
|
+
var result = void 0 ;
|
|
8
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
9
|
+
if (decorator = decorators[i])
|
|
10
|
+
result = (decorator(target, key, result) ) || result;
|
|
11
|
+
if (result) __defProp(target, key, result);
|
|
12
|
+
return result;
|
|
13
|
+
};
|
|
14
|
+
class PdFormField extends PdBaseUI {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this.span = "full";
|
|
18
|
+
}
|
|
19
|
+
static {
|
|
20
|
+
this.styles = [
|
|
21
|
+
PdBaseUI.styles,
|
|
22
|
+
css`
|
|
23
|
+
:host {
|
|
24
|
+
display: block;
|
|
25
|
+
box-sizing: border-box;
|
|
26
|
+
}
|
|
27
|
+
`
|
|
28
|
+
];
|
|
29
|
+
}
|
|
30
|
+
render() {
|
|
31
|
+
return html`<slot></slot>`;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
__decorateClass([
|
|
35
|
+
property({ type: String, reflect: true })
|
|
36
|
+
], PdFormField.prototype, "span");
|
|
37
|
+
|
|
38
|
+
export { PdFormField };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pd-form-field.d.ts","sourceRoot":"","sources":["../../src/pd-form-field/pd-form-field.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAO/C,OAAO,EAAE,WAAW,EAAE,CAAC"}
|