@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,4 +1,4 @@
1
- import { css, html } from 'lit';
1
+ import { css, nothing, html } from 'lit';
2
2
  import { property } from 'lit/decorators.js';
3
3
  import { classMap } from 'lit/directives/class-map.js';
4
4
  import '@progressive-development/pd-icon/pd-icon';
@@ -15,6 +15,12 @@ var __decorateClass = (decorators, target, key, kind) => {
15
15
  return result;
16
16
  };
17
17
  class PdInputTime extends PdBaseInputElement {
18
+ constructor() {
19
+ super();
20
+ this.clickableIcon = false;
21
+ this.iconLabel = "";
22
+ this._inputType = INPUT_TYPE_TIME;
23
+ }
18
24
  static get styles() {
19
25
  return [
20
26
  PdBaseInputElement.styles,
@@ -25,12 +31,9 @@ class PdInputTime extends PdBaseInputElement {
25
31
  `
26
32
  ];
27
33
  }
28
- constructor() {
29
- super();
30
- this._inputType = INPUT_TYPE_TIME;
31
- }
32
34
  render() {
33
35
  const inputId = `${this.id}Input`;
36
+ const errorId = `${this.id}Error`;
34
37
  return html`
35
38
  ${this._renderLabel(inputId)}
36
39
  <div
@@ -40,38 +43,61 @@ class PdInputTime extends PdBaseInputElement {
40
43
  })
41
44
  )}"
42
45
  >
43
- ${this.icon ? html`<pd-icon
44
- icon=${this.icon}
45
- activeIcon
46
- @click=${this._iconClicked}
47
- class="infield-icon"
48
- ></pd-icon>` : ""}
46
+ ${this.icon ? html`
47
+ <pd-icon
48
+ icon="${this.icon}"
49
+ ?activeIcon="${this.clickableIcon}"
50
+ class="infield-icon"
51
+ tabindex="${this.clickableIcon ? 0 : -1}"
52
+ role="${this.clickableIcon ? "button" : "img"}"
53
+ aria-label="${this.clickableIcon ? this.iconLabel : ""}"
54
+ aria-hidden="${!this.clickableIcon}"
55
+ @click="${this.clickableIcon ? this._iconClicked : null}"
56
+ @keydown="${this.clickableIcon ? this._onIconKeyDown : null}"
57
+ ></pd-icon>
58
+ ` : nothing}
49
59
  <input
50
- id=${inputId}
51
- name=${this.name || this.valueName || this.autoCompleteName}
60
+ id="${inputId}"
61
+ name="${this.name || this.valueName || this.autoCompleteName}"
52
62
  class="input-style ${this.gradient ? "gradient" : ""}"
53
63
  type="time"
54
- .value=${this._value}
55
- ?readonly=${this.readonly}
56
- ?disabled=${this.disabled}
57
- @keyup=${this._onKeyUp}
58
- @change=${this._onChange}
59
- @blur=${this._onBlur}
60
- @focus=${this._onFocus}
64
+ .value="${this._value}"
65
+ ?readonly="${this.readonly}"
66
+ ?disabled="${this.disabled}"
67
+ aria-invalid="${this._invalid}"
68
+ aria-describedby="${this._errorMsg ? errorId : ""}"
69
+ @keyup="${this._onKeyUp}"
70
+ @change="${this._onChange}"
71
+ @blur="${this._onBlur}"
72
+ @focus="${this._onFocus}"
61
73
  />
62
74
  </div>
63
- ${this._renderErrorMsg()}
75
+ ${this._renderErrorMsg(errorId)}
64
76
  `;
65
77
  }
66
78
  _onChange(e) {
67
79
  this._handleChangedValue(this._input.value, e, true);
68
80
  }
69
81
  _iconClicked() {
70
- this.dispatchEvent(new CustomEvent("input-icon-click"));
82
+ this.dispatchEvent(
83
+ new CustomEvent("input-icon-click", { bubbles: true, composed: true })
84
+ );
85
+ }
86
+ _onIconKeyDown(event) {
87
+ if (event.key === " " || event.key === "Enter") {
88
+ event.preventDefault();
89
+ this._iconClicked();
90
+ }
71
91
  }
72
92
  }
73
93
  __decorateClass([
74
94
  property({ type: String })
75
95
  ], PdInputTime.prototype, "icon");
96
+ __decorateClass([
97
+ property({ type: Boolean })
98
+ ], PdInputTime.prototype, "clickableIcon");
99
+ __decorateClass([
100
+ property({ type: String })
101
+ ], PdInputTime.prototype, "iconLabel");
76
102
 
77
103
  export { PdInputTime };
@@ -0,0 +1,94 @@
1
+ import { StoryObj } from '@storybook/web-components-vite';
2
+ /**
3
+ * Args interface for pd-input-time stories.
4
+ */
5
+ interface PdInputTimeArgs {
6
+ /** Label text displayed above the input */
7
+ label: string;
8
+ /** Initial value in HH:MM format */
9
+ initValue: string;
10
+ /** Helper text displayed on hover */
11
+ helperTxt: string;
12
+ /** Whether the field is required */
13
+ required: boolean;
14
+ /** Custom required field error message */
15
+ requiredMsg: string;
16
+ /** Whether the field is disabled */
17
+ disabled: boolean;
18
+ /** Whether the field is readonly */
19
+ readonly: boolean;
20
+ /** Icon name to display */
21
+ icon: string;
22
+ /** Whether to show gradient styling */
23
+ gradient: boolean;
24
+ /** Value name for form registration */
25
+ valueName: string;
26
+ /** Placeholder text */
27
+ placeHolder: string;
28
+ }
29
+ /**
30
+ * pd-input-time is a web component for time input with native browser support.
31
+ *
32
+ * ## Features
33
+ * - Native HTML5 time input with browser picker
34
+ * - Optional icon display
35
+ * - Form integration with validation
36
+ * - Required field validation
37
+ * - Disabled and readonly states
38
+ * - Helper text support via hover
39
+ */
40
+ declare const meta: {
41
+ title: string;
42
+ component: string;
43
+ tags: string[];
44
+ render: (args: PdInputTimeArgs) => import('lit').TemplateResult<1>;
45
+ args: {
46
+ label: string;
47
+ initValue: string;
48
+ helperTxt: string;
49
+ required: false;
50
+ requiredMsg: string;
51
+ disabled: false;
52
+ readonly: false;
53
+ icon: string;
54
+ gradient: false;
55
+ valueName: string;
56
+ placeHolder: string;
57
+ };
58
+ parameters: {
59
+ actions: {
60
+ handles: string[];
61
+ };
62
+ pdDocs: {
63
+ accessibility: {
64
+ keyboard: {
65
+ key: string;
66
+ description: string;
67
+ }[];
68
+ aria: string[];
69
+ };
70
+ usage: {
71
+ title: string;
72
+ code: string;
73
+ }[];
74
+ relatedComponents: {
75
+ tag: string;
76
+ package: string;
77
+ reason: string;
78
+ }[];
79
+ };
80
+ };
81
+ };
82
+ export default meta;
83
+ type Story = StoryObj<PdInputTimeArgs>;
84
+ /** Default time input with label. Interactive via Controls panel. */
85
+ export declare const Default: Story;
86
+ /** All visual states of the time input at a glance. */
87
+ export declare const AllStates: Story;
88
+ /** Time range selection with start and end times in a form row. */
89
+ export declare const TimeRange: Story;
90
+ /** Time input in form container with validation, reset, and value retrieval. */
91
+ export declare const InFormContainer: Story;
92
+ /** CSS Custom Properties -- Branded and Redesigned variants. */
93
+ export declare const CustomStyling: Story;
94
+ //# sourceMappingURL=pd-input-time.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pd-input-time.stories.d.ts","sourceRoot":"","sources":["../../src/pd-input-time/pd-input-time.stories.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAGrE,OAAO,oBAAoB,CAAC;AAC5B,OAAO,+BAA+B,CAAC;AACvC,OAAO,2CAA2C,CAAC;AACnD,OAAO,2BAA2B,CAAC;AAMnC;;GAEG;AACH,UAAU,eAAe;IACvB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,oCAAoC;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAyCD;;;;;;;;;;GAUG;AACH,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4FuB,CAAC;AAElC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;AAMvC,qEAAqE;AACrE,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAMF,uDAAuD;AACvD,eAAO,MAAM,SAAS,EAAE,KAkFvB,CAAC;AAMF,mEAAmE;AACnE,eAAO,MAAM,SAAS,EAAE,KA2BvB,CAAC;AAMF,gFAAgF;AAChF,eAAO,MAAM,eAAe,EAAE,KAqE7B,CAAC;AAMF,gEAAgE;AAChE,eAAO,MAAM,aAAa,EAAE,KAuG3B,CAAC"}
@@ -1,49 +1,65 @@
1
- import { CSSResultGroup } from 'lit';
2
- import { PdBaseUI } from '../base/pd-base-ui';
1
+ import { CSSResultGroup, nothing, TemplateResult } from 'lit';
2
+ import { PdButton } from '../pd-button/PdButton.js';
3
3
  /**
4
- * Ein kombinierter Icon-Button mit optionalem Panel (Dropdown-artig).
4
+ * Button with dropdown panel functionality. Extends PdButton with panel support.
5
5
  *
6
- * @tag pd-panel-button
6
+ * @tagname pd-panel-button
7
+ * @summary Button with dropdown panel that opens on click.
7
8
  *
8
- * @slot default - Inhalt des Panels, das unter dem Button angezeigt wird.
9
+ * @slot - Content displayed inside the dropdown panel.
9
10
  *
10
- * @event button-clicked - Wird ausgelöst, wenn auf den Button geklickt wird (nur bei `panelButton = false`).
11
- * @event panel-button-toggled - Wird ausgelöst, wenn das Panel geöffnet oder geschlossen wird.
11
+ * @event panel-button-toggled - Fired when panel opens or closes. Emits `{open: boolean}`.
12
12
  *
13
- * @cssprop --pd-icon-button-size - Größe des Icons im Button.
14
- * @cssprop --pd-icon-button-bgcol - Hintergrundfarbe des Buttons.
15
- * @cssprop --pd-icon-button-bordercol - Randfarbe des Buttons.
16
- * @cssprop --pd-icon-button-padding - Innenabstand des Buttons.
17
- * @cssprop --pd-icon-button-gap - Abstand zwischen Icon und Text.
18
- * @cssprop --pd-icon-button-txtcol - Textfarbe des Buttons.
19
- * @cssprop --pd-icon-button-font-size - Schriftgröße des Button-Texts.
20
- * @cssprop --pd-icon-button-panel-bg-col - Hintergrundfarbe des Panels.
21
- * @cssprop --pd-icon-button-panel-min-width - Mindestbreite des Panels.
22
- * @cssprop --pd-icon-button-panel-max-width - Maximalbreite des Panels.
23
- * @cssprop --pd-panel-button-panel-padding - Innenabstand des Panelinhalts.
24
- * @cssprop --pd-icon-button-selected-bgcol - Hintergrundfarbe bei `selected`.
25
- * @cssprop --pd-icon-button-selected-txtcol - Textfarbe bei `selected`.
26
- * @cssprop --pd-icon-button-selected-shadow - Schatteneffekt bei `selected`.
13
+ * @cssprop --pd-panel-bg-col - Panel background color. Default: `--pd-default-bg-col`.
14
+ * @cssprop --pd-panel-min-width - Panel minimum width. Default: `auto`.
15
+ * @cssprop --pd-panel-max-width - Panel maximum width. Default: `300px`.
16
+ * @cssprop --pd-panel-padding - Panel content padding. Default: `1rem`.
17
+ * @cssprop --pd-panel-z-index - Panel stacking order. Default: `100`.
27
18
  */
28
- export declare class PdPanelButton extends PdBaseUI {
29
- pdButtonIcon?: string;
30
- buttonText: string;
31
- value?: string;
32
- panelButton: boolean;
33
- loading: boolean;
34
- selected: boolean;
35
- primary: boolean;
36
- disableOnClickTime: number;
19
+ export declare class PdPanelButton extends PdButton {
20
+ /** Hide close button in the panel. */
37
21
  hideClose: boolean;
38
- private _timerDisabled;
22
+ /** Open panel upward instead of downward. */
23
+ up: boolean;
24
+ /** Align panel to the right edge of the button. */
25
+ right: boolean;
26
+ /** @ignore */
39
27
  private _panelOpen;
28
+ /** @ignore - Unique ID for aria-controls */
29
+ private _panelId;
30
+ /** @ignore - Bound method reference for event listener cleanup */
31
+ private _boundClosePanel;
32
+ /** @ignore - Bound method reference for keyboard event listener */
33
+ private _boundHandleKeyDown;
34
+ /** @ignore */
35
+ private _buttonEl;
40
36
  static styles: CSSResultGroup;
41
37
  connectedCallback(): void;
42
38
  disconnectedCallback(): void;
39
+ protected get buttonAriaExpanded(): "true" | "false";
40
+ protected get buttonAriaHasPopup(): "true";
41
+ protected get buttonAriaControls(): string;
42
+ /**
43
+ * Renders the toggle arrow inside the button (as suffix content).
44
+ * Uses activeIcon to switch between up/down arrow states.
45
+ * activeIcon=true shows arrow up (panel open), activeIcon=false shows arrow down (panel closed).
46
+ */
47
+ protected renderSuffixContent(): TemplateResult | typeof nothing;
48
+ /**
49
+ * Renders the dropdown panel after the button.
50
+ */
51
+ protected renderAfterButton(): TemplateResult | typeof nothing;
52
+ /**
53
+ * Override: Click toggles the panel instead of emitting button-clicked.
54
+ */
55
+ protected handleClick(): void;
56
+ /** Focuses the internal button element. */
57
+ focus(): void;
43
58
  private _closePanel;
44
- render(): import('lit').TemplateResult<1>;
45
- private _onKeyDown;
46
- private _buttonClicked;
47
59
  private _togglePanel;
60
+ /** Handles Escape key to close the panel */
61
+ private _handlePanelKeyDown;
62
+ /** Handles keyboard events on the close button */
63
+ private _handleCloseButtonKeyDown;
48
64
  }
49
65
  //# sourceMappingURL=PdPanelButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PdPanelButton.d.ts","sourceRoot":"","sources":["../../src/pd-panel-button/PdPanelButton.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAa,MAAM,KAAK,CAAC;AAGhD,OAAO,0CAA0C,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,aAAc,SAAQ,QAAQ;IAEzC,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,UAAU,EAAE,MAAM,CAAQ;IAG1B,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,WAAW,EAAE,OAAO,CAAS;IAG7B,OAAO,EAAE,OAAO,CAAS;IAGzB,QAAQ,EAAE,OAAO,CAAS;IAG1B,OAAO,EAAE,OAAO,CAAS;IAGzB,kBAAkB,EAAE,MAAM,CAAM;IAGhC,SAAS,EAAE,OAAO,CAAS;IAI3B,OAAO,CAAC,cAAc,CAAkB;IAGxC,OAAO,CAAC,UAAU,CAAkB;IAEpC,OAAgB,MAAM,EAAE,cAAc,CA2OpC;IAEF,iBAAiB;IAKjB,oBAAoB;IAKpB,OAAO,CAAC,WAAW,CAEjB;IAGF,MAAM;IA8CN,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,YAAY;CAQrB"}
1
+ {"version":3,"file":"PdPanelButton.d.ts","sourceRoot":"","sources":["../../src/pd-panel-button/PdPanelButton.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,EAAa,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAIzE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAIpD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,aAAc,SAAQ,QAAQ;IAKzC,sCAAsC;IAEtC,SAAS,UAAS;IAElB,6CAA6C;IAE7C,EAAE,UAAS;IAEX,mDAAmD;IAEnD,KAAK,UAAS;IAMd,cAAc;IAEd,OAAO,CAAC,UAAU,CAAS;IAE3B,4CAA4C;IAC5C,OAAO,CAAC,QAAQ,CAAkC;IAElD,kEAAkE;IAClE,OAAO,CAAC,gBAAgB,CAA+B;IAEvD,mEAAmE;IACnE,OAAO,CAAC,mBAAmB,CAAuC;IAElE,cAAc;IAEd,OAAO,CAAC,SAAS,CAAqB;IAMtC,OAAgB,MAAM,EAAE,cAAc,CA+FpC;IAMO,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAarC,cAAuB,kBAAkB,IAAI,MAAM,GAAG,OAAO,CAE5D;IAED,cAAuB,kBAAkB,IAAI,MAAM,CAElD;IAED,cAAuB,kBAAkB,IAAI,MAAM,CAElD;IAMD;;;;OAIG;cACgB,mBAAmB,IAAI,cAAc,GAAG,OAAO,OAAO;IAUzE;;OAEG;cACgB,iBAAiB,IAAI,cAAc,GAAG,OAAO,OAAO;IAgCvE;;OAEG;cACgB,WAAW,IAAI,IAAI;IAUtC,2CAA2C;IAC3B,KAAK,IAAI,IAAI;IAQ7B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,YAAY;IAWpB,4CAA4C;IAC5C,OAAO,CAAC,mBAAmB;IAO3B,kDAAkD;IAClD,OAAO,CAAC,yBAAyB;CAMlC"}