@descope/web-components-ui 1.0.51 → 1.0.52

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.
package/dist/index.esm.js CHANGED
@@ -108,80 +108,111 @@ const matchHostStyle = (mappingObj = {}) => [
108
108
  ];
109
109
 
110
110
  const createStyleMixin =
111
- ({ mappings = {} }) =>
112
- (superclass) => {
113
- const styleAttributes = Object.keys(mappings).map((key) =>
114
- kebabCaseJoin('st', key)
115
- );
116
- return class CustomStyleMixinClass extends superclass {
117
- static get observedAttributes() {
118
- const superAttrs = superclass.observedAttributes || [];
119
- return [...superAttrs, ...styleAttributes];
120
- }
111
+ ({ mappings = {}, nestedMappings = {} }) =>
112
+ (superclass) => {
113
+ const styleAttributes = Object.keys(mappings).map((key) =>
114
+ kebabCaseJoin('st', key)
115
+ );
116
+ return class CustomStyleMixinClass extends superclass {
117
+ static get observedAttributes() {
118
+ const superAttrs = superclass.observedAttributes || [];
119
+ return [...superAttrs, ...styleAttributes];
120
+ }
121
121
 
122
- static get cssVarList() {
123
- return createCssVarsList(superclass.componentName, mappings);
124
- }
122
+ static get cssVarList() {
123
+ return createCssVarsList(superclass.componentName, mappings);
124
+ }
125
125
 
126
- #styleEle = null;
126
+ #styleEle = null;
127
127
 
128
- constructor() {
129
- super();
128
+ constructor() {
129
+ super();
130
130
 
131
- this.#createComponentStyle();
132
- this.#createAttrOverrideStyle();
133
- }
131
+ this.#createComponentStyle();
132
+ this.#createAttrOverrideStyle();
133
+ }
134
134
 
135
- #createAttrOverrideStyle() {
136
- this.#styleEle = document.createElement('style');
137
- this.#styleEle.id = 'style-mixin-overrides';
135
+ #createAttrOverrideStyle() {
136
+ this.#styleEle = document.createElement('style');
137
+ this.#styleEle.id = 'style-mixin-overrides';
138
138
 
139
- this.#styleEle.innerText = '* {}';
140
- this.shadowRoot.prepend(this.#styleEle);
141
- }
139
+ this.#styleEle.innerText = '* {}';
140
+ this.shadowRoot.prepend(this.#styleEle);
141
+ }
142
142
 
143
- #updateAttrOverrideStyle(attrName, value) {
144
- const style = this.#styleEle.sheet.cssRules[0].style;
145
- const varName = getCssVarName(
146
- superclass.componentName,
147
- attrName.replace(/^st-/, '')
148
- );
143
+ #updateAttrOverrideStyle(attrName, value) {
144
+ const style = this.#styleEle.sheet?.cssRules[0].style;
145
+ const varName = getCssVarName(
146
+ superclass.componentName,
147
+ attrName.replace(/^st-/, '')
148
+ );
149
149
 
150
- if (value) style.setProperty(varName, value);
151
- else style.removeProperty(varName);
152
- }
150
+ if (value) style?.setProperty(varName, value);
151
+ else style?.removeProperty(varName);
152
+ }
153
153
 
154
- #createComponentStyle() {
155
- const themeStyle = document.createElement('style');
156
- themeStyle.id = 'style-mixin-component';
157
- themeStyle.innerHTML = createStyle(
158
- superclass.componentName,
159
- this.baseSelector,
160
- mappings
161
- );
162
- this.shadowRoot.prepend(themeStyle);
163
- }
154
+ #createComponentStyle() {
155
+ const themeStyle = document.createElement('style');
156
+ themeStyle.id = 'style-mixin-component';
157
+ themeStyle.innerHTML = createStyle(
158
+ superclass.componentName,
159
+ this.baseSelector,
160
+ mappings
161
+ );
162
+ this.shadowRoot.prepend(themeStyle);
163
+ }
164
164
 
165
- attributeChangedCallback(attrName, oldValue, newValue) {
166
- super.attributeChangedCallback?.(attrName, oldValue, newValue);
165
+ #createComponentNestingStyle() {
166
+ // we need these selectors to be more specific from the theme selectors
167
+ // in order to do it, we are repeating the class name for specificity
168
+ const numOfClassNameSpecifier = 3;
167
169
 
168
- if (styleAttributes.includes(attrName)) {
169
- this.#updateAttrOverrideStyle(attrName, newValue);
170
+ const rootNode = this.shadowRoot.host.getRootNode();
171
+ const styleId = `${superclass.componentName}-style-mixin-component`;
172
+
173
+ const className = superclass.componentName;
174
+ this.shadowRoot.host.classList.add(className);
175
+
176
+ if(rootNode.querySelector(`style#${styleId}`)) return;
177
+
178
+ const themeStyle = document.createElement('style');
179
+ themeStyle.id = styleId;
180
+ themeStyle.innerHTML = createStyle(
181
+ superclass.componentName,
182
+ `${superclass.componentName}${Array(numOfClassNameSpecifier).fill(`.${className}`).join('')}`,
183
+ nestedMappings
184
+ );
185
+
186
+ // rootNode can be either a shadow DOM or a light DOM
187
+ if (rootNode.nodeName === '#document') {
188
+ rootNode.head.append(themeStyle);
189
+ } else {
190
+ rootNode.append(themeStyle);
191
+ }
170
192
  }
171
- }
172
193
 
173
- connectedCallback() {
174
- super.connectedCallback?.();
175
- if (this.shadowRoot.isConnected) {
176
- Array.from(this.attributes).forEach(attr => {
177
- if (styleAttributes.includes(attr.nodeName)) {
178
- this.#updateAttrOverrideStyle(attr.nodeName, attr.value);
179
- }
180
- });
181
- }
182
- }
194
+ attributeChangedCallback(attrName, oldValue, newValue) {
195
+ super.attributeChangedCallback?.(attrName, oldValue, newValue);
196
+
197
+ if (styleAttributes.includes(attrName)) {
198
+ this.#updateAttrOverrideStyle(attrName, newValue);
199
+ }
200
+ }
201
+
202
+ connectedCallback() {
203
+ super.connectedCallback?.();
204
+ if (this.shadowRoot.isConnected) {
205
+ this.#createComponentNestingStyle();
206
+
207
+ Array.from(this.attributes).forEach(attr => {
208
+ if (styleAttributes.includes(attr.nodeName)) {
209
+ this.#updateAttrOverrideStyle(attr.nodeName, attr.value);
210
+ }
211
+ });
212
+ }
213
+ }
214
+ };
183
215
  };
184
- };
185
216
 
186
217
  const draggableMixin = (superclass) =>
187
218
  class DraggableMixinClass extends superclass {
@@ -288,9 +319,9 @@ const createProxy = ({
288
319
  this.setAttribute('tabindex', '0');
289
320
 
290
321
  // we want to focus on the proxy element when focusing our WC
291
- this.onfocus = (e) => {
322
+ this.addEventListener('focus', () => {
292
323
  this.proxyElement.focus();
293
- };
324
+ });
294
325
 
295
326
  // `onkeydown` is set on `proxyElement` support proper tab-index navigation
296
327
  // this support is needed since both proxy host and element catch `focus`/`blur` event
@@ -316,8 +347,7 @@ const createProxy = ({
316
347
  this.proxyElement.addEventListener('mouseover', this.mouseoverCbRef);
317
348
 
318
349
  // sync events
319
- this.addEventListener = this.proxyElement.addEventListener;
320
-
350
+ this.addEventListener = (...args) => this.proxyElement.addEventListener(...args);
321
351
  syncAttrs(this.proxyElement, this.hostElement, excludeAttrsSync);
322
352
  }
323
353
  }
@@ -392,40 +422,40 @@ const inputMixin = (superclass) =>
392
422
  }
393
423
 
394
424
  connectedCallback() {
395
- this.baseEle = this.shadowRoot.querySelector(this.baseSelector);
396
425
  super.connectedCallback?.();
397
426
 
427
+ this.baseEle = this.shadowRoot.querySelector(this.baseSelector);
428
+
398
429
  // this is needed in order to make sure the form input validation is working
399
430
  if (!this.hasAttribute('tabindex')) {
400
431
  this.setAttribute('tabindex', 0);
401
432
  }
402
433
 
403
- const input =
404
- this.baseEle.querySelector('input') ||
405
- this.baseEle.querySelector('textarea');
406
- if (!input) throw Error('no input was found');
434
+ this.inputElement ??= this.baseEle.shadowRoot.querySelector('slot[name="input"]')?.assignedElements()[0] ||
435
+ this.baseEle.shadowRoot.querySelector('slot[name="textarea"]')?.assignedElements()[0];
436
+ if (!this.inputElement) throw Error('no input was found');
407
437
 
408
438
  // sync properties
409
- propertyObserver(this, input, 'value');
410
- this.setSelectionRange = input.setSelectionRange.bind(input);
439
+ propertyObserver(this, this.inputElement, 'value');
440
+ this.setSelectionRange = this.inputElement.setSelectionRange?.bind(this.inputElement);
411
441
 
412
- this.validity = input.validity;
442
+ this.validity = this.inputElement.validity;
413
443
 
414
444
  this.setValidity = () => {
415
- this.#internals.setValidity(input.validity, input.validationMessage);
445
+ this.#internals.setValidity(this.inputElement.validity, this.inputElement.validationMessage);
416
446
  };
417
447
 
418
- input.oninput = () => {
419
- this.value = input.value;
448
+ this.inputElement.oninput = () => {
449
+ this.value = this.inputElement.value;
420
450
  this.setValidity();
421
451
  };
422
452
 
423
453
  this.onfocus = () => {
424
- setTimeout(() => input.reportValidity(), 0);
454
+ setTimeout(() => this.inputElement.reportValidity(), 0);
425
455
  this.validate();
426
456
  };
427
457
 
428
- input.oninvalid = () => {
458
+ this.inputElement.oninvalid = () => {
429
459
  this.validate();
430
460
  };
431
461
  }
@@ -464,7 +494,7 @@ const compose =
464
494
  (val) =>
465
495
  fns.reduceRight((res, fn) => fn(res), val);
466
496
 
467
- const componentName$c = getComponentName('button');
497
+ const componentName$e = getComponentName('button');
468
498
 
469
499
  const editorOverrides = `vaadin-button::part(label) { pointer-events: none; }`;
470
500
  const resetStyles = `
@@ -518,7 +548,7 @@ const Button = compose(
518
548
  style: () =>
519
549
  `${resetStyles} ${editorOverrides} ${iconStyles} ${loadingIndicatorStyles}`,
520
550
  excludeAttrsSync: ['tabindex'],
521
- componentName: componentName$c
551
+ componentName: componentName$e
522
552
  })
523
553
  );
524
554
 
@@ -551,7 +581,7 @@ const loadingIndicatorStyles = `
551
581
  }
552
582
  `;
553
583
 
554
- customElements.define(componentName$c, Button);
584
+ customElements.define(componentName$e, Button);
555
585
 
556
586
  const selectors$1 = {
557
587
  label: '::part(label)',
@@ -588,9 +618,9 @@ var textFieldMappings = {
588
618
  placeholderColor: { selector: selectors$1.placeholder, property: 'color' }
589
619
  };
590
620
 
591
- const componentName$b = getComponentName('text-field');
621
+ const componentName$d = getComponentName('text-field');
592
622
 
593
- let overrides$5 = ``;
623
+ let overrides$6 = ``;
594
624
 
595
625
  const TextField = compose(
596
626
  createStyleMixin({
@@ -603,13 +633,13 @@ const TextField = compose(
603
633
  createProxy({
604
634
  slots: ['prefix', 'suffix'],
605
635
  wrappedEleName: 'vaadin-text-field',
606
- style: () => overrides$5,
636
+ style: () => overrides$6,
607
637
  excludeAttrsSync: ['tabindex'],
608
- componentName: componentName$b
638
+ componentName: componentName$d
609
639
  })
610
640
  );
611
641
 
612
- overrides$5 = `
642
+ overrides$6 = `
613
643
  :host {
614
644
  display: inline-block;
615
645
  }
@@ -650,11 +680,11 @@ overrides$5 = `
650
680
  }
651
681
  `;
652
682
 
653
- customElements.define(componentName$b, TextField);
683
+ customElements.define(componentName$d, TextField);
654
684
 
655
685
  const template = document.createElement('template');
656
686
 
657
- const componentName$a = getComponentName('combo');
687
+ const componentName$c = getComponentName('combo');
658
688
 
659
689
  template.innerHTML = `
660
690
  <descope-button></descope-button>
@@ -671,11 +701,11 @@ class Combo extends HTMLElement {
671
701
  }
672
702
  }
673
703
 
674
- customElements.define(componentName$a, Combo);
704
+ customElements.define(componentName$c, Combo);
675
705
 
676
- const componentName$9 = getComponentName('number-field');
706
+ const componentName$b = getComponentName('number-field');
677
707
 
678
- let overrides$4 = ``;
708
+ let overrides$5 = ``;
679
709
 
680
710
  const NumberField = compose(
681
711
  createStyleMixin({
@@ -690,13 +720,13 @@ const NumberField = compose(
690
720
  createProxy({
691
721
  slots: ['prefix', 'suffix'],
692
722
  wrappedEleName: 'vaadin-number-field',
693
- style: () => overrides$4,
723
+ style: () => overrides$5,
694
724
  excludeAttrsSync: ['tabindex'],
695
- componentName: componentName$9
725
+ componentName: componentName$b
696
726
  })
697
727
  );
698
728
 
699
- overrides$4 = `
729
+ overrides$5 = `
700
730
  :host {
701
731
  display: inline-block;
702
732
  }
@@ -736,11 +766,11 @@ overrides$4 = `
736
766
  }
737
767
  `;
738
768
 
739
- customElements.define(componentName$9, NumberField);
769
+ customElements.define(componentName$b, NumberField);
740
770
 
741
- const componentName$8 = getComponentName('email-field');
771
+ const componentName$a = getComponentName('email-field');
742
772
 
743
- let overrides$3 = ``;
773
+ let overrides$4 = ``;
744
774
 
745
775
  const EmailField = compose(
746
776
  createStyleMixin({
@@ -755,13 +785,13 @@ const EmailField = compose(
755
785
  createProxy({
756
786
  slots: ['suffix'],
757
787
  wrappedEleName: 'vaadin-email-field',
758
- style: () => overrides$3,
788
+ style: () => overrides$4,
759
789
  excludeAttrsSync: ['tabindex'],
760
- componentName: componentName$8
790
+ componentName: componentName$a
761
791
  })
762
792
  );
763
793
 
764
- overrides$3 = `
794
+ overrides$4 = `
765
795
  :host {
766
796
  display: inline-block;
767
797
  }
@@ -801,11 +831,11 @@ overrides$3 = `
801
831
  }
802
832
  `;
803
833
 
804
- customElements.define(componentName$8, EmailField);
834
+ customElements.define(componentName$a, EmailField);
805
835
 
806
- const componentName$7 = getComponentName('password-field');
836
+ const componentName$9 = getComponentName('password-field');
807
837
 
808
- let overrides$2 = ``;
838
+ let overrides$3 = ``;
809
839
 
810
840
  const PasswordField = compose(
811
841
  createStyleMixin({
@@ -827,13 +857,13 @@ const PasswordField = compose(
827
857
  createProxy({
828
858
  slots: ['suffix'],
829
859
  wrappedEleName: 'vaadin-password-field',
830
- style: () => overrides$2,
860
+ style: () => overrides$3,
831
861
  excludeAttrsSync: ['tabindex'],
832
- componentName: componentName$7
862
+ componentName: componentName$9
833
863
  })
834
864
  );
835
865
 
836
- overrides$2 = `
866
+ overrides$3 = `
837
867
  :host {
838
868
  display: inline-block;
839
869
  }
@@ -873,9 +903,9 @@ overrides$2 = `
873
903
  }
874
904
  `;
875
905
 
876
- customElements.define(componentName$7, PasswordField);
906
+ customElements.define(componentName$9, PasswordField);
877
907
 
878
- const componentName$6 = getComponentName('text-area');
908
+ const componentName$8 = getComponentName('text-area');
879
909
 
880
910
  const selectors = {
881
911
  label: '::part(label)',
@@ -883,7 +913,7 @@ const selectors = {
883
913
  required: '::part(required-indicator)::after'
884
914
  };
885
915
 
886
- let overrides$1 = ``;
916
+ let overrides$2 = ``;
887
917
 
888
918
  const TextArea = compose(
889
919
  createStyleMixin({
@@ -908,13 +938,13 @@ const TextArea = compose(
908
938
  createProxy({
909
939
  slots: [],
910
940
  wrappedEleName: 'vaadin-text-area',
911
- style: () => overrides$1,
941
+ style: () => overrides$2,
912
942
  excludeAttrsSync: ['tabindex'],
913
- componentName: componentName$6
943
+ componentName: componentName$8
914
944
  })
915
945
  );
916
946
 
917
- overrides$1 = `
947
+ overrides$2 = `
918
948
  :host {
919
949
  display: inline-block;
920
950
  }
@@ -935,29 +965,29 @@ overrides$1 = `
935
965
  }
936
966
  `;
937
967
 
938
- customElements.define(componentName$6, TextArea);
968
+ customElements.define(componentName$8, TextArea);
939
969
 
940
- const componentName$5 = getComponentName('date-picker');
970
+ const componentName$7 = getComponentName('date-picker');
941
971
 
942
972
  const DatePicker = compose(
943
973
  draggableMixin,
944
974
  componentNameValidationMixin
945
975
  )(
946
976
  createProxy({
947
- componentName: componentName$5,
977
+ componentName: componentName$7,
948
978
  slots: ['prefix', 'suffix'],
949
979
  wrappedEleName: 'vaadin-date-picker',
950
980
  style: ``
951
981
  })
952
982
  );
953
983
 
954
- customElements.define(componentName$5, DatePicker);
984
+ customElements.define(componentName$7, DatePicker);
955
985
 
956
- const componentName$4 = getComponentName('container');
986
+ const componentName$6 = getComponentName('container');
957
987
 
958
988
  class RawContainer extends HTMLElement {
959
989
  static get componentName() {
960
- return componentName$4;
990
+ return componentName$6;
961
991
  }
962
992
  constructor() {
963
993
  super();
@@ -987,7 +1017,7 @@ const Container = compose(
987
1017
  { property: 'padding-right' }
988
1018
  ],
989
1019
 
990
- display: {},
1020
+ display: {}, // maybe this should be hardcoded to flex
991
1021
  flexDirection: {},
992
1022
  justifyContent: {},
993
1023
  alignItems: {},
@@ -1007,13 +1037,13 @@ const Container = compose(
1007
1037
  componentNameValidationMixin
1008
1038
  )(RawContainer);
1009
1039
 
1010
- customElements.define(componentName$4, Container);
1040
+ customElements.define(componentName$6, Container);
1011
1041
 
1012
- const componentName$3 = getComponentName('text');
1042
+ const componentName$5 = getComponentName('text');
1013
1043
 
1014
1044
  class RawText extends HTMLElement {
1015
1045
  static get componentName() {
1016
- return componentName$3;
1046
+ return componentName$5;
1017
1047
  }
1018
1048
  constructor() {
1019
1049
  super();
@@ -1045,7 +1075,7 @@ const Text = compose(
1045
1075
  componentNameValidationMixin
1046
1076
  )(RawText);
1047
1077
 
1048
- customElements.define(componentName$3, Text);
1078
+ customElements.define(componentName$5, Text);
1049
1079
 
1050
1080
  const getVarName = (path) => getCssVarName(DESCOPE_PREFIX, ...path);
1051
1081
 
@@ -1296,7 +1326,7 @@ const mode = {
1296
1326
  surface: globalRefs$4.colors.surface
1297
1327
  };
1298
1328
 
1299
- const [helperTheme$1, helperRefs$1] = createHelperVars({ mode }, componentName$c);
1329
+ const [helperTheme$1, helperRefs$1] = createHelperVars({ mode }, componentName$e);
1300
1330
 
1301
1331
  const button = {
1302
1332
  ...helperTheme$1,
@@ -1505,7 +1535,7 @@ const textArea = {
1505
1535
  }
1506
1536
  };
1507
1537
 
1508
- const componentName$2 = getComponentName('checkbox');
1538
+ const componentName$4 = getComponentName('checkbox');
1509
1539
 
1510
1540
  const Checkbox = compose(
1511
1541
  createStyleMixin({
@@ -1527,7 +1557,7 @@ const Checkbox = compose(
1527
1557
  }
1528
1558
  `,
1529
1559
  excludeAttrsSync: ['tabindex'],
1530
- componentName: componentName$2
1560
+ componentName: componentName$4
1531
1561
  })
1532
1562
  );
1533
1563
 
@@ -1537,9 +1567,9 @@ const checkbox = {
1537
1567
  [vars$4.cursor]: 'pointer'
1538
1568
  };
1539
1569
 
1540
- const componentName$1 = getComponentName('switch-toggle');
1570
+ const componentName$3 = getComponentName('switch-toggle');
1541
1571
 
1542
- let overrides = ``;
1572
+ let overrides$1 = ``;
1543
1573
 
1544
1574
  const SwitchToggle = compose(
1545
1575
  createStyleMixin({
@@ -1555,13 +1585,13 @@ const SwitchToggle = compose(
1555
1585
  createProxy({
1556
1586
  slots: [],
1557
1587
  wrappedEleName: 'vaadin-checkbox',
1558
- style: () => overrides,
1588
+ style: () => overrides$1,
1559
1589
  excludeAttrsSync: ['tabindex'],
1560
- componentName: componentName$1
1590
+ componentName: componentName$3
1561
1591
  })
1562
1592
  );
1563
1593
 
1564
- overrides = `
1594
+ overrides$1 = `
1565
1595
  :host {
1566
1596
  display: inline-block;
1567
1597
  }
@@ -1718,14 +1748,14 @@ const container = {
1718
1748
  }
1719
1749
  };
1720
1750
 
1721
- const componentName = getComponentName('logo');
1751
+ const componentName$2 = getComponentName('logo');
1722
1752
 
1723
1753
  let style;
1724
1754
  const getStyle = () => style;
1725
1755
 
1726
1756
  class RawLogo extends HTMLElement {
1727
1757
  static get componentName() {
1728
- return componentName;
1758
+ return componentName$2;
1729
1759
  }
1730
1760
  constructor() {
1731
1761
  super();
@@ -1846,6 +1876,139 @@ const text = {
1846
1876
  }
1847
1877
  };
1848
1878
 
1879
+ const componentName$1 = getComponentName('passcode-internal');
1880
+
1881
+ const componentName = getComponentName('passcode');
1882
+
1883
+ const customMixin = (superclass) =>
1884
+ class DraggableMixinClass extends superclass {
1885
+ constructor() {
1886
+ super();
1887
+ }
1888
+
1889
+ get digits() {
1890
+ return Number.parseInt(this.getAttribute('digits')) || 6
1891
+ }
1892
+
1893
+ connectedCallback() {
1894
+ super.connectedCallback?.();
1895
+ const template = document.createElement('template');
1896
+
1897
+ //forward required & pattern TODO use forwardAttrs
1898
+ template.innerHTML = `
1899
+ <${componentName$1}
1900
+ bordered="true"
1901
+ name="code"
1902
+ tabindex="0"
1903
+ slot="input"
1904
+ required="${this.shadowRoot.host.getAttribute('required')}"
1905
+ pattern="${this.shadowRoot.host.getAttribute('pattern')}"
1906
+ ></${componentName$1}>
1907
+ `;
1908
+
1909
+ // we are adding a slot under vaadin-text-field, it should reflect all descope-passcode children to be under vaadin-text-field, this is why it has a name & slot
1910
+ const slotEle = Object.assign(document.createElement('slot'), { name: 'input', slot: 'input', part: 'input' });
1911
+ this.proxyElement.appendChild(slotEle);
1912
+
1913
+ // we want to control when the element is out of focus
1914
+ // so the validations will be triggered blur event is dispatched from descope-passcode internal (and not every time focusing a digit)
1915
+ this.proxyElement._setFocused = () => { };
1916
+
1917
+ this.shadowRoot.host.appendChild(template.content.cloneNode(true));
1918
+ this.inputElement = this.querySelector(componentName$1);
1919
+
1920
+ // we want to trigger validation only when dispatching a blur event from the descope-passcode-internal
1921
+ this.inputElement.addEventListener('blur', () => {
1922
+ this.proxyElement.validate();
1923
+ });
1924
+ }
1925
+ };
1926
+
1927
+ const { borderStyle, borderWidth, ...restTextFieldMappings } = textFieldMappings;
1928
+
1929
+ const Passcode = compose(
1930
+ createStyleMixin({
1931
+ mappings: {
1932
+ ...restTextFieldMappings,
1933
+ },
1934
+ nestedMappings: {
1935
+ borderColor: {
1936
+ selector: ` ${TextField.componentName}`,
1937
+ property: TextField.cssVarList.borderColor
1938
+ }
1939
+ }
1940
+ }),
1941
+ draggableMixin,
1942
+ inputMixin,
1943
+ componentNameValidationMixin,
1944
+ customMixin
1945
+ )(
1946
+ createProxy({
1947
+ slots: [],
1948
+ wrappedEleName: 'vaadin-text-field',
1949
+ style: () => `
1950
+ :host {
1951
+ --vaadin-field-default-width: auto;
1952
+ }
1953
+
1954
+ ::slotted([slot='input']) {
1955
+ -webkit-mask-image: none;
1956
+ display: flex;
1957
+ gap: 2px;
1958
+ align-items: center;
1959
+ padding: 0;
1960
+ }
1961
+
1962
+ vaadin-text-field::part(input-field) {
1963
+ background-color: transparent;
1964
+ padding: 0;
1965
+ }
1966
+
1967
+ ${overrides}
1968
+ `,
1969
+ excludeAttrsSync: ['tabindex'],
1970
+ componentName
1971
+ })
1972
+ );
1973
+
1974
+ const overrides = `
1975
+ :host {
1976
+ display: inline-block;
1977
+ }
1978
+
1979
+ vaadin-text-field {
1980
+ margin: 0;
1981
+ padding: 0;
1982
+ }
1983
+ vaadin-text-field::part(input-field) {
1984
+ overflow: hidden;
1985
+ }
1986
+ vaadin-text-field[readonly] > input:placeholder-shown {
1987
+ opacity: 1;
1988
+ }
1989
+
1990
+ vaadin-text-field > label,
1991
+ vaadin-text-field::part(input-field) {
1992
+ cursor: pointer;
1993
+ color: var(${Passcode.cssVarList.color});
1994
+ }
1995
+ vaadin-text-field::part(input-field):focus {
1996
+ cursor: text;
1997
+ }
1998
+ vaadin-text-field[required]::part(required-indicator)::after {
1999
+ font-size: "12px";
2000
+ content: "*";
2001
+ color: var(${Passcode.cssVarList.color});
2002
+ }
2003
+ vaadin-text-field[readonly]::part(input-field)::after {
2004
+ border: 0 solid;
2005
+ }
2006
+ `;
2007
+
2008
+ const passcode = {
2009
+ ...textField(Passcode.cssVarList),
2010
+ };
2011
+
1849
2012
  var components = {
1850
2013
  button,
1851
2014
  textField: textField$1,
@@ -1857,7 +2020,8 @@ var components = {
1857
2020
  switchToggle: swtichToggle,
1858
2021
  container,
1859
2022
  logo,
1860
- text
2023
+ text,
2024
+ passcode
1861
2025
  };
1862
2026
 
1863
2027
  var index = { globals, components };