@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.
Files changed (164) hide show
  1. package/LICENSE +21 -2
  2. package/README.md +56 -62
  3. package/dist/base/pd-base-input-element.d.ts +10 -10
  4. package/dist/base/pd-base-input-element.d.ts.map +1 -1
  5. package/dist/base/pd-base-input-element.js +8 -1
  6. package/dist/base/pd-base-ui-input.d.ts +41 -16
  7. package/dist/base/pd-base-ui-input.d.ts.map +1 -1
  8. package/dist/base/pd-base-ui-input.js +25 -6
  9. package/dist/base/pd-base-ui.js +0 -18
  10. package/dist/generated/locales/be.d.ts +3 -0
  11. package/dist/generated/locales/be.d.ts.map +1 -1
  12. package/dist/generated/locales/de.d.ts +3 -0
  13. package/dist/generated/locales/de.d.ts.map +1 -1
  14. package/dist/generated/locales/en.d.ts +3 -0
  15. package/dist/generated/locales/en.d.ts.map +1 -1
  16. package/dist/index.d.ts +4 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +6 -0
  19. package/dist/locales/be.js +4 -1
  20. package/dist/locales/de.js +4 -1
  21. package/dist/locales/en.js +4 -1
  22. package/dist/pd-button/PdButton.d.ts +172 -37
  23. package/dist/pd-button/PdButton.d.ts.map +1 -1
  24. package/dist/pd-button/PdButton.js +507 -71
  25. package/dist/pd-button/pd-button.stories.d.ts +82 -10
  26. package/dist/pd-button/pd-button.stories.d.ts.map +1 -1
  27. package/dist/pd-button-group/PdButtonGroup.d.ts +25 -0
  28. package/dist/pd-button-group/PdButtonGroup.d.ts.map +1 -1
  29. package/dist/pd-button-group/PdButtonGroup.js +52 -27
  30. package/dist/pd-button-group/pd-button-group.stories.d.ts +42 -17
  31. package/dist/pd-button-group/pd-button-group.stories.d.ts.map +1 -1
  32. package/dist/pd-button-select-group/PdButtonSelectGroup.d.ts +17 -3
  33. package/dist/pd-button-select-group/PdButtonSelectGroup.d.ts.map +1 -1
  34. package/dist/pd-button-select-group/PdButtonSelectGroup.js +23 -19
  35. package/dist/pd-button-select-group/pd-button-select-group.stories.d.ts +43 -18
  36. package/dist/pd-button-select-group/pd-button-select-group.stories.d.ts.map +1 -1
  37. package/dist/pd-checkbox/PdCheckbox.d.ts +23 -2
  38. package/dist/pd-checkbox/PdCheckbox.d.ts.map +1 -1
  39. package/dist/pd-checkbox/PdCheckbox.js +85 -21
  40. package/dist/pd-checkbox/pd-checkbox.stories.d.ts +43 -27
  41. package/dist/pd-checkbox/pd-checkbox.stories.d.ts.map +1 -1
  42. package/dist/pd-form-container/PdFormContainer.d.ts +30 -9
  43. package/dist/pd-form-container/PdFormContainer.d.ts.map +1 -1
  44. package/dist/pd-form-container/PdFormContainer.js +59 -8
  45. package/dist/pd-form-container/pd-form-container.stories.d.ts +49 -0
  46. package/dist/pd-form-container/pd-form-container.stories.d.ts.map +1 -0
  47. package/dist/pd-form-field/PdFormField.d.ts +35 -0
  48. package/dist/pd-form-field/PdFormField.d.ts.map +1 -0
  49. package/dist/pd-form-field/PdFormField.js +38 -0
  50. package/dist/pd-form-field/pd-form-field.d.ts +3 -0
  51. package/dist/pd-form-field/pd-form-field.d.ts.map +1 -0
  52. package/dist/pd-form-field/pd-form-field.stories.d.ts +40 -0
  53. package/dist/pd-form-field/pd-form-field.stories.d.ts.map +1 -0
  54. package/dist/pd-form-field.d.ts +2 -0
  55. package/dist/pd-form-field.js +8 -0
  56. package/dist/pd-form-fieldset/PdFormFieldset.d.ts +144 -0
  57. package/dist/pd-form-fieldset/PdFormFieldset.d.ts.map +1 -0
  58. package/dist/pd-form-fieldset/PdFormFieldset.js +364 -0
  59. package/dist/pd-form-fieldset/index.d.ts +2 -0
  60. package/dist/pd-form-fieldset/index.d.ts.map +1 -0
  61. package/dist/pd-form-fieldset/pd-form-fieldset.d.ts +3 -0
  62. package/dist/pd-form-fieldset/pd-form-fieldset.d.ts.map +1 -0
  63. package/dist/pd-form-fieldset/pd-form-fieldset.js +8 -0
  64. package/dist/pd-form-fieldset/pd-form-fieldset.stories.d.ts +38 -0
  65. package/dist/pd-form-fieldset/pd-form-fieldset.stories.d.ts.map +1 -0
  66. package/dist/pd-form-row/PdFormRow.d.ts +35 -5
  67. package/dist/pd-form-row/PdFormRow.d.ts.map +1 -1
  68. package/dist/pd-form-row/PdFormRow.js +135 -69
  69. package/dist/pd-form-row/pd-form-row.stories.d.ts +41 -25
  70. package/dist/pd-form-row/pd-form-row.stories.d.ts.map +1 -1
  71. package/dist/pd-generic-form/PdGenericForm.d.ts +50 -0
  72. package/dist/pd-generic-form/PdGenericForm.d.ts.map +1 -0
  73. package/dist/pd-generic-form/PdGenericForm.js +334 -0
  74. package/dist/pd-generic-form/pd-generic-form.d.ts +3 -0
  75. package/dist/pd-generic-form/pd-generic-form.d.ts.map +1 -0
  76. package/dist/pd-generic-form/pd-generic-form.stories.d.ts +35 -0
  77. package/dist/pd-generic-form/pd-generic-form.stories.d.ts.map +1 -0
  78. package/dist/pd-generic-form/pd-generic-form.styles.d.ts +2 -0
  79. package/dist/pd-generic-form/pd-generic-form.styles.d.ts.map +1 -0
  80. package/dist/pd-generic-form/pd-generic-form.styles.js +110 -0
  81. package/dist/pd-generic-form/pd-generic-form.test.d.ts +1 -0
  82. package/dist/pd-generic-form/pd-generic-form.test.d.ts.map +1 -0
  83. package/dist/pd-generic-form.d.ts +2 -0
  84. package/dist/pd-generic-form.js +8 -0
  85. package/dist/pd-hover-box/PdHoverBox.d.ts +61 -11
  86. package/dist/pd-hover-box/PdHoverBox.d.ts.map +1 -1
  87. package/dist/pd-hover-box/PdHoverBox.js +130 -28
  88. package/dist/pd-hover-box/pd-hover-box.stories.d.ts +28 -5
  89. package/dist/pd-hover-box/pd-hover-box.stories.d.ts.map +1 -1
  90. package/dist/pd-input/PdComboboxInput.d.ts +20 -0
  91. package/dist/pd-input/PdComboboxInput.d.ts.map +1 -0
  92. package/dist/pd-input/PdComboboxInput.js +67 -0
  93. package/dist/pd-input/PdInput.d.ts +33 -15
  94. package/dist/pd-input/PdInput.d.ts.map +1 -1
  95. package/dist/pd-input/PdInput.js +49 -21
  96. package/dist/pd-input/pd-input.stories.d.ts +71 -35
  97. package/dist/pd-input/pd-input.stories.d.ts.map +1 -1
  98. package/dist/pd-input-area/PdInputArea.d.ts +19 -6
  99. package/dist/pd-input-area/PdInputArea.d.ts.map +1 -1
  100. package/dist/pd-input-area/PdInputArea.js +17 -15
  101. package/dist/pd-input-area/pd-input-area.stories.d.ts +65 -52
  102. package/dist/pd-input-area/pd-input-area.stories.d.ts.map +1 -1
  103. package/dist/pd-input-file/PdInputFile.d.ts +24 -0
  104. package/dist/pd-input-file/PdInputFile.d.ts.map +1 -1
  105. package/dist/pd-input-file/PdInputFile.js +53 -22
  106. package/dist/pd-input-file/pd-input-file.stories.d.ts +51 -47
  107. package/dist/pd-input-file/pd-input-file.stories.d.ts.map +1 -1
  108. package/dist/pd-input-time/PdInputTime.d.ts +21 -0
  109. package/dist/pd-input-time/PdInputTime.d.ts.map +1 -1
  110. package/dist/pd-input-time/PdInputTime.js +48 -22
  111. package/dist/pd-input-time/pd-input-time.stories.d.ts +94 -0
  112. package/dist/pd-input-time/pd-input-time.stories.d.ts.map +1 -0
  113. package/dist/pd-panel-button/PdPanelButton.d.ts +50 -34
  114. package/dist/pd-panel-button/PdPanelButton.d.ts.map +1 -1
  115. package/dist/pd-panel-button/PdPanelButton.js +149 -262
  116. package/dist/pd-panel-button/pd-panel-button.stories.d.ts +55 -25
  117. package/dist/pd-panel-button/pd-panel-button.stories.d.ts.map +1 -1
  118. package/dist/pd-radio-group/PdRadioGroup.d.ts +14 -0
  119. package/dist/pd-radio-group/PdRadioGroup.d.ts.map +1 -1
  120. package/dist/pd-radio-group/PdRadioGroup.js +48 -11
  121. package/dist/pd-radio-group/pd-radio-group.stories.d.ts +37 -7
  122. package/dist/pd-radio-group/pd-radio-group.stories.d.ts.map +1 -1
  123. package/dist/pd-range/PdRange.d.ts +22 -2
  124. package/dist/pd-range/PdRange.d.ts.map +1 -1
  125. package/dist/pd-range/PdRange.js +54 -43
  126. package/dist/pd-range/pd-range.stories.d.ts +49 -7
  127. package/dist/pd-range/pd-range.stories.d.ts.map +1 -1
  128. package/dist/pd-select/PdSelect.d.ts +16 -4
  129. package/dist/pd-select/PdSelect.d.ts.map +1 -1
  130. package/dist/pd-select/PdSelect.js +23 -21
  131. package/dist/pd-select/pd-select.stories.d.ts +56 -35
  132. package/dist/pd-select/pd-select.stories.d.ts.map +1 -1
  133. package/dist/pd-suggestion-box/PdSuggestionBox.d.ts +74 -0
  134. package/dist/pd-suggestion-box/PdSuggestionBox.d.ts.map +1 -0
  135. package/dist/pd-suggestion-box/PdSuggestionBox.js +277 -0
  136. package/dist/pd-suggestion-box/PdSuggestionPanel.d.ts +42 -0
  137. package/dist/pd-suggestion-box/PdSuggestionPanel.d.ts.map +1 -0
  138. package/dist/pd-suggestion-box/PdSuggestionPanel.js +227 -0
  139. package/dist/pd-suggestion-box/pd-suggestion-box.d.ts +3 -0
  140. package/dist/pd-suggestion-box/pd-suggestion-box.d.ts.map +1 -0
  141. package/dist/pd-suggestion-box/pd-suggestion-box.stories.d.ts +79 -0
  142. package/dist/pd-suggestion-box/pd-suggestion-box.stories.d.ts.map +1 -0
  143. package/dist/pd-suggestion-box.d.ts +2 -0
  144. package/dist/pd-suggestion-box.js +8 -0
  145. package/dist/pd-utils/dist/position-helper.js +35 -0
  146. package/dist/stories/pd-forms-overview.stories.d.ts +48 -0
  147. package/dist/stories/pd-forms-overview.stories.d.ts.map +1 -0
  148. package/dist/stories/story-helpers.d.ts +10 -0
  149. package/dist/stories/story-helpers.d.ts.map +1 -0
  150. package/dist/styles/shared-input-field-styles.d.ts.map +1 -1
  151. package/dist/styles/shared-input-field-styles.js +13 -19
  152. package/dist/styles/shared-input-styles.d.ts.map +1 -1
  153. package/dist/styles/shared-input-styles.js +18 -14
  154. package/dist/types.d.ts +11 -0
  155. package/dist/types.d.ts.map +1 -1
  156. package/package.json +11 -4
  157. package/dist/pd-form-container/form-container.stories.d.ts +0 -28
  158. package/dist/pd-form-container/form-container.stories.d.ts.map +0 -1
  159. package/dist/pd-form-container/form-container2.stories.d.ts +0 -8
  160. package/dist/pd-form-container/form-container2.stories.d.ts.map +0 -1
  161. package/dist/pd-form-container/form-container3.stories.d.ts +0 -11
  162. package/dist/pd-form-container/form-container3.stories.d.ts.map +0 -1
  163. package/dist/stories/01_index.stories.d.ts +0 -58
  164. package/dist/stories/01_index.stories.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PdFormRow.d.ts","sourceRoot":"","sources":["../../src/pd-form-row/PdFormRow.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,EAAa,cAAc,EAAE,MAAM,KAAK,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD;;;;;;;GAOG;AACH,qBAAa,SAAU,SAAQ,QAAQ;IACrC,OAAgB,MAAM,EAAE,cAAc,CA6FpC;IAEF,MAAM;CAGP"}
1
+ {"version":3,"file":"PdFormRow.d.ts","sourceRoot":"","sources":["../../src/pd-form-row/PdFormRow.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAsB,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAIzE,OAAO,0CAA0C,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,iCAAiC,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,SAAU,SAAQ,QAAQ;IACrC;;;OAGG;IAEH,UAAU,EAAE,MAAM,CAAM;IAExB,OAAgB,MAAM,EAAE,cAAc,CA8HpC;IAEO,MAAM,IAAI,cAAc;CAsBlC"}
@@ -1,110 +1,176 @@
1
- import { css, html } from 'lit';
1
+ import { css, nothing, html } from 'lit';
2
+ import { property } from 'lit/decorators.js';
3
+ import { pdIcons } from '@progressive-development/pd-icon';
4
+ import '@progressive-development/pd-icon/pd-icon';
2
5
  import { PdBaseUI } from '../base/pd-base-ui.js';
6
+ import '../pd-hover-box.js';
3
7
 
4
- /**
5
- * @license
6
- * Copyright (c) 2021 PD Progressive Development UG. All rights reserved.
7
- */
8
+ var __defProp = Object.defineProperty;
9
+ var __decorateClass = (decorators, target, key, kind) => {
10
+ var result = void 0 ;
11
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
12
+ if (decorator = decorators[i])
13
+ result = (decorator(target, key, result) ) || result;
14
+ if (result) __defProp(target, key, result);
15
+ return result;
16
+ };
8
17
  class PdFormRow extends PdBaseUI {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.helperText = "";
21
+ }
9
22
  static {
10
23
  this.styles = [
11
24
  PdBaseUI.styles,
12
25
  css`
13
26
  :host {
14
- /* Define size for row, depends on media queries */
15
- --my-row-width: var(--pd-form-row-base-width, 800px);
16
- --my-gap: var(--pd-form-row-gap, 20px);
17
- display: flex;
18
- flex: 1 1 100%;
19
- /*margin: 0 0 .5rem 0;*/
20
- box-sizing: border-box;
27
+ --_gap: var(--pd-form-row-gap, 20px);
28
+ --_align: var(--pd-form-row-align-items, flex-start);
29
+ --_helper-width: var(--pd-form-row-helper-width, 0);
30
+
31
+ display: grid;
32
+ grid-template-columns: repeat(12, 1fr) var(--_helper-width);
33
+ column-gap: var(--_gap);
34
+ row-gap: 0;
35
+ align-items: var(--_align);
21
36
  width: 100%;
22
- gap: var(--my-gap);
23
- align-items: var(--pd-form-row-align-item, flex-start);
24
- justify-content: var(--pd-form-row-justify-content, flex-start);
25
- padding-top: var(--pd-form-row-padding-top, 0.8rem);
37
+ box-sizing: border-box;
38
+ container-type: inline-size;
39
+ container-name: form-row;
26
40
  }
27
41
 
28
- ::slotted(.full-size) {
29
- --pd-input-field-width: 100%;
42
+ /* Reserve space for helper icon column (for consistent alignment across rows) */
43
+ :host([with-helper-space]) {
44
+ --_helper-width: var(--pd-form-row-helper-width, 32px);
30
45
  }
31
46
 
32
- ::slotted(.quarter1) {
33
- --pd-input-field-width: calc(
34
- var(--my-row-width) * 0.25 - (var(--my-gap) * 0.75)
35
- );
47
+ /* Extra top margin for visually separating sections (e.g. button rows) */
48
+ :host([gap-top]) {
49
+ margin-top: var(--pd-form-row-gap-top, 1.2rem);
36
50
  }
37
51
 
38
- ::slotted(.quarter1-area) {
39
- --pd-input-field-width: calc(
40
- (var(--my-row-width) - 5px) * 0.25 - (var(--my-gap) * 0.75)
41
- );
52
+ /* Default: full width (12 columns) */
53
+ ::slotted(*) {
54
+ grid-column: span 12;
55
+ /* Override fixed width from pd-input etc. to fill grid cell */
56
+ --pd-input-field-width: 100%;
42
57
  }
43
58
 
44
- ::slotted(.quarter2) {
45
- --pd-input-field-width: calc(
46
- (var(--my-row-width) * 0.5) - (var(--my-gap) / 2)
47
- );
59
+ /* Semantic span values */
60
+ ::slotted([span="quarter"]) {
61
+ grid-column: span 3;
48
62
  }
49
-
50
- ::slotted(.quarter2-area) {
51
- --pd-input-field-width: calc(
52
- ((var(--my-row-width) - 8px) * 0.5) - (var(--my-gap) / 2)
53
- );
63
+ ::slotted([span="third"]) {
64
+ grid-column: span 4;
54
65
  }
55
-
56
- ::slotted(.quarter3) {
57
- --pd-input-field-width: calc(
58
- var(--my-row-width) * 0.75 - (var(--my-gap) * 0.25)
59
- );
66
+ ::slotted([span="half"]) {
67
+ grid-column: span 6;
60
68
  }
61
-
62
- ::slotted(.quarter3-area) {
63
- --pd-input-field-width: calc(
64
- (var(--my-row-width) - 10px) * 0.75 - (var(--my-gap) * 0.25)
65
- );
69
+ ::slotted([span="two-thirds"]) {
70
+ grid-column: span 8;
66
71
  }
67
-
68
- ::slotted(.quarter4) {
69
- --pd-input-field-width: var(--my-row-width);
72
+ ::slotted([span="three-quarters"]) {
73
+ grid-column: span 9;
74
+ }
75
+ ::slotted([span="full"]) {
76
+ grid-column: span 12;
70
77
  }
71
78
 
72
- ::slotted(.quarter4-area) {
73
- --pd-input-field-width: calc(var(--my-row-width) - 15px);
79
+ /* Numeric span values */
80
+ ::slotted([span="1"]) {
81
+ grid-column: span 1;
82
+ }
83
+ ::slotted([span="2"]) {
84
+ grid-column: span 2;
85
+ }
86
+ ::slotted([span="3"]) {
87
+ grid-column: span 3;
88
+ }
89
+ ::slotted([span="4"]) {
90
+ grid-column: span 4;
91
+ }
92
+ ::slotted([span="5"]) {
93
+ grid-column: span 5;
94
+ }
95
+ ::slotted([span="6"]) {
96
+ grid-column: span 6;
97
+ }
98
+ ::slotted([span="7"]) {
99
+ grid-column: span 7;
100
+ }
101
+ ::slotted([span="8"]) {
102
+ grid-column: span 8;
103
+ }
104
+ ::slotted([span="9"]) {
105
+ grid-column: span 9;
106
+ }
107
+ ::slotted([span="10"]) {
108
+ grid-column: span 10;
109
+ }
110
+ ::slotted([span="11"]) {
111
+ grid-column: span 11;
112
+ }
113
+ ::slotted([span="12"]) {
114
+ grid-column: span 12;
74
115
  }
75
116
 
76
- @media (max-width: 930px) {
77
- :host {
78
- --my-row-width: 600px;
79
- }
117
+ /* Helper column - always present for consistent alignment */
118
+ .helper-column {
119
+ display: flex;
120
+ align-items: center;
121
+ justify-content: center;
122
+ align-self: stretch;
123
+ min-height: 1px;
124
+ /* Offset to align with input field (below label) */
125
+ padding-top: 1.2em;
80
126
  }
81
127
 
82
- @media (max-width: 665px) {
83
- :host {
84
- --my-row-width: 400px;
85
- --my-gap: 10px;
86
- }
128
+ .help-icon {
129
+ --pd-icon-size: 20px;
130
+ cursor: help;
87
131
  }
88
132
 
89
- @media (max-width: 465px) {
90
- :host {
91
- --my-row-width: 320px;
92
- --my-gap: 8px;
133
+ /* Responsive stacking: when row width < 400px, stack all elements vertically */
134
+ @container form-row (max-width: 400px) {
135
+ ::slotted(*) {
136
+ grid-column: 1 / -2 !important;
137
+ margin-top: 0.3em;
138
+ }
139
+ ::slotted(*:first-child) {
140
+ margin-top: 0;
93
141
  }
94
142
  }
95
143
 
96
- @media (max-width: 390px) {
97
- :host {
98
- --my-row-width: 260px;
99
- --my-gap: 8px;
100
- }
144
+ /* Disable stacking behavior - elements keep their span values regardless of container width */
145
+ :host([no-stack]) {
146
+ container-type: normal;
101
147
  }
102
148
  `
103
149
  ];
104
150
  }
105
151
  render() {
106
- return html`<slot></slot>`;
152
+ return html`
153
+ <slot></slot>
154
+ <div class="helper-column">
155
+ ${this.helperText ? html`
156
+ <pd-hover-box>
157
+ <pd-icon
158
+ slot="normal-view"
159
+ icon="${pdIcons.ICON_HELP}"
160
+ ?activeIcon="${true}"
161
+ class="help-icon"
162
+ aria-label="Help"
163
+ role="img"
164
+ ></pd-icon>
165
+ <p slot="info-view">${this.helperText}</p>
166
+ </pd-hover-box>
167
+ ` : nothing}
168
+ </div>
169
+ `;
107
170
  }
108
171
  }
172
+ __decorateClass([
173
+ property({ type: String, attribute: "helper-text" })
174
+ ], PdFormRow.prototype, "helperText");
109
175
 
110
176
  export { PdFormRow };
@@ -1,27 +1,43 @@
1
- import { StoryObj } from '@storybook/web-components';
2
- declare const meta: {
3
- title: string;
4
- argTypes: {
5
- backgroundColor: {
6
- control: "color";
7
- };
8
- onClick: {
9
- action: string;
10
- };
11
- size: {
12
- control: {
13
- type: "select";
14
- };
15
- options: string[];
16
- };
17
- parameters: {
18
- actions: {
19
- handles: string[];
20
- };
21
- };
22
- };
23
- };
1
+ import { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ interface PdFormRowArgs {
3
+ "helper-text": string;
4
+ "no-stack": boolean;
5
+ }
6
+ /**
7
+ * ## pd-form-row
8
+ *
9
+ * Responsive 12-column grid container for form elements.
10
+ *
11
+ * ### Features
12
+ * - CSS Grid with 12 columns for precise layout control
13
+ * - Container Query based responsive behavior (stacks below 400px)
14
+ * - `no-stack` attribute to disable stacking
15
+ * - Optional helper text with hover icon
16
+ * - Configurable gap and alignment
17
+ *
18
+ * ### Span Values
19
+ * Semantic: `quarter` (25%), `third` (33%), `half` (50%), `two-thirds` (66%), `three-quarters` (75%), `full` (100%)
20
+ * Numeric: `1` through `12` for fine-grained control
21
+ */
22
+ declare const meta: Meta<PdFormRowArgs>;
24
23
  export default meta;
25
- type Story = StoryObj;
26
- export declare const FormRow: Story;
24
+ type Story = StoryObj<PdFormRowArgs>;
25
+ /** Default form row with a single full-width input. */
26
+ export declare const Default: Story;
27
+ /** Overview of all semantic span values. */
28
+ export declare const AllSpanValues: Story;
29
+ /** Common layout patterns with mixed span values. */
30
+ export declare const CommonPatterns: Story;
31
+ /** Rows with helper text hover icons. */
32
+ export declare const WithHelperText: Story;
33
+ /** Disable responsive stacking with no-stack attribute. */
34
+ export declare const NoStack: Story;
35
+ /** Buttons alongside inputs in the same row. */
36
+ export declare const ButtonWithInput: Story;
37
+ /** Using pd-form-field wrapper for custom content in the grid. */
38
+ export declare const WithFormFieldWrapper: Story;
39
+ /** Complete address form as a real-world pattern. */
40
+ export declare const AddressFormExample: Story;
41
+ /** CSS Custom Properties -- Branded and Redesigned variants. */
42
+ export declare const CustomStyling: Story;
27
43
  //# sourceMappingURL=pd-form-row.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pd-form-row.stories.d.ts","sourceRoot":"","sources":["../../src/pd-form-row/pd-form-row.stories.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,kBAAkB,CAAC;AAG1B,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;CAeM,CAAC;AAEjB,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,OAAO,EAAE,KAUrB,CAAC"}
1
+ {"version":3,"file":"pd-form-row.stories.d.ts","sourceRoot":"","sources":["../../src/pd-form-row/pd-form-row.stories.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAGrE,OAAO,kBAAkB,CAAC;AAC1B,OAAO,yBAAyB,CAAC;AACjC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,2BAA2B,CAAC;AACnC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,yCAAyC,CAAC;AACjD,OAAO,2BAA2B,CAAC;AAMnC,UAAU,aAAa;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;CACrB;AAgBD;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,aAAa,CA2E7B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;AAMrC,uDAAuD;AACvD,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAMF,4CAA4C;AAC5C,eAAO,MAAM,aAAa,EAAE,KAgD3B,CAAC;AAMF,qDAAqD;AACrD,eAAO,MAAM,cAAc,EAAE,KAyD5B,CAAC;AAMF,yCAAyC;AACzC,eAAO,MAAM,cAAc,EAAE,KAwB5B,CAAC;AAMF,2DAA2D;AAC3D,eAAO,MAAM,OAAO,EAAE,KAwCrB,CAAC;AAMF,gDAAgD;AAChD,eAAO,MAAM,eAAe,EAAE,KAgD7B,CAAC;AAMF,kEAAkE;AAClE,eAAO,MAAM,oBAAoB,EAAE,KAwBlC,CAAC;AAMF,qDAAqD;AACrD,eAAO,MAAM,kBAAkB,EAAE,KA8BhC,CAAC;AAMF,gEAAgE;AAChE,eAAO,MAAM,aAAa,EAAE,KAuD3B,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { LitElement, CSSResultGroup, TemplateResult } from 'lit';
2
+ import { pdSchema } from '@progressive-development/pd-model';
3
+ type SchemaEntry = pdSchema.SchemaEntry;
4
+ type SchemaFieldData = pdSchema.SchemaFieldData;
5
+ export declare class PdGenericForm extends LitElement {
6
+ /** Schema definition of the form fields. */
7
+ schema: SchemaEntry[];
8
+ /** Current data (Key = fieldId). */
9
+ data: SchemaFieldData;
10
+ /** Display mode: 'view' = data display, 'edit' = form. */
11
+ mode: "view" | "edit";
12
+ /** Disables all fields in edit mode. */
13
+ disabled: boolean;
14
+ /** Tracked form values for conditional visibility (showWhen). */
15
+ private _formValues;
16
+ static styles: CSSResultGroup;
17
+ connectedCallback(): void;
18
+ disconnectedCallback(): void;
19
+ private _onFieldChange;
20
+ private _isVisible;
21
+ /**
22
+ * Extracts schema fields from raw form values
23
+ * and converts them into typed SchemaFieldData.
24
+ *
25
+ * @param formValues - Raw values from pd-form-container.getValues().origin
26
+ */
27
+ extractFormData(formValues: Record<string, unknown>): SchemaFieldData;
28
+ private _extractField;
29
+ protected render(): TemplateResult;
30
+ private _renderView;
31
+ private _renderViewField;
32
+ private _formatForView;
33
+ private _renderEdit;
34
+ /** InputType → pd-input fieldType mapping */
35
+ private static _fieldTypeMap;
36
+ /** Single field wrapped in its own pd-form-row. */
37
+ private _renderFieldInRow;
38
+ /** Multiple fields in a single pd-form-row. */
39
+ private _renderRow;
40
+ /** Fieldset with nested pd-form-rows per row entry. */
41
+ private _renderFieldset;
42
+ /** Renders a field control (without pd-form-row wrapper), respecting field.span. */
43
+ private _renderFieldControl;
44
+ private _renderBooleanControl;
45
+ private _renderTextareaControl;
46
+ private _renderSelectControl;
47
+ private _renderInputControl;
48
+ }
49
+ export {};
50
+ //# sourceMappingURL=PdGenericForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PdGenericForm.d.ts","sourceRoot":"","sources":["../../src/pd-generic-form/PdGenericForm.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAKb,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAM7D,KAAK,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;AACxC,KAAK,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;AAIhD,OAAO,+BAA+B,CAAC;AACvC,OAAO,yCAAyC,CAAC;AACjD,OAAO,yBAAyB,CAAC;AACjC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,qCAAqC,CAAC;AAC7C,OAAO,+BAA+B,CAAC;AACvC,OAAO,2BAA2B,CAAC;AAInC,qBAAa,aAAc,SAAQ,UAAU;IAC3C,4CAA4C;IAE5C,MAAM,EAAE,WAAW,EAAE,CAAM;IAE3B,oCAAoC;IAEpC,IAAI,EAAE,eAAe,CAAM;IAE3B,0DAA0D;IAE1D,IAAI,EAAE,MAAM,GAAG,MAAM,CAAU;IAE/B,wCAAwC;IAExC,QAAQ,EAAE,OAAO,CAAS;IAE1B,iEAAiE;IAEjE,OAAO,CAAC,WAAW,CAA+B;IAElD,OAAgB,MAAM,EAAE,cAAc,CAAyB;IAEtD,iBAAiB,IAAI,IAAI;IAQzB,oBAAoB,IAAI,IAAI;IAQrC,OAAO,CAAC,cAAc,CAKpB;IAEF,OAAO,CAAC,UAAU;IAclB;;;;;OAKG;IACI,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe;IAyB5E,OAAO,CAAC,aAAa;cAqBF,MAAM,IAAI,cAAc;IAM3C,OAAO,CAAC,WAAW;IA8BnB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,cAAc;IAgCtB,OAAO,CAAC,WAAW;IAYnB,6CAA6C;IAC7C,OAAO,CAAC,MAAM,CAAC,aAAa,CAM1B;IAEF,mDAAmD;IACnD,OAAO,CAAC,iBAAiB;IAMzB,+CAA+C;IAC/C,OAAO,CAAC,UAAU;IAQlB,uDAAuD;IACvD,OAAO,CAAC,eAAe;IAoBvB,oFAAoF;IACpF,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,qBAAqB;IAwB7B,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,mBAAmB;CAsB5B"}