@progressive-development/pd-forms 0.5.7 → 0.6.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 (109) hide show
  1. package/dist/generated/locale-codes.d.ts +14 -0
  2. package/dist/generated/locale-codes.d.ts.map +1 -0
  3. package/dist/generated/locales/be.d.ts +10 -0
  4. package/dist/generated/locales/be.d.ts.map +1 -0
  5. package/dist/generated/locales/de.d.ts +10 -0
  6. package/dist/generated/locales/de.d.ts.map +1 -0
  7. package/dist/generated/locales/en.d.ts +10 -0
  8. package/dist/generated/locales/en.d.ts.map +1 -0
  9. package/dist/index.d.ts +15 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +10 -10
  12. package/dist/locales/be.d.ts +2 -0
  13. package/dist/locales/de.d.ts +2 -0
  14. package/dist/locales/en.d.ts +2 -0
  15. package/dist/pd-base-input-element.d.ts +28 -0
  16. package/dist/pd-base-input-element.d.ts.map +1 -0
  17. package/dist/pd-base-input-element.js +82 -0
  18. package/dist/pd-base-ui-input.d.ts +54 -0
  19. package/dist/pd-base-ui-input.d.ts.map +1 -0
  20. package/dist/pd-base-ui-input.js +208 -0
  21. package/dist/pd-base-ui.d.ts +12 -0
  22. package/dist/pd-base-ui.d.ts.map +1 -0
  23. package/dist/{src/PdBaseUi.js → pd-base-ui.js} +9 -15
  24. package/dist/pd-button.d.ts +16 -0
  25. package/dist/pd-button.d.ts.map +1 -0
  26. package/dist/pd-button.js +154 -4
  27. package/dist/pd-checkbox.d.ts +14 -0
  28. package/dist/pd-checkbox.d.ts.map +1 -0
  29. package/dist/pd-checkbox.js +251 -4
  30. package/dist/pd-form-container.d.ts +25 -0
  31. package/dist/pd-form-container.d.ts.map +1 -0
  32. package/dist/pd-form-container.js +183 -4
  33. package/dist/pd-form-row.d.ts +12 -0
  34. package/dist/pd-form-row.d.ts.map +1 -0
  35. package/dist/pd-form-row.js +108 -4
  36. package/dist/pd-hover-box.d.ts +23 -0
  37. package/dist/pd-hover-box.d.ts.map +1 -0
  38. package/dist/pd-hover-box.js +122 -4
  39. package/dist/pd-icon-panel-button.d.ts +18 -0
  40. package/dist/pd-icon-panel-button.d.ts.map +1 -0
  41. package/dist/pd-icon-panel-button.js +242 -0
  42. package/dist/pd-input-area.d.ts +18 -0
  43. package/dist/pd-input-area.d.ts.map +1 -0
  44. package/dist/pd-input-area.js +74 -4
  45. package/dist/pd-input-file.d.ts +15 -0
  46. package/dist/pd-input-file.d.ts.map +1 -0
  47. package/dist/pd-input-file.js +91 -4
  48. package/dist/pd-input-time.d.ts +10 -0
  49. package/dist/pd-input-time.d.ts.map +1 -0
  50. package/dist/pd-input-time.js +68 -4
  51. package/dist/pd-input.d.ts +30 -0
  52. package/dist/pd-input.d.ts.map +1 -0
  53. package/dist/pd-input.js +99 -4
  54. package/dist/pd-radio-group.d.ts +9 -0
  55. package/dist/pd-radio-group.d.ts.map +1 -0
  56. package/dist/pd-radio-group.js +89 -4
  57. package/dist/pd-range.d.ts +16 -0
  58. package/dist/pd-range.d.ts.map +1 -0
  59. package/dist/pd-range.js +236 -4
  60. package/dist/pd-select.d.ts +14 -0
  61. package/dist/pd-select.d.ts.map +1 -0
  62. package/dist/pd-select.js +121 -4
  63. package/dist/stories/01_index.stories.d.ts +58 -0
  64. package/dist/stories/01_index.stories.d.ts.map +1 -0
  65. package/dist/stories/button.stories.d.ts +22 -0
  66. package/dist/stories/button.stories.d.ts.map +1 -0
  67. package/dist/stories/checkbox.stories.d.ts +28 -0
  68. package/dist/stories/checkbox.stories.d.ts.map +1 -0
  69. package/dist/stories/form-container.stories.d.ts +28 -0
  70. package/dist/stories/form-container.stories.d.ts.map +1 -0
  71. package/dist/stories/form-row.stories.d.ts +27 -0
  72. package/dist/stories/form-row.stories.d.ts.map +1 -0
  73. package/dist/stories/input-area.stories.d.ts +54 -0
  74. package/dist/stories/input-area.stories.d.ts.map +1 -0
  75. package/dist/stories/input-file.stories.d.ts +49 -0
  76. package/dist/stories/input-file.stories.d.ts.map +1 -0
  77. package/dist/stories/input.stories.d.ts +37 -0
  78. package/dist/stories/input.stories.d.ts.map +1 -0
  79. package/dist/stories/pd-icon-button.stories.d.ts +30 -0
  80. package/dist/stories/pd-icon-button.stories.d.ts.map +1 -0
  81. package/dist/stories/radio-group.stories.d.ts +9 -0
  82. package/dist/stories/radio-group.stories.d.ts.map +1 -0
  83. package/dist/stories/range.stories.d.ts +9 -0
  84. package/dist/stories/range.stories.d.ts.map +1 -0
  85. package/dist/stories/select.stories.d.ts +37 -0
  86. package/dist/stories/select.stories.d.ts.map +1 -0
  87. package/dist/styles/shared-input-field-styles.d.ts +9 -0
  88. package/dist/styles/shared-input-field-styles.d.ts.map +1 -0
  89. package/dist/{src → styles}/shared-input-field-styles.js +37 -25
  90. package/dist/styles/shared-input-styles.d.ts +10 -0
  91. package/dist/styles/shared-input-styles.d.ts.map +1 -0
  92. package/dist/{src → styles}/shared-input-styles.js +7 -6
  93. package/dist/types.d.ts +10 -0
  94. package/dist/types.d.ts.map +1 -0
  95. package/package.json +32 -47
  96. package/dist/src/PdBaseInputElement.js +0 -87
  97. package/dist/src/PdBaseUiInput.js +0 -231
  98. package/dist/src/PdButton.js +0 -194
  99. package/dist/src/PdCheckbox.js +0 -230
  100. package/dist/src/PdFormContainer.js +0 -167
  101. package/dist/src/PdFormRow.js +0 -92
  102. package/dist/src/PdHoverBox.js +0 -108
  103. package/dist/src/PdInput.js +0 -79
  104. package/dist/src/PdInputArea.js +0 -61
  105. package/dist/src/PdInputFile.js +0 -73
  106. package/dist/src/PdInputTime.js +0 -59
  107. package/dist/src/PdRadioGroup.js +0 -72
  108. package/dist/src/PdRange.js +0 -267
  109. package/dist/src/PdSelect.js +0 -125
@@ -1,4 +1,108 @@
1
- import { PdFormRow } from "./src/PdFormRow.js";
2
- if (!customElements.get("pd-form-row")) {
3
- window.customElements.define("pd-form-row", PdFormRow);
4
- }
1
+ import { css, html } from "lit";
2
+ import { customElement } from "lit/decorators.js";
3
+ import { PdBaseUI } from "./pd-base-ui.js";
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __decorateClass = (decorators, target, key, kind) => {
6
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
7
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
8
+ if (decorator = decorators[i])
9
+ result = decorator(result) || result;
10
+ return result;
11
+ };
12
+ let PdFormRow = class extends PdBaseUI {
13
+ render() {
14
+ return html`<slot></slot>`;
15
+ }
16
+ };
17
+ PdFormRow.styles = [
18
+ PdBaseUI.styles,
19
+ css`
20
+ :host {
21
+ /* Define size for row, depends on media queries */
22
+ --my-row-width: var(--pd-form-row-base-width, 800px);
23
+ --my-gap: var(--pd-form-row-gap, 20px);
24
+ display: flex;
25
+ flex: 1 1 100%;
26
+ /*margin: 0 0 .5rem 0;*/
27
+ box-sizing: border-box;
28
+ width: 100%;
29
+ gap: var(--my-gap);
30
+ align-items: var(--pd-form-row-align-item, flex-start);
31
+ padding-top: var(--pd-form-row-padding-top, 10px);
32
+ }
33
+
34
+ ::slotted(.full-size) {
35
+ --pd-input-field-width: 100%;
36
+ }
37
+
38
+ ::slotted(.quarter1) {
39
+ --pd-input-field-width: calc(
40
+ var(--my-row-width) * 0.25 - (var(--my-gap) * 0.75)
41
+ );
42
+ }
43
+
44
+ ::slotted(.quarter1-area) {
45
+ --pd-input-field-width: calc(
46
+ (var(--my-row-width) - 5px) * 0.25 - (var(--my-gap) * 0.75)
47
+ );
48
+ }
49
+
50
+ ::slotted(.quarter2) {
51
+ --pd-input-field-width: calc(
52
+ (var(--my-row-width) * 0.5) - (var(--my-gap) / 2)
53
+ );
54
+ }
55
+
56
+ ::slotted(.quarter2-area) {
57
+ --pd-input-field-width: calc(
58
+ ((var(--my-row-width) - 8px) * 0.5) - (var(--my-gap) / 2)
59
+ );
60
+ }
61
+
62
+ ::slotted(.quarter3) {
63
+ --pd-input-field-width: calc(
64
+ var(--my-row-width) * 0.75 - (var(--my-gap) * 0.25)
65
+ );
66
+ }
67
+
68
+ ::slotted(.quarter3-area) {
69
+ --pd-input-field-width: calc(
70
+ (var(--my-row-width) - 10px) * 0.75 - (var(--my-gap) * 0.25)
71
+ );
72
+ }
73
+
74
+ ::slotted(.quarter4) {
75
+ --pd-input-field-width: var(--my-row-width);
76
+ }
77
+
78
+ ::slotted(.quarter4-area) {
79
+ --pd-input-field-width: calc(var(--my-row-width) - 15px);
80
+ }
81
+
82
+ @media (max-width: 930px) {
83
+ :host {
84
+ --my-row-width: 600px;
85
+ }
86
+ }
87
+
88
+ @media (max-width: 650px) {
89
+ :host {
90
+ --my-row-width: 400px;
91
+ --my-gap: 10px;
92
+ }
93
+ }
94
+
95
+ @media (max-width: 450px) {
96
+ :host {
97
+ --my-row-width: 300px;
98
+ --my-gap: 8px;
99
+ }
100
+ }
101
+ `
102
+ ];
103
+ PdFormRow = __decorateClass([
104
+ customElement("pd-form-row")
105
+ ], PdFormRow);
106
+ export {
107
+ PdFormRow
108
+ };
@@ -0,0 +1,23 @@
1
+ import { TemplateResult, CSSResultGroup } from 'lit';
2
+ import { PdBaseUI } from './pd-base-ui.js';
3
+ export declare class PdHoverBox extends PdBaseUI {
4
+ /**
5
+ * Controls visibility of the info box
6
+ */
7
+ private _visible;
8
+ /**
9
+ * True if the info box should open downward
10
+ */
11
+ private _toBottom;
12
+ static styles: CSSResultGroup;
13
+ render(): TemplateResult;
14
+ /**
15
+ * Activates and positions the info box based on current viewport height.
16
+ */
17
+ private _activateInfo;
18
+ /**
19
+ * Hides the info box again
20
+ */
21
+ private _closeInfo;
22
+ }
23
+ //# sourceMappingURL=pd-hover-box.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pd-hover-box.d.ts","sourceRoot":"","sources":["../src/pd-hover-box.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAa,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAG1E,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,qBACa,UAAW,SAAQ,QAAQ;IACtC;;OAEG;IAEH,OAAO,CAAC,QAAQ,CAAS;IAEzB;;OAEG;IAEH,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAgB,MAAM,EAAE,cAAc,CAqDpC;IAEO,MAAM,IAAI,cAAc;IAqBjC;;OAEG;IACH,OAAO,CAAC,aAAa;IAqBrB;;OAEG;IACH,OAAO,CAAC,UAAU;CAGnB"}
@@ -1,4 +1,122 @@
1
- import { PdHoverBox } from "./src/PdHoverBox.js";
2
- if (!customElements.get("pd-hover-box")) {
3
- window.customElements.define("pd-hover-box", PdHoverBox);
4
- }
1
+ import { css, html } from "lit";
2
+ import { state, customElement } from "lit/decorators.js";
3
+ import { PdBaseUI } from "./pd-base-ui.js";
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __decorateClass = (decorators, target, key, kind) => {
7
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
8
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
9
+ if (decorator = decorators[i])
10
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
11
+ if (kind && result) __defProp(target, key, result);
12
+ return result;
13
+ };
14
+ let PdHoverBox = class extends PdBaseUI {
15
+ constructor() {
16
+ super(...arguments);
17
+ this._visible = false;
18
+ this._toBottom = false;
19
+ }
20
+ render() {
21
+ return html`
22
+ <div class="hover-box">
23
+ <div @click=${this._activateInfo}>
24
+ <slot name="normal-view"></slot>
25
+ </div>
26
+
27
+ <div
28
+ id="infoViewId"
29
+ @click=${this._closeInfo}
30
+ class="info-view ${this._visible ? "visible" : "hidden"} ${this._toBottom ? "to-bottom" : "to-top"}"
31
+ >
32
+ <slot name="info-view"></slot>
33
+ </div>
34
+ </div>
35
+ `;
36
+ }
37
+ /**
38
+ * Activates and positions the info box based on current viewport height.
39
+ */
40
+ _activateInfo(e) {
41
+ var _a;
42
+ const modal = (_a = this.shadowRoot) == null ? void 0 : _a.getElementById("infoViewId");
43
+ if (!modal) return;
44
+ const rect = modal.getBoundingClientRect();
45
+ const fitsBelow = modal.offsetHeight + rect.top + rect.height <= window.innerHeight;
46
+ this._toBottom = fitsBelow;
47
+ this._visible = true;
48
+ e.stopPropagation();
49
+ }
50
+ /**
51
+ * Hides the info box again
52
+ */
53
+ _closeInfo() {
54
+ this._visible = false;
55
+ }
56
+ };
57
+ PdHoverBox.styles = [
58
+ PdBaseUI.styles,
59
+ css`
60
+ :host {
61
+ display: block;
62
+ }
63
+
64
+ .hover-box {
65
+ position: relative;
66
+ }
67
+
68
+ .info-view {
69
+ position: absolute;
70
+ z-index: 100;
71
+ background-color: var(
72
+ --pd-hover-box-bg-col,
73
+ var(--pd-default-dark-col)
74
+ );
75
+ border: 1px solid var(--pd-hover-box-border-col, var(--pd-default-col));
76
+ text-align: center;
77
+ padding: 10px;
78
+ width: 240px;
79
+ color: var(--pd-hover-box-font-col, white);
80
+ font-size: var(--pd-hover-box-font-size, 0.8em);
81
+ transition: opacity 0.2s ease-in;
82
+ }
83
+
84
+ .visible {
85
+ visibility: visible;
86
+ opacity: 1;
87
+ }
88
+
89
+ .hidden {
90
+ visibility: hidden;
91
+ opacity: 0;
92
+ }
93
+
94
+ .to-bottom {
95
+ right: -3px;
96
+ top: -3px;
97
+ }
98
+
99
+ .to-top {
100
+ right: -3px;
101
+ bottom: -3px;
102
+ }
103
+
104
+ @media (max-width: 640px) {
105
+ .info-view {
106
+ width: 190px;
107
+ }
108
+ }
109
+ `
110
+ ];
111
+ __decorateClass([
112
+ state()
113
+ ], PdHoverBox.prototype, "_visible", 2);
114
+ __decorateClass([
115
+ state()
116
+ ], PdHoverBox.prototype, "_toBottom", 2);
117
+ PdHoverBox = __decorateClass([
118
+ customElement("pd-hover-box")
119
+ ], PdHoverBox);
120
+ export {
121
+ PdHoverBox
122
+ };
@@ -0,0 +1,18 @@
1
+ import { CSSResultGroup } from 'lit';
2
+ import { PdBaseUI } from './pd-base-ui';
3
+ export declare class PdIconPanelButton extends PdBaseUI {
4
+ pdButtonIcon?: string;
5
+ buttonText: string;
6
+ value?: string;
7
+ panelButton: boolean;
8
+ private _panelOpen;
9
+ static styles: CSSResultGroup;
10
+ connectedCallback(): void;
11
+ disconnectedCallback(): void;
12
+ private _closePanel;
13
+ render(): import('lit-html').TemplateResult<1>;
14
+ private _onKeyDown;
15
+ private _buttonClicked;
16
+ private _togglePanel;
17
+ }
18
+ //# sourceMappingURL=pd-icon-panel-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pd-icon-panel-button.d.ts","sourceRoot":"","sources":["../src/pd-icon-panel-button.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAa,MAAM,KAAK,CAAC;AAGhD,OAAO,0CAA0C,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,qBACa,iBAAkB,SAAQ,QAAQ;IAE7C,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,UAAU,EAAE,MAAM,CAAQ;IAG1B,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,WAAW,EAAE,OAAO,CAAS;IAG7B,OAAO,CAAC,UAAU,CAAkB;IAEpC,OAAgB,MAAM,EAAE,cAAc,CAoIpC;IAEF,iBAAiB;IAKjB,oBAAoB;IAKpB,OAAO,CAAC,WAAW,CAEjB;IAGF,MAAM;IAgCN,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,YAAY;CAQrB"}
@@ -0,0 +1,242 @@
1
+ import { css, html } from "lit";
2
+ import { property, state, customElement } from "lit/decorators.js";
3
+ import "@progressive-development/pd-icon/pd-icon";
4
+ import { PdBaseUI } from "./pd-base-ui.js";
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __decorateClass = (decorators, target, key, kind) => {
8
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
9
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
10
+ if (decorator = decorators[i])
11
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
12
+ if (kind && result) __defProp(target, key, result);
13
+ return result;
14
+ };
15
+ let PdIconPanelButton = class extends PdBaseUI {
16
+ constructor() {
17
+ super(...arguments);
18
+ this.buttonText = "Ok";
19
+ this.panelButton = false;
20
+ this._panelOpen = false;
21
+ this._closePanel = () => {
22
+ this._panelOpen = false;
23
+ };
24
+ }
25
+ connectedCallback() {
26
+ super.connectedCallback();
27
+ window.addEventListener("close-button-panel-event", this._closePanel);
28
+ }
29
+ disconnectedCallback() {
30
+ window.removeEventListener("close-button-panel-event", this._closePanel);
31
+ super.disconnectedCallback();
32
+ }
33
+ // ${this._daySyncDisabled ? "element-hint" : ""} => for div class
34
+ render() {
35
+ return html`
36
+ <div
37
+ class="icon-button-style"
38
+ role="button"
39
+ tabindex="0"
40
+ @click="${this._buttonClicked}"
41
+ @keydown="${this._onKeyDown}"
42
+ >
43
+ ${this.pdButtonIcon ? html`
44
+ <pd-icon
45
+ class="icon action-icon-color"
46
+ icon="${this.pdButtonIcon}"
47
+ activeIcon
48
+ ></pd-icon>
49
+ ` : ""}
50
+ <span>${this.buttonText}</span>
51
+ </div>
52
+
53
+ <div class="panel ${this._panelOpen ? "open" : ""}">
54
+ <button class="close-button" @click="${this._togglePanel}">
55
+ &times;
56
+ </button>
57
+ <div class="panel-content">
58
+ <slot></slot>
59
+ </div>
60
+ </div>
61
+ `;
62
+ }
63
+ _onKeyDown(event) {
64
+ if (event.key === "Enter" || event.key === " ") {
65
+ event.preventDefault();
66
+ this._buttonClicked();
67
+ }
68
+ }
69
+ _buttonClicked() {
70
+ if (this.panelButton) {
71
+ this._togglePanel();
72
+ } else {
73
+ this.dispatchEvent(
74
+ new CustomEvent("button-clicked", {
75
+ detail: this.value
76
+ })
77
+ );
78
+ }
79
+ }
80
+ _togglePanel() {
81
+ this._panelOpen = !this._panelOpen;
82
+ this.dispatchEvent(
83
+ new CustomEvent("panel-button-toggled", {
84
+ detail: { open: this._panelOpen }
85
+ })
86
+ );
87
+ }
88
+ };
89
+ PdIconPanelButton.styles = [
90
+ css`
91
+ :host {
92
+ display: inline-block; /* Verhindert, dass :host die volle Breite bekommt */
93
+ position: relative;
94
+ width: var(--pd-icon-button-width, auto);
95
+ }
96
+
97
+ :host([disabled]) {
98
+ pointer-events: none;
99
+ }
100
+
101
+ .icon-button-style {
102
+ z-index: 6;
103
+ background: #58a linear-gradient(hsla(0, 0%, 100%, 0.2), transparent);
104
+ background-color: var(--pd-icon-button-bgcol, #0c6fc5);
105
+ padding: 0.3em 0.8em;
106
+ border: 1px solid var(--pd-icon-button-bordercol, rgba(0, 0, 0, 0.5));
107
+ border-radius: var(--pd-icon-button-border-radius, 0.2em);
108
+ transition: background-color 0.3s ease;
109
+ --pd-icon-size: 20px;
110
+ color: var(--pd-icon-button-txtcol, white);
111
+ text-shadow: 0 - 0.05em 0.05em rgba(0, 0, 0, 0.5);
112
+ font-size: var(--pd-icon-button-font-size, 125%);
113
+ line-height: var(--pd-icon-button-line-height, 1.5);
114
+ height: var(--pd-icon-button-height, auto);
115
+ display: flex;
116
+ align-items: center;
117
+ justify-content: center;
118
+ text-align: center;
119
+ }
120
+
121
+ :host(:not([disabled])) .icon-button-style:hover {
122
+ background-color: var(--pd-icon-button-bgcol-hover, #fdae03f3);
123
+ cursor: pointer;
124
+ }
125
+
126
+ :host([disabled]) .icon-button-style {
127
+ background: linear-gradient(
128
+ to bottom,
129
+ #e0e0e0,
130
+ #c4c4c4
131
+ ); /* Matte, deaktivierte Optik */
132
+ color: #696868; /* Text weniger dominant */
133
+ border-color: #b0b0b0; /* Weniger Kontrast */
134
+ cursor: not-allowed;
135
+ opacity: 0.6; /* Leichter "inaktiv"-Effekt */
136
+ text-shadow: none; /* Kein 3D-Effekt */
137
+ }
138
+
139
+ :host(:not([disabled])[primary]) .icon-button-style {
140
+ background-color: var(--pd-icon-button-primary-bgcol, #044176);
141
+ color: var(--pd-icon-button-primary-txtcol, white);
142
+ }
143
+
144
+ :host(:not([disabled])[primary]) .icon-button-style:hover {
145
+ background-color: var(--pd-icon-button-primary-bgcol-hover, #fdae03f3);
146
+ cursor: pointer;
147
+ }
148
+
149
+ .panel {
150
+ position: absolute;
151
+ width: max-content; /* Verhindert volle Breite */
152
+ min-width: 120%; /* Panel wird etwas breiter als der Button */
153
+ max-width: 300px; /* Optional: Maximale Breite */
154
+ transform: scaleY(0);
155
+ background: var(--pd-panel-bg, white);
156
+ border-radius: 5px;
157
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
158
+ transition:
159
+ transform 0.2s ease-out,
160
+ opacity 0.2s ease-out;
161
+ opacity: 0;
162
+ z-index: 5;
163
+ }
164
+
165
+ .panel.open {
166
+ transform: scaleY(1);
167
+ opacity: 1;
168
+ }
169
+
170
+ .panel-content {
171
+ padding: 1rem;
172
+ min-height: 50px;
173
+ }
174
+
175
+ .close-button {
176
+ position: absolute;
177
+ top: 5px;
178
+ right: 5px;
179
+ background: transparent;
180
+ border: none;
181
+ color: #555;
182
+ font-size: 1.2rem;
183
+ cursor: pointer;
184
+ padding: 5px;
185
+ line-height: 1;
186
+ transition: color 0.2s ease-in-out;
187
+ }
188
+
189
+ .close-button:hover {
190
+ color: black;
191
+ }
192
+
193
+ /* Standard (nach unten öffnend, linksbündig) */
194
+ :host(:not([right]):not([up])) .panel {
195
+ left: 0; /* Panel beginnt exakt unter dem Button */
196
+ top: 100%; /* Panel öffnet sich nach unten */
197
+ transform-origin: top; /* Wächst nach unten */
198
+ }
199
+
200
+ /* Standard (nach unten öffnend, rechtsbündig) */
201
+ :host([right]:not([up])) .panel {
202
+ right: 0; /* Panel beginnt rechtsbündig am Button */
203
+ top: 100%;
204
+ transform-origin: top right;
205
+ }
206
+
207
+ /* Panel öffnet sich nach OBEN (links ausgerichtet) */
208
+ :host(:not([right])[up]) .panel {
209
+ left: 0;
210
+ bottom: 100%; /* Panel öffnet sich nach oben */
211
+ transform-origin: bottom;
212
+ }
213
+
214
+ /* Panel öffnet sich nach OBEN (rechts ausgerichtet) */
215
+ :host([right][up]) .panel {
216
+ right: 0;
217
+ bottom: 100%; /* Panel öffnet sich nach oben */
218
+ transform-origin: bottom right;
219
+ }
220
+ `
221
+ ];
222
+ __decorateClass([
223
+ property({ type: String })
224
+ ], PdIconPanelButton.prototype, "pdButtonIcon", 2);
225
+ __decorateClass([
226
+ property({ type: String })
227
+ ], PdIconPanelButton.prototype, "buttonText", 2);
228
+ __decorateClass([
229
+ property({ type: String })
230
+ ], PdIconPanelButton.prototype, "value", 2);
231
+ __decorateClass([
232
+ property({ type: Boolean })
233
+ ], PdIconPanelButton.prototype, "panelButton", 2);
234
+ __decorateClass([
235
+ state()
236
+ ], PdIconPanelButton.prototype, "_panelOpen", 2);
237
+ PdIconPanelButton = __decorateClass([
238
+ customElement("pd-icon-panel-button")
239
+ ], PdIconPanelButton);
240
+ export {
241
+ PdIconPanelButton
242
+ };
@@ -0,0 +1,18 @@
1
+ import { CSSResultGroup } from 'lit';
2
+ import { PdBaseInputElement } from './pd-base-input-element.js';
3
+ export declare class PdInputArea extends PdBaseInputElement {
4
+ rows: number;
5
+ cols?: number;
6
+ /**
7
+ * Minimum length constraint
8
+ */
9
+ minlength?: number;
10
+ /**
11
+ * Maximum length constraint
12
+ */
13
+ maxlength?: number;
14
+ constructor();
15
+ static styles: CSSResultGroup;
16
+ render(): import('lit-html').TemplateResult<1>;
17
+ }
18
+ //# sourceMappingURL=pd-input-area.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pd-input-area.d.ts","sourceRoot":"","sources":["../src/pd-input-area.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAa,cAAc,EAAE,MAAM,KAAK,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,qBACa,WAAY,SAAQ,kBAAkB;IAEjD,IAAI,SAAK;IAGT,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IAEH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IAEH,SAAS,CAAC,EAAE,MAAM,CAAO;;IAOzB,OAAgB,MAAM,EAAE,cAAc,CAQpC;IAEO,MAAM;CAyBhB"}
@@ -1,4 +1,74 @@
1
- import { PdInputArea } from "./src/PdInputArea.js";
2
- if (!customElements.get("pd-input-area")) {
3
- window.customElements.define("pd-input-area", PdInputArea);
4
- }
1
+ import { css, html } from "lit";
2
+ import { property, customElement } from "lit/decorators.js";
3
+ import { PdBaseInputElement } from "./pd-base-input-element.js";
4
+ import { INPUT_TYPE_AREA } from "./pd-base-ui-input.js";
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __decorateClass = (decorators, target, key, kind) => {
8
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
9
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
10
+ if (decorator = decorators[i])
11
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
12
+ if (kind && result) __defProp(target, key, result);
13
+ return result;
14
+ };
15
+ let PdInputArea = class extends PdBaseInputElement {
16
+ constructor() {
17
+ super();
18
+ this.rows = 2;
19
+ this.maxlength = 500;
20
+ this._inputType = INPUT_TYPE_AREA;
21
+ }
22
+ render() {
23
+ const inputAreaId = `${this.id}InputArea`;
24
+ return html`
25
+ ${this._renderLabel(inputAreaId)}
26
+ <div class="input ${this.errorMsg.length > 0 ? "error" : ""}">
27
+ <textarea
28
+ id=${inputAreaId}
29
+ name=${this.name || this.valueName || this.autoCompleteName}
30
+ autocomplete=${this.autoCompleteName ?? "off"}
31
+ class="input-style ${this.gradient ? "gradient" : ""}"
32
+ rows=${this.rows}
33
+ cols=${this.cols ?? ""}
34
+ placeholder=${this.placeHolder}
35
+ minlength=${this.minlength ?? ""}
36
+ maxlength=${this.maxlength ?? ""}
37
+ ?disabled=${this.disabled}
38
+ ?readonly=${this.readonly}
39
+ .value=${this.value}
40
+ @keyup=${this._onKeyUp}
41
+ @blur=${this._onBlur}
42
+ ></textarea>
43
+ </div>
44
+ ${this._renderErrorMsg()}
45
+ `;
46
+ }
47
+ };
48
+ PdInputArea.styles = [
49
+ PdBaseInputElement.styles,
50
+ css`
51
+ /* override default width for area */
52
+ .input-style {
53
+ width: var(--pd-input-field-width, 240px);
54
+ }
55
+ `
56
+ ];
57
+ __decorateClass([
58
+ property({ type: Number })
59
+ ], PdInputArea.prototype, "rows", 2);
60
+ __decorateClass([
61
+ property({ type: Number })
62
+ ], PdInputArea.prototype, "cols", 2);
63
+ __decorateClass([
64
+ property({ type: Number })
65
+ ], PdInputArea.prototype, "minlength", 2);
66
+ __decorateClass([
67
+ property({ type: Number })
68
+ ], PdInputArea.prototype, "maxlength", 2);
69
+ PdInputArea = __decorateClass([
70
+ customElement("pd-input-area")
71
+ ], PdInputArea);
72
+ export {
73
+ PdInputArea
74
+ };
@@ -0,0 +1,15 @@
1
+ import { CSSResultGroup } from 'lit';
2
+ import { PdBaseInputElement } from './pd-base-input-element.js';
3
+ export declare class PdInputFile extends PdBaseInputElement {
4
+ icon?: string;
5
+ accept?: string;
6
+ maxlength?: number;
7
+ constructor();
8
+ static styles: CSSResultGroup;
9
+ render(): import('lit-html').TemplateResult<1>;
10
+ _onKeyUp(e: KeyboardEvent): void;
11
+ private _iconClicked;
12
+ private _onChange;
13
+ get files(): FileList | null | undefined;
14
+ }
15
+ //# sourceMappingURL=pd-input-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pd-input-file.d.ts","sourceRoot":"","sources":["../src/pd-input-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAa,cAAc,EAAE,MAAM,KAAK,CAAC;AAGhD,OAAO,0CAA0C,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,qBACa,WAAY,SAAQ,kBAAkB;IAEjD,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,SAAS,CAAC,EAAE,MAAM,CAAC;;IAOnB,OAAgB,MAAM,EAAE,cAAc,CAOpC;IAEO,MAAM;IA6BN,QAAQ,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAIzC,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,SAAS;IAYjB,IAAI,KAAK,IAAI,QAAQ,GAAG,IAAI,GAAG,SAAS,CAIvC;CACF"}