@esri/calcite-components
Version:
Web Components for Esri's Calcite Design System.
6 lines • 9.41 kB
JavaScript
/*!
* All material copyright ESRI, All Rights Reserved, unless otherwise specified.
* See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
* v1.5.0-next.4
*/
import{h as i,r as t,c as a,H as s,a as e}from"./p-8789682d.js";import{c as n,d as o,H as c}from"./p-51fa67d7.js";import{g as r}from"./p-d2aa9245.js";import{c as l,d as h,u as d}from"./p-0d8324b6.js";import{c as m,d as p}from"./p-4dcc9524.js";import{s as u,a as f,c as v}from"./p-deebcc06.js";import{c as g,d as b}from"./p-743ed09c.js";import{u as y,c as w,s as k,d as x}from"./p-9dd9a26d.js";import"./p-68f223ec.js";import"./p-9280476e.js";import"./p-7fb6664e.js";import"./p-4929e834.js";import"./p-c8e46b02.js";const D=({full:t,scale:a,partial:s})=>i("calcite-icon",{class:s?void 0:"icon",icon:t?"star-f":"star",scale:a}),j=class{constructor(i){t(this,i),this.calciteRatingChange=a(this,"calciteRatingChange",6),this.handleRatingPointerOver=()=>{this.isKeyboardInteraction=!1},this.handleRatingPointerOut=()=>{this.isKeyboardInteraction=!0,this.hoverValue=null,this.focusValue=null,this.hasFocus=!1},this.handleRatingFocusIn=()=>{const i=this.inputRefs[this.value>0?this.value-1:0],t=Number(i.value);i.select(),this.focusValue=t,this.hoverValue=t,this.hasFocus=!0},this.handleRatingFocusLeave=()=>{this.focusValue=null,this.hoverValue=null,this.hasFocus=!1},this.handleHostKeyDown=()=>{this.isKeyboardInteraction=!0},this.handleInputKeyDown=i=>{const t=Number(i.currentTarget.value),a=i.key,s=" "==a?void 0:Number(a);if(this.emit=!0,isNaN(s))switch(a){case"Enter":case" ":this.value=this.required||this.value!==t?t:0;break;case"ArrowLeft":this.value=t-1;break;case"ArrowRight":this.value=t+1;break;case"Tab":this.hasFocus&&(this.hasFocus=!1,this.focusValue=null,this.hoverValue=null)}else(!this.required&&s>=0&&s<=this.max||this.required&&s>0&&s<=this.max)&&(this.value=s)},this.handleInputChange=i=>{if(!0===this.isKeyboardInteraction){const t=Number(i.target.value);this.focusValue=t,this.hoverValue=t,this.value=t}},this.handleLabelPointerOver=i=>{const t=Number(i.currentTarget.firstChild.value||0);this.hoverValue=t,this.focusValue=null},this.handleLabelPointerDown=i=>{const t=Number(i.currentTarget.firstChild.value||0);this.focusValue=null,this.hoverValue=null,this.emit=!0,this.value=this.required||this.value!==t?t:0},this.emit=!1,this.guid=`calcite-ratings-${r()}`,this.isKeyboardInteraction=!0,this.max=5,this.average=void 0,this.count=void 0,this.disabled=!1,this.form=void 0,this.messages=void 0,this.messageOverrides=void 0,this.name=void 0,this.readOnly=!1,this.required=!1,this.scale="m",this.showChip=!1,this.value=0,this.effectiveLocale="",this.defaultMessages=void 0,this.hoverValue=void 0,this.focusValue=void 0,this.hasFocus=void 0}onMessagesChange(){}handleValueUpdate(i){this.hoverValue=i,this.focusValue=i,this.emit&&this.calciteRatingChange.emit(),this.emit=!1}effectiveLocaleChange(){y(this,this.effectiveLocale)}connectedCallback(){l(this),g(this),w(this),m(this),n(this)}async componentWillLoad(){await k(this),u(this),this.inputRefs=Array(this.max)}componentWillRender(){this.starsMap=Array.from({length:this.max},((i,t)=>{const a=t+1,s=this.average&&this.average+1-a,e=a<=this.hoverValue;return{average:!this.focusValue&&!this.hoverValue&&this.average&&!this.value&&a<=this.average,checked:a===this.value,focused:this.isKeyboardInteraction&&this.hasFocus&&this.focusValue===a,fraction:s,hovered:e,id:`${this.guid}-${a}`,idx:t,partial:!this.focusValue&&!this.hoverValue&&!this.value&&!e&&s>0&&s<1,selected:this.value>=a,value:a}}))}componentDidLoad(){f(this)}disconnectedCallback(){h(this),b(this),x(this),p(this),o(this)}componentDidRender(){d(this)}render(){return i(s,{onBlur:this.handleRatingFocusLeave,onFocus:this.handleRatingFocusIn,onKeyDown:this.handleHostKeyDown,onPointerOut:this.handleRatingPointerOut,onPointerOver:this.handleRatingPointerOver},i("span",{class:"wrapper"},i("fieldset",{class:"fieldset",disabled:this.disabled},i("legend",{class:"visually-hidden"},this.messages.rating),this.starsMap.map((({average:t,checked:a,focused:s,fraction:e,hovered:n,id:o,idx:c,partial:r,selected:l,value:h})=>i("label",{class:{star:!0,focused:s,selected:l,hovered:n,average:t,partial:r},htmlFor:o,onPointerDown:this.handleLabelPointerDown,onPointerOver:this.handleLabelPointerOver},i("input",{checked:a,class:"visually-hidden",disabled:this.disabled||this.readOnly,id:o,name:this.guid,onChange:this.handleInputChange,onKeyDown:this.handleInputKeyDown,type:"radio",value:h,ref:i=>(this.inputRefs[c]=i,(1===h||h===this.value)&&(this.inputFocusRef=i))}),i(D,{full:l||t,scale:this.scale}),r&&i("div",{class:"fraction",style:{width:100*e+"%"}},i(D,{full:!0,partial:!0,scale:this.scale})),i("span",{class:"visually-hidden"},this.messages.stars.replace("${num}",`${h}`))))),(this.count||this.average)&&this.showChip?i("calcite-chip",{scale:this.scale,value:this.count?.toString()},!!this.average&&i("span",{class:"number--average"},this.average.toString()),!!this.count&&i("span",{class:"number--count"},"(",this.count?.toString(),")")):null),i(c,{component:this})))}onLabelClick(){this.setFocus()}async setFocus(){await v(this),this.inputFocusRef?.focus()}static get assetsDirs(){return["assets"]}get el(){return e(this)}static get watchers(){return{messageOverrides:["onMessagesChange"],value:["handleValueUpdate"],effectiveLocale:["effectiveLocaleChange"]}}};j.style="@keyframes in{0%{opacity:0}100%{opacity:1}}@keyframes in-down{0%{opacity:0;transform:translate3D(0, -5px, 0)}100%{opacity:1;transform:translate3D(0, 0, 0)}}@keyframes in-up{0%{opacity:0;transform:translate3D(0, 5px, 0)}100%{opacity:1;transform:translate3D(0, 0, 0)}}@keyframes in-right{0%{opacity:0;transform:translate3D(-5px, 0, 0)}100%{opacity:1;transform:translate3D(0, 0, 0)}}@keyframes in-left{0%{opacity:0;transform:translate3D(5px, 0, 0)}100%{opacity:1;transform:translate3D(0, 0, 0)}}@keyframes in-scale{0%{opacity:0;transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;transform:scale3D(1, 1, 1)}}:root{--calcite-animation-timing:calc(150ms * var(--calcite-internal-duration-factor));--calcite-internal-duration-factor:var(--calcite-duration-factor, 1);--calcite-internal-animation-timing-fast:calc(100ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-medium:calc(200ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-slow:calc(300ms * var(--calcite-internal-duration-factor))}.calcite-animate{opacity:0;animation-fill-mode:both;animation-duration:var(--calcite-animation-timing)}.calcite-animate__in{animation-name:in}.calcite-animate__in-down{animation-name:in-down}.calcite-animate__in-up{animation-name:in-up}.calcite-animate__in-right{animation-name:in-right}.calcite-animate__in-left{animation-name:in-left}.calcite-animate__in-scale{animation-name:in-scale}@media (prefers-reduced-motion: reduce){:root{--calcite-internal-duration-factor:0.01}}:root{--calcite-floating-ui-transition:var(--calcite-animation-timing);--calcite-floating-ui-z-index:var(--calcite-app-z-index-dropdown)}:host([hidden]){display:none}:host([disabled]){cursor:default;-webkit-user-select:none;user-select:none;opacity:var(--calcite-ui-opacity-disabled)}:host([read-only]) *,:host([disabled]) *,:host([read-only]) ::slotted(*),:host([disabled]) ::slotted(*){pointer-events:none}:host{position:relative;display:flex;align-items:center;inline-size:-moz-fit-content;inline-size:fit-content}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}:host([scale=s]){block-size:1.5rem;--calcite-rating-spacing-unit:0.25rem}:host([scale=m]){block-size:2rem;--calcite-rating-spacing-unit:0.5rem}:host([scale=l]){block-size:2.75rem;--calcite-rating-spacing-unit:0.75rem}.fieldset{margin:0;display:flex;border-width:0;padding:0;align-items:center;gap:var(--calcite-rating-spacing-unit)}.wrapper{display:inline-block}.star{transition:all var(--calcite-animation-timing) ease-in-out 0s, outline 0s, outline-offset 0s;position:relative;display:flex;flex-direction:column;cursor:pointer;color:var(--calcite-ui-border-input)}.focused{outline:2px solid var(--calcite-ui-focus-color, var(--calcite-ui-brand));outline-offset:calc(\n 2px *\n calc(\n 1 -\n 2 * clamp(\n 0,\n var(--calcite-ui-focus-offset-invert),\n 1\n )\n )\n )}.average,.fraction{color:var(--calcite-ui-warning)}.hovered,.selected{color:var(--calcite-ui-brand)}.fraction{transition:all var(--calcite-animation-timing) ease-in-out 0s, outline 0s, outline-offset 0s;position:absolute;pointer-events:none;inset-block-start:0;overflow:hidden;inset-inline-start:0}calcite-chip{pointer-events:none;cursor:default}.number--average{font-weight:bold}.number--count{color:var(--calcite-ui-text-2);font-style:italic}.number--count:not(:first-child){margin-inline-start:var(--calcite-rating-spacing-unit)}.visually-hidden{position:absolute;inline-size:1px;block-size:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}::slotted(input[slot=hidden-form-input]){margin:0 !important;opacity:0 !important;outline:none !important;padding:0 !important;position:absolute !important;inset:0 !important;transform:none !important;-webkit-appearance:none !important;z-index:-1 !important}";export{j as calcite_rating}