@descope/web-components-ui 1.0.38 → 1.0.40

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. package/dist/cjs/index.cjs.js.map +1 -1
  2. package/dist/index.esm.js +816 -224
  3. package/dist/index.esm.js.map +1 -1
  4. package/dist/umd/101.js +148 -0
  5. package/dist/umd/208.js +2 -0
  6. package/dist/umd/208.js.LICENSE.txt +5 -0
  7. package/dist/umd/211.js +312 -0
  8. package/dist/umd/211.js.LICENSE.txt +5 -0
  9. package/dist/umd/233.js +573 -0
  10. package/dist/umd/{511.js.LICENSE.txt → 233.js.LICENSE.txt} +0 -6
  11. package/dist/umd/422.js +2 -0
  12. package/dist/umd/422.js.LICENSE.txt +5 -0
  13. package/dist/umd/437.js +19 -0
  14. package/dist/umd/437.js.LICENSE.txt +5 -0
  15. package/dist/umd/513.js +1 -0
  16. package/dist/umd/515.js +202 -0
  17. package/dist/umd/515.js.LICENSE.txt +11 -0
  18. package/dist/umd/54.js +4 -4
  19. package/dist/umd/56.js +48 -0
  20. package/dist/umd/56.js.LICENSE.txt +5 -0
  21. package/dist/umd/599.js +1 -1
  22. package/dist/umd/63.js +1 -0
  23. package/dist/umd/725.js +37 -0
  24. package/dist/umd/725.js.LICENSE.txt +11 -0
  25. package/dist/umd/729.js +1 -1
  26. package/dist/umd/767.js +2 -0
  27. package/dist/umd/{9.js.LICENSE.txt → 767.js.LICENSE.txt} +0 -6
  28. package/dist/umd/786.js +2 -0
  29. package/dist/umd/786.js.LICENSE.txt +17 -0
  30. package/dist/umd/789.js +1 -0
  31. package/dist/umd/806.js +109 -0
  32. package/dist/umd/806.js.LICENSE.txt +5 -0
  33. package/dist/umd/938.js +1 -0
  34. package/dist/umd/97.js +1 -1
  35. package/dist/umd/descope-button-index-js.js +1 -1
  36. package/dist/umd/descope-checkbox-index-js.js +1 -0
  37. package/dist/umd/descope-combo-index-js.js +1 -1
  38. package/dist/umd/descope-container-index-js.js +1 -1
  39. package/dist/umd/descope-email-field-index-js.js +1 -0
  40. package/dist/umd/descope-number-field-index-js.js +1 -0
  41. package/dist/umd/descope-password-field-index-js.js +1 -0
  42. package/dist/umd/descope-switch-toggle-index-js.js +1 -0
  43. package/dist/umd/descope-text-area-index-js.js +1 -0
  44. package/dist/umd/descope-text-field-index-js.js +1 -1
  45. package/dist/umd/index.js +1 -1
  46. package/package.json +9 -2
  47. package/src/components/descope-button/Button.js +90 -30
  48. package/src/components/descope-checkbox/Checkbox.js +33 -0
  49. package/src/components/descope-checkbox/index.js +6 -0
  50. package/src/components/descope-email-field/EmailField.js +72 -0
  51. package/src/components/descope-email-field/index.js +6 -0
  52. package/src/components/descope-number-field/NumberField.js +72 -0
  53. package/src/components/descope-number-field/index.js +6 -0
  54. package/src/components/descope-password-field/PasswordField.js +79 -0
  55. package/src/components/descope-password-field/index.js +6 -0
  56. package/src/components/descope-switch-toggle/SwitchToggle.js +81 -0
  57. package/src/components/descope-switch-toggle/index.js +6 -0
  58. package/src/components/descope-text-area/TextArea.js +66 -0
  59. package/src/components/descope-text-area/index.js +6 -0
  60. package/src/components/descope-text-field/TextField.js +98 -28
  61. package/src/componentsHelpers/createProxy/index.js +27 -17
  62. package/src/componentsHelpers/createStyleMixin/index.js +1 -1
  63. package/src/componentsHelpers/index.js +12 -9
  64. package/src/componentsHelpers/inputMixin.js +38 -37
  65. package/src/index.js +11 -3
  66. package/src/theme/components/button.js +45 -34
  67. package/src/theme/components/checkbox.js +9 -0
  68. package/src/theme/components/container.js +32 -27
  69. package/src/theme/components/emailField.js +8 -0
  70. package/src/theme/components/index.js +19 -7
  71. package/src/theme/components/input.js +106 -0
  72. package/src/theme/components/numberField.js +8 -0
  73. package/src/theme/components/passwordField.js +11 -0
  74. package/src/theme/components/switchToggle.js +10 -0
  75. package/src/theme/components/textArea.js +44 -0
  76. package/src/theme/components/textField.js +69 -45
  77. package/src/theme/globals.js +8 -7
  78. package/dist/umd/221.js +0 -37
  79. package/dist/umd/511.js +0 -573
  80. package/dist/umd/9.js +0 -312
  81. /package/dist/umd/{221.js.LICENSE.txt → 101.js.LICENSE.txt} +0 -0
@@ -0,0 +1,72 @@
1
+ import {
2
+ getComponentName,
3
+ createStyleMixin,
4
+ draggableMixin,
5
+ createProxy,
6
+ inputMixin,
7
+ compose,
8
+ componentNameValidationMixin
9
+ } from '../../componentsHelpers';
10
+ import { textFieldMappings } from '../descope-text-field/TextField';
11
+
12
+ export const componentName = getComponentName('number-field');
13
+
14
+ let overrides = ``;
15
+
16
+ const NumberField = compose(
17
+ createStyleMixin({
18
+ mappings: {
19
+ ...textFieldMappings
20
+ }
21
+ }),
22
+ draggableMixin,
23
+ inputMixin,
24
+ componentNameValidationMixin
25
+ )(
26
+ createProxy({
27
+ slots: ['prefix', 'suffix'],
28
+ wrappedEleName: 'vaadin-number-field',
29
+ style: () => overrides,
30
+ excludeAttrsSync: ['tabindex'],
31
+ componentName
32
+ })
33
+ );
34
+
35
+ overrides = `
36
+ vaadin-number-field {
37
+ margin: 0;
38
+ padding: 0;
39
+ }
40
+ vaadin-number-field::part(input-field) {
41
+ overflow: hidden;
42
+ }
43
+ vaadin-number-field[readonly] > input:placeholder-shown {
44
+ opacity: 1;
45
+ }
46
+ vaadin-number-field input:-webkit-autofill,
47
+ vaadin-number-field input:-webkit-autofill::first-line,
48
+ vaadin-number-field input:-webkit-autofill:hover,
49
+ vaadin-number-field input:-webkit-autofill:active,
50
+ vaadin-number-field input:-webkit-autofill:focus {
51
+ -webkit-text-fill-color: var(${NumberField.cssVarList.color});
52
+ box-shadow: 0 0 0 var(${NumberField.cssVarList.height}) var(${NumberField.cssVarList.backgroundColor}) inset;
53
+ }
54
+ vaadin-number-field > label,
55
+ vaadin-number-field::part(input-field) {
56
+ cursor: pointer;
57
+ color: var(${NumberField.cssVarList.color});
58
+ }
59
+ vaadin-number-field::part(input-field):focus {
60
+ cursor: text;
61
+ }
62
+ vaadin-number-field[required]::part(required-indicator)::after {
63
+ font-size: "12px";
64
+ content: "*";
65
+ color: var(${NumberField.cssVarList.color});
66
+ }
67
+ vaadin-number-field[readonly]::part(input-field)::after {
68
+ border: 0 solid;
69
+ }
70
+ `;
71
+
72
+ export default NumberField;
@@ -0,0 +1,6 @@
1
+ import "@vaadin/number-field";
2
+ import NumberField, { componentName } from "./NumberField";
3
+
4
+ customElements.define(componentName, NumberField);
5
+
6
+ export { NumberField };
@@ -0,0 +1,79 @@
1
+ import {
2
+ getComponentName,
3
+ createStyleMixin,
4
+ draggableMixin,
5
+ createProxy,
6
+ inputMixin,
7
+ compose,
8
+ componentNameValidationMixin
9
+ } from '../../componentsHelpers';
10
+ import { textFieldMappings } from '../descope-text-field/TextField';
11
+
12
+ export const componentName = getComponentName('password-field');
13
+
14
+ let overrides = ``;
15
+
16
+ const PasswordField = compose(
17
+ createStyleMixin({
18
+ mappings: {
19
+ ...textFieldMappings,
20
+ // todo: override cursor from lumo
21
+ revealCursor: [
22
+ {
23
+ selector: '::part(reveal-button)::before',
24
+ property: 'cursor'
25
+ }
26
+ ]
27
+ }
28
+ }),
29
+ draggableMixin,
30
+ inputMixin,
31
+ componentNameValidationMixin
32
+ )(
33
+ createProxy({
34
+ slots: ['suffix'],
35
+ wrappedEleName: 'vaadin-password-field',
36
+ style: () => overrides,
37
+ excludeAttrsSync: ['tabindex'],
38
+ componentName
39
+ })
40
+ );
41
+
42
+ overrides = `
43
+ vaadin-password-field {
44
+ margin: 0;
45
+ padding: 0;
46
+ }
47
+ vaadin-password-field::part(input-field) {
48
+ overflow: hidden;
49
+ }
50
+ vaadin-password-field[readonly] > input:placeholder-shown {
51
+ opacity: 1;
52
+ }
53
+ vaadin-password-field input:-webkit-autofill,
54
+ vaadin-password-field input:-webkit-autofill::first-line,
55
+ vaadin-password-field input:-webkit-autofill:hover,
56
+ vaadin-password-field input:-webkit-autofill:active,
57
+ vaadin-password-field input:-webkit-autofill:focus {
58
+ -webkit-text-fill-color: var(${PasswordField.cssVarList.color});
59
+ box-shadow: 0 0 0 var(${PasswordField.cssVarList.height}) var(${PasswordField.cssVarList.backgroundColor}) inset;
60
+ }
61
+ vaadin-password-field > label,
62
+ vaadin-password-field::part(input-field) {
63
+ cursor: pointer;
64
+ color: var(${PasswordField.cssVarList.color});
65
+ }
66
+ vaadin-password-field::part(input-field):focus {
67
+ cursor: text;
68
+ }
69
+ vaadin-password-field[required]::part(required-indicator)::after {
70
+ font-size: "12px";
71
+ content: "*";
72
+ color: var(${PasswordField.cssVarList.color});
73
+ }
74
+ vaadin-password-field[readonly]::part(input-field)::after {
75
+ border: 0 solid;
76
+ }
77
+ `;
78
+
79
+ export default PasswordField;
@@ -0,0 +1,6 @@
1
+ import "@vaadin/password-field";
2
+ import PasswordField, { componentName } from "./PasswordField";
3
+
4
+ customElements.define(componentName, PasswordField);
5
+
6
+ export { PasswordField };
@@ -0,0 +1,81 @@
1
+ import {
2
+ getComponentName,
3
+ createStyleMixin,
4
+ draggableMixin,
5
+ createProxy,
6
+ inputMixin,
7
+ compose,
8
+ componentNameValidationMixin
9
+ } from '../../componentsHelpers';
10
+
11
+ export const componentName = getComponentName('switch-toggle');
12
+
13
+ let overrides = ``;
14
+
15
+ const SwitchToggle = compose(
16
+ createStyleMixin({
17
+ mappings: {
18
+ width: {},
19
+ cursor: [{}, { selector: '> label' }]
20
+ }
21
+ }),
22
+ draggableMixin,
23
+ inputMixin,
24
+ componentNameValidationMixin
25
+ )(
26
+ createProxy({
27
+ slots: [],
28
+ wrappedEleName: 'vaadin-checkbox',
29
+ style: () => overrides,
30
+ excludeAttrsSync: ['tabindex'],
31
+ componentName
32
+ })
33
+ );
34
+
35
+ overrides = `
36
+ :host {
37
+ --margin: 7px;
38
+ --width: var(${SwitchToggle.cssVarList.width});
39
+ --height: calc(var(--width) / 2);
40
+ --radius: var(--height);
41
+ --knobSize: calc(var(--height) - 5px);
42
+ --bgColor: #fff;
43
+ --knobBgColor: #000;
44
+ }
45
+ vaadin-checkbox>label {
46
+ cursor: pointer;
47
+ border: 1px solid;
48
+ text-indent: -99999px;
49
+ display: block;
50
+ position: relative;
51
+ width: var(--width);
52
+ height: var(--height);
53
+ background: var(--bgColor);
54
+ border-radius: var(--radius);
55
+ }
56
+ vaadin-checkbox>label::after {
57
+ content: '';
58
+ position: absolute;
59
+ transition: 0.3s;
60
+ top: var(--margin);
61
+ left: var(--margin);
62
+ width: var(--knobSize);
63
+ height: var(--knobSize);
64
+ background: var(--knobBgColor);
65
+ border-radius: var(--knobSize);
66
+ }
67
+ vaadin-checkbox::part(checkbox) {
68
+ height: 0;
69
+ width: 0;
70
+ visibility: hidden;
71
+ }
72
+ vaadin-checkbox[checked]>label::after {
73
+ transform: translateX(-100%);
74
+ left: calc(100% - var(--margin));
75
+ }
76
+ vaadin-checkbox[active]>label::after {
77
+ width: calc(var(--knobSize) + 15px);
78
+ }
79
+ `;
80
+
81
+ export default SwitchToggle;
@@ -0,0 +1,6 @@
1
+ import "@vaadin/checkbox";
2
+ import SwitchToggle, { componentName } from "./SwitchToggle";
3
+
4
+ customElements.define(componentName, SwitchToggle);
5
+
6
+ export { SwitchToggle };
@@ -0,0 +1,66 @@
1
+ import {
2
+ getComponentName,
3
+ createStyleMixin,
4
+ draggableMixin,
5
+ createProxy,
6
+ inputMixin,
7
+ compose,
8
+ componentNameValidationMixin
9
+ } from '../../componentsHelpers';
10
+
11
+ export const componentName = getComponentName('text-area');
12
+
13
+ const selectors = {
14
+ label: '::part(label)',
15
+ input: ':not([disabled])::part(input-field)',
16
+ required: '::part(required-indicator)::after'
17
+ };
18
+
19
+ let overrides = ``;
20
+
21
+ const TextArea = compose(
22
+ createStyleMixin({
23
+ mappings: {
24
+ resize: { selector: '> textarea' },
25
+ color: { selector: selectors.label },
26
+ cursor: {},
27
+ width: {},
28
+ backgroundColor: { selector: selectors.input },
29
+ borderWidth: { selector: selectors.input },
30
+ borderStyle: { selector: selectors.input },
31
+ borderColor: { selector: selectors.input },
32
+ borderRadius: { selector: selectors.input },
33
+ outline: { selector: selectors.input },
34
+ outlineOffset: { selector: selectors.input }
35
+ }
36
+ }),
37
+ draggableMixin,
38
+ inputMixin,
39
+ componentNameValidationMixin
40
+ )(
41
+ createProxy({
42
+ slots: [],
43
+ wrappedEleName: 'vaadin-text-area',
44
+ style: () => overrides,
45
+ excludeAttrsSync: ['tabindex'],
46
+ componentName
47
+ })
48
+ );
49
+
50
+ overrides = `
51
+ vaadin-text-area {
52
+ margin: 0;
53
+ }
54
+ vaadin-text-area > label,
55
+ vaadin-text-area::part(input-field) {
56
+ cursor: pointer;
57
+ }
58
+ vaadin-text-area[focused] input:focus {
59
+ cursor: text;
60
+ }
61
+ vaadin-text-area::part(required-indicator)::after {
62
+ font-size: "12px";
63
+ content: "*";
64
+ }
65
+ `;
66
+ export default TextArea;
@@ -0,0 +1,6 @@
1
+ import "@vaadin/text-area";
2
+ import TextArea, { componentName } from "./TextArea";
3
+
4
+ customElements.define(componentName, TextArea);
5
+
6
+ export { TextArea };
@@ -1,35 +1,105 @@
1
- import { getComponentName, createStyleMixin, draggableMixin, createProxy, inputMixin, compose, componentNameValidationMixin } from "../../componentsHelpers";
1
+ import {
2
+ getComponentName,
3
+ createStyleMixin,
4
+ draggableMixin,
5
+ createProxy,
6
+ inputMixin,
7
+ compose,
8
+ componentNameValidationMixin
9
+ } from '../../componentsHelpers';
10
+ import { matchHostStyle } from '../../componentsHelpers/createStyleMixin/helpers';
2
11
 
3
- export const componentName = getComponentName("text-field")
12
+ export const componentName = getComponentName('text-field');
13
+
14
+ const selectors = {
15
+ label: '::part(label)',
16
+ input: '::part(input-field)',
17
+ readOnlyInput: '[readonly]::part(input-field)::after',
18
+ placeholder: '> input:placeholder-shown'
19
+ };
20
+
21
+ let overrides = ``;
22
+
23
+ export const textFieldMappings = {
24
+ color: { selector: selectors.input },
25
+ backgroundColor: { selector: selectors.input },
26
+ width: [matchHostStyle()],
27
+ color: { selector: selectors.input },
28
+ borderColor: [
29
+ { selector: selectors.input },
30
+ { selector: selectors.readOnlyInput }
31
+ ],
32
+ borderWidth: [
33
+ { selector: selectors.input },
34
+ { selector: selectors.readOnlyInput }
35
+ ],
36
+ borderStyle: [
37
+ { selector: selectors.input },
38
+ { selector: selectors.readOnlyInput }
39
+ ],
40
+ borderRadius: { selector: selectors.input },
41
+ boxShadow: { selector: selectors.input },
42
+ fontSize: {},
43
+ height: { selector: selectors.input },
44
+ padding: { selector: selectors.input },
45
+ outline: { selector: selectors.input },
46
+ outlineOffset: { selector: selectors.input },
47
+
48
+ placeholderColor: { selector: selectors.placeholder, property: 'color' }
49
+ };
4
50
 
5
51
  const TextField = compose(
6
- createStyleMixin({
7
- mappings: {
8
- 'placeholderColor': { selector: '> input:placeholder-shown', property: 'color' },
9
- 'color': {},
10
- 'borderColor': { selector: '::part(input-field)' },
11
- 'borderWidth': { selector: '::part(input-field)' },
12
- 'borderStyle': { selector: '::part(input-field)' },
13
- 'borderRadius': { selector: '::part(input-field)' },
14
- 'boxShadow': { selector: '::part(input-field)' },
15
- 'height': { selector: '::part(input-field)' },
16
- 'padding': { selector: '::part(input-field)' },
17
- 'backgroundColor': { selector: '::part(input-field)' },
18
- 'labelColor': { selector: '::part(label)', property: 'color' },
19
- },
20
- }),
21
- draggableMixin,
22
- inputMixin,
23
- componentNameValidationMixin
52
+ createStyleMixin({
53
+ mappings: textFieldMappings
54
+ }),
55
+ draggableMixin,
56
+ inputMixin,
57
+ componentNameValidationMixin
24
58
  )(
25
- createProxy({
26
- slots: ["prefix", "suffix"],
27
- wrappedEleName: "vaadin-text-field",
28
- style: ``,
29
- excludeAttrsSync: ['tabindex'],
30
- componentName
31
- })
59
+ createProxy({
60
+ slots: ['prefix', 'suffix'],
61
+ wrappedEleName: 'vaadin-text-field',
62
+ style: () => overrides,
63
+ excludeAttrsSync: ['tabindex'],
64
+ componentName
65
+ })
32
66
  );
33
67
 
68
+ overrides = `
69
+ vaadin-text-field {
70
+ margin: 0;
71
+ padding: 0;
72
+ }
73
+ vaadin-text-field::part(input-field) {
74
+ overflow: hidden;
75
+ }
76
+ vaadin-text-field[readonly] > input:placeholder-shown {
77
+ opacity: 1;
78
+ }
79
+ vaadin-text-field input:-webkit-autofill,
80
+ vaadin-text-field input:-webkit-autofill::first-line,
81
+ vaadin-text-field input:-webkit-autofill:hover,
82
+ vaadin-text-field input:-webkit-autofill:active,
83
+ vaadin-text-field input:-webkit-autofill:focus {
84
+ -webkit-text-fill-color: var(${TextField.cssVarList.color});
85
+ box-shadow: 0 0 0 var(${TextField.cssVarList.height}) var(${TextField.cssVarList.backgroundColor}) inset;
86
+ }
87
+ vaadin-text-field > label,
88
+ vaadin-text-field::part(input-field) {
89
+ cursor: pointer;
90
+ color: var(${TextField.cssVarList.color});
91
+ }
92
+ vaadin-text-field::part(input-field):focus {
93
+ cursor: text;
94
+ }
95
+ vaadin-text-field[required]::part(required-indicator)::after {
96
+ font-size: "12px";
97
+ content: "*";
98
+ color: var(${TextField.cssVarList.color});
99
+ }
100
+ vaadin-text-field[readonly]::part(input-field)::after {
101
+ border: 0 solid;
102
+ }
103
+ `;
34
104
 
35
- export default TextField
105
+ export default TextField;
@@ -1,12 +1,17 @@
1
- import { syncAttrs } from "./helpers";
2
-
3
- export const createProxy = ({ componentName, wrappedEleName, slots = [], style, excludeAttrsSync = [] }) => {
1
+ import { syncAttrs } from './helpers';
4
2
 
3
+ export const createProxy = ({
4
+ componentName,
5
+ wrappedEleName,
6
+ slots = [],
7
+ style,
8
+ excludeAttrsSync = []
9
+ }) => {
5
10
  const template = `
6
- ${style ? `<style id="create-proxy">${style}</style>` : ''}
11
+ <style id="create-proxy"></style>
7
12
  <${wrappedEleName}>
8
13
  <slot></slot>
9
- ${slots.map((slot) => `<slot name="${slot}" slot="${slot}"></slot>`).join("")}
14
+ ${slots.map((slot) => `<slot name="${slot}" slot="${slot}"></slot>`).join('')}
10
15
  </${wrappedEleName}>
11
16
  `;
12
17
 
@@ -16,21 +21,23 @@ export const createProxy = ({ componentName, wrappedEleName, slots = [], style,
16
21
  }
17
22
 
18
23
  constructor() {
19
- super().attachShadow({ mode: "open" }).innerHTML = template;
24
+ super().attachShadow({ mode: 'open' }).innerHTML = template;
20
25
  this.hostElement = this.shadowRoot.host;
21
- this.componentName = this.hostElement.tagName.toLowerCase()
22
- this.baseSelector = wrappedEleName
26
+ this.componentName = this.hostElement.tagName.toLowerCase();
27
+ this.baseSelector = wrappedEleName;
28
+ this.shadowRoot.getElementById('create-proxy').innerHTML =
29
+ typeof style === 'function' ? style() : style;
23
30
  }
24
31
 
25
32
  connectedCallback() {
26
33
  if (this.shadowRoot.isConnected) {
27
34
  this.proxyElement = this.shadowRoot.querySelector(wrappedEleName);
28
35
  this.setAttribute('tabindex', '0');
29
-
36
+
30
37
  // we want to focus on the proxy element when focusing our WC
31
38
  this.onfocus = (e) => {
32
- this.proxyElement.focus()
33
- }
39
+ this.proxyElement.focus();
40
+ };
34
41
 
35
42
  // `onkeydown` is set on `proxyElement` support proper tab-index navigation
36
43
  // this support is needed since both proxy host and element catch `focus`/`blur` event
@@ -40,15 +47,18 @@ export const createProxy = ({ componentName, wrappedEleName, slots = [], style,
40
47
  this.removeAttribute('tabindex');
41
48
  // We want to defer the action of setting the tab index back
42
49
  // so it will happen after focusing the previous element
43
- setTimeout(() => this.setAttribute('tabindex', '0'), 0)
50
+ setTimeout(() => this.setAttribute('tabindex', '0'), 0);
44
51
  }
45
- }
52
+ };
46
53
 
47
54
  this.mouseoverCbRef = () => {
48
55
  this.proxyElement.setAttribute('hover', '');
49
- this.proxyElement.addEventListener('mouseleave', () =>
50
- this.proxyElement.removeAttribute('hover'), { once: true })
51
- }
56
+ this.proxyElement.addEventListener(
57
+ 'mouseleave',
58
+ () => this.proxyElement.removeAttribute('hover'),
59
+ { once: true }
60
+ );
61
+ };
52
62
 
53
63
  this.proxyElement.addEventListener('mouseover', this.mouseoverCbRef);
54
64
 
@@ -60,7 +70,7 @@ export const createProxy = ({ componentName, wrappedEleName, slots = [], style,
60
70
  }
61
71
 
62
72
  disconnectedCallback() {
63
- this.proxyElement.removeEventListener('mouseover', this.mouseoverCbRef)
73
+ this.proxyElement.removeEventListener('mouseover', this.mouseoverCbRef);
64
74
  }
65
75
 
66
76
  attributeChangedCallback() {
@@ -43,7 +43,7 @@ export const createStyleMixin = ({ mappings = {} }) => (superclass) => {
43
43
  #createComponentStyle() {
44
44
  const themeStyle = document.createElement('style');
45
45
  themeStyle.id = 'style-mixin-component'
46
- themeStyle.innerHTML = createStyle(superclass.componentName, baseSelector, mappings)
46
+ themeStyle.innerHTML = createStyle(superclass.componentName, this.baseSelector, mappings)
47
47
  this.shadowRoot.prepend(themeStyle);
48
48
  }
49
49
 
@@ -1,12 +1,15 @@
1
- import { DESCOPE_PREFIX } from "../constants";
2
- import { kebabCaseJoin } from "../helpers";
1
+ import { DESCOPE_PREFIX } from '../constants';
2
+ import { kebabCaseJoin } from '../helpers';
3
3
 
4
- export const getComponentName = (name) => kebabCaseJoin(DESCOPE_PREFIX, name)
4
+ export const getComponentName = (name) => kebabCaseJoin(DESCOPE_PREFIX, name);
5
5
 
6
- export const compose = (...fns) => (val) => fns.reduceRight((res, fn) => fn(res), val);
6
+ export const compose =
7
+ (...fns) =>
8
+ (val) =>
9
+ fns.reduceRight((res, fn) => fn(res), val);
7
10
 
8
- export { createStyleMixin } from './createStyleMixin'
9
- export { draggableMixin } from './draggableMixin'
10
- export { createProxy } from './createProxy'
11
- export { inputMixin } from './inputMixin'
12
- export { componentNameValidationMixin } from './componentNameValidationMixin'
11
+ export { createStyleMixin } from './createStyleMixin';
12
+ export { draggableMixin } from './draggableMixin';
13
+ export { createProxy } from './createProxy';
14
+ export { inputMixin } from './inputMixin';
15
+ export { componentNameValidationMixin } from './componentNameValidationMixin';
@@ -1,46 +1,47 @@
1
1
  export const inputMixin = (superclass) =>
2
- class InputMixinClass extends superclass {
2
+ class InputMixinClass extends superclass {
3
3
  static get formAssociated() {
4
4
  return true;
5
5
  }
6
-
7
- #internals
8
6
 
9
- constructor() {
10
- super();
7
+ #internals;
11
8
 
12
- this.#internals = this.attachInternals();
9
+ constructor() {
10
+ super();
13
11
 
14
- // this is needed in order to make sure the form input validation is working
15
- if (!this.hasAttribute('tabindex')) {
16
- this.setAttribute('tabindex', 0);
17
- }
18
- }
19
-
20
- formAssociatedCallback() {
21
- this.setValidity?.();
22
- }
23
-
24
- connectedCallback() {
25
- super.connectedCallback?.();
26
-
27
- // vaadin does not expose all those validation attributes so we need to take it from the input
28
- // https://github.com/vaadin/web-components/issues/1177
29
- const input = this.proxyElement.querySelector('input')
30
- if (!input) throw Error('no input was found')
31
-
32
- this.checkValidity = () => input.checkValidity()
33
- this.reportValidity = () => input.reportValidity()
34
- this.validity = input.validity
35
-
36
- this.setValidity = () => {
37
- this.#internals.setValidity(input.validity, input.validationMessage);
38
- }
12
+ this.#internals = this.attachInternals();
13
+ }
39
14
 
40
- input.oninput = () => {
41
- this.value = input.value
42
- this.setValidity()
43
- }
15
+ formAssociatedCallback() {
16
+ this.setValidity?.();
17
+ }
44
18
 
45
- }
46
- }
19
+ connectedCallback() {
20
+ super.connectedCallback?.();
21
+
22
+ // this is needed in order to make sure the form input validation is working
23
+ if (!this.hasAttribute('tabindex')) {
24
+ this.setAttribute('tabindex', 0);
25
+ }
26
+
27
+ // vaadin does not expose all those validation attributes so we need to take it from the input
28
+ // https://github.com/vaadin/web-components/issues/1177
29
+ const input =
30
+ this.proxyElement.querySelector('input') ||
31
+ this.proxyElement.querySelector('textarea');
32
+ if (!input) throw Error('no input was found');
33
+
34
+ this.checkValidity = () => input.checkValidity();
35
+ this.reportValidity = () => input.reportValidity();
36
+ this.validity = input.validity;
37
+
38
+ this.setValidity = () => {
39
+ this.#internals.setValidity(input.validity, input.validationMessage);
40
+ };
41
+
42
+ input.oninput = () => {
43
+ this.value = input.value;
44
+ this.setValidity();
45
+ };
46
+ }
47
+ };
package/src/index.js CHANGED
@@ -1,9 +1,17 @@
1
1
  import "./components/descope-button";
2
2
  import "./components/descope-combo";
3
3
  import "./components/descope-text-field";
4
+ import "./components/descope-number-field";
5
+ import "./components/descope-email-field";
6
+ import "./components/descope-password-field";
7
+ import "./components/descope-text-area";
4
8
  import "./components/descope-date-picker";
5
9
  import "./components/descope-container";
6
10
 
7
- export { globalsThemeToStyle, componentsThemeToStyle, themeToStyle } from './themeHelpers'
8
- export { genColor } from './themeHelpers/processColors'
9
- export { default as defaultTheme } from './theme'
11
+ export {
12
+ globalsThemeToStyle,
13
+ componentsThemeToStyle,
14
+ themeToStyle,
15
+ } from "./themeHelpers";
16
+ export { genColor } from "./themeHelpers/processColors";
17
+ export { default as defaultTheme } from "./theme";