@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,91 @@
1
- import { PdInputFile } from "./src/PdInputFile.js";
2
- if (!customElements.get("pd-input-file")) {
3
- window.customElements.define("pd-input-file", PdInputFile);
4
- }
1
+ import { css, html } from "lit";
2
+ import { property, customElement } from "lit/decorators.js";
3
+ import "@progressive-development/pd-icon/pd-icon";
4
+ import { PdBaseInputElement } from "./pd-base-input-element.js";
5
+ import { INPUT_TYPE_FILE } from "./pd-base-ui-input.js";
6
+ var __defProp = Object.defineProperty;
7
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
+ var __decorateClass = (decorators, target, key, kind) => {
9
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
10
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
11
+ if (decorator = decorators[i])
12
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
13
+ if (kind && result) __defProp(target, key, result);
14
+ return result;
15
+ };
16
+ let PdInputFile = class extends PdBaseInputElement {
17
+ constructor() {
18
+ super();
19
+ this._inputType = INPUT_TYPE_FILE;
20
+ }
21
+ render() {
22
+ const inputId = `${this.id}Input`;
23
+ return html`
24
+ ${this._renderLabel(inputId)}
25
+ <div class="input ${this.errorMsg.length > 0 ? "error" : ""}">
26
+ ${this.icon ? html`<pd-icon
27
+ icon=${this.icon}
28
+ activeIcon
29
+ @click=${this._iconClicked}
30
+ ></pd-icon>` : ""}
31
+ <input
32
+ id=${inputId}
33
+ name=${this.name || this.valueName || this.autoCompleteName}
34
+ class="input-style ${this.gradient ? "gradient" : ""}"
35
+ type="file"
36
+ maxlength=${this.maxlength ?? ""}
37
+ accept=${this.accept ?? ""}
38
+ ?disabled=${this.disabled}
39
+ @keyup=${this._onKeyUp}
40
+ @blur=${this._onBlur}
41
+ @change=${this._onChange}
42
+ />
43
+ </div>
44
+ ${this._renderErrorMsg()}
45
+ `;
46
+ }
47
+ _onKeyUp(e) {
48
+ super._onKeyUp(e);
49
+ }
50
+ _iconClicked() {
51
+ this.dispatchEvent(new CustomEvent("input-icon-click"));
52
+ }
53
+ _onChange() {
54
+ this.dispatchEvent(
55
+ new CustomEvent("file-change", {
56
+ detail: {
57
+ files: this.files
58
+ },
59
+ bubbles: true,
60
+ composed: true
61
+ })
62
+ );
63
+ }
64
+ get files() {
65
+ var _a, _b;
66
+ return (_b = (_a = this.shadowRoot) == null ? void 0 : _a.getElementById(`${this.id}Input`)) == null ? void 0 : _b.files;
67
+ }
68
+ };
69
+ PdInputFile.styles = [
70
+ PdBaseInputElement.styles,
71
+ css`
72
+ * {
73
+ box-sizing: border-box;
74
+ }
75
+ `
76
+ ];
77
+ __decorateClass([
78
+ property({ type: String })
79
+ ], PdInputFile.prototype, "icon", 2);
80
+ __decorateClass([
81
+ property({ type: String })
82
+ ], PdInputFile.prototype, "accept", 2);
83
+ __decorateClass([
84
+ property({ type: Number })
85
+ ], PdInputFile.prototype, "maxlength", 2);
86
+ PdInputFile = __decorateClass([
87
+ customElement("pd-input-file")
88
+ ], PdInputFile);
89
+ export {
90
+ PdInputFile
91
+ };
@@ -0,0 +1,10 @@
1
+ import { CSSResultGroup } from 'lit';
2
+ import { PdBaseInputElement } from './pd-base-input-element.js';
3
+ export declare class PdInputTime extends PdBaseInputElement {
4
+ icon?: string;
5
+ constructor();
6
+ static get styles(): CSSResultGroup;
7
+ render(): import('lit-html').TemplateResult<1>;
8
+ private _iconClicked;
9
+ }
10
+ //# sourceMappingURL=pd-input-time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pd-input-time.d.ts","sourceRoot":"","sources":["../src/pd-input-time.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;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;;IAOd,WAAoB,MAAM,IAAI,cAAc,CAS3C;IAEQ,MAAM;IA4Bf,OAAO,CAAC,YAAY;CAGrB"}
@@ -1,4 +1,68 @@
1
- import { PdInputTime } from "./src/PdInputTime.js";
2
- if (!customElements.get("pd-input-time")) {
3
- window.customElements.define("pd-input-time", PdInputTime);
4
- }
1
+ import { css, html } from "lit";
2
+ import { property, customElement } from "lit/decorators.js";
3
+ import "@progressive-development/pd-icon/pd-icon";
4
+ import { PdBaseInputElement } from "./pd-base-input-element.js";
5
+ import { INPUT_TYPE_TIME } from "./pd-base-ui-input.js";
6
+ var __defProp = Object.defineProperty;
7
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
+ var __decorateClass = (decorators, target, key, kind) => {
9
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
10
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
11
+ if (decorator = decorators[i])
12
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
13
+ if (kind && result) __defProp(target, key, result);
14
+ return result;
15
+ };
16
+ let PdInputTime = class extends PdBaseInputElement {
17
+ constructor() {
18
+ super();
19
+ this._inputType = INPUT_TYPE_TIME;
20
+ }
21
+ static get styles() {
22
+ return [
23
+ PdBaseInputElement.styles,
24
+ css`
25
+ * {
26
+ box-sizing: border-box;
27
+ }
28
+ `
29
+ ];
30
+ }
31
+ render() {
32
+ const inputId = `${this.id}Input`;
33
+ return html`
34
+ ${this._renderLabel(inputId)}
35
+ <div class="input ${this.errorMsg.length > 0 ? "error" : ""}">
36
+ ${this.icon ? html`<pd-icon
37
+ icon=${this.icon}
38
+ activeIcon
39
+ @click=${this._iconClicked}
40
+ ></pd-icon>` : ""}
41
+ <input
42
+ id=${inputId}
43
+ name=${this.name || this.valueName || this.autoCompleteName}
44
+ class="input-style ${this.gradient ? "gradient" : ""}"
45
+ type="time"
46
+ .value=${this.value}
47
+ ?readonly=${this.readonly}
48
+ ?disabled=${this.disabled}
49
+ @keyup=${this._onKeyUp}
50
+ @blur=${this._onBlur}
51
+ />
52
+ </div>
53
+ ${this._renderErrorMsg()}
54
+ `;
55
+ }
56
+ _iconClicked() {
57
+ this.dispatchEvent(new CustomEvent("input-icon-click"));
58
+ }
59
+ };
60
+ __decorateClass([
61
+ property({ type: String })
62
+ ], PdInputTime.prototype, "icon", 2);
63
+ PdInputTime = __decorateClass([
64
+ customElement("pd-input-time")
65
+ ], PdInputTime);
66
+ export {
67
+ PdInputTime
68
+ };
@@ -0,0 +1,30 @@
1
+ import { TemplateResult, CSSResultGroup } from 'lit';
2
+ import { PdBaseInputElement } from './pd-base-input-element.js';
3
+ export declare class PdInput extends PdBaseInputElement {
4
+ /**
5
+ * Optional icon to display inside input
6
+ */
7
+ icon: string;
8
+ /**
9
+ * If true, uses input type password
10
+ */
11
+ secret: boolean;
12
+ /**
13
+ * Minimum length constraint
14
+ */
15
+ minlength?: number;
16
+ /**
17
+ * Maximum length constraint
18
+ */
19
+ maxlength?: number;
20
+ /**
21
+ * If true, restricts input to numbers only (legacy, use type="number" langfristig)
22
+ */
23
+ onlyNumbers: boolean;
24
+ constructor();
25
+ static styles: CSSResultGroup;
26
+ render(): TemplateResult;
27
+ protected _onKeyUp(e: KeyboardEvent): void;
28
+ private _iconClicked;
29
+ }
30
+ //# sourceMappingURL=pd-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pd-input.d.ts","sourceRoot":"","sources":["../src/pd-input.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAa,KAAK,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAGrE,OAAO,0CAA0C,CAAC;AAGlD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAIhE,qBACa,OAAQ,SAAQ,kBAAkB;IAC7C;;OAEG;IAEH,IAAI,SAAM;IAEV;;OAEG;IAEH,MAAM,UAAS;IAEf;;OAEG;IAEH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IAEH,SAAS,CAAC,EAAE,MAAM,CAAO;IAEzB;;OAEG;IAEH,WAAW,UAAS;;IAOpB,OAAgB,MAAM,EAAE,cAAc,CAOpC;IAEO,MAAM,IAAI,cAAc;cAmCd,QAAQ,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAYnD,OAAO,CAAC,YAAY;CAKrB"}
package/dist/pd-input.js CHANGED
@@ -1,4 +1,99 @@
1
- import { PdInput } from "./src/PdInput.js";
2
- if (!customElements.get("pd-input")) {
3
- window.customElements.define("pd-input", PdInput);
4
- }
1
+ import { css, html } from "lit";
2
+ import { property, customElement } from "lit/decorators.js";
3
+ import "@progressive-development/pd-icon/pd-icon";
4
+ import { INPUT_TYPE_TEXT } from "./pd-base-ui-input.js";
5
+ import { PdBaseInputElement } from "./pd-base-input-element.js";
6
+ var __defProp = Object.defineProperty;
7
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
+ var __decorateClass = (decorators, target, key, kind) => {
9
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
10
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
11
+ if (decorator = decorators[i])
12
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
13
+ if (kind && result) __defProp(target, key, result);
14
+ return result;
15
+ };
16
+ const onlyContainsNumbers = (str) => /^\d+$/.test(str);
17
+ let PdInput = class extends PdBaseInputElement {
18
+ constructor() {
19
+ super();
20
+ this.icon = "";
21
+ this.secret = false;
22
+ this.maxlength = 500;
23
+ this.onlyNumbers = false;
24
+ this._inputType = INPUT_TYPE_TEXT;
25
+ }
26
+ render() {
27
+ const inputId = `${this.id}Input`;
28
+ return html`
29
+ ${this._renderLabel(inputId)}
30
+ <div class="input ${this.errorMsg.length > 0 ? "error" : ""}">
31
+ ${this.icon ? html`
32
+ <pd-icon
33
+ icon=${this.icon}
34
+ activeIcon
35
+ @click=${this._iconClicked}
36
+ ></pd-icon>
37
+ ` : ""}
38
+ <input
39
+ id=${inputId}
40
+ name=${this.name || this.valueName || this.autoCompleteName}
41
+ autocomplete=${this.autoCompleteName ?? "off"}
42
+ class="input-style ${this.gradient ? "gradient" : ""}"
43
+ type=${this.secret ? "password" : "text"}
44
+ placeholder=${this.placeHolder}
45
+ .value=${this.value}
46
+ minlength=${this.minlength ?? ""}
47
+ maxlength=${this.maxlength ?? ""}
48
+ ?readonly=${this.readonly}
49
+ ?disabled=${this.disabled}
50
+ @keyup=${this._onKeyUp}
51
+ @blur=${this._onBlur}
52
+ />
53
+ </div>
54
+ ${this._renderErrorMsg()}
55
+ `;
56
+ }
57
+ _onKeyUp(e) {
58
+ var _a;
59
+ if (this.onlyNumbers && ((_a = this._input) == null ? void 0 : _a.value) && !onlyContainsNumbers(this._input.value)) {
60
+ this._input.value = this._input.value.replace(/\D/g, "");
61
+ } else {
62
+ super._onKeyUp(e);
63
+ }
64
+ }
65
+ _iconClicked() {
66
+ this.dispatchEvent(
67
+ new CustomEvent("input-icon-click", { bubbles: true, composed: true })
68
+ );
69
+ }
70
+ };
71
+ PdInput.styles = [
72
+ PdBaseInputElement.styles,
73
+ css`
74
+ * {
75
+ box-sizing: border-box;
76
+ }
77
+ `
78
+ ];
79
+ __decorateClass([
80
+ property({ type: String })
81
+ ], PdInput.prototype, "icon", 2);
82
+ __decorateClass([
83
+ property({ type: Boolean })
84
+ ], PdInput.prototype, "secret", 2);
85
+ __decorateClass([
86
+ property({ type: Number })
87
+ ], PdInput.prototype, "minlength", 2);
88
+ __decorateClass([
89
+ property({ type: Number })
90
+ ], PdInput.prototype, "maxlength", 2);
91
+ __decorateClass([
92
+ property({ type: Boolean })
93
+ ], PdInput.prototype, "onlyNumbers", 2);
94
+ PdInput = __decorateClass([
95
+ customElement("pd-input")
96
+ ], PdInput);
97
+ export {
98
+ PdInput
99
+ };
@@ -0,0 +1,9 @@
1
+ import { CSSResultGroup } from 'lit';
2
+ import { PdBaseUIInput } from './pd-base-ui-input.js';
3
+ export declare class PdRadioGroup extends PdBaseUIInput {
4
+ static styles: CSSResultGroup;
5
+ firstUpdated(): void;
6
+ render(): import('lit-html').TemplateResult<1>;
7
+ private _dispatchValidation;
8
+ }
9
+ //# sourceMappingURL=pd-radio-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pd-radio-group.d.ts","sourceRoot":"","sources":["../src/pd-radio-group.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAa,cAAc,EAAE,MAAM,KAAK,CAAC;AAIhD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,qBACa,YAAa,SAAQ,aAAa;IAC7C,OAAgB,MAAM,EAAE,cAAc,CAmBpC;IAEO,YAAY,IAAI,IAAI;IA4BpB,MAAM;IAgBf,OAAO,CAAC,mBAAmB;CAY5B"}
@@ -1,4 +1,89 @@
1
- import { PdRadioGroup } from "./src/PdRadioGroup.js";
2
- if (!customElements.get("pd-radio-group")) {
3
- window.customElements.define("pd-radio-group", PdRadioGroup);
4
- }
1
+ import { css, html } from "lit";
2
+ import { customElement } from "lit/decorators.js";
3
+ import { classMap } from "lit/directives/class-map.js";
4
+ import { PdBaseUIInput } from "./pd-base-ui-input.js";
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 = decorator(result) || result;
11
+ return result;
12
+ };
13
+ let PdRadioGroup = class extends PdBaseUIInput {
14
+ firstUpdated() {
15
+ this.addEventListener("field-change", (e) => {
16
+ const target = e.target;
17
+ const checkboxes2 = this.querySelectorAll("pd-checkbox");
18
+ checkboxes2.forEach((el) => {
19
+ const isActive = el === target;
20
+ el.value = isActive ? "true" : "false";
21
+ el.readonly = isActive;
22
+ if (isActive) {
23
+ this.value = el.valueName;
24
+ }
25
+ });
26
+ this._dispatchValidation();
27
+ });
28
+ const checkboxes = this.querySelectorAll("pd-checkbox");
29
+ checkboxes.forEach((el) => {
30
+ if (el.value === "true") {
31
+ el.readonly = true;
32
+ this.value = el.valueName;
33
+ }
34
+ });
35
+ }
36
+ render() {
37
+ const radioInputId = `${this.id}RadioGroup`;
38
+ return html`
39
+ ${this._renderLabel(radioInputId)}
40
+ <div
41
+ id=${radioInputId}
42
+ class="group-style input ${classMap({
43
+ error: this.errorMsg.length > 0
44
+ })}"
45
+ >
46
+ <slot></slot>
47
+ </div>
48
+ ${this._renderErrorMsg()}
49
+ `;
50
+ }
51
+ _dispatchValidation() {
52
+ this.dispatchEvent(
53
+ new CustomEvent("validate-form", {
54
+ detail: {
55
+ singleElement: this,
56
+ errorMap: /* @__PURE__ */ new Map()
57
+ },
58
+ composed: true,
59
+ bubbles: true
60
+ })
61
+ );
62
+ }
63
+ };
64
+ PdRadioGroup.styles = [
65
+ PdBaseUIInput.styles,
66
+ css`
67
+ .group-style {
68
+ display: flex;
69
+ gap: var(--pd-cb-group-gap, 20px);
70
+ flex-direction: var(--pd-cb-group-direction, row);
71
+ flex-wrap: wrap;
72
+ padding: var(--pd-input-label-padding, 0);
73
+ padding-top: 5px;
74
+ }
75
+
76
+ ::slotted(pd-checkbox) {
77
+ --pd-cb-border-col-readonly: var(
78
+ --pd-cb-border-col,
79
+ var(--pd-default-col)
80
+ );
81
+ }
82
+ `
83
+ ];
84
+ PdRadioGroup = __decorateClass([
85
+ customElement("pd-radio-group")
86
+ ], PdRadioGroup);
87
+ export {
88
+ PdRadioGroup
89
+ };
@@ -0,0 +1,16 @@
1
+ import { CSSResultGroup } from 'lit';
2
+ import { PdBaseUIInput } from './pd-base-ui-input.js';
3
+ export declare class PdRange extends PdBaseUIInput {
4
+ min: number;
5
+ max: number;
6
+ step: number;
7
+ optionValueMapper: Record<string, string>;
8
+ name: string;
9
+ protected _input: HTMLInputElement | null | undefined;
10
+ static styles: CSSResultGroup;
11
+ constructor();
12
+ protected firstUpdated(): void;
13
+ protected _onChange(e: Event): void;
14
+ render(): import('lit-html').TemplateResult<1>;
15
+ }
16
+ //# sourceMappingURL=pd-range.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pd-range.d.ts","sourceRoot":"","sources":["../src/pd-range.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAa,cAAc,EAAE,MAAM,KAAK,CAAC;AAIhD,OAAO,EAAE,aAAa,EAAoB,MAAM,uBAAuB,CAAC;AAExE,qBACa,OAAQ,SAAQ,aAAa;IAExC,GAAG,EAAE,MAAM,CAAK;IAGhB,GAAG,EAAE,MAAM,CAAM;IAGjB,IAAI,SAAK;IAGT,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAG/C,IAAI,SAAM;IAGV,SAAS,CAAC,MAAM,EAAG,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC;IAEvD,OAAgB,MAAM,EAAE,cAAc,CAqJpC;;cAOiB,YAAY,IAAI,IAAI;IAIvC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAI1B,MAAM;CA8BhB"}
package/dist/pd-range.js CHANGED
@@ -1,4 +1,236 @@
1
- import { PdRange } from "./src/PdRange.js";
2
- if (!customElements.get("pd-range")) {
3
- window.customElements.define("pd-range", PdRange);
4
- }
1
+ import { css, html } from "lit";
2
+ import { property, state, customElement } from "lit/decorators.js";
3
+ import { classMap } from "lit/directives/class-map.js";
4
+ import { PdBaseUIInput, INPUT_TYPE_RANGE } 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 PdRange = class extends PdBaseUIInput {
16
+ constructor() {
17
+ super();
18
+ this.min = 0;
19
+ this.max = 10;
20
+ this.step = 1;
21
+ this.optionValueMapper = {};
22
+ this.name = "";
23
+ this._inputType = INPUT_TYPE_RANGE;
24
+ }
25
+ firstUpdated() {
26
+ var _a;
27
+ this._input = (_a = this.shadowRoot) == null ? void 0 : _a.querySelector("input");
28
+ }
29
+ _onChange(e) {
30
+ var _a;
31
+ this._handleChangedValue(((_a = this._input) == null ? void 0 : _a.value) ?? "", e, false);
32
+ }
33
+ render() {
34
+ const inputId = `${this.id}Range`;
35
+ const labelDetail = this.optionValueMapper[this.value] || this.value;
36
+ return html`
37
+ ${this._renderLabel(inputId, labelDetail)}
38
+ <div class="input-range ${classMap({ error: this.errorMsg.length > 0 })}">
39
+ <input
40
+ id=${inputId}
41
+ name=${this.name || this.valueName || ""}
42
+ class="input-range-style ${this.gradient ? "gradient" : ""}"
43
+ type="range"
44
+ .value=${this.value}
45
+ ?readonly=${this.readonly}
46
+ ?disabled=${this.disabled}
47
+ min=${this.min}
48
+ max=${this.max}
49
+ step=${this.step}
50
+ @change=${this._onChange}
51
+ @input=${this._onChange}
52
+ />
53
+ <div class="ticks ${this.disabled ? "disabled" : "enabled"}">
54
+ ${Array.from({ length: 5 }).map(
55
+ () => html`<span class="tick">|</span>`
56
+ )}
57
+ </div>
58
+ </div>
59
+ ${this._renderErrorMsg()}
60
+ `;
61
+ }
62
+ };
63
+ PdRange.styles = [
64
+ PdBaseUIInput.styles,
65
+ css`
66
+ :host([disabled]) {
67
+ --pd-range-bg-col: grey;
68
+ --pd-range-thumb-col: lightgrey;
69
+ }
70
+
71
+ input[type="range"] {
72
+ -webkit-appearance: none;
73
+ width: var(--pd-input-field-width, 250px);
74
+ background: transparent;
75
+ background-color: var(--pd-range-bg-col, var(--pd-default-col));
76
+ padding: 0.5rem;
77
+ height: var(--pd-input-field-range-height, 1.7rem);
78
+ box-sizing: border-box;
79
+ border-radius: 0.75rem;
80
+ }
81
+
82
+ input[type="range"]:focus {
83
+ outline: none;
84
+ }
85
+
86
+ input[type="range"]::-webkit-slider-thumb {
87
+ -webkit-appearance: none;
88
+ margin-top: -6px;
89
+ cursor: pointer;
90
+ height: 15px;
91
+ width: 39px;
92
+ background: var(--pd-range-thumb-col, var(--pd-default-hover-col));
93
+ border: 1px solid var(--pd-default-dark-col);
94
+ border-radius: 3px;
95
+ box-shadow:
96
+ 1px 1px 1px #000000,
97
+ 0px 0px 1px #0d0d0d;
98
+ }
99
+
100
+ input[type="range"]::-moz-range-thumb {
101
+ cursor: pointer;
102
+ height: 15px;
103
+ width: 39px;
104
+ background: var(--pd-range-thumb-col, var(--pd-default-hover-col));
105
+ border: 1px solid var(--pd-default-dark-col);
106
+ border-radius: 3px;
107
+ box-shadow:
108
+ 1px 1px 1px #000000,
109
+ 0px 0px 1px #0d0d0d;
110
+ }
111
+
112
+ input[type="range"]::-ms-thumb {
113
+ cursor: pointer;
114
+ height: 15px;
115
+ width: 39px;
116
+ background: var(--pd-range-thumb-col, var(--pd-default-hover-col));
117
+ border: 1px solid var(--pd-default-dark-col);
118
+ border-radius: 3px;
119
+ box-shadow:
120
+ 1px 1px 1px #000000,
121
+ 0px 0px 1px #0d0d0d;
122
+ }
123
+
124
+ input[type="range"]::-webkit-slider-runnable-track {
125
+ width: 100%;
126
+ height: 8.4px;
127
+ cursor: pointer;
128
+ box-shadow:
129
+ 1px 1px 1px #000000,
130
+ 0px 0px 1px #0d0d0d;
131
+ background: var(--pd-range-track-col, var(--pd-default-light-col));
132
+ border: 0.2px solid #010101;
133
+ border-radius: 0.75rem;
134
+ }
135
+
136
+ input[type="range"]:focus::-webkit-slider-runnable-track {
137
+ background: var(
138
+ --pd-range-track-hover-col,
139
+ var(--pd-default-light-col)
140
+ );
141
+ border: 0.2px solid var(--pd-default-hover-col);
142
+ }
143
+
144
+ input[type="range"]::-moz-range-track {
145
+ width: 100%;
146
+ height: 8.4px;
147
+ cursor: pointer;
148
+ box-shadow:
149
+ 1px 1px 1px #000000,
150
+ 0px 0px 1px #0d0d0d;
151
+ background: var(--pd-range-track-col, var(--pd-default-light-col));
152
+ border-radius: 0.75rem;
153
+ border: 0.2px solid #010101;
154
+ }
155
+
156
+ input[type="range"]::-ms-track {
157
+ height: 8.4px;
158
+ width: 100%;
159
+ cursor: pointer;
160
+ background: transparent;
161
+ border-color: transparent;
162
+ color: transparent;
163
+ border-width: 16px 0;
164
+ }
165
+
166
+ input[type="range"]::-ms-fill-lower,
167
+ input[type="range"]::-ms-fill-upper {
168
+ background: var(--pd-range-track-col, var(--pd-default-light-col));
169
+ border: 0.2px solid #010101;
170
+ border-radius: 0.75rem;
171
+ box-shadow:
172
+ 1px 1px 1px #000000,
173
+ 0px 0px 1px #0d0d0d;
174
+ }
175
+
176
+ input[type="range"]:focus::-ms-fill-lower {
177
+ background: #3071a9;
178
+ }
179
+
180
+ input[type="range"]:focus::-ms-fill-upper {
181
+ background: #367ebd;
182
+ }
183
+
184
+ .ticks {
185
+ display: flex;
186
+ justify-content: space-between;
187
+ padding: 10px 30px;
188
+ }
189
+
190
+ .tick {
191
+ line-height: 5px;
192
+ height: 5px;
193
+ margin-top: -13px;
194
+ font-size: 8pt;
195
+ font-weight: bolder;
196
+ }
197
+
198
+ .ticks.disabled {
199
+ color: grey;
200
+ }
201
+
202
+ .ticks.enabled {
203
+ color: var(--pd-default-col);
204
+ }
205
+
206
+ @media (max-width: 650px) {
207
+ label {
208
+ font-size: 12px;
209
+ }
210
+ }
211
+ `
212
+ ];
213
+ __decorateClass([
214
+ property({ type: Number })
215
+ ], PdRange.prototype, "min", 2);
216
+ __decorateClass([
217
+ property({ type: Number })
218
+ ], PdRange.prototype, "max", 2);
219
+ __decorateClass([
220
+ property({ type: Number })
221
+ ], PdRange.prototype, "step", 2);
222
+ __decorateClass([
223
+ property({ type: Object })
224
+ ], PdRange.prototype, "optionValueMapper", 2);
225
+ __decorateClass([
226
+ property({ type: String })
227
+ ], PdRange.prototype, "name", 2);
228
+ __decorateClass([
229
+ state()
230
+ ], PdRange.prototype, "_input", 2);
231
+ PdRange = __decorateClass([
232
+ customElement("pd-range")
233
+ ], PdRange);
234
+ export {
235
+ PdRange
236
+ };