@progressive-development/pd-forms 0.5.6 → 0.6.0

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 (107) 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-input-area.d.ts +18 -0
  42. package/dist/pd-input-area.d.ts.map +1 -0
  43. package/dist/pd-input-area.js +74 -4
  44. package/dist/pd-input-file.d.ts +15 -0
  45. package/dist/pd-input-file.d.ts.map +1 -0
  46. package/dist/pd-input-file.js +91 -4
  47. package/dist/pd-input-time.d.ts +10 -0
  48. package/dist/pd-input-time.d.ts.map +1 -0
  49. package/dist/pd-input-time.js +68 -0
  50. package/dist/pd-input.d.ts +30 -0
  51. package/dist/pd-input.d.ts.map +1 -0
  52. package/dist/pd-input.js +99 -4
  53. package/dist/pd-radio-group.d.ts +9 -0
  54. package/dist/pd-radio-group.d.ts.map +1 -0
  55. package/dist/pd-radio-group.js +89 -4
  56. package/dist/pd-range.d.ts +16 -0
  57. package/dist/pd-range.d.ts.map +1 -0
  58. package/dist/pd-range.js +236 -4
  59. package/dist/pd-select.d.ts +14 -0
  60. package/dist/pd-select.d.ts.map +1 -0
  61. package/dist/pd-select.js +121 -4
  62. package/dist/stories/01_index.stories.d.ts +58 -0
  63. package/dist/stories/01_index.stories.d.ts.map +1 -0
  64. package/dist/stories/button.stories.d.ts +22 -0
  65. package/dist/stories/button.stories.d.ts.map +1 -0
  66. package/dist/stories/checkbox.stories.d.ts +28 -0
  67. package/dist/stories/checkbox.stories.d.ts.map +1 -0
  68. package/dist/stories/form-container.stories.d.ts +28 -0
  69. package/dist/stories/form-container.stories.d.ts.map +1 -0
  70. package/dist/stories/form-row.stories.d.ts +27 -0
  71. package/dist/stories/form-row.stories.d.ts.map +1 -0
  72. package/dist/stories/input-area.stories.d.ts +54 -0
  73. package/dist/stories/input-area.stories.d.ts.map +1 -0
  74. package/dist/stories/input-file.stories.d.ts +49 -0
  75. package/dist/stories/input-file.stories.d.ts.map +1 -0
  76. package/dist/stories/input.stories.d.ts +37 -0
  77. package/dist/stories/input.stories.d.ts.map +1 -0
  78. package/dist/stories/pd-icon-button.stories.d.ts +30 -0
  79. package/dist/stories/pd-icon-button.stories.d.ts.map +1 -0
  80. package/dist/stories/radio-group.stories.d.ts +9 -0
  81. package/dist/stories/radio-group.stories.d.ts.map +1 -0
  82. package/dist/stories/range.stories.d.ts +9 -0
  83. package/dist/stories/range.stories.d.ts.map +1 -0
  84. package/dist/stories/select.stories.d.ts +37 -0
  85. package/dist/stories/select.stories.d.ts.map +1 -0
  86. package/dist/styles/shared-input-field-styles.d.ts +9 -0
  87. package/dist/styles/shared-input-field-styles.d.ts.map +1 -0
  88. package/dist/{src → styles}/shared-input-field-styles.js +37 -25
  89. package/dist/styles/shared-input-styles.d.ts +10 -0
  90. package/dist/styles/shared-input-styles.d.ts.map +1 -0
  91. package/dist/{src → styles}/shared-input-styles.js +7 -6
  92. package/dist/types.d.ts +10 -0
  93. package/dist/types.d.ts.map +1 -0
  94. package/package.json +32 -47
  95. package/dist/src/PdBaseInputElement.js +0 -86
  96. package/dist/src/PdBaseUiInput.js +0 -229
  97. package/dist/src/PdButton.js +0 -194
  98. package/dist/src/PdCheckbox.js +0 -230
  99. package/dist/src/PdFormContainer.js +0 -167
  100. package/dist/src/PdFormRow.js +0 -92
  101. package/dist/src/PdHoverBox.js +0 -108
  102. package/dist/src/PdInput.js +0 -79
  103. package/dist/src/PdInputArea.js +0 -61
  104. package/dist/src/PdInputFile.js +0 -73
  105. package/dist/src/PdRadioGroup.js +0 -72
  106. package/dist/src/PdRange.js +0 -267
  107. package/dist/src/PdSelect.js +0 -125
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@progressive-development/pd-forms",
3
- "description": "Webcomponent pd-forms following open-wc recommendations",
3
+ "version": "0.6.0",
4
+ "description": "Webcomponent pd-forms for rendering form input elements.",
4
5
  "author": "PD Progressive Development",
5
6
  "license": "SEE LICENSE IN LICENSE",
6
- "version": "0.5.6",
7
7
  "main": "./dist/index.js",
8
8
  "module": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
9
10
  "exports": {
10
11
  ".": "./dist/index.js",
11
12
  "./pd-button": "./dist/pd-button.js",
@@ -15,6 +16,7 @@
15
16
  "./pd-hover-box": "./dist/pd-hover-box.js",
16
17
  "./pd-input-area": "./dist/pd-input-area.js",
17
18
  "./pd-input-file": "./dist/pd-input-file.js",
19
+ "./pd-input-time": "./dist/pd-input-time.js",
18
20
  "./pd-input": "./dist/pd-input.js",
19
21
  "./pd-radio-group": "./dist/pd-radio-group.js",
20
22
  "./pd-range": "./dist/pd-range.js",
@@ -30,68 +32,51 @@
30
32
  "LICENSE"
31
33
  ],
32
34
  "scripts": {
33
- "analyze": "cem analyze --litelement",
35
+ "analyze": "cem analyze --litelement --exclude dist,demo",
34
36
  "start": "vite",
35
37
  "build": "vite build",
36
38
  "preview": "vite preview",
37
- "lint": "eslint --ext .js,.html . --ignore-path .gitignore && prettier \"**/*.{js,html}\" --check --ignore-path .gitignore",
38
- "format": "eslint --ext .js,.html . --fix --ignore-path .gitignore && prettier \"**/*.{js,html}\" --write --ignore-path .gitignore",
39
+ "clean": "rm -rf dist",
40
+ "lint": "eslint --ext .ts,.html src --ignore-path .gitignore && prettier \"**/*.ts\" --check --ignore-path .gitignore",
41
+ "format": "eslint --ext .ts,.html src --fix --ignore-path .gitignore && prettier \"**/*.ts\" --write --ignore-path .gitignore",
39
42
  "test": "vitest run --coverage",
40
43
  "test:watch": "vitest --watch",
44
+ "check": "npm run lint && npm run build",
45
+ "prepublishOnly": "npm run clean && npm run check",
41
46
  "localizeExtract": "lit-localize extract",
42
47
  "localizeBuild": "lit-localize build",
43
48
  "storybook": "storybook dev -p 6006",
44
49
  "build-storybook": "storybook build"
45
50
  },
46
51
  "dependencies": {
47
- "@lit-labs/motion": "1.0.3",
48
- "@lit/localize": "^0.11.4",
49
- "@progressive-development/pd-icon": "^0.5.0",
50
- "@progressive-development/pd-shared-styles": "0.1.1",
51
- "lit": "^2.8.0"
52
+ "@lit-labs/motion": "^1.0.8",
53
+ "@lit/localize": "^0.12.2",
54
+ "@progressive-development/pd-icon": "^0.6.1",
55
+ "@progressive-development/pd-shared-styles": "^0.2.1",
56
+ "lit": "^3.3.0"
52
57
  },
53
58
  "devDependencies": {
54
- "@chromatic-com/storybook": "^1.3.4",
59
+ "@chromatic-com/storybook": "^1.9.0",
55
60
  "@custom-elements-manifest/analyzer": "^0.4.17",
56
61
  "@lit/localize-tools": "^0.6.10",
57
- "@storybook/addon-essentials": "^8.0.10",
58
- "@storybook/addon-links": "^8.0.10",
62
+ "@storybook/addon-essentials": "^8.6.14",
63
+ "@storybook/addon-links": "^8.6.14",
59
64
  "@storybook/blocks": "^8.0.10",
60
- "@storybook/test": "^8.0.10",
65
+ "@storybook/test": "^8.6.14",
61
66
  "@storybook/web-components": "^8.0.10",
62
- "@storybook/web-components-vite": "^8.0.10",
63
- "eslint": "^7.32.0",
64
- "eslint-config-prettier": "^8.10.0",
67
+ "@storybook/web-components-vite": "^8.6.14",
68
+ "@typescript-eslint/eslint-plugin": "^8.32.1",
69
+ "@typescript-eslint/parser": "^8.32.1",
70
+ "eslint": "^8.57.1",
71
+ "eslint-config-prettier": "^9.1.0",
65
72
  "eslint-plugin-storybook": "^0.8.0",
66
- "husky": "^4.3.8",
67
- "lint-staged": "^10.5.4",
68
- "prettier": "^2.8.8",
69
- "rollup-plugin-visualizer": "^5.13.1",
70
- "storybook": "^8.0.10",
71
- "vite": "^5.4.11",
72
- "vitest": "^2.1.8"
73
+ "prettier": "^3.5.3",
74
+ "rollup-plugin-visualizer": "^5.14.0",
75
+ "storybook": "^8.6.14",
76
+ "typescript": "^5.8.3",
77
+ "vite": "^5.4.19",
78
+ "vite-plugin-dts": "^4.5.4",
79
+ "vitest": "^2.1.9"
73
80
  },
74
- "customElements": "custom-elements.json",
75
- "eslintConfig": {
76
- "extends": [
77
- "@open-wc",
78
- "prettier",
79
- "plugin:storybook/recommended"
80
- ]
81
- },
82
- "prettier": {
83
- "singleQuote": true,
84
- "arrowParens": "avoid"
85
- },
86
- "husky": {
87
- "hooks": {
88
- "pre-commit": "lint-staged"
89
- }
90
- },
91
- "lint-staged": {
92
- "*.js": [
93
- "eslint --fix",
94
- "prettier --write"
95
- ]
96
- }
81
+ "customElements": "custom-elements.json"
97
82
  }
@@ -1,86 +0,0 @@
1
- import { PdBaseUIInput, INPUT_TYPE_DATE, INPUT_TYPE_TEXT, INPUT_TYPE_FILE, INPUT_TYPE_SELECT, INPUT_TYPE_AREA } from "./PdBaseUiInput.js";
2
- import { SharedInputFieldStyles } from "./shared-input-field-styles.js";
3
- /**
4
- * @license
5
- * Copyright (c) 2021 PD Progressive Development UG. All rights reserved.
6
- *
7
- * Abstract base lit class for pd-input elements.
8
- *
9
- * Used from:
10
- * - pd-input
11
- * - pd-input-area
12
- * - pd-select
13
- *
14
- * Used to:
15
- * - define element specific css
16
- * - handle auto completion
17
- *
18
- * Events:
19
- * - TODO
20
- *
21
- * Custom Properties (shared-input-field-styles):
22
- * ... TODO
23
- *
24
- */
25
- class PdBaseInputElement extends PdBaseUIInput {
26
- /**
27
- * Fire when the `pd-input` loses focus.
28
- * @event focus-lost
29
- */
30
- static get styles() {
31
- return [PdBaseUIInput.styles, SharedInputFieldStyles];
32
- }
33
- static get properties() {
34
- return {
35
- placeHolder: { type: String },
36
- /* not used at the moment */
37
- name: { type: String },
38
- autoCompleteName: { type: String }
39
- };
40
- }
41
- constructor() {
42
- super();
43
- this.placeHolder = "";
44
- this.name = "";
45
- this._input = {};
46
- }
47
- firstUpdated() {
48
- this._input = this.shadowRoot.querySelector(this._getElementName());
49
- }
50
- focus() {
51
- this._input.focus();
52
- }
53
- _onBlur(event) {
54
- this.dispatchEvent(
55
- new CustomEvent("focus-lost", {
56
- detail: {
57
- value: this._input.value
58
- },
59
- composed: true,
60
- bubbles: true
61
- })
62
- );
63
- this._handleChangedValue(this._input.value, event, true, true);
64
- }
65
- _onKeyUp(event) {
66
- this._handleChangedValue(this._input.value, event, true);
67
- }
68
- _getElementName() {
69
- switch (this._inputType) {
70
- case INPUT_TYPE_AREA:
71
- return "textarea";
72
- case INPUT_TYPE_SELECT:
73
- return "select";
74
- case INPUT_TYPE_FILE:
75
- case INPUT_TYPE_TEXT:
76
- return "input";
77
- case INPUT_TYPE_DATE:
78
- return "pd-input";
79
- default:
80
- return "";
81
- }
82
- }
83
- }
84
- export {
85
- PdBaseInputElement
86
- };
@@ -1,229 +0,0 @@
1
- import { css, html } from "lit";
2
- import "@progressive-development/pd-icon/pd-icon";
3
- import { PdBaseUI } from "./PdBaseUi.js";
4
- import { SharedInputStyles } from "./shared-input-styles.js";
5
- import "../pd-hover-box.js";
6
- /**
7
- * @license
8
- * Copyright (c) 2021 PD Progressive Development UG. All rights reserved.
9
- *
10
- * Abstract base lit class for pd-input elements.
11
- *
12
- * Used from:
13
- * - pd-checkbox
14
- * - pd-input
15
- * - pd-input-area
16
- * - pd-radio-group
17
- * - pd-range
18
- * - pd-select
19
- *
20
- * Used to:
21
- * - define css (import additional shared-input-styles.js)
22
- * - define common properties (detailieren, aktuell zu viele bzw. nicht für alle sub-elemente gültig)
23
- * - handle error msg (getter/setter)
24
- * - helpers for validation event after change and render label/error elements.
25
- *
26
- * Events:
27
- * - validate-form => fired when input element changed its value.
28
- * - enter-pressed => fired when enter pressed.
29
- * - field-change => fired when input element changed its value.
30
- *
31
- * Custom Properties (shared-input-styles):
32
- * ... TODO
33
- *
34
- */
35
- const INPUT_TYPE_TEXT = 1;
36
- const INPUT_TYPE_SELECT = 2;
37
- const INPUT_TYPE_CHECK = 3;
38
- const INPUT_TYPE_RANGE = 4;
39
- const INPUT_TYPE_AREA = 5;
40
- const INPUT_TYPE_DATE = 7;
41
- const INPUT_TYPE_FILE = 8;
42
- const KEY_RETURN = 13;
43
- let delayTimer = 0;
44
- const DELAY_WAIT_TIME_MS = 400;
45
- class PdBaseUIInput extends PdBaseUI {
46
- /**
47
- * Fired when an input element change its values.
48
- * @event validate-form
49
- */
50
- /**
51
- * Fired when enter was pressend during focus on input element.
52
- * @event enter-pressed
53
- */
54
- /**
55
- * Fired when field-value changed.
56
- * @event field-change
57
- */
58
- static get styles() {
59
- return [
60
- PdBaseUI.styles,
61
- SharedInputStyles,
62
- css`
63
- .label-header {
64
- display: flex;
65
- align-items: end;
66
- justify-content: space-between;
67
- }
68
-
69
- .label-header pd-icon {
70
- --pd-icon-size: 1.25rem;
71
- --pd-icon-col-active: var(--pd-default-col);
72
- --pd-icon-col-active-hover: var(--pd-default-hover-col);
73
- --pd-icon-stroke-width: 0;
74
- padding-right: 5px;
75
- cursor: help;
76
- }
77
- `
78
- ];
79
- }
80
- static get properties() {
81
- return {
82
- gradient: { type: Boolean },
83
- // true for gradient background
84
- disabled: { type: Boolean },
85
- // disabled flag for element
86
- readonly: { type: Boolean },
87
- // readonly flag for element
88
- required: { type: Boolean },
89
- // required flag for element
90
- requiredMsg: { type: String },
91
- // specific error msg for required field
92
- helperTxt: { type: String },
93
- // helper text
94
- valueName: { type: String },
95
- defaultRequiredChar: { type: String },
96
- defaultValue: { type: String },
97
- // default value for input element (used for reset) TODO: Das hier ggf. automatisch mit erstem gesetzten Wert füllen?
98
- label: { type: String },
99
- // label text for input
100
- value: { type: String },
101
- // current value (set from outside) TODO: Typ (Object, Number, Txt, Bool...)
102
- _errorMsg: { type: String, state: true },
103
- // errorMsg (could set fronm outside for busines validation, internal validation=> todo)
104
- _inputType: { type: Number, state: true }
105
- // number value for type (text, select, range....), set constructor of sub-class
106
- };
107
- }
108
- constructor() {
109
- super();
110
- this.gradient = false;
111
- this.disabled = false;
112
- this.readonly = false;
113
- this.defaultValue = "";
114
- this.label = "";
115
- this.value = "";
116
- this._errorMsg = "";
117
- this._inputType = -1;
118
- this.valueName = "";
119
- this.defaultRequiredChar = "*";
120
- }
121
- // Test: Clear input with value => Dann in BasisKlasse und alle leiten von Basis UI Element ab
122
- clear() {
123
- this.value = "";
124
- }
125
- // Test: Reset input with value
126
- reset() {
127
- this.value = this.defaultValue || "";
128
- }
129
- get errorMsg() {
130
- return this._errorMsg;
131
- }
132
- set errorMsg(msg) {
133
- this._errorMsg = msg;
134
- }
135
- /*
136
- get value() {
137
- return this._value;
138
- }
139
-
140
- set value(newValue) {
141
- console.info("Meine Werte vor Set _value, input.value, newValue: ", this._value, this._input.value, newValue);
142
- this._value = newValue;
143
- this._input.value = newValue;
144
- console.info("Meine Werte nach Set: ", this._value, this._input.value, newValue);
145
- }
146
- */
147
- _generateValidateEvent() {
148
- this.dispatchEvent(
149
- new CustomEvent("validate-form", {
150
- detail: {
151
- singleElement: this,
152
- errorMap: /* @__PURE__ */ new Map()
153
- },
154
- composed: true,
155
- bubbles: true
156
- })
157
- );
158
- }
159
- _handleChangedValue(newValue, event, checkReturn, showValidateMsg) {
160
- const changed = this.value !== newValue;
161
- this.value = newValue;
162
- const keyCode = event.keyCode ? Number(event.keyCode) : -1;
163
- const eventDetail = {
164
- value: newValue,
165
- name: this.valueName,
166
- keyCode,
167
- changed
168
- };
169
- const handleReturn = checkReturn && keyCode === KEY_RETURN;
170
- if (handleReturn) {
171
- this.dispatchEvent(
172
- new CustomEvent("enter-pressed", {
173
- detail: eventDetail,
174
- composed: true,
175
- bubbles: true
176
- })
177
- );
178
- event.preventDefault();
179
- }
180
- if (changed) {
181
- this.dispatchEvent(
182
- new CustomEvent("field-change", {
183
- detail: eventDetail,
184
- composed: true,
185
- bubbles: true
186
- })
187
- );
188
- }
189
- if (showValidateMsg) {
190
- clearTimeout(delayTimer);
191
- delayTimer = setTimeout(
192
- this._generateValidateEvent.bind(this),
193
- DELAY_WAIT_TIME_MS
194
- );
195
- }
196
- }
197
- _renderErrorMsg() {
198
- return this.errorMsg && this.errorMsg.length > 0 ? html`
199
- <div class="error-box error">
200
- <p class="error-msg">${this.errorMsg}</p>
201
- </div>
202
- ` : "";
203
- }
204
- _renderLabel(forParam, additionalValue) {
205
- return html`
206
- <div class="label-header">
207
- <label for="${forParam}">${this.label}${this.required && this.label ? this.defaultRequiredChar : ""}${additionalValue ? html` - <b>${additionalValue}</b>` : ""}</label>
208
- ${this.helperTxt ? html`
209
-
210
- <pd-hover-box>
211
- <pd-icon slot="normal-view" icon="helpIcon" activeIcon></pd-icon>
212
- <p slot="info-view">${this.helperTxt}</p>
213
- </pd-hover-box>
214
-
215
- ` : ""}
216
- </div>
217
- `;
218
- }
219
- }
220
- export {
221
- INPUT_TYPE_AREA,
222
- INPUT_TYPE_CHECK,
223
- INPUT_TYPE_DATE,
224
- INPUT_TYPE_FILE,
225
- INPUT_TYPE_RANGE,
226
- INPUT_TYPE_SELECT,
227
- INPUT_TYPE_TEXT,
228
- PdBaseUIInput
229
- };
@@ -1,194 +0,0 @@
1
- import { css, html } from "lit";
2
- import { PdBaseUI } from "./PdBaseUi.js";
3
- /**
4
- * @license
5
- * Copyright (c) 2021 PD Progressive Development UG. All rights reserved.
6
- */
7
- class PdButton extends PdBaseUI {
8
- /**
9
- * @event button-clicked
10
- */
11
- static get styles() {
12
- return [
13
- PdBaseUI.styles,
14
- css`
15
- :host {
16
-
17
- font-family: var(--pd-default-font-title-family);
18
- font-size: var(--pd-button-font-size, 1em);
19
- font-weight: var(--pd-button-font-weight, normal);
20
-
21
- /*
22
- height: 100%;
23
- width: 100%; => Ohne diese Angabe eht die % Angaben icht
24
- */
25
- margin: 0.5rem;
26
- margin-left: 0; /* Um gleich zum input field zu sein */
27
-
28
- pointer-events: none;
29
- }
30
-
31
- .button-div {
32
-
33
- display: flex;
34
- justify-content: center;
35
- align-items: center;
36
- width: var(--pd-button-width, 140px);
37
- height: var(--pd-button-height, 2rem);
38
-
39
- border-radius: var(--pd-border-radius, 1px);
40
-
41
- background-color: var(--pd-button-bg-col, var(--pd-default-dark-col));
42
- color: var(--pd-button-font-col, var(--pd-default-bg-col));
43
- border: var(--pd-button-border, 0);
44
- cursor: pointer;
45
-
46
- box-shadow: var(--pd-button-box-shadow, none);
47
-
48
- pointer-events: all;
49
- }
50
-
51
- :host(:not([disabled])) .button-div:hover {
52
- box-shadow: var(--pd-button-box-shadow-hover, -1px 1px 2px var(--pd-default-dark-col));
53
- background-color: var(--pd-button-bg-col-hover, var(--pd-default-hover-col));
54
- color: var(--pd-button-font-col-hover, var(--pd-default-dark-col));
55
- transition: background-color 0.4s ease 0s;
56
- --pd-button-border: var(--pd-button-border-hover);
57
- }
58
-
59
- :host(:not([disabled])):host([primary]) .button-div:hover {
60
- background-color: var(--pd-button-primary-bg-col-hover, var(--pd-default-hover-col));
61
- color: var(--pd-button-primary-font-col-hover, var(--pd-default-bg-col));
62
- --pd-button-border: var(--pd-button-border-hover);
63
- }
64
-
65
- :host([primary]) .button-div {
66
- background-color: var(--pd-button-primary-bg-col, var(--pd-default-col));
67
- color: var(--pd-button-primary-font-col, var(--pd-default-bg-col));
68
- }
69
-
70
- :host([gradient]) .button-div {
71
- background: linear-gradient(to right, var(--my-background-gradient-color, red) 0%, var(--my-background-color, blue) 100%);
72
- }
73
-
74
- :host([disabled]) .button-div {
75
- cursor: auto;
76
- border-color: var(--pd-default-disabled-col);
77
- background-color: var(--pd-button-bg-col-disabled, var(--pd-default-disabled-col));
78
- color: var(--pd-button-font-col-disabled, black);
79
- --pd-button-border: var(--pd-button-border-disabled);
80
- }
81
-
82
- /* Style for Button */
83
- a {
84
- display: inline-block;
85
- text-decoration: none;
86
- border: none;
87
- white-space: nowrap;
88
- margin: 0.5rem;
89
- pointer-events: none;
90
-
91
- /*box-shadow: -2px 2px 4px #999;/* TODO: From var */
92
- /*border-bottom: 1px solid var(--my-border-color);*/
93
- /*will-change: transform; Dann über Menu bei Scroll...*/
94
-
95
- /*
96
- transition-property: box-shadow, background;
97
- transition: .2s ease-in;
98
- box-sizing: border-box;
99
- */
100
-
101
- /*overflow: hidden;
102
- text-overflow: ellipsis;*/
103
-
104
- /*padding: var(--squi-input-padding, .5rem);*/
105
- }
106
-
107
-
108
- /* button icon not integrated at the moment */
109
- .button-icon {
110
- display: flex;
111
- align-items: center;
112
- justify-content: center;
113
- white-space: nowrap;
114
- --pd-icon-fill: var(--icon-fill-light);
115
- --pd-icon-fill-hover: var(--icon-fill-light);
116
- }
117
-
118
- .button-icon:not([disabled]) {
119
- --pd-icon-fill: var(--app-primary-color);
120
- --pd-icon-fill-hover: var(--app-primary-color-dark);
121
- }
122
-
123
- .button-icon pd-icon {
124
- max-width: 1.25rem;
125
- height: 1.25rem;
126
- width: 1.25rem;
127
- margin: 0 .15rem;
128
- }
129
-
130
- .button-icon.small pd-icon {
131
- max-width: 1.25rem;
132
- height: 1.25rem;
133
- width: 1.25rem;
134
- padding-right: 0.15rem;
135
- }
136
-
137
- .button-icon svg {
138
- max-width: 1rem;
139
- height: 1rem;
140
- width: 1rem;
141
- padding-right: .5rem;
142
- fill: var(--app-primary-color);
143
- }
144
-
145
- .button-icon:hover pd-icon,
146
- .button-icon:hover svg {
147
- fill: var(--app-primary-color);
148
- }
149
-
150
- @media (min-width: 580px) {
151
- .button-icon pd-icon {
152
- margin: 0 .5rem;
153
- }
154
- .button-icon.small pd-icon {
155
- padding-right: .5rem;
156
- }
157
- }
158
-
159
- `
160
- ];
161
- }
162
- static get properties() {
163
- return {
164
- primary: { type: Boolean },
165
- gradient: { type: Boolean },
166
- disabled: { type: Boolean },
167
- text: { type: String },
168
- value: { type: String }
169
- };
170
- }
171
- constructor() {
172
- super();
173
- this.primary = false;
174
- this.gradient = false;
175
- this.disabled = false;
176
- this.text = "Ok";
177
- }
178
- render() {
179
- return html`
180
- <div @click="${this._handleClick}" class="button-div">
181
- <a ?disabled="${this.disabled}">${this.text}</a>
182
- </div>`;
183
- }
184
- _handleClick() {
185
- if (!this.disabled) {
186
- this.dispatchEvent(new CustomEvent("button-clicked", {
187
- detail: this.value
188
- }));
189
- }
190
- }
191
- }
192
- export {
193
- PdButton
194
- };