@descope/web-components-ui 1.0.79 → 1.0.81

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 (41) hide show
  1. package/dist/cjs/index.cjs.js.map +1 -1
  2. package/dist/index.esm.js +1236 -598
  3. package/dist/index.esm.js.map +1 -1
  4. package/dist/umd/387.js +1 -0
  5. package/dist/umd/988.js +1 -1
  6. package/dist/umd/descope-checkbox-descope-checkbox-internal-index-js.js +1 -0
  7. package/dist/umd/descope-checkbox-index-js.js +1 -1
  8. package/dist/umd/descope-new-password-descope-new-password-internal-index-js.js +1 -0
  9. package/dist/umd/descope-new-password-index-js.js +1 -0
  10. package/dist/umd/descope-passcode-descope-passcode-internal-index-js.js +1 -1
  11. package/dist/umd/descope-password-field-index-js.js +1 -1
  12. package/dist/umd/descope-phone-field-descope-phone-field-internal-index-js.js +1 -1
  13. package/dist/umd/descope-phone-field-index-js.js +1 -1
  14. package/dist/umd/index.js +1 -1
  15. package/package.json +1 -1
  16. package/src/components/descope-checkbox/Checkbox.js +161 -13
  17. package/src/components/descope-checkbox/descope-checkbox-internal/CheckboxInternal.js +63 -0
  18. package/src/components/descope-checkbox/descope-checkbox-internal/index.js +3 -0
  19. package/src/components/descope-checkbox/index.js +3 -3
  20. package/src/components/descope-new-password/NewPassword.js +129 -0
  21. package/src/components/descope-new-password/descope-new-password-internal/NewPasswordInternal.js +189 -0
  22. package/src/components/descope-new-password/descope-new-password-internal/componentName.js +3 -0
  23. package/src/components/descope-new-password/descope-new-password-internal/index.js +4 -0
  24. package/src/components/descope-new-password/index.js +6 -0
  25. package/src/components/descope-passcode/descope-passcode-internal/PasscodeInternal.js +3 -0
  26. package/src/components/descope-password-field/PasswordField.js +37 -36
  27. package/src/components/descope-phone-field/PhoneField.js +3 -2
  28. package/src/components/descope-phone-field/descope-phone-field-internal/PhoneFieldInternal.js +4 -1
  29. package/src/components/descope-switch-toggle/SwitchToggle.js +1 -1
  30. package/src/components/descope-switch-toggle/index.js +1 -1
  31. package/src/helpers/componentHelpers.js +3 -3
  32. package/src/index.js +1 -0
  33. package/src/mixins/createProxy.js +2 -25
  34. package/src/mixins/inputEventsDispatchingMixin.js +15 -15
  35. package/src/mixins/inputValidationMixin.js +6 -2
  36. package/src/mixins/proxyInputMixin.js +6 -36
  37. package/src/theme/components/checkbox.js +71 -1
  38. package/src/theme/components/index.js +3 -1
  39. package/src/theme/components/newPassword.js +48 -0
  40. package/src/theme/components/passwordField.js +55 -3
  41. package/src/theme/components/switchToggle.js +4 -4
@@ -64,21 +64,6 @@ export const proxyInputMixin = (superclass) =>
64
64
  return this.inputElement.validity
65
65
  }
66
66
 
67
- reportValidityOnInternalInput() {
68
- setTimeout(() => {
69
- this.inputElement.focus();
70
- this.inputElement.reportValidity()
71
- })
72
- }
73
-
74
- // we want reportValidity to behave like form submission
75
- reportValidity() {
76
- if (!this.checkValidity()) {
77
- this.setAttribute('invalid', 'true');
78
- this.reportValidityOnInternalInput();
79
- }
80
- }
81
-
82
67
  handleInternalInputErrorMessage() {
83
68
  if (!this.inputElement.checkValidity()) {
84
69
  this.inputElement.setCustomValidity(this.validationMessage)
@@ -120,30 +105,15 @@ export const proxyInputMixin = (superclass) =>
120
105
  }
121
106
  })
122
107
 
123
- this.addEventListener('focus', (e) => {
124
- // when clicking on the form submit button and the input is invalid, we want it to appear as invalid
125
- // this is a best effort, we cannot identify it for sure without listening to the form submission event
126
- // this will also be triggered when the focus is moving from the submit button to the input by pressing TAB key
127
- if (e.relatedTarget?.form && e.relatedTarget?.form === this.form && e.relatedTarget?.nodeName === 'BUTTON') {
128
- if (!this.checkValidity()) {
129
- this.setAttribute('invalid', 'true');
130
- }
131
-
132
- if (this.hasAttribute('invalid')) {
133
- this.reportValidityOnInternalInput()
134
- }
108
+
109
+ this.addEventListener('invalid', () => {
110
+ if (!this.checkValidity()) {
111
+ this.setAttribute('invalid', 'true');
135
112
  }
113
+ this.#handleErrorMessage()
136
114
  })
137
115
 
138
- this.addEventListener('invalid', this.#handleErrorMessage)
139
-
140
- this.handleInternalInputErrorMessage()
141
-
142
- // this is needed in order to make sure the form input validation is working
143
- // we do not want it to happen when the component is nested
144
- if (!this.hasAttribute('tabindex') && this.getRootNode() === document) {
145
- this.setAttribute('tabindex', 0);
146
- }
116
+ this.handleInternalInputErrorMessage();
147
117
 
148
118
  // sync properties
149
119
  propertyObserver(this, this.inputElement, 'value');
@@ -1,10 +1,80 @@
1
+ import globals from '../globals';
2
+ import { getThemeRefs } from '../../helpers/themeHelpers';
1
3
  import Checkbox from '../../components/descope-checkbox/Checkbox';
2
4
 
5
+ const globalRefs = getThemeRefs(globals);
3
6
  const vars = Checkbox.cssVarList;
4
7
 
5
8
  const checkbox = {
9
+ [vars.checkboxBackgroundColor]: globalRefs.colors.surface.main,
10
+
11
+ [vars.labelFontSize]: '12px',
12
+ [vars.labelFontWeight]: '400',
13
+ [vars.labelTextColor]: globalRefs.colors.surface.contrast,
6
14
  [vars.cursor]: 'pointer',
7
- [vars.width]: 'fit-content'
15
+
16
+ [vars.checkboxWidth]: 'calc(1em - 2px)',
17
+ [vars.checkboxHeight]: 'calc(1em - 2px)',
18
+ [vars.labelMargin]: 'calc(1em + 5px)',
19
+
20
+ size: {
21
+ xs: {
22
+ [vars.labelFontSize]: '12px',
23
+ [vars.labelLineHeight]: '1.1em',
24
+ [vars.checkmarkSize]: '18px',
25
+ [vars.checkboxRadius]: globalRefs.radius.sm,
26
+ },
27
+ sm: {
28
+ [vars.labelFontSize]: '14px',
29
+ [vars.labelLineHeight]: '1.2em',
30
+ [vars.checkmarkSize]: '22px',
31
+ [vars.checkboxRadius]: globalRefs.radius.sm,
32
+ },
33
+ md: {
34
+ [vars.labelFontSize]: '16px',
35
+ [vars.labelLineHeight]: '1.35em',
36
+ [vars.checkmarkSize]: '26px',
37
+ [vars.checkboxRadius]: globalRefs.radius.sm,
38
+ },
39
+ lg: {
40
+ [vars.labelFontSize]: '20px',
41
+ [vars.labelLineHeight]: '1.5em',
42
+ [vars.checkmarkSize]: '34px',
43
+ [vars.checkboxRadius]: globalRefs.radius.sm,
44
+ },
45
+ xl: {
46
+ [vars.labelFontSize]: '20px',
47
+ [vars.labelLineHeight]: '1.75em',
48
+ [vars.checkmarkSize]: '38px',
49
+ [vars.checkboxRadius]: globalRefs.radius.sm,
50
+ }
51
+ },
52
+
53
+ _fullWidth: {
54
+ [vars.width]: '100%',
55
+ },
56
+
57
+ _checked: {
58
+ [vars.checkboxBackgroundColor]: globalRefs.colors.primary.main,
59
+ [vars.checkmarkTextColor]: globalRefs.colors.primary.contrast,
60
+ },
61
+
62
+ _disabled: {
63
+ [vars.checkboxBackgroundColor]: globalRefs.colors.surface.main,
64
+ },
65
+
66
+ _focusRing: {
67
+ [vars.checkboxOutlineWidth]: '2px',
68
+ [vars.checkboxOutlineOffset]: '1px',
69
+ [vars.checkboxOutlineColor]: globalRefs.colors.primary.main,
70
+ [vars.checkboxOutlineStyle]: 'solid'
71
+ },
72
+
73
+ _invalid: {
74
+ [vars.checkboxOutlineColor]: globalRefs.colors.error.main,
75
+ [vars.labelTextColor]: globalRefs.colors.error.main
76
+ },
77
+
8
78
  };
9
79
 
10
80
  export default checkbox;
@@ -16,6 +16,7 @@ import { loaderRadial, loaderLinear } from './loader';
16
16
  import comboBox from './comboBox';
17
17
  import image from './image';
18
18
  import phoneField from './phoneField';
19
+ import newPassword from './newPassword';
19
20
 
20
21
  export default {
21
22
  button,
@@ -36,5 +37,6 @@ export default {
36
37
  loaderLinear,
37
38
  comboBox,
38
39
  image,
39
- phoneField
40
+ phoneField,
41
+ newPassword,
40
42
  };
@@ -0,0 +1,48 @@
1
+ import globals from '../globals';
2
+ import { getThemeRefs } from '../../helpers/themeHelpers';
3
+ import NewPassword from '../../components/descope-new-password/NewPassword';
4
+
5
+ const globalRefs = getThemeRefs(globals);
6
+
7
+ const vars = NewPassword.cssVarList;
8
+
9
+ const newPassword = {
10
+ _required: {
11
+ [vars.requiredContent]: "'*'",
12
+ },
13
+
14
+ [vars.inputLabelTextColor]: globalRefs.colors.surface.contrast,
15
+ [vars.inputTextColor]: globalRefs.colors.surface.contrast,
16
+ [vars.placeholderTextColor]: globalRefs.colors.surface.main,
17
+ [vars.inputsGap]: '1em',
18
+
19
+ size: {
20
+ xs: {
21
+ [vars.fieldsMargin]: '0',
22
+ },
23
+ sm: {
24
+ [vars.fieldsMargin]: '0',
25
+ },
26
+ md: {
27
+ [vars.fieldsMargin]: '0.5em',
28
+ },
29
+ lg: {
30
+ [vars.fieldsMargin]: '1em',
31
+ },
32
+ xl: {
33
+ [vars.fieldsMargin]: '2em',
34
+ },
35
+ },
36
+
37
+ _fullWidth: {
38
+ [vars.componentWidth]: '100%'
39
+ },
40
+
41
+ _invalid: {
42
+ [vars.inputLabelTextColor]: globalRefs.colors.error.main,
43
+ [vars.inputTextColor]: globalRefs.colors.error.main,
44
+ [vars.placeholderTextColor]: globalRefs.colors.error.light,
45
+ }
46
+ };
47
+
48
+ export default newPassword;
@@ -1,11 +1,63 @@
1
1
  import PasswordField from '../../components/descope-password-field/PasswordField';
2
- import { textField } from './textField';
2
+ import globals from '../globals';
3
+ import { getThemeRefs } from '../../helpers/themeHelpers';
4
+
5
+ const globalRefs = getThemeRefs(globals);
3
6
 
4
7
  const vars = PasswordField.cssVarList;
5
8
 
6
9
  const passwordField = {
7
- ...textField(vars),
8
- [vars.revealCursor]: 'pointer'
10
+ [vars.wrapperBorderStyle]: 'solid',
11
+ [vars.wrapperBorderWidth]: '1px',
12
+ [vars.wrapperBorderColor]: 'transparent',
13
+ [vars.wrapperBorderRadius]: globalRefs.radius.sm,
14
+
15
+ [vars.labelTextColor]: globalRefs.colors.surface.contrast,
16
+ [vars.inputTextColor]: globalRefs.colors.surface.contrast,
17
+ [vars.placeholderTextColor]: globalRefs.colors.surface.main,
18
+
19
+ [vars.pointerCursor]: 'pointer',
20
+
21
+ [vars.padding]: `0`,
22
+
23
+ size: {
24
+ xs: {
25
+ [vars.height]: '14px',
26
+ [vars.fontSize]: '8px',
27
+ },
28
+ sm: {
29
+ [vars.height]: '20px',
30
+ [vars.fontSize]: '10px',
31
+ },
32
+ md: {
33
+ [vars.height]: '30px',
34
+ [vars.fontSize]: '14px',
35
+ },
36
+ lg: {
37
+ [vars.height]: '40px',
38
+ [vars.fontSize]: '20px',
39
+ },
40
+ xl: {
41
+ [vars.height]: '50px',
42
+ [vars.fontSize]: '25px',
43
+ }
44
+ },
45
+
46
+ _bordered: {
47
+ [vars.padding]: `0 0.5em`,
48
+ [vars.wrapperBorderColor]: globalRefs.colors.surface.main
49
+ },
50
+
51
+ _fullWidth: {
52
+ [vars.width]: '100%'
53
+ },
54
+
55
+ _invalid: {
56
+ [vars.labelTextColor]: globalRefs.colors.error.main,
57
+ [vars.inputTextColor]: globalRefs.colors.error.main,
58
+ [vars.placeholderTextColor]: globalRefs.colors.error.light,
59
+ [vars.wrapperBorderColor]: globalRefs.colors.error.main
60
+ },
9
61
  };
10
62
 
11
63
  export default passwordField;
@@ -2,9 +2,9 @@ import SwitchToggle from '../../components/descope-switch-toggle/SwitchToggle';
2
2
 
3
3
  const vars = SwitchToggle.cssVarList;
4
4
 
5
- const swtichToggle = {
6
- [vars.width]: '70px',
7
- [vars.cursor]: [{}, { selector: '> label' }]
5
+ const switchToggle = {
6
+ [vars.width]: '70px',
7
+ [vars.cursor]: [{}, { selector: '> label' }]
8
8
  };
9
9
 
10
- export default swtichToggle;
10
+ export default switchToggle;