@govtechsg/sgds-web-component 3.7.0-rc.4 → 3.7.0

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.
@@ -2186,7 +2186,7 @@ const Zl=(e,t,i)=>{const l=new Map;for(let o=t;o<=i;o++)l.set(e[o],o);return l};
2186
2186
  `}}Ll.styles=[...Ki.styles,Sl,Bl],e([We({type:String,reflect:!0})],Ll.prototype,"variant",void 0),e([We({type:String,reflect:!0})],Ll.prototype,"tone",void 0),e([We({type:String,reflect:!0})],Ll.prototype,"size",void 0),e([We({reflect:!0,type:String})],Ll.prototype,"label",void 0),e([We({type:String,reflect:!0})],Ll.prototype,"orientation",void 0);class Al extends el{constructor(){super(...arguments),this.multiSelect=!1,this.badgeFullWidth=!1,this.clearable=!1,this.async=!1,this.emptyMenuAsync=!1,this.filterFunction=(e,t)=>t.label.toLowerCase().startsWith(e.toLowerCase()),this.optionList=[],this.emptyMenuAfterFiltering=!1,this.isFocused=!1,this.suffixIconTemplate=B`<sgds-icon
2187
2187
  name=${this.menuIsOpen?"chevron-up":"chevron-down"}
2188
2188
  size="md"
2189
- ></sgds-icon>`,this.prefixIconTemplate=B`${A}`}connectedCallback(){super.connectedCallback(),this.addEventListener("focus",async()=>{this.isFocused=!0}),this.addEventListener("blur",async()=>{this.isFocused=!1}),this.addEventListener("keydown",e=>{var t,i;"Enter"===e.key&&(null===(i=null===(t=e.target.shadowRoot)||void 0===t?void 0:t.querySelector(".form-clearable"))||void 0===i?void 0:i.matches(":focus"))&&this._handleClear()}),this.addEventListener("sgds-hide",async e=>{if(!e.detail.isOutside){(await this._input).focus()}this.options.forEach(e=>e.removeAttribute("hidden")),this.emptyMenuAfterFiltering=!1})}async firstUpdated(e){super.firstUpdated(e),this.async&&(this.filterFunction=()=>!0),this.menuList.forEach(e=>{const t=document.createElement("sgds-combo-box-option");t.innerText=e.label,t.value=e.value,t.checkbox=this.multiSelect,t.active=this.value.includes(e.value),this.appendChild(t)}),this._setupValidation(this.menuList),this.menuIsOpen&&!this.readonly&&this.showMenu()}async _handleDefaultSlotChange(e){const t=e.target.assignedElements({flatten:!0});t.forEach(e=>!e.hasAttribute("disabled")&&(!e.clickEventAdded&&(e.addEventListener("click",e=>{e.preventDefault();const t=e.target;return this.multiSelect&&t.active?this._handleItemUnselect(e):this._handleItemSelected(e),!1}),e.clickEventAdded=!0,void e.addEventListener("keydown",e=>{if("Enter"===e.key){this.close="outside";e.target.click()}})))),await this.updateComplete,this.optionList=await this._getMenuListFromOptions(t),this._setupValidation(this.optionList)}async _setupValidation(e){var t;if(this.value&&e.length>0){const i=this.value.split(";"),l=e.filter(({value:e})=>i.includes(e));this.selectedItems=[...l,...this.selectedItems],this.multiSelect||(this.displayValue=null===(t=l[0])||void 0===t?void 0:t.label)}this.multiSelect?this.input=await this._multiSelectInput:this.input=await this._input,this._mixinValidate(this.input)}async _handleValueChange(){this.emit("sgds-change"),this.options.forEach(e=>e.removeAttribute("hidden")),this.value&&this.emit("sgds-select");const e=await this._input;this._mixinSetFormValue(),this.multiSelect?this._mixinValidate(this.input):this._mixinValidate(e);this.selectedItems.map(e=>e.value).join(";")!==this.value&&this._updateValueAndDisplayValue(this.optionList),(this._isTouched||""!==this.value)&&(this.invalid=!this._mixinReportValidity())}_handleOptionListChange(){this._updateValueAndDisplayValue(this.optionList)}_handleMenuListChange(){const e=this.menuList.map(e=>{const t=document.createElement("sgds-combo-box-option");return t.innerText=e.label,t.value=e.value,t.checkbox=this.multiSelect,t.active=this.value.includes(e.value),t});this.replaceChildren(...e)}_updateValueAndDisplayValue(e){var t;const i=this.value.split(";"),l=e.filter(({value:e})=>i.includes(e));this.selectedItems=[...l];const o=l.map(e=>e.value).join(";");o!==this.value&&(this.value=o),this.multiSelect||this.async||(this.displayValue=(null===(t=l[0])||void 0===t?void 0:t.label)||""),this.options.forEach(e=>e.active=i.includes(e.value))}async _handleInputChange(e){const t=e.target;this.displayValue=t.value,this.emit("sgds-input",{detail:{displayValue:this.displayValue}}),this.invalid=!1,this.showMenu(),""!==this.displayValue||this.multiSelect||(this.selectedItems=[],this.value=this.selectedItems.join(";"),this.options.forEach(e=>e.active=!1));const i=this.options.map(e=>({value:e.value,label:e.textContent.trim()}));this.filteredList=i.filter(e=>this.filterFunction(this.displayValue,e)),this.emptyMenuAfterFiltering=0===this.filteredList.length;const l=this.filteredList.map(e=>e.value);this.options.forEach(e=>{l.includes(e.value)?e.hidden=!1:e.hidden=!0})}async _handleItemSelected(e){var t,i,l;const o=e.target,a=null!==(i=null===(t=o.textContent)||void 0===t?void 0:t.trim())&&void 0!==i?i:"",s=null!==(l=o.getAttribute("value"))&&void 0!==l?l:a,n=this.filteredList.find(e=>e.value.toString()===s)||{label:a,value:s};this.multiSelect?(this.selectedItems.some(e=>e.value===n.value)||(this.selectedItems=[...this.selectedItems,n]),this.value=this.selectedItems.map(e=>e.value).join(";"),o.active=!0):0!==this.selectedItems.length&&this.selectedItems[0].value===n.value||(this.options.forEach(e=>e.active=!1),o.active=!0,this.selectedItems=[n],this.value=n.value.toString(),this.displayValue=n.label,this.hideMenu())}_handleItemUnselect(e){var t,i,l;const o=e.target;o.removeAttribute("active");const a=null!==(i=null===(t=o.textContent)||void 0===t?void 0:t.trim())&&void 0!==i?i:"",s=null!==(l=o.getAttribute("value"))&&void 0!==l?l:a,n=this.filteredList.find(e=>e.value.toString()===s)||{label:a,value:s};this.selectedItems=this.selectedItems.filter(e=>e.value!==n.value),this.value=this.selectedItems.map(e=>e.value).join(";")}async _handleBadgeDismissed(e,t){var i;e.preventDefault();const l=t.value;null===(i=this.options)||void 0===i||i.forEach(e=>e.value===l?e.active=!1:null),this.selectedItems=this.selectedItems.filter(e=>e.value!==t.value),this.value=this.selectedItems.map(e=>e.value).join(";")}async _handleMultiSelectKeyDown(e){var t;if(this.multiSelect&&"Backspace"===e.key&&this.multiSelect&&""===this.displayValue.trim()&&this.selectedItems.length>0){const e=this.selectedItems[this.selectedItems.length-1].value;null===(t=this.options)||void 0===t||t.forEach(t=>t.value===e?t.active=!1:null),this.selectedItems=this.selectedItems.slice(0,-1),this.value=this.selectedItems.map(e=>e.value).join(";")}}_handleFocus(){this.emit("sgds-focus")}async _handleInputBlur(e){if(e.preventDefault(),this.emit("sgds-blur"),this.multiSelect){this.selectedItems.filter(({label:e})=>this.displayValue===e).length<=0&&(this.displayValue="")}else this.selectedItems.length>0?this.displayValue=this.selectedItems[0].label:this.displayValue=""}async _handleClear(){var e;this.value=this.displayValue="",null===(e=this.options)||void 0===e||e.forEach(e=>e.active=!1);(await this._input).focus(),this.showMenu()}async _mixinResetFormControl(){if(this.value=this.defaultValue,this.multiSelect){const e=this.value.split(";");this.options.forEach(t=>{t.active=e.includes(t.value)});const t=this.options.filter(t=>e.includes(t.value));this.selectedItems=t.map(e=>({value:e.value,label:e.textContent.trim()})),this._mixinResetValidity(await this._multiSelectInput)}else{this.options.forEach(e=>{e.active=e.value===this.value});const e=this.options.filter(e=>e.value===this.value);e.length<=0?this.displayValue="":this.displayValue=e[0].textContent.trim(),this._mixinResetValidity(await this._input)}}_renderInput(e){const t=this.hasFeedback,i=e;return B`
2189
+ ></sgds-icon>`,this.prefixIconTemplate=B`${A}`}connectedCallback(){super.connectedCallback(),this.addEventListener("focus",async()=>{this.isFocused=!0}),this.addEventListener("blur",async()=>{this.isFocused=!1}),this.addEventListener("keydown",e=>{var t,i;"Enter"===e.key&&(null===(i=null===(t=e.target.shadowRoot)||void 0===t?void 0:t.querySelector(".form-clearable"))||void 0===i?void 0:i.matches(":focus"))&&this._handleClear()}),this.addEventListener("sgds-hide",async e=>{if(!e.detail.isOutside){(await this._input).focus()}this.options.forEach(e=>e.removeAttribute("hidden")),this.emptyMenuAfterFiltering=!1})}async firstUpdated(e){super.firstUpdated(e),this.async&&(this.filterFunction=()=>!0),this.menuList.forEach(e=>{const t=document.createElement("sgds-combo-box-option");t.innerText=e.label,t.value=e.value,t.checkbox=this.multiSelect,t.active=this.value.includes(e.value),this.appendChild(t)}),this._setupValidation(this.menuList),this.menuIsOpen&&!this.readonly&&this.showMenu()}async _handleDefaultSlotChange(e){const t=e.target.assignedElements({flatten:!0});t.forEach(e=>!e.hasAttribute("disabled")&&(!e.clickEventAdded&&(e.addEventListener("click",e=>{e.preventDefault();const t=e.target;return this.multiSelect&&t.active?this._handleItemUnselect(e):this._handleItemSelected(e),!1}),e.clickEventAdded=!0,void e.addEventListener("keydown",e=>{if("Enter"===e.key){this.close="outside";e.target.click()}})))),await this.updateComplete,this.optionList=await this._getMenuListFromOptions(t),this._setupValidation(this.optionList)}async _setupValidation(e){var t;if(this.value&&e.length>0){const i=this.value.split(";"),l=e.filter(({value:e})=>i.includes(e));this.selectedItems=[...l,...this.selectedItems],this.multiSelect||(this.displayValue=null===(t=l[0])||void 0===t?void 0:t.label)}this.multiSelect?this.input=await this._multiSelectInput:this.input=await this._input,this._mixinValidate(this.input)}async _handleValueChange(){this.emit("sgds-change"),this.options.forEach(e=>e.removeAttribute("hidden")),this.value&&this.emit("sgds-select");const e=await this._input;this._mixinSetFormValue(),this.multiSelect?this._mixinValidate(this.input):this._mixinValidate(e);this.selectedItems.map(e=>e.value).join(";")!==this.value&&this._updateValueAndDisplayValue(this.optionList),(this._isTouched||""!==this.value)&&(this.invalid=!this._mixinReportValidity())}_handleOptionListChange(){this._updateValueAndDisplayValue(this.optionList)}_handleMenuListChange(){const e=this.menuList.map(e=>{const t=document.createElement("sgds-combo-box-option");return t.innerText=e.label,t.value=e.value,t.checkbox=this.multiSelect,t.active=this.value.includes(e.value),t});this.replaceChildren(...e)}_updateValueAndDisplayValue(e){var t;const i=this.value.split(";"),l=e.filter(({value:e})=>i.includes(e));this.selectedItems=[...l];const o=l.map(e=>e.value).join(";");o!==this.value&&(this.value=o),this.multiSelect||this.async||(this.displayValue=(null===(t=l[0])||void 0===t?void 0:t.label)||""),this.options.forEach(e=>e.active=i.includes(e.value))}async _handleInputChange(e){const t=e.target;this.displayValue=t.value,this.emit("sgds-input",{detail:{displayValue:this.displayValue}}),this.invalid=!1,this.showMenu(),""!==this.displayValue||this.multiSelect||(this.selectedItems=[],this.value=this.selectedItems.join(";"),this.options.forEach(e=>e.active=!1));const i=this.options.map(e=>({value:e.value,label:e.textContent.trim()}));this.filteredList=i.filter(e=>this.filterFunction(this.displayValue,e)),this.emptyMenuAfterFiltering=0===this.filteredList.length;const l=this.filteredList.map(e=>e.value);this.options.forEach(e=>{l.includes(e.value)?e.hidden=!1:e.hidden=!0})}async _handleItemSelected(e){var t,i,l;const o=e.target;if(o.disabled)return;const a=null!==(i=null===(t=o.textContent)||void 0===t?void 0:t.trim())&&void 0!==i?i:"",s=null!==(l=o.getAttribute("value"))&&void 0!==l?l:a,n=this.filteredList.find(e=>e.value.toString()===s)||{label:a,value:s};this.multiSelect?(this.selectedItems.some(e=>e.value===n.value)||(this.selectedItems=[...this.selectedItems,n]),this.value=this.selectedItems.map(e=>e.value).join(";"),o.active=!0):0!==this.selectedItems.length&&this.selectedItems[0].value===n.value||(this.options.forEach(e=>e.active=!1),o.active=!0,this.selectedItems=[n],this.value=n.value.toString(),this.displayValue=n.label,this.hideMenu())}_handleItemUnselect(e){var t,i,l;const o=e.target;if(o.disabled)return;o.removeAttribute("active");const a=null!==(i=null===(t=o.textContent)||void 0===t?void 0:t.trim())&&void 0!==i?i:"",s=null!==(l=o.getAttribute("value"))&&void 0!==l?l:a,n=this.filteredList.find(e=>e.value.toString()===s)||{label:a,value:s};this.selectedItems=this.selectedItems.filter(e=>e.value!==n.value),this.value=this.selectedItems.map(e=>e.value).join(";")}async _handleBadgeDismissed(e,t){var i;e.preventDefault();const l=t.value;null===(i=this.options)||void 0===i||i.forEach(e=>e.value===l?e.active=!1:null),this.selectedItems=this.selectedItems.filter(e=>e.value!==t.value),this.value=this.selectedItems.map(e=>e.value).join(";")}async _handleMultiSelectKeyDown(e){var t;if(this.multiSelect&&"Backspace"===e.key&&this.multiSelect&&""===this.displayValue.trim()&&this.selectedItems.length>0){const e=this.selectedItems[this.selectedItems.length-1].value;null===(t=this.options)||void 0===t||t.forEach(t=>t.value===e?t.active=!1:null),this.selectedItems=this.selectedItems.slice(0,-1),this.value=this.selectedItems.map(e=>e.value).join(";")}}_handleFocus(){this.emit("sgds-focus")}async _handleInputBlur(e){if(e.preventDefault(),this.emit("sgds-blur"),this.multiSelect){this.selectedItems.filter(({label:e})=>this.displayValue===e).length<=0&&(this.displayValue="")}else this.selectedItems.length>0?this.displayValue=this.selectedItems[0].label:this.displayValue=""}async _handleClear(){var e;this.value=this.displayValue="",null===(e=this.options)||void 0===e||e.forEach(e=>e.active=!1);(await this._input).focus(),this.showMenu()}async _mixinResetFormControl(){if(this.value=this.defaultValue,this.multiSelect){const e=this.value.split(";");this.options.forEach(t=>{t.active=e.includes(t.value)});const t=this.options.filter(t=>e.includes(t.value));this.selectedItems=t.map(e=>({value:e.value,label:e.textContent.trim()})),this._mixinResetValidity(await this._multiSelectInput)}else{this.options.forEach(e=>{e.active=e.value===this.value});const e=this.options.filter(e=>e.value===this.value);e.length<=0?this.displayValue="":this.displayValue=e[0].textContent.trim(),this._mixinResetValidity(await this._input)}}_renderInput(e){const t=this.hasFeedback,i=e;return B`
2190
2190
  <div
2191
2191
  ${ct(this.myDropdown)}
2192
2192
  class="form-control-group ${Xe({disabled:this.disabled,readonly:this.readonly,"is-invalid":this.invalid&&t})}"