@festo-ui/react 5.0.0-dev.105 → 5.0.0-dev.106
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 +1 -1
- package/lib/components/accordion/Accordion.js +1 -1
- package/lib/components/snackbar/SnackbarProvider.js +4 -4
- package/lib/forms/radio/RadioGroup.js +1 -1
- package/lib/forms/select/Select.d.ts +3 -9
- package/lib/forms/select/Select.js +96 -126
- package/lib/forms/select/list-item/ListItem.d.ts +6 -0
- package/lib/forms/select/list-item/ListItem.js +24 -0
- package/lib/forms/select/select-option/SelectOption.d.ts +1 -1
- package/lib/forms/select/utils.d.ts +2 -0
- package/lib/forms/select/utils.js +17 -0
- package/lib/helper/types.d.ts +7 -0
- package/lib/helper/useId.js +2 -1
- package/node/lib/components/accordion/Accordion.js +1 -1
- package/node/lib/components/snackbar/SnackbarProvider.js +3 -3
- package/node/lib/forms/radio/RadioGroup.js +1 -1
- package/node/lib/forms/select/Select.js +97 -127
- package/node/lib/forms/select/list-item/ListItem.js +34 -0
- package/node/lib/forms/select/utils.js +23 -0
- package/node/lib/helper/useId.js +2 -1
- package/package.json +1 -1
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
|
-
|
|
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?:
|
|
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 {
|
|
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
|
|
48
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 = (
|
|
103
|
+
const handleListKeyDown = (e, option, index) => {
|
|
123
104
|
const arrowKeys = ['ArrowDown', 'ArrowUp'];
|
|
124
105
|
const validKeys = ['Enter', ' '];
|
|
125
|
-
if (arrowKeys.concat(validKeys).includes(
|
|
126
|
-
|
|
106
|
+
if (arrowKeys.concat(validKeys).includes(e.key)) {
|
|
107
|
+
e.preventDefault();
|
|
127
108
|
}
|
|
128
|
-
if (
|
|
109
|
+
if (e.key === 'ArrowDown') {
|
|
129
110
|
focusNextElement((index + 1) % usedOptions.length);
|
|
130
111
|
}
|
|
131
|
-
if (
|
|
132
|
-
|
|
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(
|
|
116
|
+
if (validKeys.includes(e.key)) {
|
|
140
117
|
handleOptionChange(option);
|
|
141
|
-
event.preventDefault();
|
|
142
118
|
}
|
|
143
|
-
if (
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
211
|
-
'fwe-empty': !option.label
|
|
212
|
-
}),
|
|
191
|
+
empty: !option.label,
|
|
213
192
|
onKeyDown: e => handleListKeyDown(e, option, i),
|
|
214
|
-
|
|
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
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
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,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,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
|
+
}
|
package/lib/helper/types.d.ts
CHANGED
|
@@ -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
|
+
}
|
package/lib/helper/useId.js
CHANGED
|
@@ -10,12 +10,13 @@ function useLegacyId() {
|
|
|
10
10
|
nextId += 1;
|
|
11
11
|
setId(`fr-${nextId}`);
|
|
12
12
|
}
|
|
13
|
-
}, [
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
55
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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 = (
|
|
110
|
+
const handleListKeyDown = (e, option, index) => {
|
|
130
111
|
const arrowKeys = ['ArrowDown', 'ArrowUp'];
|
|
131
112
|
const validKeys = ['Enter', ' '];
|
|
132
|
-
if (arrowKeys.concat(validKeys).includes(
|
|
133
|
-
|
|
113
|
+
if (arrowKeys.concat(validKeys).includes(e.key)) {
|
|
114
|
+
e.preventDefault();
|
|
134
115
|
}
|
|
135
|
-
if (
|
|
116
|
+
if (e.key === 'ArrowDown') {
|
|
136
117
|
focusNextElement((index + 1) % usedOptions.length);
|
|
137
118
|
}
|
|
138
|
-
if (
|
|
139
|
-
|
|
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(
|
|
123
|
+
if (validKeys.includes(e.key)) {
|
|
147
124
|
handleOptionChange(option);
|
|
148
|
-
event.preventDefault();
|
|
149
125
|
}
|
|
150
|
-
if (
|
|
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)(
|
|
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
|
-
|
|
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)(
|
|
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
|
-
|
|
218
|
-
'fwe-empty': !option.label
|
|
219
|
-
}),
|
|
198
|
+
empty: !option.label,
|
|
220
199
|
onKeyDown: e => handleListKeyDown(e, option, i),
|
|
221
|
-
|
|
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
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
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
|
+
}
|
package/node/lib/helper/useId.js
CHANGED
|
@@ -16,12 +16,13 @@ function useLegacyId() {
|
|
|
16
16
|
nextId += 1;
|
|
17
17
|
setId(`fr-${nextId}`);
|
|
18
18
|
}
|
|
19
|
-
}, [
|
|
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
|
}
|