@kyndryl-design-system/shidoka-applications 2.13.1 → 2.13.2
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.
|
@@ -558,5 +558,5 @@ fieldset {
|
|
|
558
558
|
</div>
|
|
559
559
|
</fieldset>
|
|
560
560
|
</div>
|
|
561
|
-
`}willUpdate(e){e.has("textStrings")&&(this._textStrings=n(p,this.textStrings))}updated(e){e.has("invalidText")||this._onUpdated(e),e.has("invalidText")?(this._isInvalid=""!==this.invalidText||""!==this._internalValidationMsg,this.checkboxes.forEach((e=>{e.invalid=this._isInvalid}))):e.has("value")&&this._updateCheckboxStates(),e.has("name")&&this.checkboxes.forEach((e=>{e.name=this.name})),e.has("required")&&this.checkboxes.forEach((e=>{e.required=this.required})),e.has("disabled")&&void 0!==e.get("disabled")&&this.checkboxes.forEach((e=>{e.disabled=this.disabled})),e.has("limitCheckboxes")&&void 0!==e.get("limitCheckboxes")&&this._toggleRevealed(!1)}_updateCheckboxStates(){this.checkboxes.forEach((e=>{e.checked=this.value.includes(e.value)}));const e=this.checkboxes.filter((e=>e.checked)).length;this.selectAllChecked=this.checkboxes.length>0&&e===this.checkboxes.length,this.selectAllIndeterminate=e<this.checkboxes.length&&e>0;const t=new FormData;this.value.forEach((e=>{t.append(this.name,e)})),this._internals.setFormValue(t)}_validate(e,t){const i={customError:""!==this.invalidText,valueMissing:this.required&&!this.value.length},o=this.required&&!this.value.length?"A selection is required.":"",l=""!==this.invalidText?this.invalidText:o;(e||""!==this.invalidText)&&(this._internals.setValidity(i,l),e&&(this._internalValidationMsg=o)),t&&this._internals.reportValidity()}_handleCheckboxChange(e){const t=e.detail.value;if("selectAll"===t)e.detail.checked?this.value=this.checkboxes.filter((e=>!e.disabled)).map((e=>e.value)):this.value=[],this.checkboxes.forEach((e=>{e.indeterminate=!1}));else{const e=[...this.value];if(e.includes(t)){const i=e.indexOf(t);e.splice(i,1)}else e.push(t);this.value=e}this._validate(!0,!1),this._emitChangeEvent()}_emitChangeEvent(){const e=new CustomEvent("on-checkbox-group-change",{detail:{value:this.value}});this.dispatchEvent(e)}_handleFilter(e){let t=0;this.searchTerm=e.detail.value.toLowerCase(),this.filteredCheckboxes=this.checkboxes.filter((e=>e.textContent.toLowerCase().includes(this.searchTerm))),this.checkboxes.forEach((e=>{const i=e.textContent.toLowerCase();this.limitCheckboxes&&!this.limitRevealed?i.includes(this.searchTerm)&&t<this._limitCount?(e.style.display="block",t++):e.style.display="none":i.includes(this.searchTerm)?e.style.display="block":e.style.display="none"}));const i=new CustomEvent("on-search",{detail:{searchTerm:this.searchTerm}});this.dispatchEvent(i)}_toggleRevealed(e){this.limitRevealed=e,this.filteredCheckboxes.forEach(((e,t)=>{!this.limitCheckboxes||this.limitRevealed||t<this._limitCount?e.style.display="block":e.style.display="none"}));const t=new CustomEvent("on-limit-toggle",{detail:{expanded:this.limitRevealed}});this.dispatchEvent(t)}_handleSlotChange(){const e=this.checkboxes;this.checkboxes=Array.from(this.querySelectorAll("kyn-checkbox")),this.filteredCheckboxes=this.checkboxes,e.length||this._updateChildren(),this._toggleRevealed(this.limitRevealed)}_updateChildren(){if(this.checkboxes.forEach((e=>{e.disabled=this.disabled,this.value&&this.value.length?e.checked=this.value.includes(e.value):e.checked=!1})),this.selectAll){const e=this.checkboxes.filter((e=>e.checked)).length;this.selectAllChecked=this.checkboxes.length>0&&e===this.checkboxes.length,this.selectAllIndeterminate=e<this.checkboxes.length&&e>0}}_handleSubgroupChange(e){const t=[...this.value],{isParent:i,parentChecked:o,parentValue:l,value:r,checked:a,childValues:s}=e.detail;if(i)if(a)t.includes(r)||t.push(r),s.forEach((e=>{t.includes(e)||t.push(e)}));else{const e=t.indexOf(r);t.splice(e,1),s.forEach((e=>{const i=t.indexOf(e);-1!==i&&t.splice(i,1)}))}else{if(a)t.includes(r)||t.push(r);else{const e=t.indexOf(r);-1!==e&&t.splice(e,1)}if(o)t.includes(l)||t.push(l);else{const e=t.indexOf(l);-1!==e&&t.splice(e,1)}}this.value=t,this._validate(!0,!1),this._emitChangeEvent()}connectedCallback(){super.connectedCallback(),this._onConnected(),this.addEventListener("on-checkbox-change",(e=>this._handleCheckboxChange(e))),this.addEventListener("on-checkbox-subgroup-change",(e=>this._handleSubgroupChange(e)))}disconnectedCallback(){this._onDisconnected(),this.removeEventListener("on-checkbox-change",(e=>this._handleCheckboxChange(e))),this.removeEventListener("on-checkbox-subgroup-change",(e=>this._handleSubgroupChange(e))),super.disconnectedCallback()}};u.styles=c,e([i({type:Array})],u.prototype,"value",void 0),e([i({type:Boolean})],u.prototype,"required",void 0),e([i({type:Boolean})],u.prototype,"disabled",void 0),e([i({type:Boolean})],u.prototype,"horizontal",void 0),e([i({type:Boolean})],u.prototype,"selectAll",void 0),e([i({type:Boolean})],u.prototype,"selectAllChecked",void 0),e([i({type:Boolean})],u.prototype,"selectAllIndeterminate",void 0),e([i({type:Boolean})],u.prototype,"hideLegend",void 0),e([i({type:Boolean})],u.prototype,"filterable",void 0),e([i({type:String})],u.prototype,"label",void 0),e([o()],u.prototype,"searchTerm",void 0),e([i({type:Boolean})],u.prototype,"limitCheckboxes",void 0),e([o()],u.prototype,"_limitCount",void 0),e([o()],u.prototype,"limitRevealed",void 0),e([i({type:Object})],u.prototype,"textStrings",void 0),e([o()],u.prototype,"_textStrings",void 0),e([o()],u.prototype,"checkboxes",void 0),e([o()],u.prototype,"filteredCheckboxes",void 0),u=e([l("kyn-checkbox-group")],u);export{u as CheckboxGroup};
|
|
561
|
+
`}willUpdate(e){e.has("textStrings")&&(this._textStrings=n(p,this.textStrings))}updated(e){e.has("invalidText")||this._onUpdated(e),e.has("invalidText")?(this._isInvalid=""!==this.invalidText||""!==this._internalValidationMsg,this.checkboxes.forEach((e=>{e.invalid=this._isInvalid}))):e.has("value")&&this._updateCheckboxStates(),e.has("name")&&this.checkboxes.forEach((e=>{e.name=this.name})),e.has("required")&&this.checkboxes.forEach((e=>{e.required=this.required})),e.has("disabled")&&void 0!==e.get("disabled")&&this.checkboxes.forEach((e=>{e.disabled=this.disabled})),e.has("limitCheckboxes")&&void 0!==e.get("limitCheckboxes")&&this._toggleRevealed(!1)}_updateCheckboxStates(){this.checkboxes.forEach((e=>{e.checked=this.value.includes(e.value)}));const e=this.checkboxes.filter((e=>e.checked)).length;this.selectAllChecked=this.checkboxes.length>0&&e===this.checkboxes.length,this.selectAllIndeterminate=e<this.checkboxes.length&&e>0;const t=new FormData;this.value.forEach((e=>{t.append(this.name,e)})),this._internals.setFormValue(t)}_validate(e,t){const i={customError:""!==this.invalidText,valueMissing:this.required&&!this.value.length},o=this.required&&!this.value.length?"A selection is required.":"",l=""!==this.invalidText?this.invalidText:o;(e||""!==this.invalidText)&&(this._internals.setValidity(i,l),e&&(this._internalValidationMsg=o)),t&&this._internals.reportValidity()}_handleCheckboxChange(e){const t=e.detail.value;if("selectAll"===t)e.detail.checked?this.value=this.checkboxes.filter((e=>!e.disabled)).map((e=>e.value)):this.value=[],this.checkboxes.forEach((e=>{e.indeterminate=!1}));else{const e=[...this.value];if(e.includes(t)){const i=e.indexOf(t);e.splice(i,1)}else e.push(t);this.value=e}this._validate(!0,!1),this._emitChangeEvent()}_emitChangeEvent(){const e=new CustomEvent("on-checkbox-group-change",{detail:{value:this.value}});this.dispatchEvent(e)}_handleFilter(e){let t=0;this.searchTerm=e.detail.value.toLowerCase(),this.filteredCheckboxes=this.checkboxes.filter((e=>e.textContent.toLowerCase().includes(this.searchTerm))),this.checkboxes.forEach((e=>{const i=e.textContent.toLowerCase();this.limitCheckboxes&&!this.limitRevealed?i.includes(this.searchTerm)&&t<this._limitCount?(e.style.display="block",t++):e.style.display="none":i.includes(this.searchTerm)?e.style.display="block":e.style.display="none"}));const i=new CustomEvent("on-search",{detail:{searchTerm:this.searchTerm}});this.dispatchEvent(i)}_toggleRevealed(e){this.limitRevealed=e,this.filteredCheckboxes.forEach(((e,t)=>{!this.limitCheckboxes||this.limitRevealed||t<this._limitCount?e.style.display="block":e.style.display="none"}));const t=new CustomEvent("on-limit-toggle",{detail:{expanded:this.limitRevealed}});this.dispatchEvent(t)}_handleSlotChange(){const e=this.checkboxes;this.checkboxes=Array.from(this.querySelectorAll("kyn-checkbox")),this.filteredCheckboxes=this.checkboxes,e.length||this._updateChildren(),this._toggleRevealed(this.limitRevealed)}_updateChildren(){if(this.checkboxes.forEach((e=>{e.disabled=e.hasAttribute("disabled")||this.disabled,this.value&&this.value.length?e.checked=this.value.includes(e.value):e.checked=!1})),this.selectAll){const e=this.checkboxes.filter((e=>e.checked)).length;this.selectAllChecked=this.checkboxes.length>0&&e===this.checkboxes.length,this.selectAllIndeterminate=e<this.checkboxes.length&&e>0}}_handleSubgroupChange(e){const t=[...this.value],{isParent:i,parentChecked:o,parentValue:l,value:r,checked:a,childValues:s}=e.detail;if(i)if(a)t.includes(r)||t.push(r),s.forEach((e=>{t.includes(e)||t.push(e)}));else{const e=t.indexOf(r);t.splice(e,1),s.forEach((e=>{const i=t.indexOf(e);-1!==i&&t.splice(i,1)}))}else{if(a)t.includes(r)||t.push(r);else{const e=t.indexOf(r);-1!==e&&t.splice(e,1)}if(o)t.includes(l)||t.push(l);else{const e=t.indexOf(l);-1!==e&&t.splice(e,1)}}this.value=t,this._validate(!0,!1),this._emitChangeEvent()}connectedCallback(){super.connectedCallback(),this._onConnected(),this.addEventListener("on-checkbox-change",(e=>this._handleCheckboxChange(e))),this.addEventListener("on-checkbox-subgroup-change",(e=>this._handleSubgroupChange(e)))}disconnectedCallback(){this._onDisconnected(),this.removeEventListener("on-checkbox-change",(e=>this._handleCheckboxChange(e))),this.removeEventListener("on-checkbox-subgroup-change",(e=>this._handleSubgroupChange(e))),super.disconnectedCallback()}};u.styles=c,e([i({type:Array})],u.prototype,"value",void 0),e([i({type:Boolean})],u.prototype,"required",void 0),e([i({type:Boolean})],u.prototype,"disabled",void 0),e([i({type:Boolean})],u.prototype,"horizontal",void 0),e([i({type:Boolean})],u.prototype,"selectAll",void 0),e([i({type:Boolean})],u.prototype,"selectAllChecked",void 0),e([i({type:Boolean})],u.prototype,"selectAllIndeterminate",void 0),e([i({type:Boolean})],u.prototype,"hideLegend",void 0),e([i({type:Boolean})],u.prototype,"filterable",void 0),e([i({type:String})],u.prototype,"label",void 0),e([o()],u.prototype,"searchTerm",void 0),e([i({type:Boolean})],u.prototype,"limitCheckboxes",void 0),e([o()],u.prototype,"_limitCount",void 0),e([o()],u.prototype,"limitRevealed",void 0),e([i({type:Object})],u.prototype,"textStrings",void 0),e([o()],u.prototype,"_textStrings",void 0),e([o()],u.prototype,"checkboxes",void 0),e([o()],u.prototype,"filteredCheckboxes",void 0),u=e([l("kyn-checkbox-group")],u);export{u as CheckboxGroup};
|
|
562
562
|
//# sourceMappingURL=checkboxGroup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkboxGroup.js","sources":["../../../../src/components/reusable/checkbox/checkboxGroup.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, html } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { deepmerge } from 'deepmerge-ts';\nimport { FormMixin } from '../../../common/mixins/form-input';\nimport CheckboxGroupScss from './checkboxGroup.scss';\n\nimport '../textInput';\nimport './checkbox';\nimport errorIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/error-filled.svg';\n\nconst _defaultTextStrings = {\n selectAll: 'Select all',\n showMore: 'Show more',\n showLess: 'Show less',\n search: 'Search',\n required: 'Required',\n error: 'Error',\n};\n\n/**\n * Checkbox group container.\n * @fires on-checkbox-group-change - Captures the change event and emits the selected values.\n * @fires on-search - Captures the search input event and emits the search term.\n * @fires on-limit-toggle - Captures the show more/less click and emits the expanded state.\n * @slot unnamed - Slot for individual checkboxes.\n * @slot tooltip - Slot for tooltip.\n * @slot description - Slot for description text.\n */\n@customElement('kyn-checkbox-group')\nexport class CheckboxGroup extends FormMixin(LitElement) {\n static override styles = CheckboxGroupScss;\n\n /** Checkbox group selected values. */\n @property({ type: Array })\n override value: Array<any> = [];\n\n /** Makes a single selection required. */\n @property({ type: Boolean })\n required = false;\n\n /** Checkbox group disabled state. */\n @property({ type: Boolean })\n disabled = false;\n\n /** Checkbox group horizontal style. */\n @property({ type: Boolean })\n horizontal = false;\n\n /** Adds a \"Select All\" checkbox to the top of the group. */\n @property({ type: Boolean })\n selectAll = false;\n\n /** Is \"Select All\" box checked.\n * @internal\n */\n @property({ type: Boolean })\n selectAllChecked = false;\n\n /** Is \"Select All\" indeterminate.\n * @internal\n */\n @property({ type: Boolean })\n selectAllIndeterminate = false;\n\n /** Hide the group legend/label visually. */\n @property({ type: Boolean })\n hideLegend = false;\n\n /** Adds a search input to enable filtering of checkboxes. */\n @property({ type: Boolean })\n filterable = false;\n\n /** Label text. */\n @property({ type: String })\n label = '';\n\n /** Filter text input value.\n * @internal\n */\n @state()\n searchTerm = '';\n\n /** Limits visible checkboxes behind a \"Show all\" button. */\n @property({ type: Boolean })\n limitCheckboxes = false;\n\n /** Number of checkboxes visible when limited.\n * @internal\n */\n @state()\n _limitCount = 4;\n\n /** Checkbox limit visibility.\n * @internal\n */\n @state()\n limitRevealed = false;\n\n /** Text string customization. */\n @property({ type: Object })\n textStrings = _defaultTextStrings;\n\n /** Internal text strings.\n * @internal\n */\n @state()\n _textStrings = _defaultTextStrings;\n\n // /**\n // * Queries for slotted checkboxes.\n // * @ignore\n // */\n // @queryAssignedElements()\n // checkboxes!: Array<any>;\n\n @state()\n checkboxes: Array<any> = [];\n\n @state()\n filteredCheckboxes: Array<any> = [];\n\n override render() {\n return html`\n <div>\n ${this.filterable\n ? html`\n <kyn-text-input\n class=\"search\"\n type=\"search\"\n size=\"sm\"\n placeholder=${this._textStrings.search}\n hideLabel\n value=${this.searchTerm}\n ?disabled=${this.disabled}\n @on-input=${(e: Event) => this._handleFilter(e)}\n >\n ${this._textStrings.search}\n </kyn-text-input>\n `\n : null}\n\n <fieldset ?disabled=${this.disabled}>\n <legend class=\"label-text ${this.hideLegend ? 'sr-only' : ''}\">\n ${this.required\n ? html`\n <abbr\n class=\"required\"\n title=${this._textStrings.required}\n aria-label=${this._textStrings.required}\n >\n *\n </abbr>\n `\n : null}\n <span>${this.label}</span>\n <slot name=\"tooltip\"></slot>\n </legend>\n <div class=\"description-text\">\n <slot name=\"description\"></slot>\n </div>\n ${this._isInvalid\n ? html`\n <div class=\"error\">\n <span\n role=\"img\"\n class=\"error-icon\"\n title=${this._textStrings.error}\n aria-label=${this._textStrings.error}\n >${unsafeSVG(errorIcon)}</span\n >\n ${this.invalidText || this._internalValidationMsg}\n </div>\n `\n : null}\n\n <div class=\"${this.horizontal ? 'horizontal' : ''}\">\n ${this.selectAll\n ? html`\n <kyn-checkbox\n class=\"select-all\"\n value=\"selectAll\"\n ?checked=${this.selectAllChecked}\n ?indeterminate=${this.selectAllIndeterminate}\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?invalid=${this.invalidText !== '' ||\n this._internalValidationMsg !== ''}\n >\n ${this._textStrings.selectAll}\n </kyn-checkbox>\n `\n : null}\n\n <slot @slotchange=${this._handleSlotChange}></slot>\n\n ${this.limitCheckboxes &&\n this.filteredCheckboxes.length > this._limitCount\n ? html`\n <button\n class=\"reveal-toggle\"\n @click=${() => this._toggleRevealed(!this.limitRevealed)}\n >\n ${this.limitRevealed\n ? this._textStrings.showLess\n : html`\n ${this._textStrings.showMore}\n (${this.filteredCheckboxes.length})\n `}\n </button>\n `\n : null}\n </div>\n </fieldset>\n </div>\n `;\n }\n\n override willUpdate(changedProps: any) {\n if (changedProps.has('textStrings')) {\n this._textStrings = deepmerge(_defaultTextStrings, this.textStrings);\n }\n }\n\n override updated(changedProps: any) {\n if (!changedProps.has('invalidText')) {\n this._onUpdated(changedProps);\n }\n\n if (changedProps.has('invalidText')) {\n this._isInvalid =\n this.invalidText !== '' || this._internalValidationMsg !== '';\n this.checkboxes.forEach((checkbox: any) => {\n checkbox.invalid = this._isInvalid;\n });\n } else if (changedProps.has('value')) {\n this._updateCheckboxStates();\n }\n\n if (changedProps.has('name')) {\n this.checkboxes.forEach((checkbox: any) => {\n checkbox.name = this.name;\n });\n }\n\n if (changedProps.has('required')) {\n this.checkboxes.forEach((checkbox: any) => {\n checkbox.required = this.required;\n });\n }\n\n if (\n changedProps.has('disabled') &&\n changedProps.get('disabled') !== undefined\n ) {\n this.checkboxes.forEach((checkbox: any) => {\n checkbox.disabled = this.disabled;\n });\n }\n\n if (\n changedProps.has('limitCheckboxes') &&\n changedProps.get('limitCheckboxes') !== undefined\n ) {\n this._toggleRevealed(false);\n }\n }\n\n private _updateCheckboxStates() {\n this.checkboxes.forEach((checkbox: any) => {\n checkbox.checked = this.value.includes(checkbox.value);\n });\n\n const CheckedBoxesCount = this.checkboxes.filter(\n (checkbox) => checkbox.checked\n ).length;\n\n this.selectAllChecked =\n this.checkboxes.length > 0 &&\n CheckedBoxesCount === this.checkboxes.length;\n\n this.selectAllIndeterminate =\n CheckedBoxesCount < this.checkboxes.length && CheckedBoxesCount > 0;\n const entries = new FormData();\n this.value.forEach((value) => {\n entries.append(this.name, value);\n });\n this._internals.setFormValue(entries);\n }\n\n private _validate(interacted: Boolean, report: Boolean) {\n const Validity = {\n customError: this.invalidText !== '',\n valueMissing: this.required && !this.value.length,\n };\n\n const InternalMsg =\n this.required && !this.value.length ? 'A selection is required.' : '';\n const ValidationMessage =\n this.invalidText !== '' ? this.invalidText : InternalMsg;\n\n if (interacted || this.invalidText !== '') {\n this._internals.setValidity(Validity, ValidationMessage);\n\n // set internal validation message if value was changed by user input\n if (interacted) {\n this._internalValidationMsg = InternalMsg;\n }\n }\n\n // focus the first checkbox to show validity\n if (report) {\n this._internals.reportValidity();\n }\n }\n\n private _handleCheckboxChange(e: any) {\n const value = e.detail.value;\n\n if (value === 'selectAll') {\n if (e.detail.checked) {\n this.value = this.checkboxes\n .filter((checkbox) => !checkbox.disabled)\n .map((checkbox) => {\n return checkbox.value;\n });\n } else {\n this.value = [];\n }\n\n this.checkboxes.forEach((checkbox: any) => {\n checkbox.indeterminate = false;\n });\n } else {\n const newValues = [...this.value];\n if (newValues.includes(value)) {\n const index = newValues.indexOf(value);\n newValues.splice(index, 1);\n } else {\n newValues.push(value);\n }\n this.value = newValues;\n }\n\n this._validate(true, false);\n\n this._emitChangeEvent();\n }\n\n private _emitChangeEvent() {\n const event = new CustomEvent('on-checkbox-group-change', {\n detail: { value: this.value },\n });\n this.dispatchEvent(event);\n }\n\n private _handleFilter(e: any) {\n let visibleCount = 0;\n\n this.searchTerm = e.detail.value.toLowerCase();\n\n this.filteredCheckboxes = this.checkboxes.filter((checkboxEl) => {\n return checkboxEl.textContent.toLowerCase().includes(this.searchTerm);\n });\n\n this.checkboxes.forEach((checkboxEl) => {\n // get checkbox label text\n const checkboxText = checkboxEl.textContent.toLowerCase();\n\n // hide checkbox if no match to search term\n if (this.limitCheckboxes && !this.limitRevealed) {\n if (\n checkboxText.includes(this.searchTerm) &&\n visibleCount < this._limitCount\n ) {\n checkboxEl.style.display = 'block';\n visibleCount++;\n } else {\n checkboxEl.style.display = 'none';\n }\n } else {\n if (checkboxText.includes(this.searchTerm)) {\n checkboxEl.style.display = 'block';\n } else {\n checkboxEl.style.display = 'none';\n }\n }\n });\n\n const event = new CustomEvent('on-search', {\n detail: { searchTerm: this.searchTerm },\n });\n this.dispatchEvent(event);\n }\n\n private _toggleRevealed(revealed: boolean) {\n this.limitRevealed = revealed;\n\n this.filteredCheckboxes.forEach((checkboxEl, index) => {\n if (!this.limitCheckboxes || this.limitRevealed) {\n checkboxEl.style.display = 'block';\n } else {\n if (index < this._limitCount) {\n checkboxEl.style.display = 'block';\n } else {\n checkboxEl.style.display = 'none';\n }\n }\n });\n\n const event = new CustomEvent('on-limit-toggle', {\n detail: { expanded: this.limitRevealed },\n });\n this.dispatchEvent(event);\n }\n\n private _handleSlotChange() {\n const previousCheckboxes = this.checkboxes;\n this.checkboxes = Array.from(this.querySelectorAll('kyn-checkbox'));\n this.filteredCheckboxes = this.checkboxes;\n\n if (!previousCheckboxes.length) {\n this._updateChildren();\n }\n\n this._toggleRevealed(this.limitRevealed);\n }\n\n private _updateChildren() {\n this.checkboxes.forEach((checkbox) => {\n checkbox.disabled = this.disabled;\n if (this.value && this.value.length) {\n checkbox.checked = this.value.includes(checkbox.value);\n } else {\n checkbox.checked = false;\n }\n });\n\n if (this.selectAll) {\n const CheckedBoxesCount = this.checkboxes.filter(\n (checkbox) => checkbox.checked\n ).length;\n\n this.selectAllChecked =\n this.checkboxes.length > 0 &&\n CheckedBoxesCount === this.checkboxes.length;\n\n this.selectAllIndeterminate =\n CheckedBoxesCount < this.checkboxes.length && CheckedBoxesCount > 0;\n }\n }\n\n private _handleSubgroupChange(e: any) {\n const newValues = [...this.value];\n const {\n isParent,\n parentChecked,\n parentValue,\n value,\n checked,\n childValues,\n } = e.detail;\n\n if (isParent) {\n if (checked) {\n if (!newValues.includes(value)) {\n newValues.push(value);\n }\n\n childValues.forEach((value: string) => {\n if (!newValues.includes(value)) {\n newValues.push(value);\n }\n });\n } else {\n const index = newValues.indexOf(value);\n newValues.splice(index, 1);\n\n childValues.forEach((value: string) => {\n const index = newValues.indexOf(value);\n if (index !== -1) {\n newValues.splice(index, 1);\n }\n });\n }\n } else {\n if (checked) {\n if (!newValues.includes(value)) {\n newValues.push(value);\n }\n } else {\n const index = newValues.indexOf(value);\n if (index !== -1) {\n newValues.splice(index, 1);\n }\n }\n\n if (parentChecked) {\n if (!newValues.includes(parentValue)) {\n newValues.push(parentValue);\n }\n } else {\n const index = newValues.indexOf(parentValue);\n if (index !== -1) {\n newValues.splice(index, 1);\n }\n }\n }\n\n this.value = newValues;\n\n this._validate(true, false);\n\n this._emitChangeEvent();\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n // preserve FormMixin connectedCallback function\n this._onConnected();\n\n // capture child checkboxes change event\n this.addEventListener('on-checkbox-change', (e: any) =>\n this._handleCheckboxChange(e)\n );\n\n // capture subgroup change event\n this.addEventListener('on-checkbox-subgroup-change', (e: any) =>\n this._handleSubgroupChange(e)\n );\n }\n\n override disconnectedCallback() {\n // preserve FormMixin disconnectedCallback function\n this._onDisconnected();\n\n this.removeEventListener('on-checkbox-change', (e: any) =>\n this._handleCheckboxChange(e)\n );\n\n this.removeEventListener('on-checkbox-subgroup-change', (e: any) =>\n this._handleSubgroupChange(e)\n );\n\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-checkbox-group': CheckboxGroup;\n }\n}\n"],"names":["_defaultTextStrings","selectAll","showMore","showLess","search","required","error","CheckboxGroup","FormMixin","LitElement","constructor","this","value","disabled","horizontal","selectAllChecked","selectAllIndeterminate","hideLegend","filterable","label","searchTerm","limitCheckboxes","_limitCount","limitRevealed","textStrings","_textStrings","checkboxes","filteredCheckboxes","render","html","e","_handleFilter","_isInvalid","unsafeSVG","errorIcon","invalidText","_internalValidationMsg","_handleSlotChange","length","_toggleRevealed","willUpdate","changedProps","has","deepmerge","updated","_onUpdated","forEach","checkbox","invalid","_updateCheckboxStates","name","undefined","get","checked","includes","CheckedBoxesCount","filter","entries","FormData","append","_internals","setFormValue","_validate","interacted","report","Validity","customError","valueMissing","InternalMsg","ValidationMessage","setValidity","reportValidity","_handleCheckboxChange","detail","map","indeterminate","newValues","index","indexOf","splice","push","_emitChangeEvent","event","CustomEvent","dispatchEvent","visibleCount","toLowerCase","checkboxEl","textContent","checkboxText","style","display","revealed","expanded","previousCheckboxes","Array","from","querySelectorAll","_updateChildren","_handleSubgroupChange","isParent","parentChecked","parentValue","childValues","connectedCallback","super","_onConnected","addEventListener","disconnectedCallback","_onDisconnected","removeEventListener","styles","CheckboxGroupScss","__decorate","property","type","prototype","Boolean","String","state","Object","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"checkboxGroup.js","sources":["../../../../src/components/reusable/checkbox/checkboxGroup.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, html } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { deepmerge } from 'deepmerge-ts';\nimport { FormMixin } from '../../../common/mixins/form-input';\nimport CheckboxGroupScss from './checkboxGroup.scss';\n\nimport '../textInput';\nimport './checkbox';\nimport errorIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/error-filled.svg';\n\nconst _defaultTextStrings = {\n selectAll: 'Select all',\n showMore: 'Show more',\n showLess: 'Show less',\n search: 'Search',\n required: 'Required',\n error: 'Error',\n};\n\n/**\n * Checkbox group container.\n * @fires on-checkbox-group-change - Captures the change event and emits the selected values.\n * @fires on-search - Captures the search input event and emits the search term.\n * @fires on-limit-toggle - Captures the show more/less click and emits the expanded state.\n * @slot unnamed - Slot for individual checkboxes.\n * @slot tooltip - Slot for tooltip.\n * @slot description - Slot for description text.\n */\n@customElement('kyn-checkbox-group')\nexport class CheckboxGroup extends FormMixin(LitElement) {\n static override styles = CheckboxGroupScss;\n\n /** Checkbox group selected values. */\n @property({ type: Array })\n override value: Array<any> = [];\n\n /** Makes a single selection required. */\n @property({ type: Boolean })\n required = false;\n\n /** Checkbox group disabled state. */\n @property({ type: Boolean })\n disabled = false;\n\n /** Checkbox group horizontal style. */\n @property({ type: Boolean })\n horizontal = false;\n\n /** Adds a \"Select All\" checkbox to the top of the group. */\n @property({ type: Boolean })\n selectAll = false;\n\n /** Is \"Select All\" box checked.\n * @internal\n */\n @property({ type: Boolean })\n selectAllChecked = false;\n\n /** Is \"Select All\" indeterminate.\n * @internal\n */\n @property({ type: Boolean })\n selectAllIndeterminate = false;\n\n /** Hide the group legend/label visually. */\n @property({ type: Boolean })\n hideLegend = false;\n\n /** Adds a search input to enable filtering of checkboxes. */\n @property({ type: Boolean })\n filterable = false;\n\n /** Label text. */\n @property({ type: String })\n label = '';\n\n /** Filter text input value.\n * @internal\n */\n @state()\n searchTerm = '';\n\n /** Limits visible checkboxes behind a \"Show all\" button. */\n @property({ type: Boolean })\n limitCheckboxes = false;\n\n /** Number of checkboxes visible when limited.\n * @internal\n */\n @state()\n _limitCount = 4;\n\n /** Checkbox limit visibility.\n * @internal\n */\n @state()\n limitRevealed = false;\n\n /** Text string customization. */\n @property({ type: Object })\n textStrings = _defaultTextStrings;\n\n /** Internal text strings.\n * @internal\n */\n @state()\n _textStrings = _defaultTextStrings;\n\n // /**\n // * Queries for slotted checkboxes.\n // * @ignore\n // */\n // @queryAssignedElements()\n // checkboxes!: Array<any>;\n\n @state()\n checkboxes: Array<any> = [];\n\n @state()\n filteredCheckboxes: Array<any> = [];\n\n override render() {\n return html`\n <div>\n ${this.filterable\n ? html`\n <kyn-text-input\n class=\"search\"\n type=\"search\"\n size=\"sm\"\n placeholder=${this._textStrings.search}\n hideLabel\n value=${this.searchTerm}\n ?disabled=${this.disabled}\n @on-input=${(e: Event) => this._handleFilter(e)}\n >\n ${this._textStrings.search}\n </kyn-text-input>\n `\n : null}\n\n <fieldset ?disabled=${this.disabled}>\n <legend class=\"label-text ${this.hideLegend ? 'sr-only' : ''}\">\n ${this.required\n ? html`\n <abbr\n class=\"required\"\n title=${this._textStrings.required}\n aria-label=${this._textStrings.required}\n >\n *\n </abbr>\n `\n : null}\n <span>${this.label}</span>\n <slot name=\"tooltip\"></slot>\n </legend>\n <div class=\"description-text\">\n <slot name=\"description\"></slot>\n </div>\n ${this._isInvalid\n ? html`\n <div class=\"error\">\n <span\n role=\"img\"\n class=\"error-icon\"\n title=${this._textStrings.error}\n aria-label=${this._textStrings.error}\n >${unsafeSVG(errorIcon)}</span\n >\n ${this.invalidText || this._internalValidationMsg}\n </div>\n `\n : null}\n\n <div class=\"${this.horizontal ? 'horizontal' : ''}\">\n ${this.selectAll\n ? html`\n <kyn-checkbox\n class=\"select-all\"\n value=\"selectAll\"\n ?checked=${this.selectAllChecked}\n ?indeterminate=${this.selectAllIndeterminate}\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?invalid=${this.invalidText !== '' ||\n this._internalValidationMsg !== ''}\n >\n ${this._textStrings.selectAll}\n </kyn-checkbox>\n `\n : null}\n\n <slot @slotchange=${this._handleSlotChange}></slot>\n\n ${this.limitCheckboxes &&\n this.filteredCheckboxes.length > this._limitCount\n ? html`\n <button\n class=\"reveal-toggle\"\n @click=${() => this._toggleRevealed(!this.limitRevealed)}\n >\n ${this.limitRevealed\n ? this._textStrings.showLess\n : html`\n ${this._textStrings.showMore}\n (${this.filteredCheckboxes.length})\n `}\n </button>\n `\n : null}\n </div>\n </fieldset>\n </div>\n `;\n }\n\n override willUpdate(changedProps: any) {\n if (changedProps.has('textStrings')) {\n this._textStrings = deepmerge(_defaultTextStrings, this.textStrings);\n }\n }\n\n override updated(changedProps: any) {\n if (!changedProps.has('invalidText')) {\n this._onUpdated(changedProps);\n }\n\n if (changedProps.has('invalidText')) {\n this._isInvalid =\n this.invalidText !== '' || this._internalValidationMsg !== '';\n this.checkboxes.forEach((checkbox: any) => {\n checkbox.invalid = this._isInvalid;\n });\n } else if (changedProps.has('value')) {\n this._updateCheckboxStates();\n }\n\n if (changedProps.has('name')) {\n this.checkboxes.forEach((checkbox: any) => {\n checkbox.name = this.name;\n });\n }\n\n if (changedProps.has('required')) {\n this.checkboxes.forEach((checkbox: any) => {\n checkbox.required = this.required;\n });\n }\n\n if (\n changedProps.has('disabled') &&\n changedProps.get('disabled') !== undefined\n ) {\n this.checkboxes.forEach((checkbox: any) => {\n checkbox.disabled = this.disabled;\n });\n }\n\n if (\n changedProps.has('limitCheckboxes') &&\n changedProps.get('limitCheckboxes') !== undefined\n ) {\n this._toggleRevealed(false);\n }\n }\n\n private _updateCheckboxStates() {\n this.checkboxes.forEach((checkbox: any) => {\n checkbox.checked = this.value.includes(checkbox.value);\n });\n\n const CheckedBoxesCount = this.checkboxes.filter(\n (checkbox) => checkbox.checked\n ).length;\n\n this.selectAllChecked =\n this.checkboxes.length > 0 &&\n CheckedBoxesCount === this.checkboxes.length;\n\n this.selectAllIndeterminate =\n CheckedBoxesCount < this.checkboxes.length && CheckedBoxesCount > 0;\n const entries = new FormData();\n this.value.forEach((value) => {\n entries.append(this.name, value);\n });\n this._internals.setFormValue(entries);\n }\n\n private _validate(interacted: Boolean, report: Boolean) {\n const Validity = {\n customError: this.invalidText !== '',\n valueMissing: this.required && !this.value.length,\n };\n\n const InternalMsg =\n this.required && !this.value.length ? 'A selection is required.' : '';\n const ValidationMessage =\n this.invalidText !== '' ? this.invalidText : InternalMsg;\n\n if (interacted || this.invalidText !== '') {\n this._internals.setValidity(Validity, ValidationMessage);\n\n // set internal validation message if value was changed by user input\n if (interacted) {\n this._internalValidationMsg = InternalMsg;\n }\n }\n\n // focus the first checkbox to show validity\n if (report) {\n this._internals.reportValidity();\n }\n }\n\n private _handleCheckboxChange(e: any) {\n const value = e.detail.value;\n\n if (value === 'selectAll') {\n if (e.detail.checked) {\n this.value = this.checkboxes\n .filter((checkbox) => !checkbox.disabled)\n .map((checkbox) => {\n return checkbox.value;\n });\n } else {\n this.value = [];\n }\n\n this.checkboxes.forEach((checkbox: any) => {\n checkbox.indeterminate = false;\n });\n } else {\n const newValues = [...this.value];\n if (newValues.includes(value)) {\n const index = newValues.indexOf(value);\n newValues.splice(index, 1);\n } else {\n newValues.push(value);\n }\n this.value = newValues;\n }\n\n this._validate(true, false);\n\n this._emitChangeEvent();\n }\n\n private _emitChangeEvent() {\n const event = new CustomEvent('on-checkbox-group-change', {\n detail: { value: this.value },\n });\n this.dispatchEvent(event);\n }\n\n private _handleFilter(e: any) {\n let visibleCount = 0;\n\n this.searchTerm = e.detail.value.toLowerCase();\n\n this.filteredCheckboxes = this.checkboxes.filter((checkboxEl) => {\n return checkboxEl.textContent.toLowerCase().includes(this.searchTerm);\n });\n\n this.checkboxes.forEach((checkboxEl) => {\n // get checkbox label text\n const checkboxText = checkboxEl.textContent.toLowerCase();\n\n // hide checkbox if no match to search term\n if (this.limitCheckboxes && !this.limitRevealed) {\n if (\n checkboxText.includes(this.searchTerm) &&\n visibleCount < this._limitCount\n ) {\n checkboxEl.style.display = 'block';\n visibleCount++;\n } else {\n checkboxEl.style.display = 'none';\n }\n } else {\n if (checkboxText.includes(this.searchTerm)) {\n checkboxEl.style.display = 'block';\n } else {\n checkboxEl.style.display = 'none';\n }\n }\n });\n\n const event = new CustomEvent('on-search', {\n detail: { searchTerm: this.searchTerm },\n });\n this.dispatchEvent(event);\n }\n\n private _toggleRevealed(revealed: boolean) {\n this.limitRevealed = revealed;\n\n this.filteredCheckboxes.forEach((checkboxEl, index) => {\n if (!this.limitCheckboxes || this.limitRevealed) {\n checkboxEl.style.display = 'block';\n } else {\n if (index < this._limitCount) {\n checkboxEl.style.display = 'block';\n } else {\n checkboxEl.style.display = 'none';\n }\n }\n });\n\n const event = new CustomEvent('on-limit-toggle', {\n detail: { expanded: this.limitRevealed },\n });\n this.dispatchEvent(event);\n }\n\n private _handleSlotChange() {\n const previousCheckboxes = this.checkboxes;\n this.checkboxes = Array.from(this.querySelectorAll('kyn-checkbox'));\n this.filteredCheckboxes = this.checkboxes;\n\n if (!previousCheckboxes.length) {\n this._updateChildren();\n }\n\n this._toggleRevealed(this.limitRevealed);\n }\n\n private _updateChildren() {\n this.checkboxes.forEach((checkbox) => {\n checkbox.disabled = checkbox.hasAttribute('disabled') || this.disabled;\n if (this.value && this.value.length) {\n checkbox.checked = this.value.includes(checkbox.value);\n } else {\n checkbox.checked = false;\n }\n });\n\n if (this.selectAll) {\n const CheckedBoxesCount = this.checkboxes.filter(\n (checkbox) => checkbox.checked\n ).length;\n\n this.selectAllChecked =\n this.checkboxes.length > 0 &&\n CheckedBoxesCount === this.checkboxes.length;\n\n this.selectAllIndeterminate =\n CheckedBoxesCount < this.checkboxes.length && CheckedBoxesCount > 0;\n }\n }\n\n private _handleSubgroupChange(e: any) {\n const newValues = [...this.value];\n const {\n isParent,\n parentChecked,\n parentValue,\n value,\n checked,\n childValues,\n } = e.detail;\n\n if (isParent) {\n if (checked) {\n if (!newValues.includes(value)) {\n newValues.push(value);\n }\n\n childValues.forEach((value: string) => {\n if (!newValues.includes(value)) {\n newValues.push(value);\n }\n });\n } else {\n const index = newValues.indexOf(value);\n newValues.splice(index, 1);\n\n childValues.forEach((value: string) => {\n const index = newValues.indexOf(value);\n if (index !== -1) {\n newValues.splice(index, 1);\n }\n });\n }\n } else {\n if (checked) {\n if (!newValues.includes(value)) {\n newValues.push(value);\n }\n } else {\n const index = newValues.indexOf(value);\n if (index !== -1) {\n newValues.splice(index, 1);\n }\n }\n\n if (parentChecked) {\n if (!newValues.includes(parentValue)) {\n newValues.push(parentValue);\n }\n } else {\n const index = newValues.indexOf(parentValue);\n if (index !== -1) {\n newValues.splice(index, 1);\n }\n }\n }\n\n this.value = newValues;\n\n this._validate(true, false);\n\n this._emitChangeEvent();\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n // preserve FormMixin connectedCallback function\n this._onConnected();\n\n // capture child checkboxes change event\n this.addEventListener('on-checkbox-change', (e: any) =>\n this._handleCheckboxChange(e)\n );\n\n // capture subgroup change event\n this.addEventListener('on-checkbox-subgroup-change', (e: any) =>\n this._handleSubgroupChange(e)\n );\n }\n\n override disconnectedCallback() {\n // preserve FormMixin disconnectedCallback function\n this._onDisconnected();\n\n this.removeEventListener('on-checkbox-change', (e: any) =>\n this._handleCheckboxChange(e)\n );\n\n this.removeEventListener('on-checkbox-subgroup-change', (e: any) =>\n this._handleSubgroupChange(e)\n );\n\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-checkbox-group': CheckboxGroup;\n }\n}\n"],"names":["_defaultTextStrings","selectAll","showMore","showLess","search","required","error","CheckboxGroup","FormMixin","LitElement","constructor","this","value","disabled","horizontal","selectAllChecked","selectAllIndeterminate","hideLegend","filterable","label","searchTerm","limitCheckboxes","_limitCount","limitRevealed","textStrings","_textStrings","checkboxes","filteredCheckboxes","render","html","e","_handleFilter","_isInvalid","unsafeSVG","errorIcon","invalidText","_internalValidationMsg","_handleSlotChange","length","_toggleRevealed","willUpdate","changedProps","has","deepmerge","updated","_onUpdated","forEach","checkbox","invalid","_updateCheckboxStates","name","undefined","get","checked","includes","CheckedBoxesCount","filter","entries","FormData","append","_internals","setFormValue","_validate","interacted","report","Validity","customError","valueMissing","InternalMsg","ValidationMessage","setValidity","reportValidity","_handleCheckboxChange","detail","map","indeterminate","newValues","index","indexOf","splice","push","_emitChangeEvent","event","CustomEvent","dispatchEvent","visibleCount","toLowerCase","checkboxEl","textContent","checkboxText","style","display","revealed","expanded","previousCheckboxes","Array","from","querySelectorAll","_updateChildren","hasAttribute","_handleSubgroupChange","isParent","parentChecked","parentValue","childValues","connectedCallback","super","_onConnected","addEventListener","disconnectedCallback","_onDisconnected","removeEventListener","styles","CheckboxGroupScss","__decorate","property","type","prototype","Boolean","String","state","Object","customElement"],"mappings":"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"}
|
|
@@ -480,5 +480,5 @@ fieldset {
|
|
|
480
480
|
<slot @slotchange=${this._handleSlotChange}></slot>
|
|
481
481
|
</div>
|
|
482
482
|
</fieldset>
|
|
483
|
-
`}_handleSlotChange(){this._updateChildren()}_updateChildren(){this.radioButtons.forEach((t=>{t.disabled=this.disabled,t.checked=t.value===this.value,t.name=this.name,t.required=this.required,t.invalid=this._isInvalid}))}willUpdate(t){t.has("textStrings")&&(this._textStrings=s(u,this.textStrings))}updated(t){this._onUpdated(t),(t.has("value")||t.has("name")||t.has("required")||t.has("disabled")||t.has("invalidText")||t.has("internalValidationMsg"))&&this._updateChildren()}_validate(t,e){const i={customError:""!==this.invalidText,valueMissing:this.required&&""===this.value},r=this.required&&""===this.value?"A selection is required.":"",o=""!==this.invalidText?this.invalidText:r;this._internals.setValidity(i,o,this.radioButtons[0]),t&&(this._internalValidationMsg=r),e&&this._internals.reportValidity()}_handleRadioChange(t){this.value=t.detail.value,this._validate(!1,!1);const e=new CustomEvent("on-radio-group-change",{detail:{value:t.detail.value}});this.dispatchEvent(e)}connectedCallback(){super.connectedCallback(),this._onConnected(),this.addEventListener("on-radio-change",(t=>this._handleRadioChange(t)))}disconnectedCallback(){this._onDisconnected(),this.removeEventListener("on-radio-change",(t=>this._handleRadioChange(t))),super.disconnectedCallback()}};m.styles=h,t([i({type:String})],m.prototype,"label",void 0),t([i({type:Boolean})],m.prototype,"required",void 0),t([i({type:Boolean})],m.prototype,"disabled",void 0),t([i({type:Boolean})],m.prototype,"horizontal",void 0),t([i({type:Object})],m.prototype,"textStrings",void 0),t([r()],m.prototype,"_textStrings",void 0),t([o()],m.prototype,"radioButtons",void 0),m=t([a("kyn-radio-button-group")],m);export{m as RadioButtonGroup};
|
|
483
|
+
`}_handleSlotChange(){this._updateChildren()}_updateChildren(){this.radioButtons.forEach((t=>{t.disabled=t.hasAttribute("disabled")||this.disabled,t.checked=t.value===this.value,t.name=this.name,t.required=this.required,t.invalid=this._isInvalid}))}willUpdate(t){t.has("textStrings")&&(this._textStrings=s(u,this.textStrings))}updated(t){this._onUpdated(t),(t.has("value")||t.has("name")||t.has("required")||t.has("disabled")||t.has("invalidText")||t.has("internalValidationMsg"))&&this._updateChildren()}_validate(t,e){const i={customError:""!==this.invalidText,valueMissing:this.required&&""===this.value},r=this.required&&""===this.value?"A selection is required.":"",o=""!==this.invalidText?this.invalidText:r;this._internals.setValidity(i,o,this.radioButtons[0]),t&&(this._internalValidationMsg=r),e&&this._internals.reportValidity()}_handleRadioChange(t){this.value=t.detail.value,this._validate(!1,!1);const e=new CustomEvent("on-radio-group-change",{detail:{value:t.detail.value}});this.dispatchEvent(e)}connectedCallback(){super.connectedCallback(),this._onConnected(),this.addEventListener("on-radio-change",(t=>this._handleRadioChange(t)))}disconnectedCallback(){this._onDisconnected(),this.removeEventListener("on-radio-change",(t=>this._handleRadioChange(t))),super.disconnectedCallback()}};m.styles=h,t([i({type:String})],m.prototype,"label",void 0),t([i({type:Boolean})],m.prototype,"required",void 0),t([i({type:Boolean})],m.prototype,"disabled",void 0),t([i({type:Boolean})],m.prototype,"horizontal",void 0),t([i({type:Object})],m.prototype,"textStrings",void 0),t([r()],m.prototype,"_textStrings",void 0),t([o()],m.prototype,"radioButtons",void 0),m=t([a("kyn-radio-button-group")],m);export{m as RadioButtonGroup};
|
|
484
484
|
//# sourceMappingURL=radioButtonGroup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radioButtonGroup.js","sources":["../../../../src/components/reusable/radioButton/radioButtonGroup.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, html } from 'lit';\nimport {\n customElement,\n property,\n state,\n queryAssignedElements,\n} from 'lit/decorators.js';\nimport { deepmerge } from 'deepmerge-ts';\nimport RadioButtonGroupScss from './radioButtonGroup.scss';\nimport { FormMixin } from '../../../common/mixins/form-input';\nimport errorIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/error-filled.svg';\n\nconst _defaultTextStrings = {\n required: 'Required',\n error: 'Error',\n};\n\n/**\n * Radio button group container.\n * @fires on-radio-group-change - Captures the change event and emits the selected value.\n * @slot unnamed - Slot for individual radio buttons.\n * @slot description - Slot for description text.\n * @slot tooltip - Slot for tooltip.\n */\n@customElement('kyn-radio-button-group')\nexport class RadioButtonGroup extends FormMixin(LitElement) {\n static override styles = RadioButtonGroupScss;\n\n /** Label text */\n @property({ type: String })\n label = '';\n\n /** Makes the input required. */\n @property({ type: Boolean })\n required = false;\n\n /** Radio button group disabled state. */\n @property({ type: Boolean })\n disabled = false;\n\n /** Radio button group horizontal layout. */\n @property({ type: Boolean })\n horizontal = false;\n\n /** Text string customization. */\n @property({ type: Object })\n textStrings = _defaultTextStrings;\n\n /** Internal text strings.\n * @internal\n */\n @state()\n _textStrings = _defaultTextStrings;\n\n /**\n * Queries for slotted radio buttons.\n * @ignore\n */\n @queryAssignedElements()\n radioButtons!: Array<any>;\n\n override render() {\n return html`\n <fieldset ?disabled=${this.disabled}>\n <legend class=\"label-text\">\n ${this.required\n ? html`\n <abbr\n class=\"required\"\n title=${this._textStrings.required}\n aria-label=${this._textStrings.required}\n >\n *\n </abbr>\n `\n : null}\n\n <span>${this.label}</span>\n <slot name=\"tooltip\"></slot>\n </legend>\n <div class=\"description-text\">\n <slot name=\"description\"></slot>\n </div>\n ${this._isInvalid\n ? html`\n <div class=\"error\">\n <span\n class=\"error-icon\"\n title=${this._textStrings.error}\n aria-label=${this._textStrings.error}\n >${unsafeSVG(errorIcon)}</span\n >\n ${this.invalidText || this._internalValidationMsg}\n </div>\n `\n : null}\n\n <div class=\"${this.horizontal ? 'horizontal' : ''}\">\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n </fieldset>\n `;\n }\n\n private _handleSlotChange() {\n this._updateChildren();\n }\n\n private _updateChildren() {\n this.radioButtons.forEach((radio) => {\n radio.disabled = this.disabled;\n radio.checked = radio.value === this.value;\n radio.name = this.name;\n radio.required = this.required;\n radio.invalid = this._isInvalid;\n });\n }\n\n override willUpdate(changedProps: any) {\n if (changedProps.has('textStrings')) {\n this._textStrings = deepmerge(_defaultTextStrings, this.textStrings);\n }\n }\n\n override updated(changedProps: any) {\n this._onUpdated(changedProps);\n\n if (\n changedProps.has('value') ||\n changedProps.has('name') ||\n changedProps.has('required') ||\n changedProps.has('disabled') ||\n changedProps.has('invalidText') ||\n changedProps.has('internalValidationMsg')\n ) {\n this._updateChildren();\n }\n }\n\n private _validate(interacted: Boolean, report: Boolean) {\n // set validity flags\n const Validity = {\n customError: this.invalidText !== '',\n valueMissing: this.required && this.value === '',\n };\n\n // set validationMessage\n const InternalMsg =\n this.required && this.value === '' ? 'A selection is required.' : '';\n const ValidationMessage =\n this.invalidText !== '' ? this.invalidText : InternalMsg;\n\n // set validity on custom element, anchor to first radio\n this._internals.setValidity(\n Validity,\n ValidationMessage,\n this.radioButtons[0]\n );\n\n // set internal validation message if value was changed by user input\n if (interacted) {\n this._internalValidationMsg = InternalMsg;\n }\n\n // focus the first checkbox to show validity\n if (report) {\n this._internals.reportValidity();\n }\n }\n\n private _handleRadioChange(e: any) {\n // set selected value\n this.value = e.detail.value;\n\n this._validate(false, false);\n\n // emit selected value\n const event = new CustomEvent('on-radio-group-change', {\n detail: { value: e.detail.value },\n });\n this.dispatchEvent(event);\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n // preserve FormMixin connectedCallback function\n this._onConnected();\n\n // capture child radio buttons change event\n this.addEventListener('on-radio-change', (e: any) =>\n this._handleRadioChange(e)\n );\n }\n\n override disconnectedCallback(): void {\n // preserve FormMixin disconnectedCallback function\n this._onDisconnected();\n\n this.removeEventListener('on-radio-change', (e: any) =>\n this._handleRadioChange(e)\n );\n\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-radio-button-group': RadioButtonGroup;\n }\n}\n"],"names":["_defaultTextStrings","required","error","RadioButtonGroup","FormMixin","LitElement","constructor","this","label","disabled","horizontal","textStrings","_textStrings","render","html","_isInvalid","unsafeSVG","errorIcon","invalidText","_internalValidationMsg","_handleSlotChange","_updateChildren","radioButtons","forEach","radio","checked","value","name","invalid","willUpdate","changedProps","has","deepmerge","updated","_onUpdated","_validate","interacted","report","Validity","customError","valueMissing","InternalMsg","ValidationMessage","_internals","setValidity","reportValidity","_handleRadioChange","e","detail","event","CustomEvent","dispatchEvent","connectedCallback","super","_onConnected","addEventListener","disconnectedCallback","_onDisconnected","removeEventListener","styles","RadioButtonGroupScss","__decorate","property","type","String","prototype","Boolean","Object","state","queryAssignedElements","customElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAaA,MAAMA,EAAsB,CAC1BC,SAAU,WACVC,MAAO,SAWI,IAAAC,EAAN,cAA+BC,EAAUC,IAAzC,WAAAC,uBAKLC,KAAKC,MAAG,GAIRD,KAAQN,UAAG,EAIXM,KAAQE,UAAG,EAIXF,KAAUG,YAAG,EAIbH,KAAWI,YAAGX,EAMdO,KAAYK,aAAGZ,CAyJhB,CAhJU,MAAAa,GACP,OAAOC,CAAI;4BACaP,KAAKE;;YAErBF,KAAKN,SACHa,CAAI;;;0BAGQP,KAAKK,aAAaX;+BACbM,KAAKK,aAAaX;;;;gBAKnC;;kBAEIM,KAAKC;;;;;;UAMbD,KAAKQ,WACHD,CAAI;;;;0BAIUP,KAAKK,aAAaV;+BACbK,KAAKK,aAAaV;qBAC5Bc,EAAUC;;kBAEbV,KAAKW,aAAeX,KAAKY;;cAG/B;;sBAEUZ,KAAKG,WAAa,aAAe;8BACzBH,KAAKa;;;KAIhC,CAEO,iBAAAA,GACNb,KAAKc,iBACN,CAEO,eAAAA,GACNd,KAAKe,aAAaC,SAASC,IACzBA,EAAMf,
|
|
1
|
+
{"version":3,"file":"radioButtonGroup.js","sources":["../../../../src/components/reusable/radioButton/radioButtonGroup.ts"],"sourcesContent":["import { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport { LitElement, html } from 'lit';\nimport {\n customElement,\n property,\n state,\n queryAssignedElements,\n} from 'lit/decorators.js';\nimport { deepmerge } from 'deepmerge-ts';\nimport RadioButtonGroupScss from './radioButtonGroup.scss';\nimport { FormMixin } from '../../../common/mixins/form-input';\nimport errorIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/error-filled.svg';\n\nconst _defaultTextStrings = {\n required: 'Required',\n error: 'Error',\n};\n\n/**\n * Radio button group container.\n * @fires on-radio-group-change - Captures the change event and emits the selected value.\n * @slot unnamed - Slot for individual radio buttons.\n * @slot description - Slot for description text.\n * @slot tooltip - Slot for tooltip.\n */\n@customElement('kyn-radio-button-group')\nexport class RadioButtonGroup extends FormMixin(LitElement) {\n static override styles = RadioButtonGroupScss;\n\n /** Label text */\n @property({ type: String })\n label = '';\n\n /** Makes the input required. */\n @property({ type: Boolean })\n required = false;\n\n /** Radio button group disabled state. */\n @property({ type: Boolean })\n disabled = false;\n\n /** Radio button group horizontal layout. */\n @property({ type: Boolean })\n horizontal = false;\n\n /** Text string customization. */\n @property({ type: Object })\n textStrings = _defaultTextStrings;\n\n /** Internal text strings.\n * @internal\n */\n @state()\n _textStrings = _defaultTextStrings;\n\n /**\n * Queries for slotted radio buttons.\n * @ignore\n */\n @queryAssignedElements()\n radioButtons!: Array<any>;\n\n override render() {\n return html`\n <fieldset ?disabled=${this.disabled}>\n <legend class=\"label-text\">\n ${this.required\n ? html`\n <abbr\n class=\"required\"\n title=${this._textStrings.required}\n aria-label=${this._textStrings.required}\n >\n *\n </abbr>\n `\n : null}\n\n <span>${this.label}</span>\n <slot name=\"tooltip\"></slot>\n </legend>\n <div class=\"description-text\">\n <slot name=\"description\"></slot>\n </div>\n ${this._isInvalid\n ? html`\n <div class=\"error\">\n <span\n class=\"error-icon\"\n title=${this._textStrings.error}\n aria-label=${this._textStrings.error}\n >${unsafeSVG(errorIcon)}</span\n >\n ${this.invalidText || this._internalValidationMsg}\n </div>\n `\n : null}\n\n <div class=\"${this.horizontal ? 'horizontal' : ''}\">\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n </fieldset>\n `;\n }\n\n private _handleSlotChange() {\n this._updateChildren();\n }\n\n private _updateChildren() {\n this.radioButtons.forEach((radio) => {\n radio.disabled = radio.hasAttribute('disabled') || this.disabled;\n radio.checked = radio.value === this.value;\n radio.name = this.name;\n radio.required = this.required;\n radio.invalid = this._isInvalid;\n });\n }\n\n override willUpdate(changedProps: any) {\n if (changedProps.has('textStrings')) {\n this._textStrings = deepmerge(_defaultTextStrings, this.textStrings);\n }\n }\n\n override updated(changedProps: any) {\n this._onUpdated(changedProps);\n\n if (\n changedProps.has('value') ||\n changedProps.has('name') ||\n changedProps.has('required') ||\n changedProps.has('disabled') ||\n changedProps.has('invalidText') ||\n changedProps.has('internalValidationMsg')\n ) {\n this._updateChildren();\n }\n }\n\n private _validate(interacted: Boolean, report: Boolean) {\n // set validity flags\n const Validity = {\n customError: this.invalidText !== '',\n valueMissing: this.required && this.value === '',\n };\n\n // set validationMessage\n const InternalMsg =\n this.required && this.value === '' ? 'A selection is required.' : '';\n const ValidationMessage =\n this.invalidText !== '' ? this.invalidText : InternalMsg;\n\n // set validity on custom element, anchor to first radio\n this._internals.setValidity(\n Validity,\n ValidationMessage,\n this.radioButtons[0]\n );\n\n // set internal validation message if value was changed by user input\n if (interacted) {\n this._internalValidationMsg = InternalMsg;\n }\n\n // focus the first checkbox to show validity\n if (report) {\n this._internals.reportValidity();\n }\n }\n\n private _handleRadioChange(e: any) {\n // set selected value\n this.value = e.detail.value;\n\n this._validate(false, false);\n\n // emit selected value\n const event = new CustomEvent('on-radio-group-change', {\n detail: { value: e.detail.value },\n });\n this.dispatchEvent(event);\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n // preserve FormMixin connectedCallback function\n this._onConnected();\n\n // capture child radio buttons change event\n this.addEventListener('on-radio-change', (e: any) =>\n this._handleRadioChange(e)\n );\n }\n\n override disconnectedCallback(): void {\n // preserve FormMixin disconnectedCallback function\n this._onDisconnected();\n\n this.removeEventListener('on-radio-change', (e: any) =>\n this._handleRadioChange(e)\n );\n\n super.disconnectedCallback();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-radio-button-group': RadioButtonGroup;\n }\n}\n"],"names":["_defaultTextStrings","required","error","RadioButtonGroup","FormMixin","LitElement","constructor","this","label","disabled","horizontal","textStrings","_textStrings","render","html","_isInvalid","unsafeSVG","errorIcon","invalidText","_internalValidationMsg","_handleSlotChange","_updateChildren","radioButtons","forEach","radio","hasAttribute","checked","value","name","invalid","willUpdate","changedProps","has","deepmerge","updated","_onUpdated","_validate","interacted","report","Validity","customError","valueMissing","InternalMsg","ValidationMessage","_internals","setValidity","reportValidity","_handleRadioChange","e","detail","event","CustomEvent","dispatchEvent","connectedCallback","super","_onConnected","addEventListener","disconnectedCallback","_onDisconnected","removeEventListener","styles","RadioButtonGroupScss","__decorate","property","type","String","prototype","Boolean","Object","state","queryAssignedElements","customElement"],"mappings":"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"}
|