@descope/web-components-ui 1.0.371 → 1.0.372
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/cjs/index.cjs.js +392 -9
 - package/dist/cjs/index.cjs.js.map +1 -1
 - package/dist/index.esm.js +395 -10
 - package/dist/index.esm.js.map +1 -1
 - package/dist/umd/4392.js +1 -1
 - package/dist/umd/4978.js +1 -1
 - package/dist/umd/DescopeDev.js +1 -1
 - package/dist/umd/descope-email-field-index-js.js +2 -2
 - package/dist/umd/descope-new-password-descope-new-password-internal-index-js.js +1 -1
 - package/dist/umd/descope-new-password-index-js.js +1 -1
 - package/dist/umd/descope-number-field-index-js.js +1 -1
 - package/dist/umd/descope-passcode-index-js.js +1 -1
 - package/dist/umd/descope-password-index-js.js +1 -1
 - package/dist/umd/descope-radio-group-index-js.js +1 -1
 - package/dist/umd/descope-text-field-index-js.js +1 -1
 - package/dist/umd/mapping-fields-descope-mappings-field-index-js.js +1 -1
 - package/package.json +1 -1
 - package/src/components/descope-email-field/EmailFieldClass.js +12 -0
 - package/src/components/descope-new-password/NewPasswordClass.js +35 -0
 - package/src/components/descope-new-password/descope-new-password-internal/NewPasswordInternal.js +3 -1
 - package/src/components/descope-password/PasswordClass.js +59 -1
 - package/src/components/descope-text-field/textFieldMappings.js +37 -6
 - package/src/mixins/externalInputHelpers.js +86 -0
 - package/src/mixins/externalInputMixin.js +165 -0
 - package/src/mixins/index.js +1 -0
 - package/src/mixins/proxyInputMixin.js +5 -2
 
    
        package/dist/cjs/index.cjs.js
    CHANGED
    
    | 
         @@ -2229,7 +2229,7 @@ const proxyInputMixin = 
     | 
|
| 
       2229 
2229 
     | 
    
         
             
              ({
         
     | 
| 
       2230 
2230 
     | 
    
         
             
                proxyProps = [],
         
     | 
| 
       2231 
2231 
     | 
    
         
             
                // useProxyTargets flag allows to forwardProps to other targets, other than
         
     | 
| 
       2232 
     | 
    
         
            -
                // `this.inputElement`.
         
     | 
| 
      
 2232 
     | 
    
         
            +
                // `this.inputElement`. It's to be used within `external-input` components,
         
     | 
| 
       2233 
2233 
     | 
    
         
             
                // if needed
         
     | 
| 
       2234 
2234 
     | 
    
         
             
                useProxyTargets = false,
         
     | 
| 
       2235 
2235 
     | 
    
         
             
                // allows us to set the event that should trigger validation
         
     | 
| 
         @@ -2368,7 +2368,10 @@ const proxyInputMixin = 
     | 
|
| 
       2368 
2368 
     | 
    
         | 
| 
       2369 
2369 
     | 
    
         
             
                      // sync properties
         
     | 
| 
       2370 
2370 
     | 
    
         
             
                      proxyProps.forEach((prop) => {
         
     | 
| 
       2371 
     | 
    
         
            -
                        const  
     | 
| 
      
 2371 
     | 
    
         
            +
                        const externalInput = this.querySelector('input[slot="external-input"]') || null;
         
     | 
| 
      
 2372 
     | 
    
         
            +
                        const proxyTargets = useProxyTargets
         
     | 
| 
      
 2373 
     | 
    
         
            +
                          ? [this.baseElement, externalInput].filter(Boolean)
         
     | 
| 
      
 2374 
     | 
    
         
            +
                          : [];
         
     | 
| 
       2372 
2375 
     | 
    
         
             
                        forwardProps(this, [this.inputElement, ...proxyTargets], prop);
         
     | 
| 
       2373 
2376 
     | 
    
         
             
                      });
         
     | 
| 
       2374 
2377 
     | 
    
         | 
| 
         @@ -2618,6 +2621,252 @@ const inputEventsDispatchingMixin = (superclass) => 
     | 
|
| 
       2618 
2621 
     | 
    
         
             
                }
         
     | 
| 
       2619 
2622 
     | 
    
         
             
              };
         
     | 
| 
       2620 
2623 
     | 
    
         | 
| 
      
 2624 
     | 
    
         
            +
            // since on load we can only sample the color of the placeholder,
         
     | 
| 
      
 2625 
     | 
    
         
            +
            // we need to temporarily populate the input in order to sample the value color
         
     | 
| 
      
 2626 
     | 
    
         
            +
            const getValueColor = (ele, computedStyle) => {
         
     | 
| 
      
 2627 
     | 
    
         
            +
              // eslint-disable-next-line no-param-reassign
         
     | 
| 
      
 2628 
     | 
    
         
            +
              ele.value = '_';
         
     | 
| 
      
 2629 
     | 
    
         
            +
             
     | 
| 
      
 2630 
     | 
    
         
            +
              const valueColor = computedStyle.getPropertyValue('color');
         
     | 
| 
      
 2631 
     | 
    
         
            +
             
     | 
| 
      
 2632 
     | 
    
         
            +
              // eslint-disable-next-line no-param-reassign
         
     | 
| 
      
 2633 
     | 
    
         
            +
              ele.value = '';
         
     | 
| 
      
 2634 
     | 
    
         
            +
             
     | 
| 
      
 2635 
     | 
    
         
            +
              return valueColor;
         
     | 
| 
      
 2636 
     | 
    
         
            +
            };
         
     | 
| 
      
 2637 
     | 
    
         
            +
             
     | 
| 
      
 2638 
     | 
    
         
            +
            const createExternalInputSlot = (slotName, targetSlotName) => {
         
     | 
| 
      
 2639 
     | 
    
         
            +
              const slotEle = document.createElement('slot');
         
     | 
| 
      
 2640 
     | 
    
         
            +
             
     | 
| 
      
 2641 
     | 
    
         
            +
              slotEle.setAttribute('name', slotName);
         
     | 
| 
      
 2642 
     | 
    
         
            +
              slotEle.setAttribute('slot', targetSlotName);
         
     | 
| 
      
 2643 
     | 
    
         
            +
             
     | 
| 
      
 2644 
     | 
    
         
            +
              return slotEle;
         
     | 
| 
      
 2645 
     | 
    
         
            +
            };
         
     | 
| 
      
 2646 
     | 
    
         
            +
             
     | 
| 
      
 2647 
     | 
    
         
            +
            const createExternalInputEle = (targetSlotName, type, autocompleteType) => {
         
     | 
| 
      
 2648 
     | 
    
         
            +
              const inputEle = document.createElement('input');
         
     | 
| 
      
 2649 
     | 
    
         
            +
             
     | 
| 
      
 2650 
     | 
    
         
            +
              inputEle.setAttribute('slot', targetSlotName);
         
     | 
| 
      
 2651 
     | 
    
         
            +
              inputEle.setAttribute('type', type);
         
     | 
| 
      
 2652 
     | 
    
         
            +
              inputEle.setAttribute('data-hidden-input', 'true');
         
     | 
| 
      
 2653 
     | 
    
         
            +
              inputEle.setAttribute('autocomplete', autocompleteType);
         
     | 
| 
      
 2654 
     | 
    
         
            +
             
     | 
| 
      
 2655 
     | 
    
         
            +
              return inputEle;
         
     | 
| 
      
 2656 
     | 
    
         
            +
            };
         
     | 
| 
      
 2657 
     | 
    
         
            +
             
     | 
| 
      
 2658 
     | 
    
         
            +
            // We apply the original input's style to the external-input.
         
     | 
| 
      
 2659 
     | 
    
         
            +
            // Eventually, the user should interact directly with the external input.
         
     | 
| 
      
 2660 
     | 
    
         
            +
            // We keep the original input
         
     | 
| 
      
 2661 
     | 
    
         
            +
            const applyExternalInputStyles = (sourceInputEle, targetInputEle, labelType) => {
         
     | 
| 
      
 2662 
     | 
    
         
            +
              // We set a timeout here to avoid "Double Print" cases,
         
     | 
| 
      
 2663 
     | 
    
         
            +
              // caused by sampling the computed style before it's ready.
         
     | 
| 
      
 2664 
     | 
    
         
            +
              setTimeout(() => {
         
     | 
| 
      
 2665 
     | 
    
         
            +
                const computedStyle = getComputedStyle(sourceInputEle);
         
     | 
| 
      
 2666 
     | 
    
         
            +
                // Get minimal set of computed theme properties to set on external input
         
     | 
| 
      
 2667 
     | 
    
         
            +
                const height = computedStyle.getPropertyValue('height');
         
     | 
| 
      
 2668 
     | 
    
         
            +
                const paddingLeft = computedStyle.getPropertyValue('padding-left');
         
     | 
| 
      
 2669 
     | 
    
         
            +
                const paddingRight = computedStyle.getPropertyValue('padding-right');
         
     | 
| 
      
 2670 
     | 
    
         
            +
                const fontSize = computedStyle.getPropertyValue('font-size');
         
     | 
| 
      
 2671 
     | 
    
         
            +
                const fontFamily = computedStyle.getPropertyValue('font-family');
         
     | 
| 
      
 2672 
     | 
    
         
            +
                const letterSpacing = computedStyle.getPropertyValue('letter-spacing');
         
     | 
| 
      
 2673 
     | 
    
         
            +
                const caretColor = computedStyle.getPropertyValue('caret-color');
         
     | 
| 
      
 2674 
     | 
    
         
            +
             
     | 
| 
      
 2675 
     | 
    
         
            +
                const valueColor = getValueColor(sourceInputEle, computedStyle);
         
     | 
| 
      
 2676 
     | 
    
         
            +
             
     | 
| 
      
 2677 
     | 
    
         
            +
                const commonThemeStyles = [
         
     | 
| 
      
 2678 
     | 
    
         
            +
                  ['all', 'unset'],
         
     | 
| 
      
 2679 
     | 
    
         
            +
                  ['position', 'absolute'],
         
     | 
| 
      
 2680 
     | 
    
         
            +
                  ['background-color', 'transparent'],
         
     | 
| 
      
 2681 
     | 
    
         
            +
                  ['height', height],
         
     | 
| 
      
 2682 
     | 
    
         
            +
                  ['left', paddingLeft],
         
     | 
| 
      
 2683 
     | 
    
         
            +
                  ['right', paddingRight],
         
     | 
| 
      
 2684 
     | 
    
         
            +
                  ['font-size', fontSize],
         
     | 
| 
      
 2685 
     | 
    
         
            +
                  ['font-family', fontFamily],
         
     | 
| 
      
 2686 
     | 
    
         
            +
                  ['letter-spacing', letterSpacing],
         
     | 
| 
      
 2687 
     | 
    
         
            +
                  ['caret-color', caretColor], // this is for seeing caret when focusing on external input
         
     | 
| 
      
 2688 
     | 
    
         
            +
                  ['color', valueColor],
         
     | 
| 
      
 2689 
     | 
    
         
            +
                ];
         
     | 
| 
      
 2690 
     | 
    
         
            +
             
     | 
| 
      
 2691 
     | 
    
         
            +
                commonThemeStyles.forEach(([key, val]) =>
         
     | 
| 
      
 2692 
     | 
    
         
            +
                  targetInputEle.style.setProperty(key, val, 'important')
         
     | 
| 
      
 2693 
     | 
    
         
            +
                );
         
     | 
| 
      
 2694 
     | 
    
         
            +
             
     | 
| 
      
 2695 
     | 
    
         
            +
                // Handle floating label theme properties
         
     | 
| 
      
 2696 
     | 
    
         
            +
                if (labelType === 'floating') {
         
     | 
| 
      
 2697 
     | 
    
         
            +
                  const marginBottom = computedStyle.getPropertyValue('margin-bottom');
         
     | 
| 
      
 2698 
     | 
    
         
            +
                  targetInputEle.style.setProperty('margin-bottom', marginBottom, 'important');
         
     | 
| 
      
 2699 
     | 
    
         
            +
                }
         
     | 
| 
      
 2700 
     | 
    
         
            +
             
     | 
| 
      
 2701 
     | 
    
         
            +
                // sample and apply width only after original input is ready and fully rendered
         
     | 
| 
      
 2702 
     | 
    
         
            +
                const width = computedStyle.getPropertyValue('width');
         
     | 
| 
      
 2703 
     | 
    
         
            +
                targetInputEle.style.setProperty(
         
     | 
| 
      
 2704 
     | 
    
         
            +
                  'width',
         
     | 
| 
      
 2705 
     | 
    
         
            +
                  `calc(${width} - ${paddingLeft} - ${paddingRight}`,
         
     | 
| 
      
 2706 
     | 
    
         
            +
                  'important'
         
     | 
| 
      
 2707 
     | 
    
         
            +
                );
         
     | 
| 
      
 2708 
     | 
    
         
            +
              }, 0);
         
     | 
| 
      
 2709 
     | 
    
         
            +
            };
         
     | 
| 
      
 2710 
     | 
    
         
            +
             
     | 
| 
      
 2711 
     | 
    
         
            +
            const externalInputMixin =
         
     | 
| 
      
 2712 
     | 
    
         
            +
              ({ inputType, autocompleteType, includeAttrs = [], noBlurDispatch = false }) =>
         
     | 
| 
      
 2713 
     | 
    
         
            +
              (superclass) =>
         
     | 
| 
      
 2714 
     | 
    
         
            +
                class ExternalInputMixinClass extends superclass {
         
     | 
| 
      
 2715 
     | 
    
         
            +
                  #timers = [];
         
     | 
| 
      
 2716 
     | 
    
         
            +
             
     | 
| 
      
 2717 
     | 
    
         
            +
                  get isExternalInput() {
         
     | 
| 
      
 2718 
     | 
    
         
            +
                    return this.getAttribute('external-input') === 'true';
         
     | 
| 
      
 2719 
     | 
    
         
            +
                  }
         
     | 
| 
      
 2720 
     | 
    
         
            +
             
     | 
| 
      
 2721 
     | 
    
         
            +
                  createExternalInput() {
         
     | 
| 
      
 2722 
     | 
    
         
            +
                    if (!this.isExternalInput) {
         
     | 
| 
      
 2723 
     | 
    
         
            +
                      return null;
         
     | 
| 
      
 2724 
     | 
    
         
            +
                    }
         
     | 
| 
      
 2725 
     | 
    
         
            +
             
     | 
| 
      
 2726 
     | 
    
         
            +
                    // use original input element as reference
         
     | 
| 
      
 2727 
     | 
    
         
            +
                    const origInput = this.baseElement.querySelector('input');
         
     | 
| 
      
 2728 
     | 
    
         
            +
             
     | 
| 
      
 2729 
     | 
    
         
            +
                    // to avoid focus loop between external-input and origInput
         
     | 
| 
      
 2730 
     | 
    
         
            +
                    // we set origInput's tabindex to -1
         
     | 
| 
      
 2731 
     | 
    
         
            +
                    // otherwise, shift-tab will never leave the component focus
         
     | 
| 
      
 2732 
     | 
    
         
            +
                    origInput.setAttribute('tabindex', '-1');
         
     | 
| 
      
 2733 
     | 
    
         
            +
             
     | 
| 
      
 2734 
     | 
    
         
            +
                    // create external slot
         
     | 
| 
      
 2735 
     | 
    
         
            +
                    const externalInputSlot = createExternalInputSlot('external-input', 'suffix');
         
     | 
| 
      
 2736 
     | 
    
         
            +
             
     | 
| 
      
 2737 
     | 
    
         
            +
                    // append external slot to base element
         
     | 
| 
      
 2738 
     | 
    
         
            +
                    this.baseElement.appendChild(externalInputSlot);
         
     | 
| 
      
 2739 
     | 
    
         
            +
             
     | 
| 
      
 2740 
     | 
    
         
            +
                    this.externalInput = createExternalInputEle(
         
     | 
| 
      
 2741 
     | 
    
         
            +
                      'external-input',
         
     | 
| 
      
 2742 
     | 
    
         
            +
                      inputType,
         
     | 
| 
      
 2743 
     | 
    
         
            +
                      this.getAutocompleteType()
         
     | 
| 
      
 2744 
     | 
    
         
            +
                    );
         
     | 
| 
      
 2745 
     | 
    
         
            +
             
     | 
| 
      
 2746 
     | 
    
         
            +
                    // apply original input's styles to external input
         
     | 
| 
      
 2747 
     | 
    
         
            +
                    setTimeout(() => {
         
     | 
| 
      
 2748 
     | 
    
         
            +
                      applyExternalInputStyles(origInput, this.externalInput, this.getAttribute('label-type'));
         
     | 
| 
      
 2749 
     | 
    
         
            +
                    });
         
     | 
| 
      
 2750 
     | 
    
         
            +
             
     | 
| 
      
 2751 
     | 
    
         
            +
                    // 1Password catches the internal input, so we forward the value to the external input
         
     | 
| 
      
 2752 
     | 
    
         
            +
                    this.forwardInputValue(origInput, this.externalInput);
         
     | 
| 
      
 2753 
     | 
    
         
            +
             
     | 
| 
      
 2754 
     | 
    
         
            +
                    syncAttrs(origInput, this.externalInput, {
         
     | 
| 
      
 2755 
     | 
    
         
            +
                      includeAttrs,
         
     | 
| 
      
 2756 
     | 
    
         
            +
                    });
         
     | 
| 
      
 2757 
     | 
    
         
            +
             
     | 
| 
      
 2758 
     | 
    
         
            +
                    // We disable Vaadin's original `_setFocused` function, and use handleFocusEvents
         
     | 
| 
      
 2759 
     | 
    
         
            +
                    // and handleBlurEvents functions
         
     | 
| 
      
 2760 
     | 
    
         
            +
                    this.baseElement
         
     | 
| 
      
 2761 
     | 
    
         
            +
                      .querySelector('input')
         
     | 
| 
      
 2762 
     | 
    
         
            +
                      .addEventListener('focusout', (e) => e.stopImmediatePropagation(), true);
         
     | 
| 
      
 2763 
     | 
    
         
            +
             
     | 
| 
      
 2764 
     | 
    
         
            +
                    // In order to manage focus/blur events when moving between parts of the component
         
     | 
| 
      
 2765 
     | 
    
         
            +
                    // we're managing the event dispatching by ourselves, with the following strategy:
         
     | 
| 
      
 2766 
     | 
    
         
            +
                    // - If one of the component parts is focused - it means that the component is still focused - so we stop the blur events.
         
     | 
| 
      
 2767 
     | 
    
         
            +
                    // - When none of the component parts is focused, we dispatch blur event.
         
     | 
| 
      
 2768 
     | 
    
         
            +
                    this.handleFocusEvents();
         
     | 
| 
      
 2769 
     | 
    
         
            +
                    this.handleBlurEvents();
         
     | 
| 
      
 2770 
     | 
    
         
            +
             
     | 
| 
      
 2771 
     | 
    
         
            +
                    // sync input value
         
     | 
| 
      
 2772 
     | 
    
         
            +
                    this.handlelInputEvents(this.externalInput);
         
     | 
| 
      
 2773 
     | 
    
         
            +
             
     | 
| 
      
 2774 
     | 
    
         
            +
                    // append external input to component's DOM
         
     | 
| 
      
 2775 
     | 
    
         
            +
                    this.appendChild(this.externalInput);
         
     | 
| 
      
 2776 
     | 
    
         
            +
             
     | 
| 
      
 2777 
     | 
    
         
            +
                    return this.externalInput;
         
     | 
| 
      
 2778 
     | 
    
         
            +
                  }
         
     | 
| 
      
 2779 
     | 
    
         
            +
             
     | 
| 
      
 2780 
     | 
    
         
            +
                  clearBlurTimers() {
         
     | 
| 
      
 2781 
     | 
    
         
            +
                    this.#timers.forEach((timer) => clearTimeout(timer));
         
     | 
| 
      
 2782 
     | 
    
         
            +
                    this.#timers.length = 0;
         
     | 
| 
      
 2783 
     | 
    
         
            +
                  }
         
     | 
| 
      
 2784 
     | 
    
         
            +
             
     | 
| 
      
 2785 
     | 
    
         
            +
                  dispatchBlur() {
         
     | 
| 
      
 2786 
     | 
    
         
            +
                    return setTimeout(() => {
         
     | 
| 
      
 2787 
     | 
    
         
            +
                      this.dispatchEvent(new Event('blur', { bubbles: true, composed: true }));
         
     | 
| 
      
 2788 
     | 
    
         
            +
                      this.removeAttribute('focused');
         
     | 
| 
      
 2789 
     | 
    
         
            +
                    });
         
     | 
| 
      
 2790 
     | 
    
         
            +
                  }
         
     | 
| 
      
 2791 
     | 
    
         
            +
             
     | 
| 
      
 2792 
     | 
    
         
            +
                  handleFocusEvents() {
         
     | 
| 
      
 2793 
     | 
    
         
            +
                    // on baseElement `focus` we forward the focus to the external input.
         
     | 
| 
      
 2794 
     | 
    
         
            +
                    // also, in order to avoid any blur within the component, we clear the blur timers.
         
     | 
| 
      
 2795 
     | 
    
         
            +
                    this.baseElement.addEventListener('focus', () => {
         
     | 
| 
      
 2796 
     | 
    
         
            +
                      this.externalInput.focus();
         
     | 
| 
      
 2797 
     | 
    
         
            +
                      this.clearBlurTimers();
         
     | 
| 
      
 2798 
     | 
    
         
            +
                    });
         
     | 
| 
      
 2799 
     | 
    
         
            +
             
     | 
| 
      
 2800 
     | 
    
         
            +
                    // on `focus` of the external input, we manually set the `focused` attribute
         
     | 
| 
      
 2801 
     | 
    
         
            +
                    this.externalInput.addEventListener('focus', () => {
         
     | 
| 
      
 2802 
     | 
    
         
            +
                      this.clearBlurTimers();
         
     | 
| 
      
 2803 
     | 
    
         
            +
                      setTimeout(() => this.baseElement.setAttribute('focused', 'true'));
         
     | 
| 
      
 2804 
     | 
    
         
            +
                    });
         
     | 
| 
      
 2805 
     | 
    
         
            +
                  }
         
     | 
| 
      
 2806 
     | 
    
         
            +
             
     | 
| 
      
 2807 
     | 
    
         
            +
                  handleBlurEvents() {
         
     | 
| 
      
 2808 
     | 
    
         
            +
                    this.baseElement.addEventListener(
         
     | 
| 
      
 2809 
     | 
    
         
            +
                      'blur',
         
     | 
| 
      
 2810 
     | 
    
         
            +
                      (e) => {
         
     | 
| 
      
 2811 
     | 
    
         
            +
                        e.stopImmediatePropagation();
         
     | 
| 
      
 2812 
     | 
    
         
            +
                        // some components do not require this synthetic blur dispatch (e.g. Password)
         
     | 
| 
      
 2813 
     | 
    
         
            +
                        // so we allow them to override this dispatch
         
     | 
| 
      
 2814 
     | 
    
         
            +
                        if (noBlurDispatch) return;
         
     | 
| 
      
 2815 
     | 
    
         
            +
                        this.#timers.push(this.dispatchBlur());
         
     | 
| 
      
 2816 
     | 
    
         
            +
                      },
         
     | 
| 
      
 2817 
     | 
    
         
            +
                      true
         
     | 
| 
      
 2818 
     | 
    
         
            +
                    );
         
     | 
| 
      
 2819 
     | 
    
         
            +
             
     | 
| 
      
 2820 
     | 
    
         
            +
                    this.externalInput.addEventListener(
         
     | 
| 
      
 2821 
     | 
    
         
            +
                      'blur',
         
     | 
| 
      
 2822 
     | 
    
         
            +
                      (e) => {
         
     | 
| 
      
 2823 
     | 
    
         
            +
                        e.stopImmediatePropagation();
         
     | 
| 
      
 2824 
     | 
    
         
            +
                        this.#timers.push(this.dispatchBlur());
         
     | 
| 
      
 2825 
     | 
    
         
            +
                      },
         
     | 
| 
      
 2826 
     | 
    
         
            +
                      true
         
     | 
| 
      
 2827 
     | 
    
         
            +
                    );
         
     | 
| 
      
 2828 
     | 
    
         
            +
                  }
         
     | 
| 
      
 2829 
     | 
    
         
            +
             
     | 
| 
      
 2830 
     | 
    
         
            +
                  handlelInputEvents(externalInput) {
         
     | 
| 
      
 2831 
     | 
    
         
            +
                    // sync value of insible input back to original input
         
     | 
| 
      
 2832 
     | 
    
         
            +
                    externalInput.addEventListener('input', (e) => {
         
     | 
| 
      
 2833 
     | 
    
         
            +
                      this.value = e.target.value;
         
     | 
| 
      
 2834 
     | 
    
         
            +
                    });
         
     | 
| 
      
 2835 
     | 
    
         
            +
             
     | 
| 
      
 2836 
     | 
    
         
            +
                    // handle has-value attr
         
     | 
| 
      
 2837 
     | 
    
         
            +
                    externalInput.addEventListener('input', (e) => {
         
     | 
| 
      
 2838 
     | 
    
         
            +
                      if (!e.target.value) {
         
     | 
| 
      
 2839 
     | 
    
         
            +
                        this.removeAttribute('has-value');
         
     | 
| 
      
 2840 
     | 
    
         
            +
                      } else {
         
     | 
| 
      
 2841 
     | 
    
         
            +
                        this.setAttribute('has-value', 'true');
         
     | 
| 
      
 2842 
     | 
    
         
            +
                      }
         
     | 
| 
      
 2843 
     | 
    
         
            +
                    });
         
     | 
| 
      
 2844 
     | 
    
         
            +
                  }
         
     | 
| 
      
 2845 
     | 
    
         
            +
             
     | 
| 
      
 2846 
     | 
    
         
            +
                  getAutocompleteType() {
         
     | 
| 
      
 2847 
     | 
    
         
            +
                    return this.getAttribute('autocomplete') || autocompleteType;
         
     | 
| 
      
 2848 
     | 
    
         
            +
                  }
         
     | 
| 
      
 2849 
     | 
    
         
            +
             
     | 
| 
      
 2850 
     | 
    
         
            +
                  forwardInputValue(source, target) {
         
     | 
| 
      
 2851 
     | 
    
         
            +
                    // set internal sync events
         
     | 
| 
      
 2852 
     | 
    
         
            +
                    const valueDescriptor = Object.getOwnPropertyDescriptor(
         
     | 
| 
      
 2853 
     | 
    
         
            +
                      this.inputElement.constructor.prototype,
         
     | 
| 
      
 2854 
     | 
    
         
            +
                      'value'
         
     | 
| 
      
 2855 
     | 
    
         
            +
                    );
         
     | 
| 
      
 2856 
     | 
    
         
            +
             
     | 
| 
      
 2857 
     | 
    
         
            +
                    Object.defineProperty(source, 'value', {
         
     | 
| 
      
 2858 
     | 
    
         
            +
                      ...valueDescriptor,
         
     | 
| 
      
 2859 
     | 
    
         
            +
             
     | 
| 
      
 2860 
     | 
    
         
            +
                      set(v) {
         
     | 
| 
      
 2861 
     | 
    
         
            +
                        valueDescriptor.set.call(this, v);
         
     | 
| 
      
 2862 
     | 
    
         
            +
                        // eslint-disable-next-line no-param-reassign
         
     | 
| 
      
 2863 
     | 
    
         
            +
                        target.value = v;
         
     | 
| 
      
 2864 
     | 
    
         
            +
                      },
         
     | 
| 
      
 2865 
     | 
    
         
            +
                      configurable: true,
         
     | 
| 
      
 2866 
     | 
    
         
            +
                    });
         
     | 
| 
      
 2867 
     | 
    
         
            +
                  }
         
     | 
| 
      
 2868 
     | 
    
         
            +
                };
         
     | 
| 
      
 2869 
     | 
    
         
            +
             
     | 
| 
       2621 
2870 
     | 
    
         
             
            const getFileExtension = (path) => {
         
     | 
| 
       2622 
2871 
     | 
    
         
             
              const match = path.match(/\.([0-9a-z]+)(?:[\\?#]|$)/i);
         
     | 
| 
       2623 
2872 
     | 
    
         
             
              return match ? match[1] : null;
         
     | 
| 
         @@ -3057,6 +3306,10 @@ const { 
     | 
|
| 
       3057 
3306 
     | 
    
         
             
              disabledPlaceholder,
         
     | 
| 
       3058 
3307 
     | 
    
         
             
              inputDisabled,
         
     | 
| 
       3059 
3308 
     | 
    
         
             
              inputIcon,
         
     | 
| 
      
 3309 
     | 
    
         
            +
              externalInput,
         
     | 
| 
      
 3310 
     | 
    
         
            +
              externalInputDisabled,
         
     | 
| 
      
 3311 
     | 
    
         
            +
              externalPlaceholder,
         
     | 
| 
      
 3312 
     | 
    
         
            +
              externalDisabledPlaceholder,
         
     | 
| 
       3060 
3313 
     | 
    
         
             
            } = {
         
     | 
| 
       3061 
3314 
     | 
    
         
             
              host: { selector: () => ':host' },
         
     | 
| 
       3062 
3315 
     | 
    
         
             
              label: { selector: '::part(label)' },
         
     | 
| 
         @@ -3073,6 +3326,10 @@ const { 
     | 
|
| 
       3073 
3326 
     | 
    
         
             
              helperText: { selector: '::part(helper-text)' },
         
     | 
| 
       3074 
3327 
     | 
    
         
             
              errorMessage: { selector: '::part(error-message)' },
         
     | 
| 
       3075 
3328 
     | 
    
         
             
              inputIcon: { selector: 'vaadin-icon' },
         
     | 
| 
      
 3329 
     | 
    
         
            +
              externalInput: { selector: () => '::slotted(input)' },
         
     | 
| 
      
 3330 
     | 
    
         
            +
              externalInputDisabled: { selector: () => '::slotted(input:disabled)' },
         
     | 
| 
      
 3331 
     | 
    
         
            +
              externalPlaceholder: { selector: () => '::slotted(input:placeholder-shown)' },
         
     | 
| 
      
 3332 
     | 
    
         
            +
              externalDisabledPlaceholder: { selector: () => '::slotted(input:disabled::placeholder)' },
         
     | 
| 
       3076 
3333 
     | 
    
         
             
            };
         
     | 
| 
       3077 
3334 
     | 
    
         | 
| 
       3078 
3335 
     | 
    
         
             
            var textFieldMappings = {
         
     | 
| 
         @@ -3105,8 +3362,12 @@ var textFieldMappings = { 
     | 
|
| 
       3105 
3362 
     | 
    
         
             
              inputValueTextColor: [
         
     | 
| 
       3106 
3363 
     | 
    
         
             
                { ...inputField$6, property: 'color' },
         
     | 
| 
       3107 
3364 
     | 
    
         
             
                { ...inputDisabled, property: '-webkit-text-fill-color' },
         
     | 
| 
      
 3365 
     | 
    
         
            +
                { ...externalInputDisabled, property: '-webkit-text-fill-color' },
         
     | 
| 
      
 3366 
     | 
    
         
            +
              ],
         
     | 
| 
      
 3367 
     | 
    
         
            +
              inputCaretTextColor: [
         
     | 
| 
      
 3368 
     | 
    
         
            +
                { ...input, property: 'caret-color' },
         
     | 
| 
      
 3369 
     | 
    
         
            +
                { ...externalInput, property: 'caret-color' },
         
     | 
| 
       3108 
3370 
     | 
    
         
             
              ],
         
     | 
| 
       3109 
     | 
    
         
            -
              inputCaretTextColor: [{ ...input, property: 'color' }],
         
     | 
| 
       3110 
3371 
     | 
    
         | 
| 
       3111 
3372 
     | 
    
         
             
              labelRequiredIndicator: { ...requiredIndicator$b, property: 'content' },
         
     | 
| 
       3112 
3373 
     | 
    
         | 
| 
         @@ -3119,6 +3380,8 @@ var textFieldMappings = { 
     | 
|
| 
       3119 
3380 
     | 
    
         
             
              inputHorizontalPadding: [
         
     | 
| 
       3120 
3381 
     | 
    
         
             
                { ...input, property: 'padding-left' },
         
     | 
| 
       3121 
3382 
     | 
    
         
             
                { ...input, property: 'padding-right' },
         
     | 
| 
      
 3383 
     | 
    
         
            +
                { ...externalInput, property: 'padding-left' },
         
     | 
| 
      
 3384 
     | 
    
         
            +
                { ...externalInput, property: 'padding-right' },
         
     | 
| 
       3122 
3385 
     | 
    
         
             
              ],
         
     | 
| 
       3123 
3386 
     | 
    
         | 
| 
       3124 
3387 
     | 
    
         
             
              inputOutlineColor: { ...inputField$6, property: 'outline-color' },
         
     | 
| 
         @@ -3126,12 +3389,17 @@ var textFieldMappings = { 
     | 
|
| 
       3126 
3389 
     | 
    
         
             
              inputOutlineWidth: { ...inputField$6, property: 'outline-width' },
         
     | 
| 
       3127 
3390 
     | 
    
         
             
              inputOutlineOffset: { ...inputField$6, property: 'outline-offset' },
         
     | 
| 
       3128 
3391 
     | 
    
         | 
| 
       3129 
     | 
    
         
            -
              inputTextAlign: [ 
     | 
| 
      
 3392 
     | 
    
         
            +
              inputTextAlign: [
         
     | 
| 
      
 3393 
     | 
    
         
            +
                { ...input, property: 'text-align' },
         
     | 
| 
      
 3394 
     | 
    
         
            +
                { ...externalInput, property: 'text-align' },
         
     | 
| 
      
 3395 
     | 
    
         
            +
              ],
         
     | 
| 
       3130 
3396 
     | 
    
         | 
| 
       3131 
3397 
     | 
    
         
             
              inputPlaceholderColor: [
         
     | 
| 
       3132 
3398 
     | 
    
         
             
                { selector: () => ':host input:placeholder-shown', property: 'color' },
         
     | 
| 
      
 3399 
     | 
    
         
            +
                { ...externalPlaceholder, property: 'color' },
         
     | 
| 
       3133 
3400 
     | 
    
         
             
                { ...placeholder$3, property: 'color' },
         
     | 
| 
       3134 
3401 
     | 
    
         
             
                { ...disabledPlaceholder, property: '-webkit-text-fill-color' },
         
     | 
| 
      
 3402 
     | 
    
         
            +
                { ...externalDisabledPlaceholder, property: '-webkit-text-fill-color' },
         
     | 
| 
       3135 
3403 
     | 
    
         
             
              ],
         
     | 
| 
       3136 
3404 
     | 
    
         | 
| 
       3137 
3405 
     | 
    
         
             
              labelPosition: { ...label$9, property: 'position' },
         
     | 
| 
         @@ -3143,10 +3411,22 @@ var textFieldMappings = { 
     | 
|
| 
       3143 
3411 
     | 
    
         
             
              inputTransformY: { ...label$9, property: 'transform' },
         
     | 
| 
       3144 
3412 
     | 
    
         
             
              inputTransition: { ...label$9, property: 'transition' },
         
     | 
| 
       3145 
3413 
     | 
    
         
             
              marginInlineStart: { ...label$9, property: 'margin-inline-start' },
         
     | 
| 
       3146 
     | 
    
         
            -
              placeholderOpacity: [ 
     | 
| 
       3147 
     | 
    
         
            -
             
     | 
| 
       3148 
     | 
    
         
            -
             
     | 
| 
       3149 
     | 
    
         
            -
               
     | 
| 
      
 3414 
     | 
    
         
            +
              placeholderOpacity: [
         
     | 
| 
      
 3415 
     | 
    
         
            +
                { selector: '> input:placeholder-shown', property: 'opacity' },
         
     | 
| 
      
 3416 
     | 
    
         
            +
                { ...externalPlaceholder, property: 'opacity' },
         
     | 
| 
      
 3417 
     | 
    
         
            +
              ],
         
     | 
| 
      
 3418 
     | 
    
         
            +
              inputVerticalAlignment: [
         
     | 
| 
      
 3419 
     | 
    
         
            +
                { ...inputField$6, property: 'align-items' },
         
     | 
| 
      
 3420 
     | 
    
         
            +
                { ...externalInput, property: 'align-items' },
         
     | 
| 
      
 3421 
     | 
    
         
            +
              ],
         
     | 
| 
      
 3422 
     | 
    
         
            +
              valueInputHeight: [
         
     | 
| 
      
 3423 
     | 
    
         
            +
                { ...input, property: 'height' },
         
     | 
| 
      
 3424 
     | 
    
         
            +
                { ...externalInput, property: 'height' },
         
     | 
| 
      
 3425 
     | 
    
         
            +
              ],
         
     | 
| 
      
 3426 
     | 
    
         
            +
              valueInputMarginBottom: [
         
     | 
| 
      
 3427 
     | 
    
         
            +
                { ...input, property: 'margin-bottom' },
         
     | 
| 
      
 3428 
     | 
    
         
            +
                { ...externalInput, property: 'margin-bottom' },
         
     | 
| 
      
 3429 
     | 
    
         
            +
              ],
         
     | 
| 
       3150 
3430 
     | 
    
         | 
| 
       3151 
3431 
     | 
    
         
             
              inputIconOffset: [
         
     | 
| 
       3152 
3432 
     | 
    
         
             
                { ...inputIcon, property: 'margin-right' },
         
     | 
| 
         @@ -3658,6 +3938,15 @@ const customMixin$b = (superclass) => 
     | 
|
| 
       3658 
3938 
     | 
    
         
             
                  this.origSetPasswordVisible = this.baseElement._setPasswordVisible;
         
     | 
| 
       3659 
3939 
     | 
    
         
             
                  this.origSetFocused = this.baseElement._setFocused;
         
     | 
| 
       3660 
3940 
     | 
    
         
             
                  this.baseElement._setFocused = this.setFocus.bind(this);
         
     | 
| 
      
 3941 
     | 
    
         
            +
             
     | 
| 
      
 3942 
     | 
    
         
            +
                  this.initExternalInput();
         
     | 
| 
      
 3943 
     | 
    
         
            +
                }
         
     | 
| 
      
 3944 
     | 
    
         
            +
             
     | 
| 
      
 3945 
     | 
    
         
            +
                initExternalInput() {
         
     | 
| 
      
 3946 
     | 
    
         
            +
                  const externalInput = this.createExternalInput();
         
     | 
| 
      
 3947 
     | 
    
         
            +
                  if (externalInput) {
         
     | 
| 
      
 3948 
     | 
    
         
            +
                    this.handlePasswordVisibility(externalInput);
         
     | 
| 
      
 3949 
     | 
    
         
            +
                  }
         
     | 
| 
       3661 
3950 
     | 
    
         
             
                }
         
     | 
| 
       3662 
3951 
     | 
    
         | 
| 
       3663 
3952 
     | 
    
         
             
                get caretPosition() {
         
     | 
| 
         @@ -3672,6 +3961,7 @@ const customMixin$b = (superclass) => 
     | 
|
| 
       3672 
3961 
     | 
    
         
             
                    setTimeout(() => {
         
     | 
| 
       3673 
3962 
     | 
    
         
             
                      origTogglePasswordVisibility();
         
     | 
| 
       3674 
3963 
     | 
    
         
             
                      this.inputElement.setSelectionRange(this.caretPosition, this.caretPosition);
         
     | 
| 
      
 3964 
     | 
    
         
            +
                      return false;
         
     | 
| 
       3675 
3965 
     | 
    
         
             
                    });
         
     | 
| 
       3676 
3966 
     | 
    
         
             
                  };
         
     | 
| 
       3677 
3967 
     | 
    
         
             
                }
         
     | 
| 
         @@ -3698,6 +3988,44 @@ const customMixin$b = (superclass) => 
     | 
|
| 
       3698 
3988 
     | 
    
         
             
                attributeChangedCallback(attrName, oldValue, newValue) {
         
     | 
| 
       3699 
3989 
     | 
    
         
             
                  super.attributeChangedCallback?.(attrName, oldValue, newValue);
         
     | 
| 
       3700 
3990 
     | 
    
         
             
                }
         
     | 
| 
      
 3991 
     | 
    
         
            +
             
     | 
| 
      
 3992 
     | 
    
         
            +
                // override vaadin's password visibility toggle.
         
     | 
| 
      
 3993 
     | 
    
         
            +
                // we need this override in order to to resolve the external input `focus` race condition,
         
     | 
| 
      
 3994 
     | 
    
         
            +
                // which is caused due to the focus sync between the two inputs.
         
     | 
| 
      
 3995 
     | 
    
         
            +
                handlePasswordVisibility(externalInput) {
         
     | 
| 
      
 3996 
     | 
    
         
            +
                  // disable vaadin's `__boundRevealButtonMouseDown` mouse-down event lisetener
         
     | 
| 
      
 3997 
     | 
    
         
            +
                  const origBoundRevealButtonMouseDown = this.baseElement.__boundRevealButtonMouseDown;
         
     | 
| 
      
 3998 
     | 
    
         
            +
                  this.baseElement
         
     | 
| 
      
 3999 
     | 
    
         
            +
                    .querySelector('vaadin-password-field-button')
         
     | 
| 
      
 4000 
     | 
    
         
            +
                    .removeEventListener('mousedown', origBoundRevealButtonMouseDown);
         
     | 
| 
      
 4001 
     | 
    
         
            +
             
     | 
| 
      
 4002 
     | 
    
         
            +
                  // disable vaadin's `_passwordVisibleChanged` observer
         
     | 
| 
      
 4003 
     | 
    
         
            +
                  this.baseElement._passwordVisibleChanged = () => {};
         
     | 
| 
      
 4004 
     | 
    
         
            +
             
     | 
| 
      
 4005 
     | 
    
         
            +
                  // override vaadin's `_togglePasswordVisibility`
         
     | 
| 
      
 4006 
     | 
    
         
            +
                  this.baseElement._togglePasswordVisibility = () => {
         
     | 
| 
      
 4007 
     | 
    
         
            +
                    const currVisibility = externalInput.getAttribute('type');
         
     | 
| 
      
 4008 
     | 
    
         
            +
                    if (currVisibility === 'password') {
         
     | 
| 
      
 4009 
     | 
    
         
            +
                      this.showPasswordVisibility(externalInput);
         
     | 
| 
      
 4010 
     | 
    
         
            +
                    } else {
         
     | 
| 
      
 4011 
     | 
    
         
            +
                      this.hidePasswordVisibility(externalInput);
         
     | 
| 
      
 4012 
     | 
    
         
            +
                    }
         
     | 
| 
      
 4013 
     | 
    
         
            +
                  };
         
     | 
| 
      
 4014 
     | 
    
         
            +
                }
         
     | 
| 
      
 4015 
     | 
    
         
            +
             
     | 
| 
      
 4016 
     | 
    
         
            +
                showPasswordVisibility(input) {
         
     | 
| 
      
 4017 
     | 
    
         
            +
                  // handle input element's type
         
     | 
| 
      
 4018 
     | 
    
         
            +
                  input.setAttribute('type', 'text');
         
     | 
| 
      
 4019 
     | 
    
         
            +
                  // handle vaadin's `password-visible` attribute
         
     | 
| 
      
 4020 
     | 
    
         
            +
                  this.setAttribute('password-visible', 'true');
         
     | 
| 
      
 4021 
     | 
    
         
            +
                }
         
     | 
| 
      
 4022 
     | 
    
         
            +
             
     | 
| 
      
 4023 
     | 
    
         
            +
                hidePasswordVisibility(input) {
         
     | 
| 
      
 4024 
     | 
    
         
            +
                  // handle input element's type
         
     | 
| 
      
 4025 
     | 
    
         
            +
                  input.setAttribute('type', 'password');
         
     | 
| 
      
 4026 
     | 
    
         
            +
                  // handle vaadin's `password-visible` attribute
         
     | 
| 
      
 4027 
     | 
    
         
            +
                  this.setAttribute('password-visible', 'false');
         
     | 
| 
      
 4028 
     | 
    
         
            +
                }
         
     | 
| 
       3701 
4029 
     | 
    
         
             
              };
         
     | 
| 
       3702 
4030 
     | 
    
         | 
| 
       3703 
4031 
     | 
    
         
             
            const {
         
     | 
| 
         @@ -3792,7 +4120,12 @@ const PasswordClass = compose( 
     | 
|
| 
       3792 
4120 
     | 
    
         
             
                },
         
     | 
| 
       3793 
4121 
     | 
    
         
             
              }),
         
     | 
| 
       3794 
4122 
     | 
    
         
             
              draggableMixin,
         
     | 
| 
       3795 
     | 
    
         
            -
               
     | 
| 
      
 4123 
     | 
    
         
            +
              externalInputMixin({
         
     | 
| 
      
 4124 
     | 
    
         
            +
                inputType: 'password',
         
     | 
| 
      
 4125 
     | 
    
         
            +
                includeAttrs: ['disabled', 'readonly', 'pattern', 'type', 'autocomplete'],
         
     | 
| 
      
 4126 
     | 
    
         
            +
                noBlurDispatch: true,
         
     | 
| 
      
 4127 
     | 
    
         
            +
              }),
         
     | 
| 
      
 4128 
     | 
    
         
            +
              composedProxyInputMixin({ proxyProps: ['value', 'selectionStart'], useProxyTargets: true }),
         
     | 
| 
       3796 
4129 
     | 
    
         
             
              componentNameValidationMixin,
         
     | 
| 
       3797 
4130 
     | 
    
         
             
              passwordDraggableMixin,
         
     | 
| 
       3798 
4131 
     | 
    
         
             
              customMixin$b
         
     | 
| 
         @@ -3856,6 +4189,10 @@ const PasswordClass = compose( 
     | 
|
| 
       3856 
4189 
     | 
    
         
             
                  ::part(reveal-button) {
         
     | 
| 
       3857 
4190 
     | 
    
         
             
                    align-self: center;
         
     | 
| 
       3858 
4191 
     | 
    
         
             
                  }
         
     | 
| 
      
 4192 
     | 
    
         
            +
             
     | 
| 
      
 4193 
     | 
    
         
            +
                  vaadin-password-field[external-input="true"] > input:not(:placeholder-shown) {
         
     | 
| 
      
 4194 
     | 
    
         
            +
                    opacity: 0;
         
     | 
| 
      
 4195 
     | 
    
         
            +
                  }
         
     | 
| 
       3859 
4196 
     | 
    
         
             
            		`,
         
     | 
| 
       3860 
4197 
     | 
    
         
             
                excludeAttrsSync: ['tabindex'],
         
     | 
| 
       3861 
4198 
     | 
    
         
             
                componentName: componentName$R,
         
     | 
| 
         @@ -4007,6 +4344,8 @@ const customMixin$a = (superclass) => 
     | 
|
| 
       4007 
4344 
     | 
    
         
             
                  if (!this.getAttribute('autocomplete')) {
         
     | 
| 
       4008 
4345 
     | 
    
         
             
                    this.setAttribute('autocomplete', defaultAutocomplete);
         
     | 
| 
       4009 
4346 
     | 
    
         
             
                  }
         
     | 
| 
      
 4347 
     | 
    
         
            +
             
     | 
| 
      
 4348 
     | 
    
         
            +
                  this.createExternalInput();
         
     | 
| 
       4010 
4349 
     | 
    
         
             
                }
         
     | 
| 
       4011 
4350 
     | 
    
         
             
              };
         
     | 
| 
       4012 
4351 
     | 
    
         | 
| 
         @@ -4015,6 +4354,11 @@ const EmailFieldClass = compose( 
     | 
|
| 
       4015 
4354 
     | 
    
         
             
                mappings: textFieldMappings,
         
     | 
| 
       4016 
4355 
     | 
    
         
             
              }),
         
     | 
| 
       4017 
4356 
     | 
    
         
             
              draggableMixin,
         
     | 
| 
      
 4357 
     | 
    
         
            +
              externalInputMixin({
         
     | 
| 
      
 4358 
     | 
    
         
            +
                inputType: 'text',
         
     | 
| 
      
 4359 
     | 
    
         
            +
                autocompleteType: 'username',
         
     | 
| 
      
 4360 
     | 
    
         
            +
                includeAttrs: ['disabled', 'readonly', 'pattern'],
         
     | 
| 
      
 4361 
     | 
    
         
            +
              }),
         
     | 
| 
       4018 
4362 
     | 
    
         
             
              composedProxyInputMixin({ proxyProps: ['value', 'selectionStart'], useProxyTargets: true }),
         
     | 
| 
       4019 
4363 
     | 
    
         
             
              componentNameValidationMixin,
         
     | 
| 
       4020 
4364 
     | 
    
         
             
              customMixin$a
         
     | 
| 
         @@ -4046,6 +4390,10 @@ const EmailFieldClass = compose( 
     | 
|
| 
       4046 
4390 
     | 
    
         
             
                  :host ::slotted(*) {
         
     | 
| 
       4047 
4391 
     | 
    
         
             
                    -webkit-mask-image: none;
         
     | 
| 
       4048 
4392 
     | 
    
         
             
                  }
         
     | 
| 
      
 4393 
     | 
    
         
            +
             
     | 
| 
      
 4394 
     | 
    
         
            +
                  vaadin-email-field[external-input="true"] > input:not(:placeholder-shown) {
         
     | 
| 
      
 4395 
     | 
    
         
            +
                    opacity: 0;
         
     | 
| 
      
 4396 
     | 
    
         
            +
                  }
         
     | 
| 
       4049 
4397 
     | 
    
         
             
            		`,
         
     | 
| 
       4050 
4398 
     | 
    
         
             
                excludeAttrsSync: ['tabindex'],
         
     | 
| 
       4051 
4399 
     | 
    
         
             
                componentName: componentName$P,
         
     | 
| 
         @@ -8608,11 +8956,14 @@ const customMixin$6 = (superclass) => 
     | 
|
| 
       8608 
8956 
     | 
    
         | 
| 
       8609 
8957 
     | 
    
         
             
                  const template = document.createElement('template');
         
     | 
| 
       8610 
8958 
     | 
    
         | 
| 
      
 8959 
     | 
    
         
            +
                  const externalInputAttr = this.getAttribute('external-input');
         
     | 
| 
      
 8960 
     | 
    
         
            +
             
     | 
| 
       8611 
8961 
     | 
    
         
             
                  template.innerHTML = `
         
     | 
| 
       8612 
8962 
     | 
    
         
             
            			<${componentName$s}
         
     | 
| 
       8613 
8963 
     | 
    
         
             
            				name="new-password"
         
     | 
| 
       8614 
8964 
     | 
    
         
             
            				tabindex="-1"
         
     | 
| 
       8615 
8965 
     | 
    
         
             
            				slot="input"
         
     | 
| 
      
 8966 
     | 
    
         
            +
                    external-input="${externalInputAttr}"
         
     | 
| 
       8616 
8967 
     | 
    
         
             
            			>
         
     | 
| 
       8617 
8968 
     | 
    
         
             
                  </${componentName$s}>
         
     | 
| 
       8618 
8969 
     | 
    
         
             
            			`;
         
     | 
| 
         @@ -8621,6 +8972,10 @@ const customMixin$6 = (superclass) => 
     | 
|
| 
       8621 
8972 
     | 
    
         | 
| 
       8622 
8973 
     | 
    
         
             
                  this.inputElement = this.shadowRoot.querySelector(componentName$s);
         
     | 
| 
       8623 
8974 
     | 
    
         | 
| 
      
 8975 
     | 
    
         
            +
                  if (this.getAttribute('external-input') === 'true') {
         
     | 
| 
      
 8976 
     | 
    
         
            +
                    this.initExternalInput();
         
     | 
| 
      
 8977 
     | 
    
         
            +
                  }
         
     | 
| 
      
 8978 
     | 
    
         
            +
             
     | 
| 
       8624 
8979 
     | 
    
         
             
                  forwardAttrs(this, this.inputElement, {
         
     | 
| 
       8625 
8980 
     | 
    
         
             
                    includeAttrs: [
         
     | 
| 
       8626 
8981 
     | 
    
         
             
                      'password-label',
         
     | 
| 
         @@ -8645,6 +9000,34 @@ const customMixin$6 = (superclass) => 
     | 
|
| 
       8645 
9000 
     | 
    
         
             
                    ],
         
     | 
| 
       8646 
9001 
     | 
    
         
             
                  });
         
     | 
| 
       8647 
9002 
     | 
    
         
             
                }
         
     | 
| 
      
 9003 
     | 
    
         
            +
             
     | 
| 
      
 9004 
     | 
    
         
            +
                createSlottedExternalInput(node, slotName) {
         
     | 
| 
      
 9005 
     | 
    
         
            +
                  const externalInput = node.querySelector('input');
         
     | 
| 
      
 9006 
     | 
    
         
            +
                  const slotEle = document.createElement('slot');
         
     | 
| 
      
 9007 
     | 
    
         
            +
             
     | 
| 
      
 9008 
     | 
    
         
            +
                  const targetSlot = externalInput.getAttribute('slot');
         
     | 
| 
      
 9009 
     | 
    
         
            +
             
     | 
| 
      
 9010 
     | 
    
         
            +
                  slotEle.setAttribute('name', slotName);
         
     | 
| 
      
 9011 
     | 
    
         
            +
                  slotEle.setAttribute('slot', targetSlot);
         
     | 
| 
      
 9012 
     | 
    
         
            +
             
     | 
| 
      
 9013 
     | 
    
         
            +
                  node.appendChild(slotEle);
         
     | 
| 
      
 9014 
     | 
    
         
            +
             
     | 
| 
      
 9015 
     | 
    
         
            +
                  // move external input
         
     | 
| 
      
 9016 
     | 
    
         
            +
                  externalInput.setAttribute('slot', slotName);
         
     | 
| 
      
 9017 
     | 
    
         
            +
                  externalInput.setAttribute('data-hidden-input', 'true');
         
     | 
| 
      
 9018 
     | 
    
         
            +
             
     | 
| 
      
 9019 
     | 
    
         
            +
                  this.appendChild(externalInput);
         
     | 
| 
      
 9020 
     | 
    
         
            +
                }
         
     | 
| 
      
 9021 
     | 
    
         
            +
             
     | 
| 
      
 9022 
     | 
    
         
            +
                initExternalInput() {
         
     | 
| 
      
 9023 
     | 
    
         
            +
                  // get descope input components
         
     | 
| 
      
 9024 
     | 
    
         
            +
                  this.passwordInput = this.inputElement.querySelector('[data-id="password"]');
         
     | 
| 
      
 9025 
     | 
    
         
            +
                  this.confirmInput = this.inputElement.querySelector('[data-id="confirm"]');
         
     | 
| 
      
 9026 
     | 
    
         
            +
             
     | 
| 
      
 9027 
     | 
    
         
            +
                  // create slots for external password input
         
     | 
| 
      
 9028 
     | 
    
         
            +
                  this.createSlottedExternalInput(this.passwordInput, 'external-password-input');
         
     | 
| 
      
 9029 
     | 
    
         
            +
                  this.createSlottedExternalInput(this.confirmInput, 'external-confirm-input');
         
     | 
| 
      
 9030 
     | 
    
         
            +
                }
         
     | 
| 
       8648 
9031 
     | 
    
         
             
              };
         
     | 
| 
       8649 
9032 
     | 
    
         | 
| 
       8650 
9033 
     | 
    
         
             
            const {
         
     |