@festo-ui/react 5.0.0-dev.105 → 5.0.0-dev.107

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/index.css CHANGED
@@ -1,4 +1,4 @@
1
- .fr-accordion{background-color:var(--fwe-white)}.fr-accordion,.fr-accordion-header{border-bottom:1px solid var(--fwe-gray-100)}.fr-accordion-header{align-items:center;color:var(--fwe-text);display:flex;font-size:var(--fwe-font-size-md);font-weight:var(--fwe-font-weight-bold);height:48px;padding:0 16px 0 24px}.fr-accordion-item-body{height:0;overflow:hidden;transition:height .3s cubic-bezier(.4,0,.2,1)}.fr-accordion-item-body>:first-child:not(.fr-accordion-item-body-spacer-bottom):not(.fr-accordion){margin-top:0!important;padding-top:0!important}.fr-accordion-item-body>:not(.fr-accordion){margin-right:0}.fr-accordion-item-body-content{margin-right:64px}.fr-accordion-item-body-spacer-bottom{height:0;margin-top:24px;width:0}.fr-accordion-item-body .fr-accordion{margin-bottom:24px;margin-top:64px}.fr-accordion-item-body .fr-accordion-item-link{display:block;top:8px}.fr-accordion-item-body .fr-accordion-item-header{padding-right:32px;padding-top:32px}.fr-accordion-item-body .fr-accordion-item:after{color:var(--fwe-caerul);content:"";font-family:var(--fwe-font-family-icons-16);font-size:var(--fwe-font-size-base);height:16px;line-height:16px;right:4px;top:12px}.fr-accordion-item-body .fr-accordion-item--expanded:before{background-color:transparent}@media(min-width:600px){.fr-accordion-item-body>:not(.fng-accordion){margin-right:64px}.fr-accordion-item-body .fr-accordion-item-header{padding-right:168px;padding-top:24px}.fr-accordion-item-body .fr-accordion-item-link{font-size:var(--fwe-font-size-base);max-width:128px;overflow:hidden;text-overflow:ellipsis;top:24px;white-space:nowrap}.fr-accordion-item-body .fr-accordion-item:after{top:30px}}.fr-accordion-item-header{align-items:center;cursor:pointer;display:flex;min-height:48px;padding:24px 64px 24px 0}.fr-accordion-item{border-bottom:1px solid var(--fwe-gray-100);border-top:1px solid var(--fwe-gray-100);padding:0 16px 0 24px;position:relative}.fr-accordion-item-link{color:var(--fwe-caerul);display:none;font-size:var(--fwe-font-size-md);pointer-events:none;position:absolute;right:24px;top:24px}.fr-accordion-item:before{background-color:var(--fwe-caerul);content:"";display:block;height:0;left:0;position:absolute;top:0;width:4px}.fr-accordion-item:after{content:"";display:block;font-family:var(--fwe-font-family-icons-32);font-size:var(--fwe-font-size-xxl);height:32px;line-height:32px;pointer-events:none;position:absolute;right:16px;top:21px;transition:transform .2s ease}.fr-accordion-item--expanded .fr-accordion-item-header{font-weight:var(--fwe-font-weight-bold)}.fr-accordion-item--expanded .fr-accordion-item-body{height:auto}.fr-accordion-item--expanded:after{transform:rotate(-180deg)}.fr-accordion-item--expanded:before{height:100%}.fr-accordion-item--collapsed .fr-accordion-item-body{height:0}.fr-accordion-item--collapsed .fr-accordion-item-header{font-weight:var(--fwe-font-weight-normal)}.fwe-chip-container .fr-chip .fwe-icon-menu-close{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#333;font-size:var(--fwe-font-size-base);line-height:var(--fwe-font-size-base);margin-left:0;padding-right:0;position:absolute;right:5px;top:3px}.fwe-chip-container .fr-chip .fwe-icon-menu-close:before{font-family:var(--fwe-font-family-icons-32)}.fwe-chip-container .fr-chip.fwe-chip.fwe-selected.fwe-category:after{content:none}.fr-modal{opacity:0}.fr-modal-enter-done{opacity:1;transition:opacity .1s ease-out .3s}.fr-modal-backdrop{opacity:0}.fr-modal-backdrop-enter-done{opacity:1;transition:opacity .3s ease-out}.fr-modal-backdrop-exit,.fr-modal-exit{opacity:1}.fr-modal-backdrop-exit-active,.fr-modal-exit-active{opacity:0;transition:opacity .6s}.fwe-page-dot:focus{background:var(--fwe-control-border-dark);outline:0}.fwe-popover-menu #tooltip{background:#fff;box-shadow:0 1px 4px rgba(51,51,51,.2)}.fwe-popover-menu #tooltip,.fwe-popover-menu .fwe-popover{font-size:var(--fwe-font-size-base);line-height:1.5rem;padding:16px}.fwe-popover-menu .fwe-list-group .fwe-list-group-item{border-bottom:none;min-height:36px;padding:0}.fwe-popover-menu .fwe-list-group .fwe-list-group-item button{display:inline-flex;height:32px;margin-left:inherit;max-height:32px;padding:0 8px 0 0;text-align:left;width:100%}.fwe-popover-menu .fwe-list-group .fwe-list-group-item button:hover{color:var(--fwe-black)}.fwe-popover-menu .fwe-list-group .fwe-list-group-item button i{align-items:center;display:inline-flex;flex-wrap:nowrap;height:24px;justify-content:center;width:32px}.fwe-popover-menu .fwe-list-group .fwe-list-group-item button i:before{display:inline-flex}.fwe-popover-menu .fwe-list-group .fwe-list-group-item button span{display:inline-flex;height:24px}.fwe-popover-menu .fwe-list-group .fwe-list-group-item button [class*=" fwe-icon-"]{margin-left:inherit}.fwe-popover-menu .fwe-list-group .fwe-list-group-item:hover{background-color:rgba(51,51,51,.102);color:var(--fwe-black)}.fwe-popover-menu .fwe-list-group .fwe-list-group-item:active{background-color:rgba(51,51,51,.2)}#arrow,#arrow:after{height:12px;position:absolute;transform:rotate(45deg);width:12px}#arrow{height:17px;overflow:hidden;width:17px}#arrow:after{background:#fff;box-shadow:0 1px 4px rgba(51,51,51,.2);content:"";z-index:-1}.fwe-popover-container[data-popper-placement^=top]>#arrow{top:100%}.fwe-popover-container[data-popper-placement^=top]>#arrow:after{left:3px;top:-6px}.fwe-popover-container[data-popper-placement^=bottom]>#arrow{top:-17px}.fwe-popover-container[data-popper-placement^=bottom]>#arrow:after{left:3px;top:11px}.fwe-popover-container[data-popper-placement^=left]>#arrow{left:100%}.fwe-popover-container[data-popper-placement^=left]>#arrow:after{left:-6px;top:2px}.fwe-popover-container[data-popper-placement^=right]>#arrow{left:-17px}.fwe-popover-container[data-popper-placement^=right]>#arrow:after{left:11px;top:2px}.fr-tooltip-container{width:-moz-fit-content;width:fit-content}.fwe-w-100{width:100%}.fwe-search-suggestion{height:40px}.fr-snackbar-wrapper{height:48px;margin-bottom:24px;opacity:1;opacity:0}.fr-snackbar-wrapper-enter-done{opacity:1;transition:opacity .6s ease-out}.fr-snackbar-wrapper-exit{opacity:1}.fr-snackbar-wrapper-exit-active{height:0;margin-bottom:0;opacity:0;transition:height .3s ease-out .3s,opacity .3s ease-out,margin-bottom .3s ease-out .3s}.fr-snackbar-wrapper--first{height:48px;margin-bottom:24px;opacity:1;transform:translateY(100px)}.fr-snackbar-wrapper--first-enter-done{opacity:1;transition:opacity .6s ease-out}.fr-snackbar-wrapper--first-exit{opacity:1}.fr-snackbar-wrapper--first-exit-active{height:0;margin-bottom:0;opacity:0;transition:height .3s ease-out .3s,opacity .3s ease-out,margin-bottom .3s ease-out .3s}.fr-snackbar-wrapper--first-enter-done{transform:translateY(0);transition:transform .6s ease-out}.fr-snackbar-wrapper--first-exit-active{transform:translateY(0)}.overflow-hidden{overflow:hidden}@keyframes stepperAnimation{0%{transform:translateX(100%)}to{transform:translateX(0)}}.fr-moving-container{animation-duration:.3s;animation-name:stepperAnimation;animation-timing-function:ease}.hidden{display:none}.fwe-stepper-vertical .fwe-step-container.fwe-step-active .fwe-step-content-container{height:20px}.fr-show{display:block}.fr-hide{display:none}.fwe-legacy-tabs{height:100%;margin:48px 0;width:100%}.fwe-legacy-tab-bar{display:flex;flex-wrap:nowrap;font-size:var(--fwe-font-size-base);list-style:none;margin-bottom:0;margin-top:0;padding-left:0;width:75%}.fwe-legacy-tab-bar.fwe-legacy-tab-bar-full-width{width:100%}.fwe-legacy-tab-bar.fwe-legacy-tab-items-fill .fwe-legacy-tab-item{flex:1 1 auto}.fwe-legacy-tab-bar.fwe-legacy-tab-items-equal-width .fwe-legacy-tab-item{flex:1 1 0}.fwe-legacy-tab-item{background-color:var(--fwe-gray-300);border-right:2px solid var(--fwe-gray-100);height:48px;max-height:48px;text-align:center}.fwe-legacy-tab-item:last-child{border-right:none}.fwe-legacy-tab-item.fwe-active{background-color:var(--fwe-white)}.fwe-legacy-tab-item.fwe-active .fwe-legacy-tab-link{color:var(--fwe-caerul)}.fwe-legacy-tab-item:not(.fwe-active){border-bottom:2px solid var(--fwe-gray-100)}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link{padding:11px 16px}.fwe-legacy-tab-link{color:var(--fwe-black);cursor:pointer;display:inline-block;height:48px;line-height:24px;padding:11px 16px 13px;white-space:nowrap;width:100%}.fwe-legacy-tab-link i.fwe-icon{padding-right:8px;vertical-align:initial}.fwe-legacy-tab-link i.fwe-icon.fwe-icon-lg{position:relative;top:3px}.fwe-legacy-tab-link:hover{color:var(--fwe-caerul)}.fwe-legacy-tab-link:active{background-color:var(--fwe-white);color:var(--fwe-caerul)}.fwe-legacy-tab-panel-content{background-color:var(--fwe-white);height:100%;overflow:auto;padding:48px 24px}@media(max-width:375px){.fwe-legacy-tab-bar{background-color:var(--fwe-white);justify-content:space-between;width:100%}.fwe-legacy-tab-item{background-color:var(--fwe-white);border-right:2px solid var(--fwe-white)}.fwe-legacy-tab-item:not(.fwe-active){border-bottom:2px solid var(--fwe-white)}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link,.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link i.fwe-icon{color:var(--fwe-icon-gray)}.fwe-legacy-tab-link.fwe-can-swap-icon{direction:rtl}.fwe-legacy-tab-link.fwe-can-swap-icon i.fwe-icon{padding-left:8px;padding-right:0}}.fr-tab-panel-content{background-color:var(--fwe-white);height:100%;overflow:auto;padding:48px 24px}.fr-tab-bar{width:100%}.fr-tab-scroller{overflow-y:hidden}.fr-tab-scroller-scroll-area{display:flex;overflow-x:hidden;position:relative}.fr-tab-scroller-scroll-area::-webkit-scrollbar{display:none}.fr-tab-scroller-scroll-area--scroll{overflow-x:scroll}.fr-tab-scroller-scroll-content{display:flex;flex:1 0 auto;padding:0 17px 0 16px;position:relative;transform:none;will-change:transform}.fr-tab-scroller-scroll-content--with-divider .fr-tab-scroller-divider-line{display:block}.fr-tab-scroller--animating .fr-tab-scroller-scroll-content{transition:transform .25s cubic-bezier(.4,0,.2,1)}.fr-tab-scroller-divider-line{border-bottom:1px solid var(--fwe-control);bottom:0;display:none;left:0;position:absolute;right:0;top:0}.fr-tab-indicator{display:flex;height:100%;justify-content:center;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:1}.fr-tab-indicator-content{opacity:0;transform-origin:left}.fr-tab-indicator-content--underline{align-self:flex-end;border-top-style:solid;box-sizing:border-box;width:100%}.fr-tab-indicator .fr-tab-indicator-content{transition:transform .25s cubic-bezier(.4,0,.2,1)}.fr-tab-indicator .fr-tab-indicator-content--underline{border-top:4px solid var(--fwe-caerul)}.fr-tab-indicator--active .fr-tab-indicator-content{opacity:1}.fr-tab{-webkit-appearance:none;background:none;border:none;cursor:pointer;display:flex;flex:1 0 auto;height:36px;justify-content:center;margin:0;outline:none;padding:0;position:relative;text-align:center;white-space:nowrap;z-index:1}.fr-tab:not(:last-child){margin-right:32px}.fr-tab::-moz-focus-inner{border:0;padding:0}.fr-tab .fr-tab-text-label{color:var(--fwe-text)}.fr-tab--active .fr-tab-text-label{color:var(--fwe-caerul)}.fr-tab-content{align-items:flex-start;display:flex;height:inherit;justify-content:center;pointer-events:none;position:relative}.fr-tab-text-label{display:inline-block;z-index:2}.fr-tab-scroller-scroll-area:not(.fr-tab-scroller-scroll-area--compact) .fr-tab{flex:none}.fr-tab-scroller-scroll-area:not(.fr-tab-scroller-scroll-area--compact) .fr-tab:not(:last-child){margin-right:64px}.fr-tab-scroller-scroll-area:not(.fr-tab-scroller-scroll-area--compact) .fr-tab-scroller-scroll-content{padding:0 32px}.fr-tab-scroller-scroll-area:not(.fr-tab-scroller-scroll-area--compact) .fr-tab-scroller-divider-line{padding-right:64px}.fwe-checkbox-container{align-items:center;cursor:pointer;display:flex;flex-direction:row;font-family:var(--fwe-font-family-sans-serif);-webkit-user-select:none;-moz-user-select:none;user-select:none}.fwe-checkbox-container.fwe-label-below{flex-direction:column}.fwe-checkbox-container.fwe-label-below .fwe-checkbox-title{margin:8px 0 0}.fwe-checkbox-container.fwe-label-before{flex-direction:row-reverse;justify-content:flex-end}.fwe-checkbox-container.fwe-label-before .fwe-checkbox-title{margin:0 8px 0 0}.fwe-checkbox-container .fwe-checkbox-indicator-container{position:relative}.fwe-checkbox-container input{cursor:pointer;height:0;opacity:0;width:0}.fwe-checkbox-container .fwe-checkbox-title{color:var(--fwe-text);line-height:24px;margin-left:8px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.fwe-checkbox-container .fwe-checkbox-indicator-background{background:var(--fwe-white);border:1px solid var(--fwe-text-light);border-radius:2px;box-sizing:border-box;height:16px;transition:border-width .2s ease-out;width:16px}.fwe-checkbox-container .fwe-indeterminate-indicator{background:#fff;height:2px;left:3px;position:absolute;top:7px;width:10px}.fwe-checkbox-container svg{display:block;left:0;position:absolute;top:0}.fwe-checkbox-container.fr-checkbox-large .fwe-checkbox-indicator-background{border-radius:4px;height:24px;width:24px}.fwe-checkbox-container.fr-checkbox-large .fwe-indeterminate-indicator{left:5px;top:11px;width:14px}.fwe-checkbox-container.fr-checkbox-large.fr-checkbox-indeterminate .fwe-checkbox-indicator-background,.fwe-checkbox-container.fr-checkbox-large.fwe-checked .fwe-checkbox-indicator-background{border:12px solid var(--fwe-hero)}.fwe-checkbox-container:hover .fwe-checkbox-indicator-background{background-color:var(--fwe-control)}.fwe-checkbox-container:active .fwe-checkbox-indicator-background{background-color:var(--fwe-control-dark)}.fwe-checkbox-container.fr-checkbox-indeterminate .fwe-checkbox-indicator-background,.fwe-checkbox-container.fwe-checked .fwe-checkbox-indicator-background{border:8px solid var(--fwe-hero)}.fwe-checkbox-container.fr-checkbox-indeterminate:hover .fwe-checkbox-indicator-background,.fwe-checkbox-container.fwe-checked:hover .fwe-checkbox-indicator-background{border-color:var(--fwe-hero-dark)}.fwe-checkbox-container.fr-checkbox-indeterminate:active .fwe-checkbox-indicator-background,.fwe-checkbox-container.fwe-checked:active .fwe-checkbox-indicator-background{border-color:var(--fwe-hero-darker)}.fwe-checkbox-container.fr-checkbox-invalid .fwe-checkbox-indicator-background{background:var(--fwe-white);border:1px solid var(--fwe-red)}.fwe-checkbox-container.fwe-disabled{cursor:default}.fwe-checkbox-container.fwe-disabled .fwe-checkbox-indicator-background{background-color:var(--fwe-white);border:1px solid var(--fwe-control)}.fwe-checkbox-container.fwe-disabled.fr-checkbox-indeterminate .fwe-checkbox-indicator-background,.fwe-checkbox-container.fwe-disabled.fwe-checked .fwe-checkbox-indicator-background{background-color:var(--fwe-control);border:1px solid var(--fwe-control)}.fwe-checkbox-container.fwe-disabled.fr-checkbox-invalid .fwe-checkbox-indicator-background{background-color:var(--fwe-white);border:1px solid var(--fwe-control)}.fwe-checkbox-container.fwe-disabled .fwe-checkbox-title{color:var(--fwe-text-disabled)}.fwe-color-indicator .fwe-popover-container{position:relative}.fwe-color-indicator .fwe-popover-container .fwe-popover{background-color:var(--fwe-white);border-radius:4px;box-shadow:0 1px 4px rgba(51,51,51,.2);font-size:var(--fwe-font-size-md);line-height:1rem;padding:8px 16px 16px}.fwe-color-indicator .fwe-backdrop{background:transparent}.fwe-color-indicator .fwe-color-label{font-size:var(--fwe-font-size-small);font-weight:var(--fwe-font-weight-bold);height:18px;margin-bottom:4px}.fwe-color-indicator .fwe-color-container{display:flex}.fwe-color-indicator .fwe-color-container .fwe-color-box{background:var(--fwe-white);border:1px solid var(--fwe-control-border);border-radius:4px;height:24px;width:24px}.fwe-color-indicator .fwe-color-container .fwe-color-box .fwe-no-color-pattern{margin:2px}.fwe-color-indicator .fwe-color-container .fwe-color-indicator-text{margin-left:8px}.fwe-color-indicator.disabled{pointer-events:none}.fwe-color-indicator.disabled .fwe-color-label{color:var(--fwe-text-disabled)}.fwe-color-indicator.disabled .fwe-color-container .fwe-color-box{opacity:.5}.fwe-color-indicator.disabled .fwe-color-container .fwe-color-indicator-text{color:var(--fwe-text-disabled)}.fwe-triangle.fwe-triangle-bottom,.fwe-triangle.fwe-triangle-left,.fwe-triangle.fwe-triangle-right,.fwe-triangle.fwe-triangle-top{height:17px;overflow:hidden;position:absolute;width:17px}.fwe-triangle.fwe-triangle-bottom:after,.fwe-triangle.fwe-triangle-left:after,.fwe-triangle.fwe-triangle-right:after,.fwe-triangle.fwe-triangle-top:after{background:var(--fwe-white);box-shadow:0 1px 4px rgba(51,51,51,.2);content:"";height:12px;position:absolute;transform:rotate(45deg);width:12px}.fwe-popover,.fwe-popover.fwe-popover-menu{background-color:var(--fwe-white);border-radius:4px;box-shadow:0 1px 4px rgba(51,51,51,.2)}.fwe-popover{font-size:var(--fwe-font-size-md);line-height:1rem;padding:8px}.fwe-popover-container{display:inline-block;position:relative}.fwe-triangle.fwe-triangle-top{left:50%;top:-17px;transform:translateX(-8px)}.fwe-triangle.fwe-triangle-top:after{left:3px;top:11px}.fwe-triangle.fwe-triangle-bottom{left:50%;top:100%;transform:translateX(-8px)}.fwe-triangle.fwe-triangle-bottom:after{left:3px;top:-6px}.fwe-triangle.fwe-triangle-left{left:-17px;top:50%;transform:translateY(-8px)}.fwe-triangle.fwe-triangle-left:after{left:11px;top:2px}.fwe-triangle.fwe-triangle-right{left:100%;top:50%;transform:translateY(-8px)}.fwe-triangle.fwe-triangle-right:after{left:-6px;top:2px}.fwe-popover.fwe-popover-menu{font-size:var(--fwe-font-size-base);line-height:1.5rem;padding:16px}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item{border-bottom:none;min-height:36px;padding:0}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button{display:inline-flex;height:32px;justify-content:unset;margin-left:inherit;max-height:32px;padding:0 8px 0 0;text-align:left;width:100%}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button:hover{color:var(--fwe-black)}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button i{align-items:center;display:inline-flex;flex-wrap:nowrap;height:24px;justify-content:center;width:32px}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button i:before{display:inline-flex}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button span{display:inline-flex;height:24px}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button [class*=" fwe-icon-"]{margin-left:inherit}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item:hover{background-color:rgba(51,51,51,.102);color:var(--fwe-black)}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item:active{background-color:rgba(51,51,51,.2)}.fwe-popover .fwe-popover-legend{display:table;line-height:24px;margin:16px}.fwe-popover .fwe-popover-legend .fwe-popover-legend-content{display:table-row}.fwe-popover .fwe-popover-legend .fwe-popover-legend-content dt{display:table-cell;margin:0;padding-right:8px}.fwe-popover .fwe-popover-legend .fwe-popover-legend-content dd{display:table-cell;margin:0}.fwe-color-picker{width:216px}.fwe-color-picker.fwe-alpha-active{width:245px}.fwe-color-picker .fwe-gradient-picker{height:198px;margin:-7px;position:relative;width:198px}.fwe-color-picker .fwe-gradient-picker .fwe-brightness-gradient{background-image:linear-gradient(transparent,#000);bottom:7px;left:7px;position:absolute;right:7px;top:7px}.fwe-color-picker .fwe-gradient-picker .fwe-saturation-gradient{bottom:7px;left:7px;position:absolute;right:7px;top:7px}.fwe-color-picker .fwe-alpha-picker,.fwe-color-picker .fwe-hue-picker,.fwe-color-picker .fwe-vertical-picker{height:198px;margin:-7px -3px -7px 18px;position:relative;width:14px}.fwe-color-picker .fwe-alpha-picker .fwe-picker-background,.fwe-color-picker .fwe-hue-picker .fwe-picker-background,.fwe-color-picker .fwe-vertical-picker .fwe-picker-background{border-radius:4px;height:184px;margin:7px 3px;width:8px}.fwe-color-picker .fwe-alpha-picker .fwe-knob,.fwe-color-picker .fwe-hue-picker .fwe-knob,.fwe-color-picker .fwe-vertical-picker .fwe-knob{left:-3px}.fwe-color-picker .fwe-hue-picker .fwe-picker-background{background-image:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.fwe-color-picker .fwe-alpha-picker .fwe-no-color-pattern{margin:7px 3px;position:absolute}.fwe-color-picker .fwe-alpha-picker .fwe-picker-background{position:absolute}.fwe-color-picker .fwe-type-select{display:flex;position:relative}.fwe-color-picker .fwe-type-select .fwe-type-indicator{cursor:pointer;display:flex;flex-shrink:1}.fwe-color-picker .fwe-type-select .fwe-type-indicator .fwe-input-type{font-size:var(--fwe-font-size-small);font-weight:var(--fwe-font-weight-bold);line-height:calc(var(--fwe-font-size-small) + 5px)}.fwe-color-picker .fwe-type-select .fwe-type-indicator:hover{color:var(--fwe-hero)}.fwe-color-picker .fwe-type-select .fwe-icon-arrows-collapse{line-height:16px;margin-left:16px}.fwe-color-picker .fwe-type-select .fwe-popover{left:0;position:absolute;top:24px;z-index:1}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item{cursor:pointer;display:flex;padding:8px}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item:hover{color:var(--fwe-hero)}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item .fwe-icon-menu-check{margin-right:8px;opacity:0}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item.fwe-selected{cursor:default}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item.fwe-selected .fwe-icon-menu-check{opacity:1}.fwe-color-picker input::-webkit-inner-spin-button,.fwe-color-picker input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fwe-color-picker input[type=number]{-moz-appearance:textfield}.fwe-color-picker input{padding-right:0!important;text-align:center}.fwe-color-picker .fwe-hex-input{margin-right:16px;width:75px}.fwe-color-picker .fwe-green-input,.fwe-color-picker .fwe-red-input{margin-right:8px;width:32px}.fwe-color-picker .fwe-blue-input{width:32px}.fwe-color-picker .fwe-alpha-input span input{padding-right:16px!important;width:48px}.fwe-color-picker .fwe-alpha-input .fwe-percent-char{margin-left:-16px}.fwe-color-picker .fwe-color-grid{display:flex;flex-wrap:wrap;margin-bottom:-8px;margin-right:-8px}.fwe-color-picker .fwe-color-grid .fwe-color-item{align-items:center;border-radius:4px;color:#fff;display:flex;height:24px;justify-content:center;margin-bottom:8px;margin-right:8px;width:24px}.fwe-color-picker .fwe-color-grid .fwe-color-item.fwe-white-item{border:1px solid var(--fwe-control-border);color:#000}.fwe-color-picker .fwe-color-grid .fwe-remove-color-button{align-items:center;border:1px solid var(--fwe-control-border);border-radius:4px;color:var(--fwe-control);display:flex;height:24px;justify-content:center;margin-bottom:8px;margin-right:8px;width:24px}.fwe-color-picker .fwe-color-grid .fwe-remove-color-button .fwe-no-color-pattern{margin:2px}.fwe-color-picker .fwe-color-grid .fwe-remove-color-button i{color:transparent;position:absolute}.fwe-color-picker .fwe-knob{border:2px solid #fff;border-radius:50%;box-shadow:0 0 4px 0 rgba(0,0,0,.15);height:14px;position:absolute;width:14px;z-index:1}.flatpickr-calendar{margin-top:6px}.flatpickr-calendar:not(.open){display:none}.fwe-border-hero{border-color:var(--fwe-hero)!important}.fr-date-range-picker:hover input{color:var(--fwe-hero)}.fr-date-range-picker-inputs{display:flex;order:2}.fwe-select-wrapper{min-width:48px;width:100%}.fwe-select-wrapper select{display:none}.fwe-select-wrapper.fwe-disabled:before{color:var(--fwe-text-disabled)}.fwe-select-wrapper .fwe-select{cursor:pointer}.fwe-select-wrapper .fwe-select .fwe-select-content{line-height:1.5rem;overflow:hidden;padding-right:24px;text-overflow:ellipsis;white-space:nowrap}.fwe-select-wrapper .fwe-select.fwe-required:not(.fwe-disabled)~.fwe-select-label:after{content:"*";display:inline-block;left:3px;position:relative}.fwe-select-wrapper .fwe-select.fwe-required:not(.fwe-disabled):not(.fwe-invalid)~.fwe-select-valid{display:block}.fwe-select-wrapper .fwe-select:focus:not(:disabled){border-color:var(--fwe-hero);color:var(--fwe-hero)}.fwe-select-wrapper .fwe-select:focus:not(:disabled) option{color:var(--fwe-text)}.fwe-select-wrapper .fwe-select:focus:invalid{border-color:var(--fwe-red)}.fwe-select-wrapper .fwe-select.fwe-disabled{border-color:var(--fwe-control-disabled)!important;cursor:default}.fwe-select-wrapper .fwe-select.fwe-disabled .fwe-select-content,.fwe-select-wrapper .fwe-select.fwe-disabled~.fwe-select-label{color:var(--fwe-text-disabled)}.fwe-select-wrapper .fwe-select-options-container{background-color:var(--fwe-white);border:1px solid var(--fwe-gray-200);border-radius:4px;box-shadow:0 1px 4px rgba(0,0,0,.161);font-size:var(--fwe-font-size-base);left:0;list-style:none;margin:0;padding:8px;position:absolute;top:56px;width:100%;z-index:500}.fwe-select-wrapper .fwe-select-options-container .fwe-select-option{cursor:pointer;line-height:24px;min-height:24px;padding:12px 8px;position:relative}.fwe-select-wrapper .fwe-select-options-container .fwe-select-option:focus,.fwe-select-wrapper .fwe-select-options-container .fwe-select-option:hover{background-color:var(--fwe-gray-100);outline:none}.fwe-select-wrapper .fwe-select-options-container .fwe-select-option:last-child{border-bottom:none}.fwe-select-wrapper .fwe-select-options-container .fwe-select-option .fwe-select-option-content{display:block;line-height:24px;min-height:24px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:95%}.fwe-select-wrapper .fwe-select-label:empty~.fwe-select-options-container{top:40px}.fwe-select-wrapper .fwe-select.fwe-invalid.fwe-select:focus,.fwe-select-wrapper .fwe-select.fwe-invalid.fwe-select:hover{border-color:var(--fwe-red)}.fwe-select-wrapper .fwe-select.fwe-invalid~.fwe-select-invalid{display:block}.fwe-select-wrapper .fwe-select.fwe-invalid~.fwe-select-description{display:none}.fwe-select-wrapper .fr-select-scroll{overflow-y:scroll}label.fwe-slider{display:block;height:56px;position:relative}label.fwe-slider.fr-slider-label{height:83px}label.fwe-slider .fr-slider-value{bottom:0;color:var(--fwe-text);font-size:var(--fwe-font-size-base);margin-bottom:0;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}label.fwe-input-text .fr-textarea{overflow:visible}
1
+ .fr-accordion{background-color:var(--fwe-white)}.fr-accordion,.fr-accordion-header{border-bottom:1px solid var(--fwe-gray-100)}.fr-accordion-header{align-items:center;color:var(--fwe-text);display:flex;font-size:var(--fwe-font-size-md);font-weight:var(--fwe-font-weight-bold);height:48px;padding:0 16px 0 24px}.fr-accordion-item-body{height:0;overflow:hidden;transition:height .3s cubic-bezier(.4,0,.2,1)}.fr-accordion-item-body>:first-child:not(.fr-accordion-item-body-spacer-bottom):not(.fr-accordion){margin-top:0!important;padding-top:0!important}.fr-accordion-item-body>:not(.fr-accordion){margin-right:0}.fr-accordion-item-body-content{margin-right:64px}.fr-accordion-item-body-spacer-bottom{height:0;margin-top:24px;width:0}.fr-accordion-item-body .fr-accordion{margin-bottom:24px;margin-top:64px}.fr-accordion-item-body .fr-accordion-item-link{display:block;top:8px}.fr-accordion-item-body .fr-accordion-item-header{padding-right:32px;padding-top:32px}.fr-accordion-item-body .fr-accordion-item:after{color:var(--fwe-caerul);content:"";font-family:var(--fwe-font-family-icons-16);font-size:var(--fwe-font-size-base);height:16px;line-height:16px;right:4px;top:12px}.fr-accordion-item-body .fr-accordion-item--expanded:before{background-color:transparent}@media(min-width:600px){.fr-accordion-item-body>:not(.fng-accordion){margin-right:64px}.fr-accordion-item-body .fr-accordion-item-header{padding-right:168px;padding-top:24px}.fr-accordion-item-body .fr-accordion-item-link{font-size:var(--fwe-font-size-base);max-width:128px;overflow:hidden;text-overflow:ellipsis;top:24px;white-space:nowrap}.fr-accordion-item-body .fr-accordion-item:after{top:30px}}.fr-accordion-item-header{align-items:center;cursor:pointer;display:flex;min-height:48px;padding:24px 64px 24px 0}.fr-accordion-item{border-bottom:1px solid var(--fwe-gray-100);border-top:1px solid var(--fwe-gray-100);padding:0 16px 0 24px;position:relative}.fr-accordion-item-link{color:var(--fwe-caerul);display:none;font-size:var(--fwe-font-size-md);pointer-events:none;position:absolute;right:24px;top:24px}.fr-accordion-item:before{background-color:var(--fwe-caerul);content:"";display:block;height:0;left:0;position:absolute;top:0;width:4px}.fr-accordion-item:after{content:"";display:block;font-family:var(--fwe-font-family-icons-32);font-size:var(--fwe-font-size-xxl);height:32px;line-height:32px;pointer-events:none;position:absolute;right:16px;top:21px;transition:transform .2s ease}.fr-accordion-item--expanded .fr-accordion-item-header{font-weight:var(--fwe-font-weight-bold)}.fr-accordion-item--expanded .fr-accordion-item-body{height:auto}.fr-accordion-item--expanded:after{transform:rotate(-180deg)}.fr-accordion-item--expanded:before{height:100%}.fr-accordion-item--collapsed .fr-accordion-item-body{height:0}.fr-accordion-item--collapsed .fr-accordion-item-header{font-weight:var(--fwe-font-weight-normal)}.fwe-chip-container .fr-chip .fwe-icon-menu-close{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#333;font-size:var(--fwe-font-size-base);line-height:var(--fwe-font-size-base);margin-left:0;padding-right:0;position:absolute;right:5px;top:3px}.fwe-chip-container .fr-chip .fwe-icon-menu-close:before{font-family:var(--fwe-font-family-icons-32)}.fwe-chip-container .fr-chip.fwe-chip.fwe-selected.fwe-category:after{content:none}.fr-modal{opacity:0}.fr-modal-enter-done{opacity:1;transition:opacity .1s ease-out .3s}.fr-modal-backdrop{opacity:0}.fr-modal-backdrop-enter-done{opacity:1;transition:opacity .3s ease-out}.fr-modal-backdrop-exit,.fr-modal-exit{opacity:1}.fr-modal-backdrop-exit-active,.fr-modal-exit-active{opacity:0;transition:opacity .6s}.fwe-page-dot:focus{background:var(--fwe-control-border-dark);outline:0}.fwe-popover-menu #tooltip{background:#fff;box-shadow:0 1px 4px rgba(51,51,51,.2)}.fwe-popover-menu #tooltip,.fwe-popover-menu .fwe-popover{font-size:var(--fwe-font-size-base);line-height:1.5rem;padding:16px}.fwe-popover-menu .fwe-list-group .fwe-list-group-item{border-bottom:none;min-height:36px;padding:0}.fwe-popover-menu .fwe-list-group .fwe-list-group-item button{display:inline-flex;height:32px;margin-left:inherit;max-height:32px;padding:0 8px 0 0;text-align:left;width:100%}.fwe-popover-menu .fwe-list-group .fwe-list-group-item button:hover{color:var(--fwe-black)}.fwe-popover-menu .fwe-list-group .fwe-list-group-item button i{align-items:center;display:inline-flex;flex-wrap:nowrap;height:24px;justify-content:center;width:32px}.fwe-popover-menu .fwe-list-group .fwe-list-group-item button i:before{display:inline-flex}.fwe-popover-menu .fwe-list-group .fwe-list-group-item button span{display:inline-flex;height:24px}.fwe-popover-menu .fwe-list-group .fwe-list-group-item button [class*=" fwe-icon-"]{margin-left:inherit}.fwe-popover-menu .fwe-list-group .fwe-list-group-item:hover{background-color:rgba(51,51,51,.102);color:var(--fwe-black)}.fwe-popover-menu .fwe-list-group .fwe-list-group-item:active{background-color:rgba(51,51,51,.2)}#arrow,#arrow:after{height:12px;position:absolute;transform:rotate(45deg);width:12px}#arrow{height:17px;overflow:hidden;width:17px}#arrow:after{background:#fff;box-shadow:0 1px 4px rgba(51,51,51,.2);content:"";z-index:-1}.fwe-popover-container[data-popper-placement^=top]>#arrow{top:100%}.fwe-popover-container[data-popper-placement^=top]>#arrow:after{left:3px;top:-6px}.fwe-popover-container[data-popper-placement^=bottom]>#arrow{top:-17px}.fwe-popover-container[data-popper-placement^=bottom]>#arrow:after{left:3px;top:11px}.fwe-popover-container[data-popper-placement^=left]>#arrow{left:100%}.fwe-popover-container[data-popper-placement^=left]>#arrow:after{left:-6px;top:2px}.fwe-popover-container[data-popper-placement^=right]>#arrow{left:-17px}.fwe-popover-container[data-popper-placement^=right]>#arrow:after{left:11px;top:2px}.fr-tooltip-container{width:-moz-fit-content;width:fit-content}.fwe-w-100{width:100%}.fwe-search-suggestion{height:40px}.fr-snackbar-wrapper{height:48px;margin-bottom:24px;opacity:1;opacity:0}.fr-snackbar-wrapper-enter-done{opacity:1;transition:opacity .6s ease-out}.fr-snackbar-wrapper-exit{opacity:1}.fr-snackbar-wrapper-exit-active{height:0;margin-bottom:0;opacity:0;transition:height .3s ease-out .3s,opacity .3s ease-out,margin-bottom .3s ease-out .3s}.fr-snackbar-wrapper--first{height:48px;margin-bottom:24px;opacity:1;transform:translateY(100px)}.fr-snackbar-wrapper--first-enter-done{opacity:1;transition:opacity .6s ease-out}.fr-snackbar-wrapper--first-exit{opacity:1}.fr-snackbar-wrapper--first-exit-active{height:0;margin-bottom:0;opacity:0;transition:height .3s ease-out .3s,opacity .3s ease-out,margin-bottom .3s ease-out .3s}.fr-snackbar-wrapper--first-enter-done{transform:translateY(0);transition:transform .6s ease-out}.fr-snackbar-wrapper--first-exit-active{transform:translateY(0)}.overflow-hidden{overflow:hidden}@keyframes stepperAnimation{0%{transform:translateX(100%)}to{transform:translateX(0)}}.fr-moving-container{animation-duration:.3s;animation-name:stepperAnimation;animation-timing-function:ease}.hidden{display:none}.fwe-stepper-vertical .fwe-step-container.fwe-step-active .fwe-step-content-container{height:20px}.fr-show{display:block}.fr-hide{display:none}.fwe-legacy-tabs{height:100%;margin:48px 0;width:100%}.fwe-legacy-tab-bar{display:flex;flex-wrap:nowrap;font-size:var(--fwe-font-size-base);list-style:none;margin-bottom:0;margin-top:0;padding-left:0;width:75%}.fwe-legacy-tab-bar.fwe-legacy-tab-bar-full-width{width:100%}.fwe-legacy-tab-bar.fwe-legacy-tab-items-fill .fwe-legacy-tab-item{flex:1 1 auto}.fwe-legacy-tab-bar.fwe-legacy-tab-items-equal-width .fwe-legacy-tab-item{flex:1 1 0}.fwe-legacy-tab-item{background-color:var(--fwe-gray-300);border-right:2px solid var(--fwe-gray-100);height:48px;max-height:48px;text-align:center}.fwe-legacy-tab-item:last-child{border-right:none}.fwe-legacy-tab-item.fwe-active{background-color:var(--fwe-white)}.fwe-legacy-tab-item.fwe-active .fwe-legacy-tab-link{color:var(--fwe-caerul)}.fwe-legacy-tab-item:not(.fwe-active){border-bottom:2px solid var(--fwe-gray-100)}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link{padding:11px 16px}.fwe-legacy-tab-link{color:var(--fwe-black);cursor:pointer;display:inline-block;height:48px;line-height:24px;padding:11px 16px 13px;white-space:nowrap;width:100%}.fwe-legacy-tab-link i.fwe-icon{padding-right:8px;vertical-align:initial}.fwe-legacy-tab-link i.fwe-icon.fwe-icon-lg{position:relative;top:3px}.fwe-legacy-tab-link:hover{color:var(--fwe-caerul)}.fwe-legacy-tab-link:active{background-color:var(--fwe-white);color:var(--fwe-caerul)}.fwe-legacy-tab-panel-content{background-color:var(--fwe-white);height:100%;overflow:auto;padding:48px 24px}@media(max-width:375px){.fwe-legacy-tab-bar{background-color:var(--fwe-white);justify-content:space-between;width:100%}.fwe-legacy-tab-item{background-color:var(--fwe-white);border-right:2px solid var(--fwe-white)}.fwe-legacy-tab-item:not(.fwe-active){border-bottom:2px solid var(--fwe-white)}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link,.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link i.fwe-icon{color:var(--fwe-icon-gray)}.fwe-legacy-tab-link.fwe-can-swap-icon{direction:rtl}.fwe-legacy-tab-link.fwe-can-swap-icon i.fwe-icon{padding-left:8px;padding-right:0}}.fr-tab-panel-content{background-color:var(--fwe-white);height:100%;overflow:auto;padding:48px 24px}.fr-tab-bar{width:100%}.fr-tab-scroller{overflow-y:hidden}.fr-tab-scroller-scroll-area{display:flex;overflow-x:hidden;position:relative}.fr-tab-scroller-scroll-area::-webkit-scrollbar{display:none}.fr-tab-scroller-scroll-area--scroll{overflow-x:scroll}.fr-tab-scroller-scroll-content{display:flex;flex:1 0 auto;padding:0 17px 0 16px;position:relative;transform:none;will-change:transform}.fr-tab-scroller-scroll-content--with-divider .fr-tab-scroller-divider-line{display:block}.fr-tab-scroller--animating .fr-tab-scroller-scroll-content{transition:transform .25s cubic-bezier(.4,0,.2,1)}.fr-tab-scroller-divider-line{border-bottom:1px solid var(--fwe-control);bottom:0;display:none;left:0;position:absolute;right:0;top:0}.fr-tab-indicator{display:flex;height:100%;justify-content:center;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:1}.fr-tab-indicator-content{opacity:0;transform-origin:left}.fr-tab-indicator-content--underline{align-self:flex-end;border-top-style:solid;box-sizing:border-box;width:100%}.fr-tab-indicator .fr-tab-indicator-content{transition:transform .25s cubic-bezier(.4,0,.2,1)}.fr-tab-indicator .fr-tab-indicator-content--underline{border-top:4px solid var(--fwe-caerul)}.fr-tab-indicator--active .fr-tab-indicator-content{opacity:1}.fr-tab{-webkit-appearance:none;background:none;border:none;cursor:pointer;display:flex;flex:1 0 auto;height:36px;justify-content:center;margin:0;outline:none;padding:0;position:relative;text-align:center;white-space:nowrap;z-index:1}.fr-tab:not(:last-child){margin-right:32px}.fr-tab::-moz-focus-inner{border:0;padding:0}.fr-tab .fr-tab-text-label{color:var(--fwe-text)}.fr-tab--active .fr-tab-text-label{color:var(--fwe-caerul)}.fr-tab-content{align-items:flex-start;display:flex;height:inherit;justify-content:center;pointer-events:none;position:relative}.fr-tab-text-label{display:inline-block;z-index:2}.fr-tab-scroller-scroll-area:not(.fr-tab-scroller-scroll-area--compact) .fr-tab{flex:none}.fr-tab-scroller-scroll-area:not(.fr-tab-scroller-scroll-area--compact) .fr-tab:not(:last-child){margin-right:64px}.fr-tab-scroller-scroll-area:not(.fr-tab-scroller-scroll-area--compact) .fr-tab-scroller-scroll-content{padding:0 32px}.fr-tab-scroller-scroll-area:not(.fr-tab-scroller-scroll-area--compact) .fr-tab-scroller-divider-line{padding-right:64px}.fwe-checkbox-container{align-items:center;cursor:pointer;display:flex;flex-direction:row;font-family:var(--fwe-font-family-sans-serif);-webkit-user-select:none;-moz-user-select:none;user-select:none}.fwe-checkbox-container.fwe-label-below{flex-direction:column}.fwe-checkbox-container.fwe-label-below .fwe-checkbox-title{margin:8px 0 0}.fwe-checkbox-container.fwe-label-before{flex-direction:row-reverse;justify-content:flex-end}.fwe-checkbox-container.fwe-label-before .fwe-checkbox-title{margin:0 8px 0 0}.fwe-checkbox-container .fwe-checkbox-indicator-container{position:relative}.fwe-checkbox-container input{cursor:pointer;height:0;opacity:0;width:0}.fwe-checkbox-container .fwe-checkbox-title{color:var(--fwe-text);line-height:24px;margin-left:8px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.fwe-checkbox-container .fwe-checkbox-indicator-background{background:var(--fwe-white);border:1px solid var(--fwe-text-light);border-radius:2px;box-sizing:border-box;height:16px;transition:border-width .2s ease-out;width:16px}.fwe-checkbox-container .fwe-indeterminate-indicator{background:#fff;height:2px;left:3px;position:absolute;top:7px;width:10px}.fwe-checkbox-container svg{display:block;left:0;position:absolute;top:0}.fwe-checkbox-container.fr-checkbox-large .fwe-checkbox-indicator-background{border-radius:4px;height:24px;width:24px}.fwe-checkbox-container.fr-checkbox-large .fwe-indeterminate-indicator{left:5px;top:11px;width:14px}.fwe-checkbox-container.fr-checkbox-large.fr-checkbox-indeterminate .fwe-checkbox-indicator-background,.fwe-checkbox-container.fr-checkbox-large.fwe-checked .fwe-checkbox-indicator-background{border:12px solid var(--fwe-hero)}.fwe-checkbox-container:hover .fwe-checkbox-indicator-background{background-color:var(--fwe-control)}.fwe-checkbox-container:active .fwe-checkbox-indicator-background{background-color:var(--fwe-control-dark)}.fwe-checkbox-container.fr-checkbox-indeterminate .fwe-checkbox-indicator-background,.fwe-checkbox-container.fwe-checked .fwe-checkbox-indicator-background{border:8px solid var(--fwe-hero)}.fwe-checkbox-container.fr-checkbox-indeterminate:hover .fwe-checkbox-indicator-background,.fwe-checkbox-container.fwe-checked:hover .fwe-checkbox-indicator-background{border-color:var(--fwe-hero-dark)}.fwe-checkbox-container.fr-checkbox-indeterminate:active .fwe-checkbox-indicator-background,.fwe-checkbox-container.fwe-checked:active .fwe-checkbox-indicator-background{border-color:var(--fwe-hero-darker)}.fwe-checkbox-container.fr-checkbox-invalid .fwe-checkbox-indicator-background{background:var(--fwe-white);border:1px solid var(--fwe-red)}.fwe-checkbox-container.fwe-disabled{cursor:default}.fwe-checkbox-container.fwe-disabled .fwe-checkbox-indicator-background{background-color:var(--fwe-white);border:1px solid var(--fwe-control)}.fwe-checkbox-container.fwe-disabled.fr-checkbox-indeterminate .fwe-checkbox-indicator-background,.fwe-checkbox-container.fwe-disabled.fwe-checked .fwe-checkbox-indicator-background{background-color:var(--fwe-control);border:1px solid var(--fwe-control)}.fwe-checkbox-container.fwe-disabled.fr-checkbox-invalid .fwe-checkbox-indicator-background{background-color:var(--fwe-white);border:1px solid var(--fwe-control)}.fwe-checkbox-container.fwe-disabled .fwe-checkbox-title{color:var(--fwe-text-disabled)}.fwe-color-indicator .fwe-popover-container{position:relative}.fwe-color-indicator .fwe-popover-container .fwe-popover{background-color:var(--fwe-white);border-radius:4px;box-shadow:0 1px 4px rgba(51,51,51,.2);font-size:var(--fwe-font-size-md);line-height:1rem;padding:8px 16px 16px}.fwe-color-indicator .fwe-backdrop{background:transparent}.fwe-color-indicator .fwe-color-label{font-size:var(--fwe-font-size-small);font-weight:var(--fwe-font-weight-bold);height:18px;margin-bottom:4px}.fwe-color-indicator .fwe-color-container{display:flex}.fwe-color-indicator .fwe-color-container .fwe-color-box{background:var(--fwe-white);border:1px solid var(--fwe-control-border);border-radius:4px;height:24px;width:24px}.fwe-color-indicator .fwe-color-container .fwe-color-box .fwe-no-color-pattern{margin:2px}.fwe-color-indicator .fwe-color-container .fwe-color-indicator-text{margin-left:8px}.fwe-color-indicator.disabled{pointer-events:none}.fwe-color-indicator.disabled .fwe-color-label{color:var(--fwe-text-disabled)}.fwe-color-indicator.disabled .fwe-color-container .fwe-color-box{opacity:.5}.fwe-color-indicator.disabled .fwe-color-container .fwe-color-indicator-text{color:var(--fwe-text-disabled)}.fwe-triangle.fwe-triangle-bottom,.fwe-triangle.fwe-triangle-left,.fwe-triangle.fwe-triangle-right,.fwe-triangle.fwe-triangle-top{height:17px;overflow:hidden;position:absolute;width:17px}.fwe-triangle.fwe-triangle-bottom:after,.fwe-triangle.fwe-triangle-left:after,.fwe-triangle.fwe-triangle-right:after,.fwe-triangle.fwe-triangle-top:after{background:var(--fwe-white);box-shadow:0 1px 4px rgba(51,51,51,.2);content:"";height:12px;position:absolute;transform:rotate(45deg);width:12px}.fwe-popover,.fwe-popover.fwe-popover-menu{background-color:var(--fwe-white);border-radius:4px;box-shadow:0 1px 4px rgba(51,51,51,.2)}.fwe-popover{font-size:var(--fwe-font-size-md);line-height:1rem;padding:8px}.fwe-popover-container{display:inline-block;position:relative}.fwe-triangle.fwe-triangle-top{left:50%;top:-17px;transform:translateX(-8px)}.fwe-triangle.fwe-triangle-top:after{left:3px;top:11px}.fwe-triangle.fwe-triangle-bottom{left:50%;top:100%;transform:translateX(-8px)}.fwe-triangle.fwe-triangle-bottom:after{left:3px;top:-6px}.fwe-triangle.fwe-triangle-left{left:-17px;top:50%;transform:translateY(-8px)}.fwe-triangle.fwe-triangle-left:after{left:11px;top:2px}.fwe-triangle.fwe-triangle-right{left:100%;top:50%;transform:translateY(-8px)}.fwe-triangle.fwe-triangle-right:after{left:-6px;top:2px}.fwe-popover.fwe-popover-menu{font-size:var(--fwe-font-size-base);line-height:1.5rem;padding:16px}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item{border-bottom:none;min-height:36px;padding:0}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button{display:inline-flex;height:32px;justify-content:unset;margin-left:inherit;max-height:32px;padding:0 8px 0 0;text-align:left;width:100%}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button:hover{color:var(--fwe-black)}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button i{align-items:center;display:inline-flex;flex-wrap:nowrap;height:24px;justify-content:center;width:32px}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button i:before{display:inline-flex}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button span{display:inline-flex;height:24px}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button [class*=" fwe-icon-"]{margin-left:inherit}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item:hover{background-color:rgba(51,51,51,.102);color:var(--fwe-black)}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item:active{background-color:rgba(51,51,51,.2)}.fwe-popover .fwe-popover-legend{display:table;line-height:24px;margin:16px}.fwe-popover .fwe-popover-legend .fwe-popover-legend-content{display:table-row}.fwe-popover .fwe-popover-legend .fwe-popover-legend-content dt{display:table-cell;margin:0;padding-right:8px}.fwe-popover .fwe-popover-legend .fwe-popover-legend-content dd{display:table-cell;margin:0}.fwe-color-picker{width:216px}.fwe-color-picker.fwe-alpha-active{width:245px}.fwe-color-picker .fwe-gradient-picker{height:198px;margin:-7px;position:relative;width:198px}.fwe-color-picker .fwe-gradient-picker .fwe-brightness-gradient{background-image:linear-gradient(transparent,#000);bottom:7px;left:7px;position:absolute;right:7px;top:7px}.fwe-color-picker .fwe-gradient-picker .fwe-saturation-gradient{bottom:7px;left:7px;position:absolute;right:7px;top:7px}.fwe-color-picker .fwe-alpha-picker,.fwe-color-picker .fwe-hue-picker,.fwe-color-picker .fwe-vertical-picker{height:198px;margin:-7px -3px -7px 18px;position:relative;width:14px}.fwe-color-picker .fwe-alpha-picker .fwe-picker-background,.fwe-color-picker .fwe-hue-picker .fwe-picker-background,.fwe-color-picker .fwe-vertical-picker .fwe-picker-background{border-radius:4px;height:184px;margin:7px 3px;width:8px}.fwe-color-picker .fwe-alpha-picker .fwe-knob,.fwe-color-picker .fwe-hue-picker .fwe-knob,.fwe-color-picker .fwe-vertical-picker .fwe-knob{left:-3px}.fwe-color-picker .fwe-hue-picker .fwe-picker-background{background-image:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.fwe-color-picker .fwe-alpha-picker .fwe-no-color-pattern{margin:7px 3px;position:absolute}.fwe-color-picker .fwe-alpha-picker .fwe-picker-background{position:absolute}.fwe-color-picker .fwe-type-select{display:flex;position:relative}.fwe-color-picker .fwe-type-select .fwe-type-indicator{cursor:pointer;display:flex;flex-shrink:1}.fwe-color-picker .fwe-type-select .fwe-type-indicator .fwe-input-type{font-size:var(--fwe-font-size-small);font-weight:var(--fwe-font-weight-bold);line-height:calc(var(--fwe-font-size-small) + 5px)}.fwe-color-picker .fwe-type-select .fwe-type-indicator:hover{color:var(--fwe-hero)}.fwe-color-picker .fwe-type-select .fwe-icon-arrows-collapse{line-height:16px;margin-left:16px}.fwe-color-picker .fwe-type-select .fwe-popover{left:0;position:absolute;top:24px;z-index:1}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item{cursor:pointer;display:flex;padding:8px}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item:hover{color:var(--fwe-hero)}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item .fwe-icon-menu-check{margin-right:8px;opacity:0}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item.fwe-selected{cursor:default}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item.fwe-selected .fwe-icon-menu-check{opacity:1}.fwe-color-picker input::-webkit-inner-spin-button,.fwe-color-picker input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fwe-color-picker input[type=number]{-moz-appearance:textfield}.fwe-color-picker input{padding-right:0!important;text-align:center}.fwe-color-picker .fwe-hex-input{margin-right:16px;width:75px}.fwe-color-picker .fwe-green-input,.fwe-color-picker .fwe-red-input{margin-right:8px;width:32px}.fwe-color-picker .fwe-blue-input{width:32px}.fwe-color-picker .fwe-alpha-input span input{padding-right:16px!important;width:48px}.fwe-color-picker .fwe-alpha-input .fwe-percent-char{margin-left:-16px}.fwe-color-picker .fwe-color-grid{display:flex;flex-wrap:wrap;margin-bottom:-8px;margin-right:-8px}.fwe-color-picker .fwe-color-grid .fwe-color-item{align-items:center;border-radius:4px;color:#fff;display:flex;height:24px;justify-content:center;margin-bottom:8px;margin-right:8px;width:24px}.fwe-color-picker .fwe-color-grid .fwe-color-item.fwe-white-item{border:1px solid var(--fwe-control-border);color:#000}.fwe-color-picker .fwe-color-grid .fwe-remove-color-button{align-items:center;border:1px solid var(--fwe-control-border);border-radius:4px;color:var(--fwe-control);display:flex;height:24px;justify-content:center;margin-bottom:8px;margin-right:8px;width:24px}.fwe-color-picker .fwe-color-grid .fwe-remove-color-button .fwe-no-color-pattern{margin:2px}.fwe-color-picker .fwe-color-grid .fwe-remove-color-button i{color:transparent;position:absolute}.fwe-color-picker .fwe-knob{border:2px solid #fff;border-radius:50%;box-shadow:0 0 4px 0 rgba(0,0,0,.15);height:14px;position:absolute;width:14px;z-index:1}.flatpickr-calendar{margin-top:6px}.flatpickr-calendar:not(.open){display:none}.fwe-border-hero{border-color:var(--fwe-hero)!important}.fr-date-range-picker:hover input{color:var(--fwe-hero)}.fr-date-range-picker-inputs{display:flex;order:2}.fwe-select-wrapper{min-width:48px;width:100%}.fwe-select-wrapper .fr-select-input{bottom:0;box-sizing:border-box;left:0;opacity:0;pointer-events:none;position:absolute;width:100%}.fwe-select-wrapper.fwe-disabled:before{color:var(--fwe-text-disabled)}.fwe-select-wrapper .fwe-select{cursor:pointer}.fwe-select-wrapper .fwe-select .fwe-select-content{line-height:1.5rem;overflow:hidden;padding-right:24px;text-overflow:ellipsis;white-space:nowrap}.fwe-select-wrapper .fwe-select.fwe-required:not(.fwe-disabled)~.fwe-select-label:after{content:"*";display:inline-block;left:3px;position:relative}.fwe-select-wrapper .fwe-select.fwe-required:not(.fwe-disabled):not(.fwe-invalid)~.fwe-select-valid{display:block}.fwe-select-wrapper .fwe-select:focus:not(:disabled){border-color:var(--fwe-hero);color:var(--fwe-hero)}.fwe-select-wrapper .fwe-select:focus:not(:disabled) option{color:var(--fwe-text)}.fwe-select-wrapper .fwe-select:focus:invalid{border-color:var(--fwe-red)}.fwe-select-wrapper .fwe-select.fwe-disabled{border-color:var(--fwe-control-disabled)!important;cursor:default}.fwe-select-wrapper .fwe-select.fwe-disabled .fwe-select-content,.fwe-select-wrapper .fwe-select.fwe-disabled~.fwe-select-label{color:var(--fwe-text-disabled)}.fwe-select-wrapper .fwe-select-options-container{background-color:var(--fwe-white);border:1px solid var(--fwe-gray-200);border-radius:4px;box-shadow:0 1px 4px rgba(0,0,0,.161);font-size:var(--fwe-font-size-base);left:0;list-style:none;margin:0;padding:8px;position:absolute;top:56px;width:100%;z-index:500}.fwe-select-wrapper .fwe-select-options-container .fwe-select-option{cursor:pointer;line-height:24px;min-height:24px;padding:12px 8px;position:relative}.fwe-select-wrapper .fwe-select-options-container .fwe-select-option:focus,.fwe-select-wrapper .fwe-select-options-container .fwe-select-option:hover{background-color:var(--fwe-gray-100);outline:none}.fwe-select-wrapper .fwe-select-options-container .fwe-select-option:last-child{border-bottom:none}.fwe-select-wrapper .fwe-select-options-container .fwe-select-option .fwe-select-option-content{display:block;line-height:24px;min-height:24px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:95%}.fwe-select-wrapper .fwe-select-label:empty~.fwe-select-options-container{top:40px}.fwe-select-wrapper .fwe-select.fwe-invalid.fwe-select:focus,.fwe-select-wrapper .fwe-select.fwe-invalid.fwe-select:hover{border-color:var(--fwe-red)}.fwe-select-wrapper .fwe-select.fwe-invalid~.fwe-select-invalid{display:block}.fwe-select-wrapper .fwe-select.fwe-invalid~.fwe-select-description{display:none}.fwe-select-wrapper .fr-select-scroll{overflow-y:scroll}label.fwe-slider{display:block;height:56px;position:relative}label.fwe-slider.fr-slider-label{height:83px}label.fwe-slider .fr-slider-value{bottom:0;color:var(--fwe-text);font-size:var(--fwe-font-size-base);margin-bottom:0;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}label.fwe-input-text .fr-textarea{overflow:visible}
2
2
  /*!
3
3
  * Quill Editor v1.3.7
4
4
  * https://quilljs.com/
@@ -24,7 +24,7 @@ const Accordion = /*#__PURE__*/forwardRef((_ref, ref) => {
24
24
  keepItemsOpen,
25
25
  expanded,
26
26
  toggle: handleChange
27
- }), [expanded]);
27
+ }), [expanded, keepItemsOpen, showLess, showMore]);
28
28
  return /*#__PURE__*/_jsx(AccordionContext.Provider, {
29
29
  value: contextValue,
30
30
  children: /*#__PURE__*/_jsx("div", {
@@ -1,4 +1,4 @@
1
- import { useMemo, useState } from 'react';
1
+ import { useCallback, useMemo, useState } from 'react';
2
2
  import classNames from 'classnames';
3
3
  import Snackbar from './Snackbar';
4
4
  import SnackbarContext from './SnackbarContext';
@@ -13,7 +13,7 @@ function SnackbarProvider(props) {
13
13
  className
14
14
  } = props;
15
15
  const [snacks, setSnacks] = useState([]);
16
- function addSnackbar(snackData, onAction, onClose) {
16
+ const addSnackbar = useCallback((snackData, onAction, onClose) => {
17
17
  const key = snackData.key ?? new Date().getTime() + Math.random();
18
18
  setSnacks(prevSnacks => [{
19
19
  data: {
@@ -26,7 +26,7 @@ function SnackbarProvider(props) {
26
26
  first: prevSnacks.length === 0
27
27
  }, ...prevSnacks]);
28
28
  return key;
29
- }
29
+ }, [config]);
30
30
  function closeSnackbar(key) {
31
31
  if (key !== undefined) {
32
32
  setSnacks(prevSnacks => prevSnacks.filter(snack => snack.key !== key));
@@ -41,7 +41,7 @@ function SnackbarProvider(props) {
41
41
  const contextValue = useMemo(() => ({
42
42
  addSnackbar,
43
43
  closeSnackbar
44
- }), []);
44
+ }), [addSnackbar]);
45
45
  return /*#__PURE__*/_jsxs(SnackbarContext.Provider, {
46
46
  value: contextValue,
47
47
  children: [children, /*#__PURE__*/_jsx("div", {
@@ -22,7 +22,7 @@ function RadioGroup(_ref) {
22
22
  large,
23
23
  disabled,
24
24
  required
25
- }), []);
25
+ }), [checked, disabled, labelPosition, large, name, required, value]);
26
26
  return /*#__PURE__*/_jsx(RadioGroupContext.Provider, {
27
27
  value: contextValue,
28
28
  children: /*#__PURE__*/_jsx("div", {
@@ -1,13 +1,7 @@
1
- import React, { ComponentPropsWithoutRef } from 'react';
2
1
  import './Select.scss';
2
+ import React, { ComponentPropsWithoutRef } from 'react';
3
+ import { SelectConfiguration } from '../../helper/types';
3
4
  import { SelectOptionType } from './select-option/SelectOption';
4
- interface Configuration {
5
- hideLabel?: boolean;
6
- scroll?: {
7
- enabled?: boolean;
8
- viewportSize?: number;
9
- };
10
- }
11
5
  export interface SelectProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {
12
6
  defaultValue?: any;
13
7
  value?: any;
@@ -15,7 +9,7 @@ export interface SelectProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onCh
15
9
  options?: SelectOptionType[];
16
10
  required?: boolean;
17
11
  onChange?: (value: any) => void;
18
- config?: Configuration;
12
+ config?: SelectConfiguration;
19
13
  disabled?: boolean;
20
14
  name?: string;
21
15
  id?: string;
@@ -1,30 +1,16 @@
1
- import React, { useState, useEffect, useRef, useCallback, forwardRef } from 'react';
2
- import OutsideClickHandler from 'react-outside-click-handler';
3
1
  import classNames from 'classnames';
4
- import { SelectOption } from './select-option/SelectOption';
2
+ import React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';
3
+ import useControlled from '../../helper/useControlled';
4
+ import useForkRef from '../../helper/useForkRef';
5
+ import useOnClickOutside from '../../helper/useOnClickOutside';
6
+ import ListItem from './list-item/ListItem';
7
+ import calcVirtualScrollHeight from './utils';
5
8
  import { jsx as _jsx } from "react/jsx-runtime";
6
9
  import { Fragment as _Fragment } from "react/jsx-runtime";
7
10
  import { jsxs as _jsxs } from "react/jsx-runtime";
8
- function calcVirtualScrollHeight(config, itemLength) {
9
- const defaultHeight = 48;
10
- let height = defaultHeight;
11
- if (itemLength === 2) {
12
- height = defaultHeight * 2;
13
- } else if (itemLength >= 3) {
14
- height = defaultHeight * 3;
15
- }
16
- if (config?.scroll?.viewportSize != null && config.scroll.viewportSize !== undefined) {
17
- if (itemLength >= config.scroll.viewportSize) {
18
- height = config.scroll.viewportSize * defaultHeight;
19
- } else if (itemLength < config.scroll.viewportSize) {
20
- height = itemLength * defaultHeight;
21
- }
22
- }
23
- return height;
24
- }
25
11
  const Select = /*#__PURE__*/forwardRef((_ref, ref) => {
26
12
  let {
27
- defaultValue,
13
+ defaultValue = '',
28
14
  value,
29
15
  label,
30
16
  options,
@@ -44,8 +30,12 @@ const Select = /*#__PURE__*/forwardRef((_ref, ref) => {
44
30
  isFocused: false,
45
31
  action: ''
46
32
  });
47
- const controlled = value !== undefined;
48
- const [innerValue, setInnerValue] = useState(controlled ? value : defaultValue);
33
+ const [innerValue, setInnerValue] = useControlled({
34
+ controlled: value,
35
+ default: defaultValue
36
+ });
37
+ const innerRef = useRef(null);
38
+ const combinedRef = useForkRef(ref, innerRef);
49
39
  const buttonEl = useRef(null);
50
40
  const childrenList = [];
51
41
  React.Children.forEach(children, element => {
@@ -63,17 +53,7 @@ const Select = /*#__PURE__*/forwardRef((_ref, ref) => {
63
53
  const listItemRef = useRef(Array.from({
64
54
  length: usedOptions.length
65
55
  }, () => /*#__PURE__*/React.createRef()));
66
- useEffect(() => {
67
- if (controlled) {
68
- setInnerValue(value);
69
- }
70
- }, [value, controlled]);
71
- const getSelectedOptionLabel = useCallback(() => {
72
- if (innerValue !== undefined) {
73
- return usedOptions.find(option => option.data === innerValue)?.label;
74
- }
75
- return undefined;
76
- }, [usedOptions, innerValue]);
56
+ const getSelectedOptionLabel = useCallback(() => usedOptions.find(option => option.data === innerValue)?.label, [usedOptions, innerValue]);
77
57
  const scroll = config?.scroll;
78
58
  function handleButtonFocus(blur) {
79
59
  if (buttonEl && buttonEl.current) {
@@ -84,30 +64,31 @@ const Select = /*#__PURE__*/forwardRef((_ref, ref) => {
84
64
  }
85
65
  }
86
66
  }
87
- const focusNextElement = nextIndex => {
67
+ const focusNextElement = useCallback(nextIndex => {
88
68
  if (listItemRef && listItemRef.current) {
89
69
  const nextItem = listItemRef.current[nextIndex].current;
90
70
  if (nextItem !== null) {
91
71
  nextItem.focus();
92
72
  }
93
73
  }
94
- };
74
+ }, []);
75
+ const handleKeyAction = useCallback(index => {
76
+ if (index >= 0) {
77
+ focusNextElement(index);
78
+ }
79
+ }, [focusNextElement]);
95
80
  useEffect(() => {
96
81
  if (optionsWrapper.isFocused) {
97
82
  if (optionsWrapper.action === 'key') {
98
83
  const index = usedOptions.findIndex(option => option.label === getSelectedOptionLabel());
99
- if (index >= 0) {
100
- focusNextElement(index);
101
- }
84
+ handleKeyAction(index);
102
85
  } else if (optionsWrapper.action === 'click') {
103
86
  handleButtonFocus(true);
104
87
  }
105
88
  }
106
- }, [optionsWrapper, usedOptions, innerValue, getSelectedOptionLabel]);
89
+ }, [optionsWrapper, usedOptions, innerValue, getSelectedOptionLabel, handleKeyAction]);
107
90
  const handleOptionChange = newOption => {
108
- if (!controlled) {
109
- setInnerValue(newOption.data);
110
- }
91
+ setInnerValue(newOption.data);
111
92
  if (onChange) {
112
93
  onChange(newOption.data);
113
94
  }
@@ -119,28 +100,23 @@ const Select = /*#__PURE__*/forwardRef((_ref, ref) => {
119
100
  buttonEl.current.focus();
120
101
  }
121
102
  };
122
- const handleListKeyDown = (event, option, index) => {
103
+ const handleListKeyDown = (e, option, index) => {
123
104
  const arrowKeys = ['ArrowDown', 'ArrowUp'];
124
105
  const validKeys = ['Enter', ' '];
125
- if (arrowKeys.concat(validKeys).includes(event.key)) {
126
- event.preventDefault();
106
+ if (arrowKeys.concat(validKeys).includes(e.key)) {
107
+ e.preventDefault();
127
108
  }
128
- if (event.key === 'ArrowDown') {
109
+ if (e.key === 'ArrowDown') {
129
110
  focusNextElement((index + 1) % usedOptions.length);
130
111
  }
131
- if (event.key === 'ArrowUp') {
132
- event.preventDefault();
133
- let nextIndex = (index - 1) % usedOptions.length;
134
- if (nextIndex < 0) {
135
- nextIndex += usedOptions.length;
136
- }
112
+ if (e.key === 'ArrowUp') {
113
+ const nextIndex = (index - 1 + usedOptions.length) % usedOptions.length;
137
114
  focusNextElement(nextIndex);
138
115
  }
139
- if (validKeys.includes(event.key)) {
116
+ if (validKeys.includes(e.key)) {
140
117
  handleOptionChange(option);
141
- event.preventDefault();
142
118
  }
143
- if (event.key === 'Escape') {
119
+ if (e.key === 'Escape') {
144
120
  setOptionsWrapper(prevOptionsWrapper => ({
145
121
  ...prevOptionsWrapper,
146
122
  isFocused: false
@@ -169,6 +145,16 @@ const Select = /*#__PURE__*/forwardRef((_ref, ref) => {
169
145
  }));
170
146
  }
171
147
  };
148
+ const handleChange = event => {
149
+ const child = usedOptions.find(childItem => childItem.data === event.target.value);
150
+ if (child === undefined) {
151
+ return;
152
+ }
153
+ setInnerValue(child.data);
154
+ if (onChange) {
155
+ onChange(child.data);
156
+ }
157
+ };
172
158
  const selectedOptionLabel = getSelectedOptionLabel();
173
159
  const selectClassName = classNames('fwe-select', {
174
160
  'fwe-focus': optionsWrapper.isFocused
@@ -183,16 +169,12 @@ const Select = /*#__PURE__*/forwardRef((_ref, ref) => {
183
169
  });
184
170
  function renderOptions() {
185
171
  return /*#__PURE__*/_jsxs(_Fragment, {
186
- children: [options && options.map((option, i) => /*#__PURE__*/_jsx("li", {
172
+ children: [options && options.map((option, i) => /*#__PURE__*/_jsx(ListItem, {
187
173
  ref: listItemRef.current[i],
188
- role: "option",
189
174
  "aria-selected": option.label === selectedOptionLabel,
190
175
  onClick: () => handleOptionChange(option),
191
- className: classNames('fwe-select-option', {
192
- 'fwe-empty': !option.label
193
- }),
176
+ empty: !option.label,
194
177
  onKeyDown: e => handleListKeyDown(e, option, i),
195
- tabIndex: 0,
196
178
  children: /*#__PURE__*/_jsx("span", {
197
179
  className: "fwe-select-option-content",
198
180
  children: option.label
@@ -202,80 +184,68 @@ const Select = /*#__PURE__*/forwardRef((_ref, ref) => {
202
184
  option,
203
185
  ...propsWithoutOption
204
186
  } = child.props;
205
- return /*#__PURE__*/_jsx("li", {
187
+ return /*#__PURE__*/_jsx(ListItem, {
206
188
  ref: listItemRef.current[i],
207
- role: "option",
208
189
  "aria-selected": option.label === selectedOptionLabel,
209
190
  onClick: () => handleOptionChange(option),
210
- className: classNames('fwe-select-option', {
211
- 'fwe-empty': !option.label
212
- }),
191
+ empty: !option.label,
213
192
  onKeyDown: e => handleListKeyDown(e, option, i),
214
- tabIndex: 0,
215
- children: /*#__PURE__*/_jsx(SelectOption, {
193
+ children: /*#__PURE__*/_jsx("span", {
216
194
  ...propsWithoutOption
217
195
  })
218
196
  }, option.data);
219
197
  })]
220
198
  });
221
199
  }
222
- return /*#__PURE__*/_jsx(OutsideClickHandler, {
223
- onOutsideClick: () => setOptionsWrapper({
224
- action: '',
225
- isFocused: false
226
- }),
227
- children: /*#__PURE__*/_jsxs("div", {
228
- ref: ref,
229
- className: classNames('fwe-select-wrapper', className),
230
- ...props,
231
- children: [/*#__PURE__*/_jsx("select", {
232
- defaultValue: defaultValue,
233
- value: innerValue,
234
- name: name,
235
- id: id,
236
- "aria-label": label,
237
- disabled: disabled,
238
- required: required,
239
- children: usedOptions.map(option => /*#__PURE__*/_jsx("option", {
240
- value: option.data,
241
- children: option.label
242
- }, option.data))
243
- }), /*#__PURE__*/_jsx("div", {
244
- role: "button",
245
- tabIndex: 0,
246
- className: selectClassName,
247
- onClick: e => handleClick(e),
248
- ref: buttonEl,
249
- onKeyDown: handleKeyPress,
250
- children: /*#__PURE__*/_jsx("div", {
251
- className: "fwe-select-content",
252
- children: selectedOptionLabel
253
- })
254
- }), /*#__PURE__*/_jsx("label", {
255
- className: classNames('fwe-select-label', {
256
- 'fwe-sr-only': config?.hideLabel
257
- }),
258
- htmlFor: id,
259
- children: label || ''
260
- }), /*#__PURE__*/_jsx("div", {
261
- className: "fwe-select-underline"
262
- }), hint && !error && /*#__PURE__*/_jsx("div", {
263
- className: "fwe-select-description",
264
- children: hint
265
- }), error && /*#__PURE__*/_jsxs("div", {
266
- className: "fwe-select-invalid",
267
- children: [" ", error, " "]
268
- }), /*#__PURE__*/_jsx("ul", {
269
- className: `fwe-select-options-container${optionsWrapper.isFocused ? '' : ' fwe-d-none'}`,
270
- children: scroll?.enabled ? /*#__PURE__*/_jsx("div", {
271
- className: "fr-select-scroll",
272
- style: {
273
- height: calcVirtualScrollHeight(config, usedOptions.length)
274
- },
275
- children: renderOptions()
276
- }) : renderOptions()
277
- })]
278
- })
200
+ useOnClickOutside(innerRef, () => setOptionsWrapper({
201
+ action: '',
202
+ isFocused: false
203
+ }));
204
+ return /*#__PURE__*/_jsxs("div", {
205
+ ref: combinedRef,
206
+ className: classNames('fwe-select-wrapper', className),
207
+ ...props,
208
+ children: [/*#__PURE__*/_jsx("input", {
209
+ className: "fr-select-input",
210
+ "aria-hidden": true,
211
+ tabIndex: -1,
212
+ value: innerValue,
213
+ onChange: e => handleChange(e)
214
+ }), /*#__PURE__*/_jsx("div", {
215
+ role: "button",
216
+ tabIndex: 0,
217
+ className: selectClassName,
218
+ onClick: e => handleClick(e),
219
+ ref: buttonEl,
220
+ onKeyDown: handleKeyPress,
221
+ children: /*#__PURE__*/_jsx("div", {
222
+ className: "fwe-select-content",
223
+ children: selectedOptionLabel
224
+ })
225
+ }), /*#__PURE__*/_jsx("label", {
226
+ className: classNames('fwe-select-label', {
227
+ 'fwe-sr-only': config?.hideLabel
228
+ }),
229
+ htmlFor: id,
230
+ children: label || ''
231
+ }), /*#__PURE__*/_jsx("div", {
232
+ className: "fwe-select-underline"
233
+ }), hint && !error && /*#__PURE__*/_jsx("div", {
234
+ className: "fwe-select-description",
235
+ children: hint
236
+ }), error && /*#__PURE__*/_jsxs("div", {
237
+ className: "fwe-select-invalid",
238
+ children: [" ", error, " "]
239
+ }), /*#__PURE__*/_jsx("ul", {
240
+ className: `fwe-select-options-container${optionsWrapper.isFocused ? '' : ' fwe-d-none'}`,
241
+ children: scroll?.enabled ? /*#__PURE__*/_jsx("div", {
242
+ className: "fr-select-scroll",
243
+ style: {
244
+ height: calcVirtualScrollHeight(config, usedOptions.length)
245
+ },
246
+ children: renderOptions()
247
+ }) : renderOptions()
248
+ })]
279
249
  });
280
250
  });
281
251
  export default Select;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export interface ListItemProps extends React.ComponentPropsWithoutRef<'li'> {
3
+ empty?: boolean;
4
+ }
5
+ declare const ListItem: React.ForwardRefExoticComponent<ListItemProps & React.RefAttributes<HTMLLIElement>>;
6
+ export default ListItem;
@@ -0,0 +1,24 @@
1
+ import cn from 'classnames';
2
+ import React, { forwardRef } from 'react';
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ const ListItem = /*#__PURE__*/forwardRef((_ref, ref) => {
5
+ let {
6
+ children,
7
+ className,
8
+ "aria-selected": ariaSelected,
9
+ empty,
10
+ ...props
11
+ } = _ref;
12
+ return /*#__PURE__*/_jsx("li", {
13
+ ref: ref,
14
+ role: "option",
15
+ "aria-selected": ariaSelected,
16
+ className: cn('fwe-select-option', {
17
+ 'fwe-empty': empty
18
+ }, className),
19
+ tabIndex: 0,
20
+ ...props,
21
+ children: children
22
+ });
23
+ });
24
+ export default ListItem;
@@ -3,7 +3,7 @@ export interface SelectOptionType {
3
3
  label: string;
4
4
  data: any;
5
5
  }
6
- interface SelectOptionProps extends React.ComponentPropsWithoutRef<'span'> {
6
+ export interface SelectOptionProps extends React.ComponentPropsWithoutRef<'span'> {
7
7
  option: SelectOptionType;
8
8
  }
9
9
  export declare const SelectOption: React.ForwardRefExoticComponent<SelectOptionProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,2 @@
1
+ import { SelectConfiguration } from '../../helper/types';
2
+ export default function calcVirtualScrollHeight(config: SelectConfiguration | undefined, itemLength: number): number;
@@ -0,0 +1,17 @@
1
+ export default function calcVirtualScrollHeight(config, itemLength) {
2
+ const defaultHeight = 48;
3
+ let height = defaultHeight;
4
+ if (itemLength === 2) {
5
+ height = defaultHeight * 2;
6
+ } else if (itemLength >= 3) {
7
+ height = defaultHeight * 3;
8
+ }
9
+ if (config?.scroll?.viewportSize != null && config.scroll.viewportSize !== undefined) {
10
+ if (itemLength >= config.scroll.viewportSize) {
11
+ height = config.scroll.viewportSize * defaultHeight;
12
+ } else if (itemLength < config.scroll.viewportSize) {
13
+ height = itemLength * defaultHeight;
14
+ }
15
+ }
16
+ return height;
17
+ }
@@ -5,3 +5,10 @@ export interface ClassNameProps {
5
5
  export interface ClassNamePropsWithChildren extends ClassNameProps {
6
6
  children?: React.ReactNode;
7
7
  }
8
+ export interface SelectConfiguration {
9
+ hideLabel?: boolean;
10
+ scroll?: {
11
+ enabled?: boolean;
12
+ viewportSize?: number;
13
+ };
14
+ }
@@ -10,12 +10,13 @@ function useLegacyId() {
10
10
  nextId += 1;
11
11
  setId(`fr-${nextId}`);
12
12
  }
13
- }, [setId]);
13
+ }, [id]);
14
14
  return id;
15
15
  }
16
16
  export default function useId(idInput) {
17
17
  if (idInput !== undefined && idInput !== null) {
18
18
  return idInput;
19
19
  }
20
+ // eslint-disable-next-line react-hooks/rules-of-hooks
20
21
  return maybeReactUseId ? maybeReactUseId() : useLegacyId();
21
22
  }
@@ -31,7 +31,7 @@ const Accordion = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
31
31
  keepItemsOpen,
32
32
  expanded,
33
33
  toggle: handleChange
34
- }), [expanded]);
34
+ }), [expanded, keepItemsOpen, showLess, showMore]);
35
35
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_AccordionContext.default.Provider, {
36
36
  value: contextValue,
37
37
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
@@ -19,7 +19,7 @@ function SnackbarProvider(props) {
19
19
  className
20
20
  } = props;
21
21
  const [snacks, setSnacks] = (0, _react.useState)([]);
22
- function addSnackbar(snackData, onAction, onClose) {
22
+ const addSnackbar = (0, _react.useCallback)((snackData, onAction, onClose) => {
23
23
  const key = snackData.key ?? new Date().getTime() + Math.random();
24
24
  setSnacks(prevSnacks => [{
25
25
  data: {
@@ -32,7 +32,7 @@ function SnackbarProvider(props) {
32
32
  first: prevSnacks.length === 0
33
33
  }, ...prevSnacks]);
34
34
  return key;
35
- }
35
+ }, [config]);
36
36
  function closeSnackbar(key) {
37
37
  if (key !== undefined) {
38
38
  setSnacks(prevSnacks => prevSnacks.filter(snack => snack.key !== key));
@@ -47,7 +47,7 @@ function SnackbarProvider(props) {
47
47
  const contextValue = (0, _react.useMemo)(() => ({
48
48
  addSnackbar,
49
49
  closeSnackbar
50
- }), []);
50
+ }), [addSnackbar]);
51
51
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_SnackbarContext.default.Provider, {
52
52
  value: contextValue,
53
53
  children: [children, /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
@@ -29,7 +29,7 @@ function RadioGroup(_ref) {
29
29
  large,
30
30
  disabled,
31
31
  required
32
- }), []);
32
+ }), [checked, disabled, labelPosition, large, name, required, value]);
33
33
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_RadioGroupContext.default.Provider, {
34
34
  value: contextValue,
35
35
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
@@ -4,34 +4,20 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
8
- var _reactOutsideClickHandler = _interopRequireDefault(require("react-outside-click-handler"));
9
7
  var _classnames = _interopRequireDefault(require("classnames"));
10
- var _SelectOption = require("./select-option/SelectOption");
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _useControlled = _interopRequireDefault(require("../../helper/useControlled"));
10
+ var _useForkRef = _interopRequireDefault(require("../../helper/useForkRef"));
11
+ var _useOnClickOutside = _interopRequireDefault(require("../../helper/useOnClickOutside"));
12
+ var _ListItem = _interopRequireDefault(require("./list-item/ListItem"));
13
+ var _utils = _interopRequireDefault(require("./utils"));
11
14
  var _jsxRuntime = require("react/jsx-runtime");
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
15
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
16
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
- function calcVirtualScrollHeight(config, itemLength) {
16
- const defaultHeight = 48;
17
- let height = defaultHeight;
18
- if (itemLength === 2) {
19
- height = defaultHeight * 2;
20
- } else if (itemLength >= 3) {
21
- height = defaultHeight * 3;
22
- }
23
- if (config?.scroll?.viewportSize != null && config.scroll.viewportSize !== undefined) {
24
- if (itemLength >= config.scroll.viewportSize) {
25
- height = config.scroll.viewportSize * defaultHeight;
26
- } else if (itemLength < config.scroll.viewportSize) {
27
- height = itemLength * defaultHeight;
28
- }
29
- }
30
- return height;
31
- }
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
32
18
  const Select = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
33
19
  let {
34
- defaultValue,
20
+ defaultValue = '',
35
21
  value,
36
22
  label,
37
23
  options,
@@ -51,8 +37,12 @@ const Select = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
51
37
  isFocused: false,
52
38
  action: ''
53
39
  });
54
- const controlled = value !== undefined;
55
- const [innerValue, setInnerValue] = (0, _react.useState)(controlled ? value : defaultValue);
40
+ const [innerValue, setInnerValue] = (0, _useControlled.default)({
41
+ controlled: value,
42
+ default: defaultValue
43
+ });
44
+ const innerRef = (0, _react.useRef)(null);
45
+ const combinedRef = (0, _useForkRef.default)(ref, innerRef);
56
46
  const buttonEl = (0, _react.useRef)(null);
57
47
  const childrenList = [];
58
48
  _react.default.Children.forEach(children, element => {
@@ -70,17 +60,7 @@ const Select = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
70
60
  const listItemRef = (0, _react.useRef)(Array.from({
71
61
  length: usedOptions.length
72
62
  }, () => /*#__PURE__*/_react.default.createRef()));
73
- (0, _react.useEffect)(() => {
74
- if (controlled) {
75
- setInnerValue(value);
76
- }
77
- }, [value, controlled]);
78
- const getSelectedOptionLabel = (0, _react.useCallback)(() => {
79
- if (innerValue !== undefined) {
80
- return usedOptions.find(option => option.data === innerValue)?.label;
81
- }
82
- return undefined;
83
- }, [usedOptions, innerValue]);
63
+ const getSelectedOptionLabel = (0, _react.useCallback)(() => usedOptions.find(option => option.data === innerValue)?.label, [usedOptions, innerValue]);
84
64
  const scroll = config?.scroll;
85
65
  function handleButtonFocus(blur) {
86
66
  if (buttonEl && buttonEl.current) {
@@ -91,30 +71,31 @@ const Select = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
91
71
  }
92
72
  }
93
73
  }
94
- const focusNextElement = nextIndex => {
74
+ const focusNextElement = (0, _react.useCallback)(nextIndex => {
95
75
  if (listItemRef && listItemRef.current) {
96
76
  const nextItem = listItemRef.current[nextIndex].current;
97
77
  if (nextItem !== null) {
98
78
  nextItem.focus();
99
79
  }
100
80
  }
101
- };
81
+ }, []);
82
+ const handleKeyAction = (0, _react.useCallback)(index => {
83
+ if (index >= 0) {
84
+ focusNextElement(index);
85
+ }
86
+ }, [focusNextElement]);
102
87
  (0, _react.useEffect)(() => {
103
88
  if (optionsWrapper.isFocused) {
104
89
  if (optionsWrapper.action === 'key') {
105
90
  const index = usedOptions.findIndex(option => option.label === getSelectedOptionLabel());
106
- if (index >= 0) {
107
- focusNextElement(index);
108
- }
91
+ handleKeyAction(index);
109
92
  } else if (optionsWrapper.action === 'click') {
110
93
  handleButtonFocus(true);
111
94
  }
112
95
  }
113
- }, [optionsWrapper, usedOptions, innerValue, getSelectedOptionLabel]);
96
+ }, [optionsWrapper, usedOptions, innerValue, getSelectedOptionLabel, handleKeyAction]);
114
97
  const handleOptionChange = newOption => {
115
- if (!controlled) {
116
- setInnerValue(newOption.data);
117
- }
98
+ setInnerValue(newOption.data);
118
99
  if (onChange) {
119
100
  onChange(newOption.data);
120
101
  }
@@ -126,28 +107,23 @@ const Select = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
126
107
  buttonEl.current.focus();
127
108
  }
128
109
  };
129
- const handleListKeyDown = (event, option, index) => {
110
+ const handleListKeyDown = (e, option, index) => {
130
111
  const arrowKeys = ['ArrowDown', 'ArrowUp'];
131
112
  const validKeys = ['Enter', ' '];
132
- if (arrowKeys.concat(validKeys).includes(event.key)) {
133
- event.preventDefault();
113
+ if (arrowKeys.concat(validKeys).includes(e.key)) {
114
+ e.preventDefault();
134
115
  }
135
- if (event.key === 'ArrowDown') {
116
+ if (e.key === 'ArrowDown') {
136
117
  focusNextElement((index + 1) % usedOptions.length);
137
118
  }
138
- if (event.key === 'ArrowUp') {
139
- event.preventDefault();
140
- let nextIndex = (index - 1) % usedOptions.length;
141
- if (nextIndex < 0) {
142
- nextIndex += usedOptions.length;
143
- }
119
+ if (e.key === 'ArrowUp') {
120
+ const nextIndex = (index - 1 + usedOptions.length) % usedOptions.length;
144
121
  focusNextElement(nextIndex);
145
122
  }
146
- if (validKeys.includes(event.key)) {
123
+ if (validKeys.includes(e.key)) {
147
124
  handleOptionChange(option);
148
- event.preventDefault();
149
125
  }
150
- if (event.key === 'Escape') {
126
+ if (e.key === 'Escape') {
151
127
  setOptionsWrapper(prevOptionsWrapper => ({
152
128
  ...prevOptionsWrapper,
153
129
  isFocused: false
@@ -176,6 +152,16 @@ const Select = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
176
152
  }));
177
153
  }
178
154
  };
155
+ const handleChange = event => {
156
+ const child = usedOptions.find(childItem => childItem.data === event.target.value);
157
+ if (child === undefined) {
158
+ return;
159
+ }
160
+ setInnerValue(child.data);
161
+ if (onChange) {
162
+ onChange(child.data);
163
+ }
164
+ };
179
165
  const selectedOptionLabel = getSelectedOptionLabel();
180
166
  const selectClassName = (0, _classnames.default)('fwe-select', {
181
167
  'fwe-focus': optionsWrapper.isFocused
@@ -190,16 +176,12 @@ const Select = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
190
176
  });
191
177
  function renderOptions() {
192
178
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
193
- children: [options && options.map((option, i) => /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
179
+ children: [options && options.map((option, i) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_ListItem.default, {
194
180
  ref: listItemRef.current[i],
195
- role: "option",
196
181
  "aria-selected": option.label === selectedOptionLabel,
197
182
  onClick: () => handleOptionChange(option),
198
- className: (0, _classnames.default)('fwe-select-option', {
199
- 'fwe-empty': !option.label
200
- }),
183
+ empty: !option.label,
201
184
  onKeyDown: e => handleListKeyDown(e, option, i),
202
- tabIndex: 0,
203
185
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
204
186
  className: "fwe-select-option-content",
205
187
  children: option.label
@@ -209,80 +191,68 @@ const Select = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
209
191
  option,
210
192
  ...propsWithoutOption
211
193
  } = child.props;
212
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
194
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ListItem.default, {
213
195
  ref: listItemRef.current[i],
214
- role: "option",
215
196
  "aria-selected": option.label === selectedOptionLabel,
216
197
  onClick: () => handleOptionChange(option),
217
- className: (0, _classnames.default)('fwe-select-option', {
218
- 'fwe-empty': !option.label
219
- }),
198
+ empty: !option.label,
220
199
  onKeyDown: e => handleListKeyDown(e, option, i),
221
- tabIndex: 0,
222
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SelectOption.SelectOption, {
200
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
223
201
  ...propsWithoutOption
224
202
  })
225
203
  }, option.data);
226
204
  })]
227
205
  });
228
206
  }
229
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactOutsideClickHandler.default, {
230
- onOutsideClick: () => setOptionsWrapper({
231
- action: '',
232
- isFocused: false
233
- }),
234
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
235
- ref: ref,
236
- className: (0, _classnames.default)('fwe-select-wrapper', className),
237
- ...props,
238
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("select", {
239
- defaultValue: defaultValue,
240
- value: innerValue,
241
- name: name,
242
- id: id,
243
- "aria-label": label,
244
- disabled: disabled,
245
- required: required,
246
- children: usedOptions.map(option => /*#__PURE__*/(0, _jsxRuntime.jsx)("option", {
247
- value: option.data,
248
- children: option.label
249
- }, option.data))
250
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
251
- role: "button",
252
- tabIndex: 0,
253
- className: selectClassName,
254
- onClick: e => handleClick(e),
255
- ref: buttonEl,
256
- onKeyDown: handleKeyPress,
257
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
258
- className: "fwe-select-content",
259
- children: selectedOptionLabel
260
- })
261
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("label", {
262
- className: (0, _classnames.default)('fwe-select-label', {
263
- 'fwe-sr-only': config?.hideLabel
264
- }),
265
- htmlFor: id,
266
- children: label || ''
267
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
268
- className: "fwe-select-underline"
269
- }), hint && !error && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
270
- className: "fwe-select-description",
271
- children: hint
272
- }), error && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
273
- className: "fwe-select-invalid",
274
- children: [" ", error, " "]
275
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("ul", {
276
- className: `fwe-select-options-container${optionsWrapper.isFocused ? '' : ' fwe-d-none'}`,
277
- children: scroll?.enabled ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
278
- className: "fr-select-scroll",
279
- style: {
280
- height: calcVirtualScrollHeight(config, usedOptions.length)
281
- },
282
- children: renderOptions()
283
- }) : renderOptions()
284
- })]
285
- })
207
+ (0, _useOnClickOutside.default)(innerRef, () => setOptionsWrapper({
208
+ action: '',
209
+ isFocused: false
210
+ }));
211
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
212
+ ref: combinedRef,
213
+ className: (0, _classnames.default)('fwe-select-wrapper', className),
214
+ ...props,
215
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("input", {
216
+ className: "fr-select-input",
217
+ "aria-hidden": true,
218
+ tabIndex: -1,
219
+ value: innerValue,
220
+ onChange: e => handleChange(e)
221
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
222
+ role: "button",
223
+ tabIndex: 0,
224
+ className: selectClassName,
225
+ onClick: e => handleClick(e),
226
+ ref: buttonEl,
227
+ onKeyDown: handleKeyPress,
228
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
229
+ className: "fwe-select-content",
230
+ children: selectedOptionLabel
231
+ })
232
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("label", {
233
+ className: (0, _classnames.default)('fwe-select-label', {
234
+ 'fwe-sr-only': config?.hideLabel
235
+ }),
236
+ htmlFor: id,
237
+ children: label || ''
238
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
239
+ className: "fwe-select-underline"
240
+ }), hint && !error && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
241
+ className: "fwe-select-description",
242
+ children: hint
243
+ }), error && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
244
+ className: "fwe-select-invalid",
245
+ children: [" ", error, " "]
246
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("ul", {
247
+ className: `fwe-select-options-container${optionsWrapper.isFocused ? '' : ' fwe-d-none'}`,
248
+ children: scroll?.enabled ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
249
+ className: "fr-select-scroll",
250
+ style: {
251
+ height: (0, _utils.default)(config, usedOptions.length)
252
+ },
253
+ children: renderOptions()
254
+ }) : renderOptions()
255
+ })]
286
256
  });
287
257
  });
288
258
  var _default = Select;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _classnames = _interopRequireDefault(require("classnames"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
11
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ const ListItem = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
14
+ let {
15
+ children,
16
+ className,
17
+ "aria-selected": ariaSelected,
18
+ empty,
19
+ ...props
20
+ } = _ref;
21
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
22
+ ref: ref,
23
+ role: "option",
24
+ "aria-selected": ariaSelected,
25
+ className: (0, _classnames.default)('fwe-select-option', {
26
+ 'fwe-empty': empty
27
+ }, className),
28
+ tabIndex: 0,
29
+ ...props,
30
+ children: children
31
+ });
32
+ });
33
+ var _default = ListItem;
34
+ exports.default = _default;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = calcVirtualScrollHeight;
7
+ function calcVirtualScrollHeight(config, itemLength) {
8
+ const defaultHeight = 48;
9
+ let height = defaultHeight;
10
+ if (itemLength === 2) {
11
+ height = defaultHeight * 2;
12
+ } else if (itemLength >= 3) {
13
+ height = defaultHeight * 3;
14
+ }
15
+ if (config?.scroll?.viewportSize != null && config.scroll.viewportSize !== undefined) {
16
+ if (itemLength >= config.scroll.viewportSize) {
17
+ height = config.scroll.viewportSize * defaultHeight;
18
+ } else if (itemLength < config.scroll.viewportSize) {
19
+ height = itemLength * defaultHeight;
20
+ }
21
+ }
22
+ return height;
23
+ }
@@ -16,12 +16,13 @@ function useLegacyId() {
16
16
  nextId += 1;
17
17
  setId(`fr-${nextId}`);
18
18
  }
19
- }, [setId]);
19
+ }, [id]);
20
20
  return id;
21
21
  }
22
22
  function useId(idInput) {
23
23
  if (idInput !== undefined && idInput !== null) {
24
24
  return idInput;
25
25
  }
26
+ // eslint-disable-next-line react-hooks/rules-of-hooks
26
27
  return maybeReactUseId ? maybeReactUseId() : useLegacyId();
27
28
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@festo-ui/react",
3
- "version": "5.0.0-dev.105",
3
+ "version": "5.0.0-dev.107",
4
4
  "author": "Festo UI (styleguide@festo.com)",
5
5
  "license": "apache-2.0",
6
6
  "peerDependencies": {