@descope/web-components-ui 1.0.79 → 1.0.81

Sign up to get free protection for your applications and to get access to all the features.
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;