@pine-ds/core 2.16.0 → 2.16.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.
- package/components/pds-accordion.js +1 -1
- package/components/pds-accordion.js.map +1 -1
- package/components/pds-box.js +1 -1
- package/components/pds-box.js.map +1 -1
- package/components/pds-button2.js +1 -1
- package/components/pds-button2.js.map +1 -1
- package/components/pds-checkbox2.js +9 -6
- package/components/pds-checkbox2.js.map +1 -1
- package/components/pds-input.js +2 -2
- package/components/pds-input.js.map +1 -1
- package/components/pds-radio.js +9 -6
- package/components/pds-radio.js.map +1 -1
- package/components/pds-select.js +10 -4
- package/components/pds-select.js.map +1 -1
- package/components/pds-switch.js +9 -6
- package/components/pds-switch.js.map +1 -1
- package/components/pds-tab.js +1 -1
- package/components/pds-tab.js.map +1 -1
- package/components/pds-tabs.js +2 -2
- package/components/pds-tabs.js.map +1 -1
- package/components/pds-textarea.js +2 -2
- package/components/pds-textarea.js.map +1 -1
- package/dist/cjs/pds-accordion.cjs.entry.js +1 -1
- package/dist/cjs/pds-accordion.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-box.cjs.entry.js +1 -1
- package/dist/cjs/pds-box.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-button.cjs.entry.js +1 -1
- package/dist/cjs/pds-button.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-checkbox.cjs.entry.js +9 -6
- package/dist/cjs/pds-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-input.cjs.entry.js +2 -2
- package/dist/cjs/pds-input.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-radio.cjs.entry.js +9 -6
- package/dist/cjs/pds-radio.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-select.cjs.entry.js +10 -4
- package/dist/cjs/pds-select.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-switch.cjs.entry.js +9 -6
- package/dist/cjs/pds-switch.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-tab.cjs.entry.js +1 -1
- package/dist/cjs/pds-tab.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-tabs.cjs.entry.js +2 -2
- package/dist/cjs/pds-tabs.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-textarea.cjs.entry.js +2 -2
- package/dist/cjs/pds-textarea.cjs.entry.js.map +1 -1
- package/dist/collection/components/pds-accordion/pds-accordion.css +4 -4
- package/dist/collection/components/pds-box/pds-box.css +0 -1
- package/dist/collection/components/pds-button/pds-button.css +4 -4
- package/dist/collection/components/pds-checkbox/pds-checkbox.css +0 -2
- package/dist/collection/components/pds-checkbox/pds-checkbox.js +5 -5
- package/dist/collection/components/pds-checkbox/pds-checkbox.js.map +1 -1
- package/dist/collection/components/pds-input/pds-input.css +3 -5
- package/dist/collection/components/pds-radio/pds-radio.css +0 -2
- package/dist/collection/components/pds-radio/pds-radio.js +5 -5
- package/dist/collection/components/pds-radio/pds-radio.js.map +1 -1
- package/dist/collection/components/pds-select/pds-select.css +2 -4
- package/dist/collection/components/pds-select/pds-select.js +3 -3
- package/dist/collection/components/pds-select/pds-select.js.map +1 -1
- package/dist/collection/components/pds-select/pds-select.tokens.css +6 -0
- package/dist/collection/components/pds-switch/pds-switch.css +1 -2
- package/dist/collection/components/pds-switch/pds-switch.js +5 -5
- package/dist/collection/components/pds-switch/pds-switch.js.map +1 -1
- package/dist/collection/components/pds-tabs/pds-tab/pds-tab.css +37 -1
- package/dist/collection/components/pds-tabs/pds-tabs.css +9 -0
- package/dist/collection/components/pds-tabs/pds-tabs.js +3 -3
- package/dist/collection/components/pds-tabs/pds-tabs.js.map +1 -1
- package/dist/collection/components/pds-tabs/stories/pds-tabs.stories.js +6 -0
- package/dist/collection/components/pds-textarea/pds-textarea.css +2 -1
- package/dist/collection/global/styles/utils/label.css +2 -1
- package/dist/docs.json +8 -4
- package/dist/esm/pds-accordion.entry.js +1 -1
- package/dist/esm/pds-accordion.entry.js.map +1 -1
- package/dist/esm/pds-box.entry.js +1 -1
- package/dist/esm/pds-box.entry.js.map +1 -1
- package/dist/esm/pds-button.entry.js +1 -1
- package/dist/esm/pds-button.entry.js.map +1 -1
- package/dist/esm/pds-checkbox.entry.js +9 -6
- package/dist/esm/pds-checkbox.entry.js.map +1 -1
- package/dist/esm/pds-input.entry.js +2 -2
- package/dist/esm/pds-input.entry.js.map +1 -1
- package/dist/esm/pds-radio.entry.js +9 -6
- package/dist/esm/pds-radio.entry.js.map +1 -1
- package/dist/esm/pds-select.entry.js +10 -4
- package/dist/esm/pds-select.entry.js.map +1 -1
- package/dist/esm/pds-switch.entry.js +9 -6
- package/dist/esm/pds-switch.entry.js.map +1 -1
- package/dist/esm/pds-tab.entry.js +1 -1
- package/dist/esm/pds-tab.entry.js.map +1 -1
- package/dist/esm/pds-tabs.entry.js +2 -2
- package/dist/esm/pds-tabs.entry.js.map +1 -1
- package/dist/esm/pds-textarea.entry.js +2 -2
- package/dist/esm/pds-textarea.entry.js.map +1 -1
- package/dist/esm-es5/pds-accordion.entry.js +1 -1
- package/dist/esm-es5/pds-accordion.entry.js.map +1 -1
- package/dist/esm-es5/pds-box.entry.js +1 -1
- package/dist/esm-es5/pds-box.entry.js.map +1 -1
- package/dist/esm-es5/pds-button.entry.js +1 -1
- package/dist/esm-es5/pds-button.entry.js.map +1 -1
- package/dist/esm-es5/pds-checkbox.entry.js +1 -1
- package/dist/esm-es5/pds-checkbox.entry.js.map +1 -1
- package/dist/esm-es5/pds-input.entry.js +1 -1
- package/dist/esm-es5/pds-input.entry.js.map +1 -1
- package/dist/esm-es5/pds-radio.entry.js +1 -1
- package/dist/esm-es5/pds-radio.entry.js.map +1 -1
- package/dist/esm-es5/pds-select.entry.js +1 -1
- package/dist/esm-es5/pds-select.entry.js.map +1 -1
- package/dist/esm-es5/pds-switch.entry.js +1 -1
- package/dist/esm-es5/pds-switch.entry.js.map +1 -1
- package/dist/esm-es5/pds-tab.entry.js +1 -1
- package/dist/esm-es5/pds-tab.entry.js.map +1 -1
- package/dist/esm-es5/pds-tabs.entry.js +1 -1
- package/dist/esm-es5/pds-tabs.entry.js.map +1 -1
- package/dist/esm-es5/pds-textarea.entry.js +1 -1
- package/dist/esm-es5/pds-textarea.entry.js.map +1 -1
- package/dist/pine-core/p-03440844.entry.js +2 -0
- package/dist/pine-core/p-03440844.entry.js.map +1 -0
- package/dist/pine-core/p-27e12bd2.system.entry.js +2 -0
- package/dist/pine-core/p-27e12bd2.system.entry.js.map +1 -0
- package/dist/pine-core/p-4f2e4e6f.system.entry.js +2 -0
- package/dist/pine-core/p-4f2e4e6f.system.entry.js.map +1 -0
- package/dist/pine-core/p-568ef920.entry.js +2 -0
- package/dist/pine-core/p-568ef920.entry.js.map +1 -0
- package/dist/pine-core/p-5c04aee0.system.js +1 -1
- package/dist/pine-core/p-71dc77f3.entry.js +2 -0
- package/dist/pine-core/p-71dc77f3.entry.js.map +1 -0
- package/dist/pine-core/p-7257c948.entry.js +2 -0
- package/dist/pine-core/p-7257c948.entry.js.map +1 -0
- package/dist/pine-core/p-7baec1ed.entry.js +2 -0
- package/dist/pine-core/p-7baec1ed.entry.js.map +1 -0
- package/dist/pine-core/p-853af623.system.entry.js +2 -0
- package/dist/pine-core/p-853af623.system.entry.js.map +1 -0
- package/dist/pine-core/p-8c07ed73.system.entry.js +2 -0
- package/dist/pine-core/p-8c07ed73.system.entry.js.map +1 -0
- package/dist/pine-core/p-8c0a648d.system.entry.js +2 -0
- package/dist/pine-core/p-8c0a648d.system.entry.js.map +1 -0
- package/dist/pine-core/p-95e4a6ff.system.entry.js +2 -0
- package/dist/pine-core/p-95e4a6ff.system.entry.js.map +1 -0
- package/dist/pine-core/p-987a101b.system.entry.js +2 -0
- package/dist/pine-core/p-987a101b.system.entry.js.map +1 -0
- package/dist/pine-core/p-a22fd94e.entry.js +2 -0
- package/dist/pine-core/p-a22fd94e.entry.js.map +1 -0
- package/dist/pine-core/p-aa134d2a.system.entry.js +2 -0
- package/dist/pine-core/p-aa134d2a.system.entry.js.map +1 -0
- package/dist/pine-core/p-ade60629.system.entry.js +2 -0
- package/dist/pine-core/p-ade60629.system.entry.js.map +1 -0
- package/dist/pine-core/p-adf21b0c.entry.js +2 -0
- package/dist/pine-core/p-adf21b0c.entry.js.map +1 -0
- package/dist/pine-core/p-d9390457.entry.js +2 -0
- package/dist/pine-core/p-d9390457.entry.js.map +1 -0
- package/dist/pine-core/p-f0c28381.entry.js +2 -0
- package/dist/pine-core/p-f0c28381.entry.js.map +1 -0
- package/dist/pine-core/p-f182a1f2.system.entry.js +2 -0
- package/dist/pine-core/p-f182a1f2.system.entry.js.map +1 -0
- package/dist/pine-core/p-f19e5736.system.entry.js +2 -0
- package/dist/pine-core/p-f19e5736.system.entry.js.map +1 -0
- package/dist/pine-core/p-f81066da.entry.js +2 -0
- package/dist/pine-core/p-f81066da.entry.js.map +1 -0
- package/dist/pine-core/p-f900a8ee.entry.js +2 -0
- package/dist/pine-core/p-f900a8ee.entry.js.map +1 -0
- package/dist/pine-core/pine-core.css +1 -1
- package/dist/pine-core/pine-core.esm.js +1 -1
- package/dist/types/components/pds-tabs/pds-tabs.d.ts +1 -1
- package/dist/types/components.d.ts +2 -2
- package/hydrate/index.js +48 -33
- package/hydrate/index.mjs +48 -33
- package/package.json +2 -2
- package/dist/pine-core/p-0e4226b8.entry.js +0 -2
- package/dist/pine-core/p-0e4226b8.entry.js.map +0 -1
- package/dist/pine-core/p-26679956.system.entry.js +0 -2
- package/dist/pine-core/p-26679956.system.entry.js.map +0 -1
- package/dist/pine-core/p-2c0ef946.entry.js +0 -2
- package/dist/pine-core/p-2c0ef946.entry.js.map +0 -1
- package/dist/pine-core/p-2fedf634.system.entry.js +0 -2
- package/dist/pine-core/p-2fedf634.system.entry.js.map +0 -1
- package/dist/pine-core/p-399617f0.system.entry.js +0 -2
- package/dist/pine-core/p-399617f0.system.entry.js.map +0 -1
- package/dist/pine-core/p-4e2fe44a.system.entry.js +0 -2
- package/dist/pine-core/p-4e2fe44a.system.entry.js.map +0 -1
- package/dist/pine-core/p-59f4c8ab.system.entry.js +0 -2
- package/dist/pine-core/p-59f4c8ab.system.entry.js.map +0 -1
- package/dist/pine-core/p-5b9f8f6a.system.entry.js +0 -2
- package/dist/pine-core/p-5b9f8f6a.system.entry.js.map +0 -1
- package/dist/pine-core/p-650a27ca.entry.js +0 -2
- package/dist/pine-core/p-650a27ca.entry.js.map +0 -1
- package/dist/pine-core/p-6709f0f7.system.entry.js +0 -2
- package/dist/pine-core/p-6709f0f7.system.entry.js.map +0 -1
- package/dist/pine-core/p-6ce5b998.entry.js +0 -2
- package/dist/pine-core/p-6ce5b998.entry.js.map +0 -1
- package/dist/pine-core/p-6d8df897.entry.js +0 -2
- package/dist/pine-core/p-6d8df897.entry.js.map +0 -1
- package/dist/pine-core/p-6db1fe5c.entry.js +0 -2
- package/dist/pine-core/p-6db1fe5c.entry.js.map +0 -1
- package/dist/pine-core/p-726dc3d1.entry.js +0 -2
- package/dist/pine-core/p-726dc3d1.entry.js.map +0 -1
- package/dist/pine-core/p-8205e4d8.system.entry.js +0 -2
- package/dist/pine-core/p-8205e4d8.system.entry.js.map +0 -1
- package/dist/pine-core/p-9e976b99.entry.js +0 -2
- package/dist/pine-core/p-9e976b99.entry.js.map +0 -1
- package/dist/pine-core/p-b27bbfe3.entry.js +0 -2
- package/dist/pine-core/p-b27bbfe3.entry.js.map +0 -1
- package/dist/pine-core/p-b29b2e57.system.entry.js +0 -2
- package/dist/pine-core/p-b29b2e57.system.entry.js.map +0 -1
- package/dist/pine-core/p-b47f9e15.system.entry.js +0 -2
- package/dist/pine-core/p-b47f9e15.system.entry.js.map +0 -1
- package/dist/pine-core/p-cb3ddff3.entry.js +0 -2
- package/dist/pine-core/p-cb3ddff3.entry.js.map +0 -1
- package/dist/pine-core/p-cd14918d.system.entry.js +0 -2
- package/dist/pine-core/p-cd14918d.system.entry.js.map +0 -1
- package/dist/pine-core/p-e5b46292.entry.js +0 -2
- package/dist/pine-core/p-e5b46292.entry.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["labelCss","PdsRadioStyle0","pdsRadioCss","PdsRadioStyle1","PdsRadio","this","handleRadioChange","e","_this","disabled","target","isChecked","checked","pdsRadioChange","emit","prototype","classNames","invalid","push","join","render","h","Host","key","class","assignDescription","componentId","helperMessage","undefined","type","id","name","value","required","onChange","PdsLabel","htmlFor","text","label","messageId","errorMessage","icon","danger","size"],"sources":["src/global/styles/utils/label.scss?tag=pds-radio&encapsulation=scoped","src/components/pds-radio/pds-radio.scss?tag=pds-radio&encapsulation=scoped","src/components/pds-radio/pds-radio.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n:host([aria-disabled=\"true\"]) label {\n color: var(--pine-color-text-label-disabled);\n}\n\n:host([aria-readonly=\"true\"]) {\n label {\n color: var(--pine-color-text-label-readonly);\n }\n}\n\nlabel {\n color: var(--pine-color-text-label);\n font: var(--pine-typography-body-medium);\n letter-spacing: var(--pine-letter-spacing);\n}\n",":host {\n --box-shadow-focus: 0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);\n --box-shadow-focus-error: 0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring-danger);\n\n --sizing-check-size: 6px;\n --sizing-input-size: var(--pine-dimension-sm);\n --sizing-margin-block-start: 6px;\n\n align-items: center;\n display: flex;\n flex-flow: row wrap;\n}\n\n:host(.is-invalid) {\n input {\n border-color: var(--pine-color-border-danger);\n\n &:checked {\n background: var(--pine-color-border-danger);\n\n &:hover {\n background: var(--pine-color-border-danger-hover);\n border-color: var(--pine-color-border-danger-hover);\n }\n }\n\n &:focus-visible {\n box-shadow: var(--box-shadow-focus-error);\n outline: none;\n }\n }\n\n label,\n .pds-radio__message--error {\n color: var(--pine-color-text-message-danger);\n }\n}\n\ninput {\n appearance: none;\n border: var(--pine-border);\n border-radius: var(--pine-border-radius-full);\n height: var(--sizing-input-size);\n margin: 0;\n position: relative;\n width: var(--sizing-input-size);\n\n &:hover {\n background: var(--pine-color-background-container-hover);\n border: var(--pine-border-hover);\n }\n\n &:checked {\n background: var(--pine-color-accent);\n border-color: var(--pine-color-accent);\n\n &:hover {\n background: var(--pine-color-accent-hover);\n border-color: var(--pine-color-accent-hover);\n }\n\n &::after {\n background: var(--pine-color-background-container);\n border-radius: var(--pine-border-radius-full);\n content: \"\";\n display: block;\n height: var(--sizing-check-size);\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n width: var(--sizing-check-size);\n }\n }\n\n &:disabled {\n background: var(--pine-color-background-container-disabled);\n border-color: var(--pine-color-border-disabled);\n cursor: not-allowed;\n\n &:checked {\n background-color: var(--pine-color-accent-disabled);\n border-color: var(--pine-color-border-disabled);\n\n &::after {\n border-color: var(--pine-color-border-disabled);\n }\n }\n\n + label {\n cursor: not-allowed;\n }\n\n ~ .pds-radio__message {\n color: var(--pine-color-text-message-disabled);\n }\n }\n\n &:focus-visible {\n box-shadow: var(--box-shadow-focus);\n outline: none;\n }\n\n}\n\nlabel {\n margin-inline-start: 10px;\n}\n\n.pds-radio__message {\n color: var(--pine-color-text-message);\n margin-block-start: var(--sizing-margin-block-start);\n margin-inline-start: 26px;\n width: 100%;\n}\n\n.pds-radio__message--error {\n align-items: center;\n display: flex;\n font-size: var(--pine-font-size-body-sm);\n gap: var(--pine-dimension-2xs);\n}\n","import { Component, Host, h, Prop, Event, EventEmitter } from '@stencil/core';\nimport { assignDescription, messageId } from '../../utils/form';\nimport { PdsLabel } from '../_internal/pds-label/pds-label';\nimport { danger } from '@pine-ds/icons/icons';\n\n@Component({\n tag: 'pds-radio',\n styleUrls: ['../../global/styles/utils/label.scss', 'pds-radio.scss'],\n scoped: true,\n})\nexport class PdsRadio {\n /**\n * Determines whether or not the radio is checked.\n * @defaultValue false\n */\n @Prop() checked = false;\n\n /**\n * A unique identifier used for the underlying component `id` attribute and the label `for` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Determines whether or not the radio is disabled.\n * @defaultValue false\n */\n @Prop() disabled = false;\n\n /**\n * Displays error message text describing an invalid state.\n */\n @Prop() errorMessage: string;\n\n /**\n * Displays helper message text below radio.\n */\n @Prop() helperMessage: string;\n\n /**\n * Determines whether or not the radio is invalid.\n * @defaultValue false\n */\n @Prop() invalid = false;\n\n /**\n * String used for label text next to radio.\n */\n @Prop() label: string;\n\n /**\n * String used for radio `name` attribute.\n */\n @Prop() name: string;\n\n /**\n * Determines whether or not the radio is required.\n * @defaultValue false\n */\n @Prop() required = false;\n\n /**\n * The value of the radio that is submitted with a form.\n */\n @Prop() value: string;\n\n /**\n * Emits a boolean indicating whether the checkbox is currently checked or unchecked.\n */\n @Event() pdsRadioChange: EventEmitter<boolean>;\n\n private handleRadioChange = (e: Event) => {\n if (this.disabled) {\n return;\n }\n\n const target = e.target as HTMLInputElement;\n const isChecked = target.checked;\n\n this.pdsRadioChange.emit(isChecked);\n }\n\n private classNames() {\n const classNames = [];\n\n if (this.invalid) {\n classNames.push('is-invalid');\n }\n if (this.disabled) {\n classNames.push('is-disabled');\n }\n\n return classNames.join(' ');\n }\n\n render() {\n return (\n <Host class={this.classNames()}>\n <input\n aria-describedby={assignDescription(this.componentId, this.invalid, this.helperMessage)}\n aria-invalid={this.invalid ? \"true\" : undefined}\n type=\"radio\"\n id={this.componentId}\n name={this.name}\n value={this.value}\n checked={this.checked}\n required={this.required}\n disabled={this.disabled}\n onChange={this.handleRadioChange}\n />\n <PdsLabel htmlFor={this.componentId} text={this.label} />\n {this.helperMessage &&\n <div\n class={'pds-radio__message'}\n id={messageId(this.componentId, 'helper')}\n >\n {this.helperMessage}\n </div>\n }\n {this.errorMessage &&\n <div\n class={`pds-radio__message pds-radio__message--error`}\n id={messageId(this.componentId, 'error')}\n aria-live=\"assertive\"\n >\n <pds-icon icon={danger} size=\"small\" />\n {this.errorMessage}\n </div>\n }\n </Host>\n );\n }\n}\n"],"mappings":"0PAAA,IAAMA,SAAW,sXACjB,IAAAC,eAAeD,SCDf,IAAME,YAAc,gkGACpB,IAAAC,eAAeD,Y,ICSFE,SAAQ,W,2GA4DXC,KAAAC,kBAAoB,SAACC,GAC3B,GAAIC,EAAKC,SAAU,CACjB,M,CAGF,IAAMC,EAASH,EAAEG,OACjB,IAAMC,EAAYD,EAAOE,QAEzBJ,EAAKK,eAAeC,KAAKH,E,eA/DT,M,yCAWC,M,sEAgBC,M,uDAgBD,M,qBAuBXP,EAAAW,UAAAC,WAAA,WACN,IAAMA,EAAa,GAEnB,GAAIX,KAAKY,QAAS,CAChBD,EAAWE,KAAK,a,CAElB,GAAIb,KAAKI,SAAU,CACjBO,EAAWE,KAAK,c,CAGlB,OAAOF,EAAWG,KAAK,K,EAGzBf,EAAAW,UAAAK,OAAA,WACE,OACEC,EAACC,KAAI,CAAAC,IAAA,2CAACC,MAAOnB,KAAKW,cAChBK,EAAA,SAAAE,IAAA,8DACoBE,kBAAkBpB,KAAKqB,YAAarB,KAAKY,QAASZ,KAAKsB,eAAc,eACzEtB,KAAKY,QAAU,OAASW,UACtCC,KAAK,QACLC,GAAIzB,KAAKqB,YACTK,KAAM1B,KAAK0B,KACXC,MAAO3B,KAAK2B,MACZpB,QAASP,KAAKO,QACdqB,SAAU5B,KAAK4B,SACfxB,SAAUJ,KAAKI,SACfyB,SAAU7B,KAAKC,oBAEjBe,EAACc,SAAQ,CAAAZ,IAAA,2CAACa,QAAS/B,KAAKqB,YAAaW,KAAMhC,KAAKiC,QAC/CjC,KAAKsB,eACJN,EAAA,OAAAE,IAAA,2CACEC,MAAO,qBACPM,GAAIS,UAAUlC,KAAKqB,YAAa,WAE/BrB,KAAKsB,eAGTtB,KAAKmC,cACJnB,EAAA,OAAAE,IAAA,2CACEC,MAAO,+CACPM,GAAIS,UAAUlC,KAAKqB,YAAa,SAAQ,YAC9B,aAEVL,EAAA,YAAAE,IAAA,2CAAUkB,KAAMC,OAAQC,KAAK,UAC5BtC,KAAKmC,c,WAnHG,G","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as registerInstance,c as createEvent,h,H as Host}from"./index-b1696fed.js";import{m as messageId}from"./form-1b7b69e3.js";import{P as PdsLabel}from"./pds-label-949a17b6.js";import{b as danger,e as enlarge}from"./index-d320cfa9.js";var pdsSelectCss=':host{--box-shadow-focus:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);--box-shadow-focus-error:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring-danger)}:host .hidden,:host :host([hidden]){display:none}.pds-select{display:grid;-ms-flex-direction:column;flex-direction:column;grid-template-areas:"label label" "field field" "message message";grid-template-columns:1fr minmax(2rem, -webkit-min-content);grid-template-columns:1fr minmax(2rem, min-content);grid-template-rows:-webkit-min-content -webkit-min-content -webkit-min-content;grid-template-rows:min-content min-content min-content;position:relative;width:100%}label{
|
|
1
|
+
import{r as registerInstance,c as createEvent,h,H as Host}from"./index-b1696fed.js";import{m as messageId}from"./form-1b7b69e3.js";import{P as PdsLabel}from"./pds-label-949a17b6.js";import{b as danger,e as enlarge}from"./index-d320cfa9.js";var pdsSelectTokensCss=":host{--pine-select-color-background-danger:var(--pine-color-red-050)}";var PdsSelectStyle0=pdsSelectTokensCss;var labelCss=":host{display:inline-block}:host([aria-disabled=true]) label{color:var(--pine-color-text-label-disabled)}:host([aria-readonly=true]) label{color:var(--pine-color-text-label-readonly)}label{color:var(--pine-color-text-label);font:var(--pine-typography-body-medium);letter-spacing:var(--pine-letter-spacing)}";var PdsSelectStyle1=labelCss;var pdsSelectCss=':host{--box-shadow-focus:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);--box-shadow-focus-error:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring-danger)}:host .hidden,:host :host([hidden]){display:none}.pds-select{display:grid;-ms-flex-direction:column;flex-direction:column;grid-template-areas:"label label" "field field" "message message";grid-template-columns:1fr minmax(2rem, -webkit-min-content);grid-template-columns:1fr minmax(2rem, min-content);grid-template-rows:-webkit-min-content -webkit-min-content -webkit-min-content;grid-template-rows:min-content min-content min-content;position:relative;width:100%}label{grid-area:label;-webkit-margin-after:var(--pine-dimension-2xs);margin-block-end:var(--pine-dimension-2xs)}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:var(--pine-border);border-radius:10px;font:var(--pine-typography-body);grid-area:field;letter-spacing:var(--pine-letter-spacing);padding:var(--pine-dimension-xs) var(--pine-dimension-150);padding-right:var(--pine-dimension-450);position:relative}select:hover{border-color:var(--pine-color-border-hover);cursor:pointer}select:focus-visible{border-color:var(--pine-color-border-active);-webkit-box-shadow:var(--box-shadow-focus);box-shadow:var(--box-shadow-focus);outline:none}select:disabled{background-color:var(--pine-color-background-container-disabled);border-color:var(--pine-color-border-disabled);color:var(--pine-color-text-disabled);cursor:not-allowed}select:has(~.pds-select__message .pds-select__error-message){background-color:var(--pine-select-color-background-danger);border-color:var(--pine-color-border-danger)}select:has(~.pds-select__message .pds-select__error-message):focus-visible{-webkit-box-shadow:var(--box-shadow-focus-error);box-shadow:var(--box-shadow-focus-error);outline:none}:host(.is-invalid) select{background-color:var(--pine-select-color-background-danger);border-color:var(--pine-color-border-danger)}:host(.is-invalid) select:focus-visible{-webkit-box-shadow:var(--box-shadow-focus-error);box-shadow:var(--box-shadow-focus-error);outline:none}.pds-select__error-message,.pds-select__helper-message{font:var(--pine-typography-body-sm-medium);-webkit-margin-after:0;margin-block-end:0;-webkit-margin-before:var(--pine-dimension-xs);margin-block-start:var(--pine-dimension-xs)}.pds-select__error-message{-ms-flex-align:center;align-items:center;color:var(--pine-color-text-message-danger);display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}.pds-select__message{grid-area:message}.pds-select__select-icon{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;grid-column:-1/-2;grid-row:2/3;height:2.5rem;pointer-events:none;position:relative;z-index:1}';var PdsSelectStyle2=pdsSelectCss;var PdsSelect=function(){function e(e){var s=this;registerInstance(this,e);this.pdsSelectChange=createEvent(this,"pdsSelectChange",7);this.onSelectUpdate=function(e){var r=e.target;var i=Array.from(r.options).filter((function(e){return e.selected})).map((function(e){return e.value}));if(i.length===1&&!s.multiple){s.value=i[0]}else{s.value=i}s.pdsSelectChange.emit(e)};this.handleSlotChange=function(){var e=s.slotContainer.querySelector("slot");s.selectEl.innerHTML="";var r=e.assignedElements({flatten:true});r.forEach((function(e){if(["OPTION","OPTGROUP"].includes(e.tagName)){var r=e.cloneNode(true);if(r.tagName==="OPTION"&&r.value===s.value){r.selected=true}s.selectEl.appendChild(r)}}));s.updateSelectedOption()};this.autocomplete=undefined;this.componentId=undefined;this.disabled=false;this.errorMessage=undefined;this.helperMessage=undefined;this.invalid=undefined;this.label=undefined;this.multiple=false;this.name=undefined;this.required=false;this.value=undefined}e.prototype.valueChanged=function(){this.updateSelectedOption()};e.prototype.componentWillLoad=function(){this.updateSelectedOption()};e.prototype.updateSelectedOption=function(){var e=this;if(this.selectEl){var s=this.selectEl.options;Array.from(s).map((function(s){if(Array.isArray(e.value)){s.selected=e.value.includes(s.value)}else{s.selected=e.value===s.value}}))}};e.prototype.getHelperMessage=function(){return this.helperMessage&&h("p",{class:"pds-select__helper-message",id:messageId(this.componentId,"helper")},this.helperMessage)};e.prototype.getErrorMessage=function(){return this.errorMessage&&h("p",{class:"pds-select__error-message",id:messageId(this.componentId,"error"),"aria-live":"assertive"},h("pds-icon",{icon:danger,size:"small"}),this.errorMessage)};e.prototype.renderMessages=function(){if(!this.helperMessage&&!this.errorMessage)return null;return h("div",{class:"pds-select__message"},this.getHelperMessage(),this.getErrorMessage())};e.prototype.classNames=function(){var e=[];if(this.invalid){e.push("is-invalid")}if(this.disabled){e.push("is-disabled")}return e.join(" ")};e.prototype.render=function(){var e=this;return h(Host,{key:"fe06a18d5fda6211d1152ef4d6788b8d6b1b14e2","aria-disabled":this.disabled?"true":null,class:this.classNames()},h("div",{key:"f4c5487815076ffb36672d46c109a017a9ad00a5",class:"pds-select"},h(PdsLabel,{key:"56057f8450a18d3b89bbf9899dfee07ea4ca7aa0",htmlFor:this.componentId,text:this.label}),h("select",{key:"70324033d55908cc147a9a773c188ee914661be7",autocomplete:this.autocomplete||undefined,class:"pds-select__field",disabled:this.disabled,id:this.componentId,multiple:this.multiple,name:this.name,onChange:this.onSelectUpdate,required:this.required,ref:function(s){return e.selectEl=s}}),h("div",{key:"182f6da416f4135a7fd06577589b0e308f9e84fa","aria-hidden":"true",class:"hidden",ref:function(s){return e.slotContainer=s}},h("slot",{key:"0ad6aaf6901946337999ae53dcd570fa80dad9c6",onSlotchange:this.handleSlotChange})),this.renderMessages(),!this.multiple&&h("pds-icon",{key:"46bfb7782c983bb6b04b1a97ddf3122eca7f62cb",class:"pds-select__select-icon",icon:enlarge})))};Object.defineProperty(e,"watchers",{get:function(){return{value:["valueChanged"]}},enumerable:false,configurable:true});return e}();PdsSelect.style=PdsSelectStyle0+(PdsSelectStyle1+PdsSelectStyle2);export{PdsSelect as pds_select};
|
|
2
2
|
//# sourceMappingURL=pds-select.entry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["pdsSelectCss","PdsSelectStyle0","PdsSelect","this","onSelectUpdate","e","target","values","Array","from","options","filter","option","map","length","_this","multiple","value","pdsSelectChange","emit","handleSlotChange","slot","slotContainer","querySelector","selectEl","innerHTML","assignedElements","flatten","forEach","item","includes","tagName","clonedItem","cloneNode","selected","appendChild","updateSelectedOption","prototype","valueChanged","componentWillLoad","isArray","getHelperMessage","helperMessage","h","class","id","messageId","componentId","getErrorMessage","errorMessage","icon","danger","size","renderMessages","classNames","invalid","push","disabled","join","render","Host","key","PdsLabel","htmlFor","text","label","autocomplete","undefined","name","onChange","required","ref","el","onSlotchange","enlarge"],"sources":["src/components/pds-select/pds-select.scss?tag=pds-select&encapsulation=shadow","src/components/pds-select/pds-select.tsx"],"sourcesContent":[":host {\n --box-shadow-focus: 0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);\n --box-shadow-focus-error: 0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring-danger);\n\n .hidden,\n :host([hidden]) {\n display: none;\n }\n}\n\n.pds-select {\n display: grid;\n flex-direction: column;\n grid-template-areas:\n 'label label'\n 'field field'\n 'message message';\n grid-template-columns: 1fr minmax(2rem, min-content);\n grid-template-rows: min-content min-content min-content;\n position: relative;\n width: 100%;\n}\n\nlabel {\n font: var(--pine-typography-body-medium);\n grid-area: label;\n letter-spacing: var(--pine-letter-spacing);\n margin-block-end: var(--pine-dimension-2xs);\n}\n\nselect {\n appearance: none;\n border: var(--pine-border);\n border-radius: 10px;\n font: var(--pine-typography-body);\n grid-area: field;\n letter-spacing: var(--pine-letter-spacing);\n padding: var(--pine-dimension-xs) var(--pine-dimension-150);\n padding-right: var(--pine-dimension-450);\n position: relative;\n\n &:hover {\n border-color: var(--pine-color-border-hover);\n cursor: pointer;\n }\n\n &:focus-visible {\n border-color: var(--pine-color-border-active);\n box-shadow: var(--box-shadow-focus);\n outline: none;\n }\n\n &:disabled {\n background-color: var(--pine-color-background-container-disabled);\n border-color: var(--pine-color-border-disabled);\n color: var(--pine-color-text-disabled);\n cursor: not-allowed;\n }\n\n &:has(~ .pds-select__message .pds-select__error-message) {\n background-color: var(--pine-color-red-050);\n border-color: var(--pine-color-border-danger);\n\n &:focus-visible {\n box-shadow: var(--box-shadow-focus-error);\n outline: none;\n }\n }\n}\n\n:host(.is-invalid) {\n select {\n background-color: var(--pine-color-red-050);\n border-color: var(--pine-color-border-danger);\n\n &:focus-visible {\n box-shadow: var(--box-shadow-focus-error);\n outline: none;\n }\n }\n}\n\n.pds-select__error-message,\n.pds-select__helper-message {\n font: var(--pine-typography-body-sm-medium);\n margin-block-end: 0;\n margin-block-start: var(--pine-dimension-xs);\n}\n\n.pds-select__error-message {\n align-items: center;\n color: var(--pine-color-text-message-danger);\n display: flex;\n gap: var(--pine-dimension-2xs);\n}\n\n.pds-select__message {\n grid-area: message;\n}\n\n.pds-select__select-icon {\n align-items: center;\n display: flex;\n grid-column: -1 / -2;\n grid-row: 2 / 3;\n height: 2.5rem;\n pointer-events: none;\n position: relative;\n z-index: 1;\n}\n","import { Component, Event, EventEmitter, Host, h, Prop, Watch } from '@stencil/core';\nimport { messageId } from '../../utils/form';\nimport { PdsLabel } from '../_internal/pds-label/pds-label';\nimport { danger, enlarge } from '@pine-ds/icons/icons';\n\n@Component({\n tag: 'pds-select',\n styleUrl: 'pds-select.scss',\n shadow: true,\n})\nexport class PdsSelect {\n\n private selectEl!: HTMLSelectElement;\n private slotContainer!: HTMLDivElement;\n\n /**\n * Specifies if and how the browser provides `autocomplete` assistance for the field.\n */\n @Prop() autocomplete: string;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Indicates whether or not the select field is disabled.\n * @defaultValue false\n */\n @Prop() disabled = false\n\n /**\n * Displays error message text describing an invalid state.\n */\n @Prop() errorMessage: string;\n\n /**\n * Displays helper message text below select.\n */\n @Prop() helperMessage: string;\n\n /**\n * Determines whether or not the select is invalid.\n */\n @Prop() invalid?: boolean;\n\n /**\n * Text to be displayed as the select label.\n */\n @Prop() label: string;\n\n /**\n * Indicates whether multiple options can be selected.\n * @defaultValue false\n */\n @Prop() multiple = false;\n\n /**\n * Specifies the name. Submitted with the form name/value pair.\n */\n @Prop() name!: string;\n\n /**\n * Indicates whether or not the select field is required.\n * @defaultValue false\n */\n @Prop() required = false;\n\n /**\n * The value(s) of the selected option(s).\n *\n */\n @Prop({ mutable: true }) value?: string | string[];\n\n /**\n * Emitted when a keyboard input occurs.\n */\n @Event() pdsSelectChange: EventEmitter<InputEvent>;\n\n @Watch('value')\n /**\n * Handles the change in the value of the select component.\n * This method is called whenever the value of the select component changes.\n * It updates the selected option accordingly.\n */\n valueChanged() {\n this.updateSelectedOption();\n }\n\n componentWillLoad() {\n this.updateSelectedOption();\n }\n\n /**\n * Updates the selected option in the select element based on the current value.\n *\n * This method iterates through all the options of the select element and sets the\n * 'selected' attribute on the option that matches the current value. If an option\n * does not match the current value, the 'selected' attribute is removed.\n *\n * @private\n * @returns {void}\n */\n private updateSelectedOption() {\n if (this.selectEl) {\n const options = this.selectEl.options;\n\n // Update the selected attribute for all options.\n Array.from(options).map((option: HTMLOptionElement) => {\n if (Array.isArray(this.value)) {\n option.selected = this.value.includes(option.value);\n } else {\n option.selected = this.value === option.value;\n }\n });\n };\n }\n\n /**\n * Emits an event on input change.\n */\n private onSelectUpdate = (e: Event) => {\n const target = e.target as HTMLSelectElement\n\n const values = Array.from(target.options)\n .filter((option) => ( option.selected))\n .map((option) => ( option.value));\n\n if (values.length === 1 && !this.multiple) {\n this.value = values[0];\n } else {\n this.value = values;\n }\n\n this.pdsSelectChange.emit(e as InputEvent);\n };\n\n /**\n * Handles the change event for the slot element.\n * This method is triggered when the slot content changes.\n * It updates the inner HTML of the select element by cloning and appending\n * the assigned <option> elements from the slot.\n */\n private handleSlotChange = () => {\n const slot = this.slotContainer.querySelector('slot') as HTMLSlotElement;\n\n this.selectEl.innerHTML = '';\n const assignedElements = slot.assignedElements({ flatten: true }) as (HTMLOptionElement | HTMLOptGroupElement)[];\n\n assignedElements.forEach((item) => {\n if ( ['OPTION', 'OPTGROUP'].includes(item.tagName)) {\n const clonedItem = item.cloneNode(true) as HTMLOptionElement | HTMLOptGroupElement;\n if (clonedItem.tagName === 'OPTION' && (clonedItem as HTMLOptionElement).value === this.value) {\n (clonedItem as HTMLOptionElement).selected = true;\n }\n this.selectEl.appendChild(clonedItem);\n }\n });\n\n this.updateSelectedOption();\n };\n\n private getHelperMessage() {\n return this.helperMessage && (\n <p class=\"pds-select__helper-message\" id={messageId(this.componentId, 'helper')}>\n {this.helperMessage}\n </p>\n );\n }\n\n private getErrorMessage() {\n return this.errorMessage && (\n <p class=\"pds-select__error-message\" id={messageId(this.componentId, 'error')} aria-live=\"assertive\">\n <pds-icon icon={danger} size=\"small\"></pds-icon>\n {this.errorMessage}\n </p>\n );\n }\n\n private renderMessages() {\n if (!this.helperMessage && !this.errorMessage) return null;\n\n return (\n <div class=\"pds-select__message\">\n {this.getHelperMessage()}\n {this.getErrorMessage()}\n </div>\n );\n }\n\n private classNames() {\n const classNames = [];\n\n if (this.invalid) { classNames.push('is-invalid'); }\n if (this.disabled) { classNames.push('is-disabled'); }\n\n return classNames.join(' ');\n }\n\n render() {\n return (\n <Host aria-disabled={this.disabled ? 'true' : null} class={this.classNames()}>\n <div class=\"pds-select\">\n <PdsLabel htmlFor={this.componentId} text={this.label} />\n <select\n autocomplete={this.autocomplete || undefined}\n class=\"pds-select__field\"\n disabled={this.disabled}\n id={this.componentId}\n multiple={this.multiple}\n name={this.name}\n onChange={this.onSelectUpdate}\n required={this.required}\n ref={(el) => (this.selectEl = el as HTMLSelectElement)}\n ></select>\n <div aria-hidden=\"true\" class=\"hidden\" ref={(el) => (this.slotContainer = el)}>\n <slot onSlotchange={this.handleSlotChange}></slot>\n </div>\n {this.renderMessages()}\n {!this.multiple && <pds-icon class=\"pds-select__select-icon\" icon={enlarge} />}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["pdsSelectTokensCss","PdsSelectStyle0","labelCss","PdsSelectStyle1","pdsSelectCss","PdsSelectStyle2","PdsSelect","this","onSelectUpdate","e","target","values","Array","from","options","filter","option","map","length","_this","multiple","value","pdsSelectChange","emit","handleSlotChange","slot","slotContainer","querySelector","selectEl","innerHTML","assignedElements","flatten","forEach","item","includes","tagName","clonedItem","cloneNode","selected","appendChild","updateSelectedOption","prototype","valueChanged","componentWillLoad","isArray","getHelperMessage","helperMessage","h","class","id","messageId","componentId","getErrorMessage","errorMessage","icon","danger","size","renderMessages","classNames","invalid","push","disabled","join","render","Host","key","PdsLabel","htmlFor","text","label","autocomplete","undefined","name","onChange","required","ref","el","onSlotchange","enlarge"],"sources":["src/components/pds-select/pds-select.tokens.scss?tag=pds-select&encapsulation=shadow","src/global/styles/utils/label.scss?tag=pds-select&encapsulation=shadow","src/components/pds-select/pds-select.scss?tag=pds-select&encapsulation=shadow","src/components/pds-select/pds-select.tsx"],"sourcesContent":["/**\n * Do not edit directly, this file was auto-generated.\n */\n\n:host {\n --pine-select-color-background-danger: var(--pine-color-red-050);\n}\n",":host {\n display: inline-block;\n}\n\n:host([aria-disabled=\"true\"]) label {\n color: var(--pine-color-text-label-disabled);\n}\n\n:host([aria-readonly=\"true\"]) {\n label {\n color: var(--pine-color-text-label-readonly);\n }\n}\n\nlabel {\n color: var(--pine-color-text-label);\n font: var(--pine-typography-body-medium);\n letter-spacing: var(--pine-letter-spacing);\n}\n",":host {\n --box-shadow-focus: 0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);\n --box-shadow-focus-error: 0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring-danger);\n\n .hidden,\n :host([hidden]) {\n display: none;\n }\n}\n\n.pds-select {\n display: grid;\n flex-direction: column;\n grid-template-areas:\n 'label label'\n 'field field'\n 'message message';\n grid-template-columns: 1fr minmax(2rem, min-content);\n grid-template-rows: min-content min-content min-content;\n position: relative;\n width: 100%;\n}\n\nlabel {\n grid-area: label;\n margin-block-end: var(--pine-dimension-2xs);\n}\n\nselect {\n appearance: none;\n border: var(--pine-border);\n border-radius: 10px;\n font: var(--pine-typography-body);\n grid-area: field;\n letter-spacing: var(--pine-letter-spacing);\n padding: var(--pine-dimension-xs) var(--pine-dimension-150);\n padding-right: var(--pine-dimension-450);\n position: relative;\n\n &:hover {\n border-color: var(--pine-color-border-hover);\n cursor: pointer;\n }\n\n &:focus-visible {\n border-color: var(--pine-color-border-active);\n box-shadow: var(--box-shadow-focus);\n outline: none;\n }\n\n &:disabled {\n background-color: var(--pine-color-background-container-disabled);\n border-color: var(--pine-color-border-disabled);\n color: var(--pine-color-text-disabled);\n cursor: not-allowed;\n }\n\n &:has(~ .pds-select__message .pds-select__error-message) {\n background-color: var(--pine-select-color-background-danger);\n border-color: var(--pine-color-border-danger);\n\n &:focus-visible {\n box-shadow: var(--box-shadow-focus-error);\n outline: none;\n }\n }\n}\n\n:host(.is-invalid) {\n select {\n background-color: var(--pine-select-color-background-danger);\n border-color: var(--pine-color-border-danger);\n\n &:focus-visible {\n box-shadow: var(--box-shadow-focus-error);\n outline: none;\n }\n }\n}\n\n.pds-select__error-message,\n.pds-select__helper-message {\n font: var(--pine-typography-body-sm-medium);\n margin-block-end: 0;\n margin-block-start: var(--pine-dimension-xs);\n}\n\n.pds-select__error-message {\n align-items: center;\n color: var(--pine-color-text-message-danger);\n display: flex;\n gap: var(--pine-dimension-2xs);\n}\n\n.pds-select__message {\n grid-area: message;\n}\n\n.pds-select__select-icon {\n align-items: center;\n display: flex;\n grid-column: -1 / -2;\n grid-row: 2 / 3;\n height: 2.5rem;\n pointer-events: none;\n position: relative;\n z-index: 1;\n}\n","import { Component, Event, EventEmitter, Host, h, Prop, Watch } from '@stencil/core';\nimport { messageId } from '../../utils/form';\nimport { PdsLabel } from '../_internal/pds-label/pds-label';\nimport { danger, enlarge } from '@pine-ds/icons/icons';\n\n@Component({\n tag: 'pds-select',\n styleUrls: ['pds-select.tokens.scss', '../../global/styles/utils/label.scss', 'pds-select.scss'],\n shadow: true,\n})\nexport class PdsSelect {\n\n private selectEl!: HTMLSelectElement;\n private slotContainer!: HTMLDivElement;\n\n /**\n * Specifies if and how the browser provides `autocomplete` assistance for the field.\n */\n @Prop() autocomplete: string;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Indicates whether or not the select field is disabled.\n * @defaultValue false\n */\n @Prop() disabled = false\n\n /**\n * Displays error message text describing an invalid state.\n */\n @Prop() errorMessage: string;\n\n /**\n * Displays helper message text below select.\n */\n @Prop() helperMessage: string;\n\n /**\n * Determines whether or not the select is invalid.\n */\n @Prop() invalid?: boolean;\n\n /**\n * Text to be displayed as the select label.\n */\n @Prop() label: string;\n\n /**\n * Indicates whether multiple options can be selected.\n * @defaultValue false\n */\n @Prop() multiple = false;\n\n /**\n * Specifies the name. Submitted with the form name/value pair.\n */\n @Prop() name!: string;\n\n /**\n * Indicates whether or not the select field is required.\n * @defaultValue false\n */\n @Prop() required = false;\n\n /**\n * The value(s) of the selected option(s).\n *\n */\n @Prop({ mutable: true }) value?: string | string[];\n\n /**\n * Emitted when a keyboard input occurs.\n */\n @Event() pdsSelectChange: EventEmitter<InputEvent>;\n\n @Watch('value')\n /**\n * Handles the change in the value of the select component.\n * This method is called whenever the value of the select component changes.\n * It updates the selected option accordingly.\n */\n valueChanged() {\n this.updateSelectedOption();\n }\n\n componentWillLoad() {\n this.updateSelectedOption();\n }\n\n /**\n * Updates the selected option in the select element based on the current value.\n *\n * This method iterates through all the options of the select element and sets the\n * 'selected' attribute on the option that matches the current value. If an option\n * does not match the current value, the 'selected' attribute is removed.\n *\n * @private\n * @returns {void}\n */\n private updateSelectedOption() {\n if (this.selectEl) {\n const options = this.selectEl.options;\n\n // Update the selected attribute for all options.\n Array.from(options).map((option: HTMLOptionElement) => {\n if (Array.isArray(this.value)) {\n option.selected = this.value.includes(option.value);\n } else {\n option.selected = this.value === option.value;\n }\n });\n };\n }\n\n /**\n * Emits an event on input change.\n */\n private onSelectUpdate = (e: Event) => {\n const target = e.target as HTMLSelectElement\n\n const values = Array.from(target.options)\n .filter((option) => ( option.selected))\n .map((option) => ( option.value));\n\n if (values.length === 1 && !this.multiple) {\n this.value = values[0];\n } else {\n this.value = values;\n }\n\n this.pdsSelectChange.emit(e as InputEvent);\n };\n\n /**\n * Handles the change event for the slot element.\n * This method is triggered when the slot content changes.\n * It updates the inner HTML of the select element by cloning and appending\n * the assigned <option> elements from the slot.\n */\n private handleSlotChange = () => {\n const slot = this.slotContainer.querySelector('slot') as HTMLSlotElement;\n\n this.selectEl.innerHTML = '';\n const assignedElements = slot.assignedElements({ flatten: true }) as (HTMLOptionElement | HTMLOptGroupElement)[];\n\n assignedElements.forEach((item) => {\n if ( ['OPTION', 'OPTGROUP'].includes(item.tagName)) {\n const clonedItem = item.cloneNode(true) as HTMLOptionElement | HTMLOptGroupElement;\n if (clonedItem.tagName === 'OPTION' && (clonedItem as HTMLOptionElement).value === this.value) {\n (clonedItem as HTMLOptionElement).selected = true;\n }\n this.selectEl.appendChild(clonedItem);\n }\n });\n\n this.updateSelectedOption();\n };\n\n private getHelperMessage() {\n return this.helperMessage && (\n <p class=\"pds-select__helper-message\" id={messageId(this.componentId, 'helper')}>\n {this.helperMessage}\n </p>\n );\n }\n\n private getErrorMessage() {\n return this.errorMessage && (\n <p class=\"pds-select__error-message\" id={messageId(this.componentId, 'error')} aria-live=\"assertive\">\n <pds-icon icon={danger} size=\"small\"></pds-icon>\n {this.errorMessage}\n </p>\n );\n }\n\n private renderMessages() {\n if (!this.helperMessage && !this.errorMessage) return null;\n\n return (\n <div class=\"pds-select__message\">\n {this.getHelperMessage()}\n {this.getErrorMessage()}\n </div>\n );\n }\n\n private classNames() {\n const classNames = [];\n\n if (this.invalid) { classNames.push('is-invalid'); }\n if (this.disabled) { classNames.push('is-disabled'); }\n\n return classNames.join(' ');\n }\n\n render() {\n return (\n <Host aria-disabled={this.disabled ? 'true' : null} class={this.classNames()}>\n <div class=\"pds-select\">\n <PdsLabel htmlFor={this.componentId} text={this.label} />\n <select\n autocomplete={this.autocomplete || undefined}\n class=\"pds-select__field\"\n disabled={this.disabled}\n id={this.componentId}\n multiple={this.multiple}\n name={this.name}\n onChange={this.onSelectUpdate}\n required={this.required}\n ref={(el) => (this.selectEl = el as HTMLSelectElement)}\n ></select>\n <div aria-hidden=\"true\" class=\"hidden\" ref={(el) => (this.slotContainer = el)}>\n <slot onSlotchange={this.handleSlotChange}></slot>\n </div>\n {this.renderMessages()}\n {!this.multiple && <pds-icon class=\"pds-select__select-icon\" icon={enlarge} />}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as registerInstance,c as createEvent,h,H as Host,g as getElement}from"./index-b1696fed.js";import{m as messageId,a as assignDescription}from"./form-1b7b69e3.js";import{P as PdsLabel}from"./pds-label-949a17b6.js";import{b as danger}from"./index-d320cfa9.js";var pdsSwitchCss=':host{--box-shadow-focus:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);--box-shadow-focus-error:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring-danger);--sizing-input-toggle-size:calc(var(--pine-dimension-250) - (var(--pine-dimension-025) * 2));--pine-dimension-025:2px;--spacing-message-inline:calc(var(--pine-dimension-450) + var(--pine-dimension-150));--number-transition-timing:0.15s ease-out;-ms-flex-align:start;align-items:flex-start;color:var(--pine-color-text);display:-ms-inline-flexbox;display:inline-flex;-ms-flex-flow:row wrap;flex-flow:row wrap;position:relative}:host(.pds-switch--error){color:var(--pine-color-text-message-danger)}:host(.pds-switch--error) input,:host(.pds-switch--error) input:checked,:host(.pds-switch--error) input:hover:not(:disabled):not(:checked){background-color:var(--pine-color-danger)}:host(.pds-switch--error) input:focus-visible:not(:disabled):not(:checked){-webkit-box-shadow:var(--box-shadow-focus-error);box-shadow:var(--box-shadow-focus-error)}:host(.pds-switch--error) label{color:var(--color-text-error)}input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--pine-color-neutral);border:0;border-radius:var(--pine-dimension-sm);cursor:pointer;display:inline-block;height:var(--pine-dimension-250);margin:0;padding:0;position:relative;-webkit-transition:var(--number-transition-timing);transition:var(--number-transition-timing);-webkit-transition-property:background, border, color;transition-property:background, border, color;width:var(--pine-dimension-450)}input::after{background:var(--pine-color-secondary);border-radius:var(--pine-border-radius-full);-webkit-box-shadow:var(--pine-box-shadow);box-shadow:var(--pine-box-shadow);content:"";display:block;height:var(--sizing-input-toggle-size);inset-block-start:50%;inset-inline-start:50%;position:absolute;-webkit-transform:translate3d(-100%, -50%, 0);transform:translate3d(-100%, -50%, 0);-webkit-transition:-webkit-transform var(--number-transition-timing);transition:-webkit-transform var(--number-transition-timing);transition:transform var(--number-transition-timing);transition:transform var(--number-transition-timing), -webkit-transform var(--number-transition-timing);width:var(--sizing-input-toggle-size)}label{cursor:pointer;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-positive:1;flex-grow:1
|
|
1
|
+
import{r as registerInstance,c as createEvent,h,H as Host,g as getElement}from"./index-b1696fed.js";import{m as messageId,a as assignDescription}from"./form-1b7b69e3.js";import{P as PdsLabel}from"./pds-label-949a17b6.js";import{b as danger}from"./index-d320cfa9.js";var labelCss=":host{display:inline-block}:host([aria-disabled=true]) label{color:var(--pine-color-text-label-disabled)}:host([aria-readonly=true]) label{color:var(--pine-color-text-label-readonly)}label{color:var(--pine-color-text-label);font:var(--pine-typography-body-medium);letter-spacing:var(--pine-letter-spacing)}";var PdsSwitchStyle0=labelCss;var pdsSwitchCss=':host{--box-shadow-focus:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);--box-shadow-focus-error:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring-danger);--sizing-input-toggle-size:calc(var(--pine-dimension-250) - (var(--pine-dimension-025) * 2));--pine-dimension-025:2px;--spacing-message-inline:calc(var(--pine-dimension-450) + var(--pine-dimension-150));--number-transition-timing:0.15s ease-out;-ms-flex-align:start;align-items:flex-start;color:var(--pine-color-text);display:-ms-inline-flexbox;display:inline-flex;-ms-flex-flow:row wrap;flex-flow:row wrap;position:relative}:host(.pds-switch--error){color:var(--pine-color-text-message-danger)}:host(.pds-switch--error) input,:host(.pds-switch--error) input:checked,:host(.pds-switch--error) input:hover:not(:disabled):not(:checked){background-color:var(--pine-color-danger)}:host(.pds-switch--error) input:focus-visible:not(:disabled):not(:checked){-webkit-box-shadow:var(--box-shadow-focus-error);box-shadow:var(--box-shadow-focus-error)}:host(.pds-switch--error) label{color:var(--color-text-error)}input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--pine-color-neutral);border:0;border-radius:var(--pine-dimension-sm);cursor:pointer;display:inline-block;height:var(--pine-dimension-250);margin:0;padding:0;position:relative;-webkit-transition:var(--number-transition-timing);transition:var(--number-transition-timing);-webkit-transition-property:background, border, color;transition-property:background, border, color;width:var(--pine-dimension-450)}input::after{background:var(--pine-color-secondary);border-radius:var(--pine-border-radius-full);-webkit-box-shadow:var(--pine-box-shadow);box-shadow:var(--pine-box-shadow);content:"";display:block;height:var(--sizing-input-toggle-size);inset-block-start:50%;inset-inline-start:50%;position:absolute;-webkit-transform:translate3d(-100%, -50%, 0);transform:translate3d(-100%, -50%, 0);-webkit-transition:-webkit-transform var(--number-transition-timing);transition:-webkit-transform var(--number-transition-timing);transition:transform var(--number-transition-timing);transition:transform var(--number-transition-timing), -webkit-transform var(--number-transition-timing);width:var(--sizing-input-toggle-size)}label{cursor:pointer;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-positive:1;flex-grow:1;-webkit-margin-start:var(--pine-dimension-150);margin-inline-start:var(--pine-dimension-150)}.pds-switch--error label{color:inherit}.pds-switch__message{color:var(--pine-color-text-message);-ms-flex:1 0 100%;flex:1 0 100%;font:var(--pine-typography-body-sm-medium);-webkit-margin-before:var(--pine-dimension-xs);margin-block-start:var(--pine-dimension-xs);-webkit-margin-start:var(--pine-dimension-2xl);margin-inline-start:var(--pine-dimension-2xl)}.pds-switch__message+.pds-switch__message{-webkit-margin-before:var(--pine-dimension-2xs);margin-block-start:var(--pine-dimension-2xs)}.pds-switch__message--error{-ms-flex-align:center;align-items:center;color:inherit;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}input:disabled{background-color:var(--pine-color-neutral-disabled);cursor:not-allowed}input:disabled~label{cursor:initial}input:disabled:hover::after{background-color:var(--pine-color-background-container-disabled)}input:disabled .pds-switch__message{color:initial}input:hover:not(:disabled){background-color:var(--pine-color-neutral-hover)}input:focus-visible:not(:disabled){-webkit-box-shadow:var(--box-shadow-focus);box-shadow:var(--box-shadow-focus);outline:none}input:checked::after{-webkit-transform:translate3d(0, -50%, 0);transform:translate3d(0, -50%, 0)}input:checked:not(:disabled){background-color:currentColor;color:var(--pine-color-accent)}input:checked:not(:disabled):hover{border-color:currentColor;color:var(--pine-color-accent-hover)}';var PdsSwitchStyle1=pdsSwitchCss;var PdsSwitch=function(){function e(e){var i=this;registerInstance(this,e);this.pdsSwitchChange=createEvent(this,"pdsSwitchChange",7);this.onSwitchUpdate=function(e){if(i.disabled)return;var r=e.target;i.checked=r.checked;i.pdsSwitchChange.emit(e)};this.switchClassNames=function(){var e="pds-switch";if(i.invalid===true){e+=" pds-switch--error"}if(i.helperMessage!==undefined){e+=" pds-switch--message"}return e};this.componentId=undefined;this.checked=false;this.disabled=false;this.errorMessage=undefined;this.helperMessage=undefined;this.invalid=false;this.label=undefined;this.name=undefined;this.required=false;this.value=undefined}e.prototype.render=function(){return h(Host,{key:"4794cfb6b1813c83e1963f9568dfe7300570cf3e",class:this.switchClassNames(),"aria-disabled":this.disabled?"true":null},h("input",{key:"ead450b26ca113222605b1142b9d4874d1f1bc41","aria-describedby":assignDescription(this.componentId,this.invalid,this.helperMessage),"aria-invalid":this.invalid?"true":undefined,checked:this.checked,class:"pds-switch__input",disabled:this.disabled,id:this.componentId,name:this.name?this.name:this.componentId,onChange:this.onSwitchUpdate,required:this.required,type:"checkbox",value:this.value}),h(PdsLabel,{key:"fc8c35d07b85386b43cf190b1153f1f753a2f69f",classNames:"pds-switch__label",htmlFor:this.componentId,text:this.label}),this.helperMessage&&h("div",{key:"bafde5edb9fc9bb9b745d76f944a7a729e0defa4",class:"pds-switch__message",id:messageId(this.componentId,"helper")},this.helperMessage),this.errorMessage&&h("div",{key:"5ad800e3fed41892904601b143379567111591d7",class:"pds-switch__message pds-switch__message--error",id:messageId(this.componentId,"error"),"aria-live":"assertive"},h("pds-icon",{key:"f6ae6d4ecb91b3c81d1a14ebe85e47751f9bc417",icon:danger,size:"small"}),this.errorMessage))};Object.defineProperty(e.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});return e}();PdsSwitch.style=PdsSwitchStyle0+PdsSwitchStyle1;export{PdsSwitch as pds_switch};
|
|
2
2
|
//# sourceMappingURL=pds-switch.entry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["labelCss","PdsSwitchStyle0","pdsSwitchCss","PdsSwitchStyle1","PdsSwitch","this","onSwitchUpdate","e","_this","disabled","input","target","checked","pdsSwitchChange","emit","switchClassNames","switchClasses","invalid","helperMessage","undefined","prototype","render","h","Host","key","class","assignDescription","componentId","id","name","onChange","required","type","value","PdsLabel","classNames","htmlFor","text","label","messageId","errorMessage","icon","danger","size"],"sources":["src/global/styles/utils/label.scss?tag=pds-switch&encapsulation=shadow","src/components/pds-switch/pds-switch.scss?tag=pds-switch&encapsulation=shadow","src/components/pds-switch/pds-switch.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n:host([aria-disabled=\"true\"]) label {\n color: var(--pine-color-text-label-disabled);\n}\n\n:host([aria-readonly=\"true\"]) {\n label {\n color: var(--pine-color-text-label-readonly);\n }\n}\n\nlabel {\n color: var(--pine-color-text-label);\n font: var(--pine-typography-body-medium);\n letter-spacing: var(--pine-letter-spacing);\n}\n",":host {\n\n --box-shadow-focus: 0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);\n --box-shadow-focus-error: 0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring-danger);\n\n // Need discussions\n --sizing-input-toggle-size: calc(var(--pine-dimension-250) - (var(--pine-dimension-025) * 2));\n --pine-dimension-025: 2px;\n --spacing-message-inline: calc(var(--pine-dimension-450) + var(--pine-dimension-150));\n --number-transition-timing: 0.15s ease-out;\n\n align-items: flex-start;\n color: var(--pine-color-text);\n display: inline-flex;\n flex-flow: row wrap;\n position: relative;\n}\n\n:host(.pds-switch--error) {\n color: var(--pine-color-text-message-danger);\n\n input,\n input:checked,\n input:hover:not(:disabled):not(:checked) {\n background-color: var(--pine-color-danger);\n }\n\n input:focus-visible:not(:disabled):not(:checked) {\n box-shadow: var(--box-shadow-focus-error);\n }\n\n label {\n color: var(--color-text-error);\n }\n}\n\n// switch container\ninput {\n appearance: none;\n background: var(--pine-color-neutral);\n border: 0;\n border-radius: var(--pine-dimension-sm);\n cursor: pointer;\n display: inline-block;\n height: var(--pine-dimension-250);\n margin: 0;\n padding: 0;\n position: relative;\n transition: var(--number-transition-timing);\n transition-property: background, border, color;\n width: var(--pine-dimension-450);\n\n // switch toggle\n &::after {\n background: var(--pine-color-secondary);\n border-radius: var(--pine-border-radius-full);\n box-shadow: var(--pine-box-shadow);\n content: \"\";\n display: block;\n height: var(--sizing-input-toggle-size);\n inset-block-start: 50%;\n inset-inline-start: 50%;\n position: absolute;\n transform: translate3d(-100%, -50%, 0);\n transition: transform var(--number-transition-timing);\n width: var(--sizing-input-toggle-size);\n }\n}\n\nlabel {\n cursor: pointer;\n display: inline-flex;\n flex-grow: 1;\n margin-inline-start: var(--pine-dimension-150);\n\n .pds-switch--error & {\n color: inherit;\n }\n}\n\n// Help and error messages\n.pds-switch__message {\n color: var(--pine-color-text-message);\n flex: 1 0 100%;\n font: var(--pine-typography-body-sm-medium);\n margin-block-start: var(--pine-dimension-xs);\n margin-inline-start: var(--pine-dimension-2xl);\n\n + .pds-switch__message {\n margin-block-start: var(--pine-dimension-2xs);\n }\n}\n\n.pds-switch__message--error {\n align-items: center;\n color: inherit;\n display: flex;\n gap: var(--pine-dimension-2xs);\n}\n\n// Disabled state\ninput:disabled {\n background-color: var(--pine-color-neutral-disabled);\n cursor: not-allowed;\n\n ~ label {\n cursor: initial;\n }\n\n &:hover::after {\n background-color: var(--pine-color-background-container-disabled);\n }\n\n .pds-switch__message {\n color: initial;\n }\n}\n\n// Hover state\ninput:hover:not(:disabled) {\n background-color: var(--pine-color-neutral-hover);\n}\n\n // Focus state\ninput:focus-visible:not(:disabled) {\n box-shadow: var(--box-shadow-focus);\n outline: none;\n}\n\n// 'Checked' state\n// switch toggle\ninput:checked::after {\n transform: translate3d(0, -50%, 0);\n}\n\n// switch container\ninput:checked:not(:disabled) {\n background-color: currentColor;\n color: var(--pine-color-accent);\n\n &:hover {\n border-color: currentColor;\n color: var(--pine-color-accent-hover);\n }\n}\n","import { Component, Element, Event, EventEmitter, Host, h, Prop } from '@stencil/core';\nimport { assignDescription, messageId } from '../../utils/form';\nimport { PdsLabel } from '../_internal/pds-label/pds-label';\nimport { danger } from '@pine-ds/icons/icons';\n\n@Component({\n tag: 'pds-switch',\n styleUrls: ['../../global/styles/utils/label.scss', 'pds-switch.scss'],\n shadow: true,\n})\nexport class PdsSwitch {\n @Element() el: HTMLPdsSwitchElement;\n\n /**\n * A unique identifier used for the underlying component `id` attribute and the label `for` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Determines the input 'checked' state.\n */\n @Prop({ mutable: true }) checked = false;\n\n /**\n * Determines the input 'disabled' state, preventing user interaction.\n */\n @Prop() disabled? = false;\n\n /**\n * Displays message text describing an invalid state.\n */\n @Prop() errorMessage?: string;\n\n /**\n * Displays help text for additional description of an input.\n */\n @Prop() helperMessage: string;\n\n /**\n * Determines the input 'invalid' state, signifying an error is present.\n */\n @Prop() invalid? = false;\n\n /**\n * Displays text to describe the input.\n */\n @Prop() label!: string;\n\n /**\n * Identifies form data and unifies a group of radio inputs for toggling a single property/value.\n */\n @Prop() name: string;\n\n /**\n * Determines the 'required' state of the input.\n */\n @Prop() required? = false;\n\n /**\n * Provides input with a string submitted in form data.\n */\n @Prop() value: string;\n\n /**\n * Emits an event on input change.\n */\n @Event() pdsSwitchChange: EventEmitter<InputEvent>;\n\n private onSwitchUpdate = (e: Event) => {\n if (this.disabled) return;\n\n const input = e.target as HTMLInputElement;\n this.checked = input.checked;\n this.pdsSwitchChange.emit(e as InputEvent);\n };\n\n private switchClassNames = () => {\n let switchClasses = `pds-switch`;\n\n if (this.invalid === true) {\n switchClasses += \" pds-switch--error\";\n }\n if (this.helperMessage !== undefined) {\n switchClasses += \" pds-switch--message\";\n }\n return switchClasses;\n };\n\n render() {\n return (\n <Host class={this.switchClassNames()} aria-disabled={this.disabled ? 'true' : null}>\n <input\n aria-describedby={assignDescription(this.componentId, this.invalid, this.helperMessage)}\n aria-invalid={this.invalid ? \"true\" : undefined}\n checked={this.checked}\n class=\"pds-switch__input\"\n disabled={this.disabled}\n id={this.componentId}\n name={this.name ? this.name : this.componentId}\n onChange={this.onSwitchUpdate}\n required={this.required}\n type=\"checkbox\"\n value={this.value}\n />\n <PdsLabel classNames=\"pds-switch__label\" htmlFor={this.componentId} text={this.label} />\n {this.helperMessage &&\n <div\n class={`pds-switch__message`}\n id={messageId(this.componentId, 'helper')}\n >\n {this.helperMessage}\n </div>\n }\n {this.errorMessage &&\n <div\n class={`pds-switch__message pds-switch__message--error`}\n id={messageId(this.componentId, 'error')}\n aria-live=\"assertive\"\n >\n <pds-icon icon={danger} size=\"small\" />\n {this.errorMessage}\n </div>\n }\n </Host>\n );\n }\n}\n"],"mappings":"0QAAA,IAAMA,SAAW,qTACjB,IAAAC,gBAAeD,SCDf,IAAME,aAAe,8wHACrB,IAAAC,gBAAeD,a,ICSFE,UAAS,W,6GA0DZC,KAAAC,eAAiB,SAACC,GACxB,GAAIC,EAAKC,SAAU,OAEnB,IAAMC,EAAQH,EAAEI,OAChBH,EAAKI,QAAUF,EAAME,QACrBJ,EAAKK,gBAAgBC,KAAKP,E,EAGpBF,KAAAU,iBAAmB,WACzB,IAAIC,EAAgB,aAEpB,GAAIR,EAAKS,UAAY,KAAM,CACzBD,GAAiB,oB,CAEnB,GAAIR,EAAKU,gBAAkBC,UAAW,CACpCH,GAAiB,sB,CAEnB,OAAOA,C,0CAhE0B,M,cAKf,M,sEAeD,M,uDAeC,M,qBAgCpBZ,EAAAgB,UAAAC,OAAA,WACE,OACEC,EAACC,KAAI,CAAAC,IAAA,2CAACC,MAAOpB,KAAKU,mBAAkB,gBAAiBV,KAAKI,SAAW,OAAS,MAC5Ea,EAAA,SAAAE,IAAA,8DACoBE,kBAAkBrB,KAAKsB,YAAatB,KAAKY,QAASZ,KAAKa,eAAc,eACzEb,KAAKY,QAAU,OAASE,UACtCP,QAASP,KAAKO,QACda,MAAM,oBACNhB,SAAUJ,KAAKI,SACfmB,GAAIvB,KAAKsB,YACTE,KAAMxB,KAAKwB,KAAOxB,KAAKwB,KAAOxB,KAAKsB,YACnCG,SAAUzB,KAAKC,eACfyB,SAAU1B,KAAK0B,SACfC,KAAK,WACLC,MAAO5B,KAAK4B,QAEdX,EAACY,SAAQ,CAAAV,IAAA,2CAACW,WAAW,oBAAoBC,QAAS/B,KAAKsB,YAAaU,KAAMhC,KAAKiC,QAC9EjC,KAAKa,eACJI,EAAA,OAAAE,IAAA,2CACEC,MAAO,sBACPG,GAAIW,UAAUlC,KAAKsB,YAAa,WAE/BtB,KAAKa,eAGTb,KAAKmC,cACJlB,EAAA,OAAAE,IAAA,2CACEC,MAAO,iDACPG,GAAIW,UAAUlC,KAAKsB,YAAa,SAAQ,YAC9B,aAEVL,EAAA,YAAAE,IAAA,2CAAUiB,KAAMC,OAAQC,KAAK,UAC5BtC,KAAKmC,c,gIA9GI,G","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as registerInstance,c as createEvent,h,H as Host,g as getElement}from"./index-b1696fed.js";var pdsTabCss='pds-tab{--box-shadow-focus:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);--outline:4px solid var(--pine-color-focus-ring);display:inline-
|
|
1
|
+
import{r as registerInstance,c as createEvent,h,H as Host,g as getElement}from"./index-b1696fed.js";var pdsTabCss='pds-tab{--box-shadow-focus:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);--outline:4px solid var(--pine-color-focus-ring);-ms-flex-align:center;align-items:center;display:-ms-inline-flexbox;display:inline-flex;position:relative}.pds-tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:var(--pine-dimension-none);-webkit-box-shadow:none;box-shadow:none;color:inherit;cursor:pointer;font-family:inherit;padding:var(--pine-dimension-none);-ms-flex-align:center;align-items:center;color:var(--pine-color-text-secondary);display:-ms-inline-flexbox;display:inline-flex;position:relative;text-decoration:none;white-space:nowrap}.pds-tab.is-active,.pds-tab[aria-selected=true]{color:var(--pine-color-text)}.pds-tab.is-active .pds-tab__content::after,.pds-tab[aria-selected=true] .pds-tab__content::after{opacity:1}.pds-tab:hover{color:var(--pine-color-text)}.pds-tab:focus-visible{-webkit-box-shadow:var(--box-shadow-focus);box-shadow:var(--box-shadow-focus);outline:none}.pds-tab .pds-tab__content{font-family:var(--pine-font-family-body);font-size:var(--pine-font-size);font-weight:var(--pine-font-weight-medium);letter-spacing:var(--pine-letter-spacing);line-height:var(--pine-line-height-body);-webkit-padding-after:11px;padding-block-end:11px;position:relative}.pds-tab .pds-tab__content::after{background-color:var(--pine-color-brand);bottom:0;content:"";height:3px;left:0;opacity:0;position:absolute;right:0}.pds-tab .pds-tab-edge{display:none}.pds-tabs--availability{--color-background-tab:transparent}.pds-tabs--availability .pds-tab{background-color:var(--color-background-tab);border-radius:calc(var(--pine-dimension-xs) * 1.25) calc(var(--pine-dimension-xs) * 1.25) var(--pine-dimension-none) var(--pine-dimension-none);padding:8px 16px 13px}.pds-tabs--availability .pds-tab.is-active,.pds-tabs--availability .pds-tab[aria-selected=true]{--color-background-tab:var(--pine-color-secondary)}.pds-tabs--availability .pds-tab.is-active .pds-tab__content::after,.pds-tabs--availability .pds-tab[aria-selected=true] .pds-tab__content::after{opacity:1}.pds-tabs--availability .pds-tab.is-active .pds-tab-edge,.pds-tabs--availability .pds-tab[aria-selected=true] .pds-tab-edge{z-index:1}.pds-tabs--availability .pds-tab:hover:not(.is-active,[aria-selected=true]){--color-background-tab:var(--pine-color-secondary-hover)}.pds-tabs--availability .pds-tab:focus-visible{color:var(--pine-color-text-secondary)}.pds-tabs--availability .pds-tab__content{padding-bottom:7px}.pds-tabs--availability .pds-tab-edge{bottom:0;display:block;height:8px;inset-inline-end:100%;overflow:hidden;position:absolute;width:8px}.pds-tabs--availability .pds-tab-edge::before{border-radius:50%;bottom:0;-webkit-box-shadow:4px 4px 0 0 var(--color-background-tab);box-shadow:4px 4px 0 0 var(--color-background-tab);content:"";display:block;height:200%;inset-inline-end:0;position:absolute;width:200%}.pds-tabs--availability .pds-tab-edge--end{inset-inline-end:unset;inset-inline-start:100%}.pds-tabs--availability .pds-tab-edge--end::before{-webkit-box-shadow:-4px 4px 0 0 var(--color-background-tab);box-shadow:-4px 4px 0 0 var(--color-background-tab);inset-inline-end:unset;inset-inline-start:0}.pds-tabs--filter{--color-background-tab:var(--pine-color-background-container)}.pds-tabs--filter .pds-tab{background-color:var(--color-background-tab);border-radius:50px;color:var(--pine-color-text);padding:6px 15px}.pds-tabs--filter .pds-tab.is-active,.pds-tabs--filter .pds-tab[aria-selected=true]{--color-background-tab:var(--pine-color-primary);color:var(--pine-color-text-primary)}.pds-tabs--filter .pds-tab:hover:not(.is-active,[aria-selected=true]){--color-background-tab:var(--pine-color-background-container-hover)}.pds-tabs--filter .pds-tab__content{-webkit-padding-after:var(--pine-dimension-none);padding-block-end:var(--pine-dimension-none)}.pds-tabs--filter .pds-tab__content::after{content:unset}.pds-tabs--pill{--color-background-tab:transparent}.pds-tabs--pill .pds-tab{background-color:var(--color-background-tab);border:var(--pine-border-width-thin) solid transparent;border-radius:var(--pine-dimension-xs);color:var(--color-text-default);height:34px}.pds-tabs--pill .pds-tab .pds-tab__content{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;min-width:90px;-webkit-padding-after:0;padding-block-end:0}.pds-tabs--pill .pds-tab.is-active,.pds-tabs--pill .pds-tab[aria-selected=true]{--color-background-tab:var(--pine-color-white);border-color:var(--pine-color-border);-webkit-box-shadow:var(--pine-box-shadow-100);box-shadow:var(--pine-box-shadow-100);z-index:1;}.pds-tabs--pill .pds-tab.is-active:focus-visible,.pds-tabs--pill .pds-tab[aria-selected=true]:focus-visible{--box-shadow-focus:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-purple-300);border-color:var(--color-border-focus);-webkit-box-shadow:var(--box-shadow-focus);box-shadow:var(--box-shadow-focus);outline:none}.pds-tabs--pill .pds-tab.is-active .pds-tab__content::after,.pds-tabs--pill .pds-tab[aria-selected=true] .pds-tab__content::after{opacity:0}';var PdsTabStyle0=pdsTabCss;var PdsTab=function(){function a(a){registerInstance(this,a);this.pdsTabClick=createEvent(this,"pdsTabClick",7);this.name=undefined;this.parentComponentId=undefined;this.variant=undefined;this.index=undefined;this.selected=false}a.prototype.onTabClick=function(a,e){this.pdsTabClick.emit([a,e])};a.prototype.render=function(){var a=h("span",{key:"d98a922aaa1b9a6023830badc391c3d1d615ec6a",class:"pds-tab-edge",role:"presentation"});var e=h("span",{key:"390da28bb3fd9ab1fa2fddda45569e92d4547fa3",class:"pds-tab-edge pds-tab-edge--end",role:"presentation"});return h(Host,{key:"5996673486d4bd95f98a691b155529a60655e92f",variant:this.variant,slot:"tabs",index:this.index},h("button",{key:"6eded79f9d5aa9093080933aa9aaa2ad88440759",role:"tab",id:this.parentComponentId+"__"+this.name,"aria-controls":this.parentComponentId+"__"+this.name+"-panel",tabindex:this.selected?"0":"-1","aria-selected":this.selected?"true":"false",class:this.selected?"pds-tab is-active":"pds-tab",onClick:this.onTabClick.bind(this,this.index,this.parentComponentId)},this.variant==="availability"&&a,this.variant==="availability"&&e,h("div",{key:"9f8927d976b6964c22414e9fbb8680b9132370fa",class:"pds-tab__content"},h("slot",{key:"691c6cf5e42bc42c6492276fd5905733c424921c"}))))};Object.defineProperty(a.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});return a}();PdsTab.style=PdsTabStyle0;export{PdsTab as pds_tab};
|
|
2
2
|
//# sourceMappingURL=pds-tab.entry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["pdsTabCss","PdsTabStyle0","PdsTab","prototype","onTabClick","index","parentComponentId","this","pdsTabClick","emit","render","availabilityTabEdgeInlineStart","h","key","class","role","availabilityTabEdgeInlineEnd","Host","variant","slot","id","name","tabindex","selected","onClick","bind"],"sources":["src/components/pds-tabs/pds-tab/pds-tab.scss?tag=pds-tab","src/components/pds-tabs/pds-tab/pds-tab.tsx"],"sourcesContent":["pds-tab {\n\n --box-shadow-focus: 0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);\n\n --outline: 4px solid var(--pine-color-focus-ring);\n\n display: inline-
|
|
1
|
+
{"version":3,"names":["pdsTabCss","PdsTabStyle0","PdsTab","prototype","onTabClick","index","parentComponentId","this","pdsTabClick","emit","render","availabilityTabEdgeInlineStart","h","key","class","role","availabilityTabEdgeInlineEnd","Host","variant","slot","id","name","tabindex","selected","onClick","bind"],"sources":["src/components/pds-tabs/pds-tab/pds-tab.scss?tag=pds-tab","src/components/pds-tabs/pds-tab/pds-tab.tsx"],"sourcesContent":["pds-tab {\n\n --box-shadow-focus: 0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);\n\n --outline: 4px solid var(--pine-color-focus-ring);\n\n align-items: center;\n display: inline-flex;\n position: relative;\n}\n\n///\n/// Resets base button styles\n///\n@mixin pds-button-style-reset {\n appearance: none;\n background-color: transparent;\n border: var(--pine-dimension-none);\n box-shadow: none;\n color: inherit;\n cursor: pointer;\n font-family: inherit;\n padding: var(--pine-dimension-none);\n}\n\n.pds-tab {\n @include pds-button-style-reset();\n\n align-items: center;\n color: var(--pine-color-text-secondary);\n display: inline-flex;\n position: relative;\n text-decoration: none;\n white-space: nowrap;\n\n &.is-active,\n &[aria-selected='true'] {\n color: var(--pine-color-text);\n\n .pds-tab__content::after {\n opacity: 1;\n }\n }\n\n &:hover {\n color: var(--pine-color-text);\n }\n\n &:focus-visible {\n // outline: var(--pine-border-focus); Border radius for outline does not work in Safari\n box-shadow: var(--box-shadow-focus); // Remove when outline radius is supported in Safari\n outline: none;\n }\n\n .pds-tab__content {\n font-family: var(--pine-font-family-body);\n font-size: var(--pine-font-size);\n font-weight: var(--pine-font-weight-medium);\n letter-spacing: var(--pine-letter-spacing);\n line-height: var(--pine-line-height-body);\n padding-block-end: 11px;\n position: relative;\n\n &::after {\n background-color: var(--pine-color-brand);\n bottom: 0;\n content: '';\n height: 3px;\n left: 0;\n opacity: 0;\n position: absolute;\n right: 0;\n }\n }\n\n .pds-tab-edge {\n display: none;\n }\n}\n\n.pds-tabs--availability {\n --color-background-tab: transparent;\n\n .pds-tab {\n background-color: var(--color-background-tab);\n border-radius: calc(var(--pine-dimension-xs) * 1.25) calc(var(--pine-dimension-xs) * 1.25) var(--pine-dimension-none) var(--pine-dimension-none);\n padding: 8px 16px 13px;\n\n &.is-active,\n &[aria-selected='true'] {\n --color-background-tab: var(--pine-color-secondary);\n\n .pds-tab__content::after {\n opacity: 1;\n }\n\n .pds-tab-edge {\n z-index: 1;\n }\n }\n\n &:hover:not(.is-active, [aria-selected='true']) {\n --color-background-tab: var(--pine-color-secondary-hover);\n }\n\n &:focus-visible {\n color: var(--pine-color-text-secondary);\n }\n }\n\n .pds-tab__content {\n padding-bottom: 7px;\n }\n\n .pds-tab-edge {\n bottom: 0;\n display: block;\n height: 8px;\n inset-inline-end: 100%;\n overflow: hidden;\n position: absolute;\n width: 8px;\n\n &::before {\n border-radius: 50%;\n bottom: 0;\n box-shadow: 4px 4px 0 0 var(--color-background-tab);\n content: '';\n display: block;\n height: 200%;\n inset-inline-end: 0;\n position: absolute;\n width: 200%;\n }\n }\n\n .pds-tab-edge--end {\n inset-inline-end: unset;\n inset-inline-start: 100%;\n\n &::before {\n box-shadow: -4px 4px 0 0 var(--color-background-tab);\n inset-inline-end: unset;\n inset-inline-start: 0;\n }\n }\n}\n\n.pds-tabs--filter {\n --color-background-tab: var(--pine-color-background-container);\n\n .pds-tab {\n background-color: var(--color-background-tab);\n border-radius: 50px;\n color: var(--pine-color-text);\n padding: 6px 15px;\n\n &.is-active,\n &[aria-selected='true'] {\n --color-background-tab: var(--pine-color-primary);\n color: var(--pine-color-text-primary);\n }\n\n &:hover:not(.is-active, [aria-selected='true']) {\n --color-background-tab: var(--pine-color-background-container-hover);\n }\n }\n\n .pds-tab__content {\n padding-block-end: var(--pine-dimension-none);\n\n &::after {\n content: unset;\n }\n }\n}\n\n.pds-tabs--pill {\n --color-background-tab: transparent;\n\n .pds-tab {\n background-color: var(--color-background-tab);\n border: var(--pine-border-width-thin) solid transparent;\n border-radius: var(--pine-dimension-xs);\n color: var(--color-text-default);\n height: 34px;\n\n .pds-tab__content {\n align-items: center;\n display: flex;\n justify-content: center;\n min-width: 90px;\n padding-block-end: 0;\n }\n\n &.is-active,\n &[aria-selected='true'] {\n --color-background-tab: var(--pine-color-white);\n border-color: var(--pine-color-border);\n box-shadow: var(--pine-box-shadow-100);\n z-index: 1;\n\n &:focus-visible {\n --box-shadow-focus: 0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-purple-300);\n border-color: var(--color-border-focus);\n // outline: var(--pine-border-focus); Border radius for outline does not work in Safari\n box-shadow: var(--box-shadow-focus); // Remove when outline radius is supported in Safari\n outline: none;\n }\n\n /* stylelint-disable max-nesting-depth */\n .pds-tab__content {\n &::after {\n opacity: 0;\n }\n }\n /* stylelint-enable max-nesting-depth */\n }\n }\n}\n","import { Component, Element, Host, h, Prop, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'pds-tab',\n styleUrl: 'pds-tab.scss',\n shadow: false,\n})\nexport class PdsTab {\n @Element() el: HTMLPdsTabElement;\n\n /**\n * Sets the related tab name, this name must match a `pds-tabpanel`'s tab name property\n */\n @Prop() name!: string;\n\n /**\n * Keeps track of the parentComponentId unique id, this property is passed by parent component\n */\n /** @internal */\n @Prop() parentComponentId: string;\n\n /**\n * Keeps track of if the expected tab variant, this property is passed by parent component\n */\n /** @internal */\n @Prop() variant: string;\n\n /**\n * Keeps track of if the tab index number, this property is passed by parent component\n */\n /** @internal */\n @Prop() index: number;\n\n /**\n * Keeps track of the tabpanel selected state, this property is passed by parent component\n */\n /** @internal */\n @Prop() selected = false;\n\n /**\n * Emits an event upon tab click for `pds-tab` and `pds-tabpanel` to listen for\n */\n /** @internal */\n @Event() pdsTabClick: EventEmitter<object>;\n private onTabClick(index, parentComponentId) {\n this.pdsTabClick.emit([index, parentComponentId]);\n }\n\n render() {\n const availabilityTabEdgeInlineStart = (\n <span class=\"pds-tab-edge\" role=\"presentation\"></span>\n )\n\n const availabilityTabEdgeInlineEnd = (\n <span class=\"pds-tab-edge pds-tab-edge--end\" role=\"presentation\"></span>\n )\n\n return (\n <Host variant={this.variant} slot=\"tabs\" index={this.index}>\n <button\n role=\"tab\"\n id={this.parentComponentId + \"__\" + this.name}\n aria-controls={this.parentComponentId + \"__\" + this.name + \"-panel\"}\n tabindex={this.selected ? \"0\" : \"-1\"}\n aria-selected={this.selected ? \"true\" : \"false\"}\n class={this.selected ? \"pds-tab is-active\" : \"pds-tab\"}\n onClick={this.onTabClick.bind(this, this.index, this.parentComponentId)}\n >\n {this.variant === \"availability\" && availabilityTabEdgeInlineStart}\n {this.variant === \"availability\" && availabilityTabEdgeInlineEnd}\n <div class=\"pds-tab__content\"><slot/></div>\n </button>\n </Host>\n );\n }\n}\n"],"mappings":"oGAAA,IAAMA,UAAY,ghKAClB,IAAAC,aAAeD,U,ICMFE,OAAM,W,yMA8BE,K,CAOXA,EAAAC,UAAAC,WAAA,SAAWC,EAAOC,GACxBC,KAAKC,YAAYC,KAAK,CAACJ,EAAOC,G,EAGhCJ,EAAAC,UAAAO,OAAA,WACE,IAAMC,EACJC,EAAA,QAAAC,IAAA,2CAAMC,MAAM,eAAeC,KAAK,iBAGlC,IAAMC,EACJJ,EAAA,QAAAC,IAAA,2CAAMC,MAAM,iCAAiCC,KAAK,iBAGpD,OACEH,EAACK,KAAI,CAAAJ,IAAA,2CAACK,QAASX,KAAKW,QAASC,KAAK,OAAOd,MAAOE,KAAKF,OACnDO,EAAA,UAAAC,IAAA,2CACEE,KAAK,MACLK,GAAIb,KAAKD,kBAAoB,KAAOC,KAAKc,KAAI,gBAC9Bd,KAAKD,kBAAoB,KAAOC,KAAKc,KAAO,SAC3DC,SAAUf,KAAKgB,SAAW,IAAM,KAAI,gBACrBhB,KAAKgB,SAAW,OAAS,QACxCT,MAAOP,KAAKgB,SAAW,oBAAsB,UAC7CC,QAASjB,KAAKH,WAAWqB,KAAKlB,KAAMA,KAAKF,MAAOE,KAAKD,oBAEpDC,KAAKW,UAAY,gBAAkBP,EACnCJ,KAAKW,UAAY,gBAAkBF,EACpCJ,EAAA,OAAAC,IAAA,2CAAKC,MAAM,oBAAmBF,EAAA,QAAAC,IAAA,+C,gIA/DrB,G","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as registerInstance,h,H as Host,g as getElement}from"./index-b1696fed.js";var pdsTabsCss=":host{--tabs-dimension-panel-margin-top:var(--pine-dimension-none);--tabs-dimension-panel-padding:0;--outline:2px solid var(--pine-color-focus-ring);display:block}.pds-tabs__tablist{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:var(--pine-dimension-md)}:host(.pds-tabs--availability) .pds-tabs__tablist{gap:var(--pine-dimension-xs)}:host(.pds-tabs--filter) .pds-tabs__tablist{gap:var(--pine-dimension-sm)}";var PdsTabsStyle0=pdsTabsCss;var PdsTabs=function(){function s(s){registerInstance(this,s);this.tablistLabel=undefined;this.componentId=undefined;this.variant=undefined;this.activeTabName=undefined;this.activeTabIndex=undefined}s.prototype.tabClickHandler=function(s){if(this.componentId===s.detail[1]){this.activeTabIndex=s.detail[0];this.activeTabName=this.tabs[this.activeTabIndex].name}};s.prototype.handleKeyDown=function(s){var
|
|
1
|
+
import{r as registerInstance,h,H as Host,g as getElement}from"./index-b1696fed.js";var pdsTabsCss=":host{--tabs-dimension-panel-margin-top:var(--pine-dimension-none);--tabs-dimension-panel-padding:0;--outline:2px solid var(--pine-color-focus-ring);display:block}.pds-tabs__tablist{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:var(--pine-dimension-md)}:host(.pds-tabs--availability) .pds-tabs__tablist{gap:var(--pine-dimension-xs)}:host(.pds-tabs--filter) .pds-tabs__tablist{gap:var(--pine-dimension-sm)}:host(.pds-tabs--pill) .pds-tabs__tablist{background-color:var(--pine-color-grey-100);border:var(--pine-border-width-thin) solid var(--pine-color-grey-200);border-radius:var(--pine-dimension-100);display:-ms-inline-flexbox;display:inline-flex;gap:0;height:var(--pine-dimension-450)}";var PdsTabsStyle0=pdsTabsCss;var PdsTabs=function(){function s(s){registerInstance(this,s);this.tablistLabel=undefined;this.componentId=undefined;this.variant=undefined;this.activeTabName=undefined;this.activeTabIndex=undefined}s.prototype.tabClickHandler=function(s){if(this.componentId===s.detail[1]){this.activeTabIndex=s.detail[0];this.activeTabName=this.tabs[this.activeTabIndex].name}};s.prototype.handleKeyDown=function(s){var i=["ArrowLeft","ArrowRight","Home","End"];if(i.includes(s.key)){s.preventDefault();this.moveActiveTab(s.key)}};s.prototype.moveActiveTab=function(s){var i=0;var t=this.tabs.length-1;var a=null;switch(s){case"ArrowLeft":a=this.activeTabIndex===i?t:this.activeTabIndex+-1;break;case"ArrowRight":a=this.activeTabIndex===t?i:this.activeTabIndex+1;break;case"Home":a=i;break;case"End":a=t;break}this.tabs[a].children[0].focus();this.activeTabName=this.tabs[a].name;this.activeTabIndex=a};s.prototype.findAllChildren=function(){this.tabs=this.el.querySelectorAll("pds-tab");this.tabPanels=this.el.querySelectorAll("pds-tabpanel")};s.prototype.propGeneration=function(s,i){if(i===void 0){i=0}s.parentComponentId=this.componentId.toString();s.variant=this.variant.toString();s.selected=this.activeTabName===s.name?true:false;s["index"]=i};s.prototype.passPropsToChildren=function(){var s=this;this.tabs.forEach((function(i,t){if(s.activeTabName===i.name)s.activeTabIndex=t;s.propGeneration(i,t)}));this.tabPanels.forEach((function(i){s.propGeneration(i)}))};s.prototype.classNames=function(){var s="pds-tabs";if(this.variant&&this.variant!="primary"){var i="pds-tabs--".concat(this.variant);s+=" "+i}return s};s.prototype.componentWillLoad=function(){this.findAllChildren()};s.prototype.componentWillRender=function(){this.passPropsToChildren()};s.prototype.render=function(){return h(Host,{key:"48a7f7d7124c700612089ba096e932f0e376b418","active-tab-name":this.activeTabName,class:this.classNames(),id:this.componentId},h("div",{key:"285092baa2367bd90736a6b893745874b2e96cc4",class:"pds-tabs__tablist",role:"tablist","aria-label":this.tablistLabel},h("slot",{key:"451b42c90fcd53ce0d51f550b402533a2fcd24df",name:"tabs"})),h("slot",{key:"945fe293061a5fff2e3777e3d454d10f3bc59125",name:"tabpanels"}))};Object.defineProperty(s.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});return s}();PdsTabs.style=PdsTabsStyle0;export{PdsTabs as pds_tabs};
|
|
2
2
|
//# sourceMappingURL=pds-tabs.entry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["pdsTabsCss","PdsTabsStyle0","PdsTabs","prototype","tabClickHandler","event","this","componentId","detail","activeTabIndex","activeTabName","tabs","name","handleKeyDown","ev","keySet","includes","key","preventDefault","moveActiveTab","firstTabNumber","lastTabNumber","length","moveFocusTo","children","focus","findAllChildren","el","querySelectorAll","tabPanels","propGeneration","child","index","parentComponentId","toString","variant","selected","passPropsToChildren","_this","forEach","classNames","className","variantClassName","concat","componentWillLoad","componentWillRender","render","h","Host","class","id","role","tablistLabel"],"sources":["src/components/pds-tabs/pds-tabs.scss?tag=pds-tabs&encapsulation=shadow","src/components/pds-tabs/pds-tabs.tsx"],"sourcesContent":[":host {\n /**\n * @prop --tabs-dimension-panel-margin-top: Optional margin-top for panels\n */\n --tabs-dimension-panel-margin-top: var(--pine-dimension-none);\n /**\n * @prop --tabs-dimension-panel-padding: Optional padding for panels\n */\n --tabs-dimension-panel-padding: 0;\n\n --outline: 2px solid var(--pine-color-focus-ring);\n\n display: block;\n}\n\n.pds-tabs__tablist {\n display: flex;\n flex-wrap: wrap;\n gap: var(--pine-dimension-md);\n}\n\n:host(.pds-tabs--availability) .pds-tabs__tablist {\n gap: var(--pine-dimension-xs);\n}\n\n:host(.pds-tabs--filter) .pds-tabs__tablist {\n gap: var(--pine-dimension-sm);\n}\n","import { Component, Element, Host, h, Prop, Listen } from '@stencil/core';\n\n /**\n * @slot tabs - Content is placed within the `div[role=\"tablist\"]` element as children\n * @slot tabpanels - Content is placed directly after the `div[role=\"tablist\"]` element as siblings\n */\n@Component({\n tag: 'pds-tabs',\n styleUrls: ['pds-tabs.scss'],\n shadow: true,\n})\nexport class PdsTabs {\n private tabs;\n private tabPanels;\n\n @Element() el: HTMLPdsTabsElement;\n\n /**\n * Sets the aria-label attached to the tablist element\n */\n @Prop() tablistLabel!: string;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Sets tabs variant styles as outlined in Figma documentation\n */\n @Prop() variant!: 'primary' | 'availability' | 'filter';\n\n /**\n * Sets the starting active tab name and maintains the name as the component re-renders\n */\n @Prop({mutable: true}) activeTabName!: string;\n\n /**\n * Sets the starting active tab index number and maintains the index number as the component re-renders\n */\n /** @internal */\n @Prop({mutable: true}) activeTabIndex: number;\n\n @Listen('pdsTabClick', {\n target: 'body',\n })\n tabClickHandler(event: CustomEvent<any>) {\n if (this.componentId === event.detail[1]) {\n this.activeTabIndex = event.detail[0];\n this.activeTabName = this.tabs[this.activeTabIndex].name;\n }\n }\n\n @Listen('keydown', {})\n handleKeyDown(ev: KeyboardEvent) {\n const keySet = [\"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\"];\n\n if (keySet.includes(ev.key)) {\n ev.preventDefault();\n this.moveActiveTab(ev.key);\n }\n }\n\n private moveActiveTab(key: string) {\n const firstTabNumber = 0;\n const lastTabNumber = this.tabs.length - 1;\n\n let moveFocusTo = null;\n\n switch (key) {\n case 'ArrowLeft':\n moveFocusTo = (this.activeTabIndex === firstTabNumber) ? lastTabNumber : (this.activeTabIndex + (-1));\n break;\n case 'ArrowRight':\n moveFocusTo = (this.activeTabIndex === lastTabNumber) ? firstTabNumber : (this.activeTabIndex + 1);\n break;\n case 'Home':\n moveFocusTo = firstTabNumber;\n break;\n case 'End':\n moveFocusTo = lastTabNumber;\n break;\n }\n\n // Move focus to the button element within `pds-tab`\n this.tabs[moveFocusTo].children[0].focus();\n this.activeTabName = this.tabs[moveFocusTo].name;\n this.activeTabIndex = moveFocusTo;\n }\n\n private findAllChildren() {\n this.tabs = this.el.querySelectorAll('pds-tab');\n this.tabPanels = this.el.querySelectorAll('pds-tabpanel');\n }\n\n private propGeneration(child, index = 0) {\n child.parentComponentId = this.componentId.toString();\n child.variant = this.variant.toString();\n child.selected = (this.activeTabName === child.name) ? true : false;\n child['index'] = index;\n }\n\n private passPropsToChildren() {\n this.tabs.forEach((child, index) => {\n if (this.activeTabName === child.name) this.activeTabIndex = index;\n this.propGeneration(child, index);\n });\n\n this.tabPanels.forEach((child) => {\n this.propGeneration(child);\n });\n }\n\n private classNames() {\n let className = `pds-tabs`;\n if (this.variant && this.variant != 'primary') {\n const variantClassName = `pds-tabs--${this.variant}`;\n className += ' ' + variantClassName;\n }\n\n return className;\n };\n\n componentWillLoad() {\n this.findAllChildren();\n }\n\n componentWillRender() {\n this.passPropsToChildren();\n }\n\n render() {\n return (\n <Host active-tab-name={this.activeTabName} class={this.classNames()} id={this.componentId}>\n <div class=\"pds-tabs__tablist\" role=\"tablist\" aria-label={this.tablistLabel}>\n <slot name=\"tabs\" />\n </div>\n <slot name=\"tabpanels\" />\n </Host>\n );\n }\n}\n"],"mappings":"mFAAA,IAAMA,WAAa,
|
|
1
|
+
{"version":3,"names":["pdsTabsCss","PdsTabsStyle0","PdsTabs","prototype","tabClickHandler","event","this","componentId","detail","activeTabIndex","activeTabName","tabs","name","handleKeyDown","ev","keySet","includes","key","preventDefault","moveActiveTab","firstTabNumber","lastTabNumber","length","moveFocusTo","children","focus","findAllChildren","el","querySelectorAll","tabPanels","propGeneration","child","index","parentComponentId","toString","variant","selected","passPropsToChildren","_this","forEach","classNames","className","variantClassName","concat","componentWillLoad","componentWillRender","render","h","Host","class","id","role","tablistLabel"],"sources":["src/components/pds-tabs/pds-tabs.scss?tag=pds-tabs&encapsulation=shadow","src/components/pds-tabs/pds-tabs.tsx"],"sourcesContent":[":host {\n /**\n * @prop --tabs-dimension-panel-margin-top: Optional margin-top for panels\n */\n --tabs-dimension-panel-margin-top: var(--pine-dimension-none);\n /**\n * @prop --tabs-dimension-panel-padding: Optional padding for panels\n */\n --tabs-dimension-panel-padding: 0;\n\n --outline: 2px solid var(--pine-color-focus-ring);\n\n display: block;\n}\n\n.pds-tabs__tablist {\n display: flex;\n flex-wrap: wrap;\n gap: var(--pine-dimension-md);\n}\n\n:host(.pds-tabs--availability) .pds-tabs__tablist {\n gap: var(--pine-dimension-xs);\n}\n\n:host(.pds-tabs--filter) .pds-tabs__tablist {\n gap: var(--pine-dimension-sm);\n}\n\n:host(.pds-tabs--pill) .pds-tabs__tablist {\n background-color: var(--pine-color-grey-100);\n border: var(--pine-border-width-thin) solid var(--pine-color-grey-200);\n border-radius: var(--pine-dimension-100);\n display: inline-flex;\n gap: 0;\n height: var(--pine-dimension-450);\n}\n","import { Component, Element, Host, h, Prop, Listen } from '@stencil/core';\n\n /**\n * @slot tabs - Content is placed within the `div[role=\"tablist\"]` element as children\n * @slot tabpanels - Content is placed directly after the `div[role=\"tablist\"]` element as siblings\n */\n@Component({\n tag: 'pds-tabs',\n styleUrls: ['pds-tabs.scss'],\n shadow: true,\n})\nexport class PdsTabs {\n private tabs;\n private tabPanels;\n\n @Element() el: HTMLPdsTabsElement;\n\n /**\n * Sets the aria-label attached to the tablist element\n */\n @Prop() tablistLabel!: string;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Sets tabs variant styles as outlined in Figma documentation\n */\n @Prop() variant!: 'primary' | 'availability' | 'filter' | 'pill';\n\n /**\n * Sets the starting active tab name and maintains the name as the component re-renders\n */\n @Prop({mutable: true}) activeTabName!: string;\n\n /**\n * Sets the starting active tab index number and maintains the index number as the component re-renders\n */\n /** @internal */\n @Prop({mutable: true}) activeTabIndex: number;\n\n @Listen('pdsTabClick', {\n target: 'body',\n })\n tabClickHandler(event: CustomEvent<any>) {\n if (this.componentId === event.detail[1]) {\n this.activeTabIndex = event.detail[0];\n this.activeTabName = this.tabs[this.activeTabIndex].name;\n }\n }\n\n @Listen('keydown', {})\n handleKeyDown(ev: KeyboardEvent) {\n const keySet = [\"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\"];\n\n if (keySet.includes(ev.key)) {\n ev.preventDefault();\n this.moveActiveTab(ev.key);\n }\n }\n\n private moveActiveTab(key: string) {\n const firstTabNumber = 0;\n const lastTabNumber = this.tabs.length - 1;\n\n let moveFocusTo = null;\n\n switch (key) {\n case 'ArrowLeft':\n moveFocusTo = (this.activeTabIndex === firstTabNumber) ? lastTabNumber : (this.activeTabIndex + (-1));\n break;\n case 'ArrowRight':\n moveFocusTo = (this.activeTabIndex === lastTabNumber) ? firstTabNumber : (this.activeTabIndex + 1);\n break;\n case 'Home':\n moveFocusTo = firstTabNumber;\n break;\n case 'End':\n moveFocusTo = lastTabNumber;\n break;\n }\n\n // Move focus to the button element within `pds-tab`\n this.tabs[moveFocusTo].children[0].focus();\n this.activeTabName = this.tabs[moveFocusTo].name;\n this.activeTabIndex = moveFocusTo;\n }\n\n private findAllChildren() {\n this.tabs = this.el.querySelectorAll('pds-tab');\n this.tabPanels = this.el.querySelectorAll('pds-tabpanel');\n }\n\n private propGeneration(child, index = 0) {\n child.parentComponentId = this.componentId.toString();\n child.variant = this.variant.toString();\n child.selected = (this.activeTabName === child.name) ? true : false;\n child['index'] = index;\n }\n\n private passPropsToChildren() {\n this.tabs.forEach((child, index) => {\n if (this.activeTabName === child.name) this.activeTabIndex = index;\n this.propGeneration(child, index);\n });\n\n this.tabPanels.forEach((child) => {\n this.propGeneration(child);\n });\n }\n\n private classNames() {\n let className = `pds-tabs`;\n if (this.variant && this.variant != 'primary') {\n const variantClassName = `pds-tabs--${this.variant}`;\n className += ' ' + variantClassName;\n }\n\n return className;\n };\n\n componentWillLoad() {\n this.findAllChildren();\n }\n\n componentWillRender() {\n this.passPropsToChildren();\n }\n\n render() {\n return (\n <Host active-tab-name={this.activeTabName} class={this.classNames()} id={this.componentId}>\n <div class=\"pds-tabs__tablist\" role=\"tablist\" aria-label={this.tablistLabel}>\n <slot name=\"tabs\" />\n </div>\n <slot name=\"tabpanels\" />\n </Host>\n );\n }\n}\n"],"mappings":"mFAAA,IAAMA,WAAa,2sBACnB,IAAAC,cAAeD,W,ICUFE,QAAO,W,gLAmClBA,EAAAC,UAAAC,gBAAA,SAAgBC,GACd,GAAIC,KAAKC,cAAgBF,EAAMG,OAAO,GAAI,CACxCF,KAAKG,eAAiBJ,EAAMG,OAAO,GACnCF,KAAKI,cAAgBJ,KAAKK,KAAKL,KAAKG,gBAAgBG,I,GAKxDV,EAAAC,UAAAU,cAAA,SAAcC,GACZ,IAAMC,EAAS,CAAC,YAAa,aAAc,OAAQ,OAEnD,GAAIA,EAAOC,SAASF,EAAGG,KAAM,CAC3BH,EAAGI,iBACHZ,KAAKa,cAAcL,EAAGG,I,GAIlBf,EAAAC,UAAAgB,cAAA,SAAcF,GACpB,IAAMG,EAAiB,EACvB,IAAMC,EAAgBf,KAAKK,KAAKW,OAAS,EAEzC,IAAIC,EAAc,KAElB,OAAQN,GACN,IAAK,YACHM,EAAejB,KAAKG,iBAAmBW,EAAkBC,EAAiBf,KAAKG,gBAAmB,EAClG,MACF,IAAK,aACHc,EAAejB,KAAKG,iBAAmBY,EAAiBD,EAAkBd,KAAKG,eAAiB,EAChG,MACF,IAAK,OACHc,EAAcH,EACd,MACF,IAAK,MACHG,EAAcF,EACd,MAIJf,KAAKK,KAAKY,GAAaC,SAAS,GAAGC,QACnCnB,KAAKI,cAAgBJ,KAAKK,KAAKY,GAAaX,KAC5CN,KAAKG,eAAiBc,C,EAGhBrB,EAAAC,UAAAuB,gBAAA,WACNpB,KAAKK,KAAOL,KAAKqB,GAAGC,iBAAiB,WACrCtB,KAAKuB,UAAYvB,KAAKqB,GAAGC,iBAAiB,e,EAGpC1B,EAAAC,UAAA2B,eAAA,SAAeC,EAAOC,GAAA,GAAAA,SAAA,GAAAA,EAAA,CAAS,CACrCD,EAAME,kBAAoB3B,KAAKC,YAAY2B,WAC3CH,EAAMI,QAAU7B,KAAK6B,QAAQD,WAC7BH,EAAMK,SAAY9B,KAAKI,gBAAkBqB,EAAMnB,KAAQ,KAAO,MAC9DmB,EAAM,SAAWC,C,EAGX9B,EAAAC,UAAAkC,oBAAA,eAAAC,EAAAhC,KACNA,KAAKK,KAAK4B,SAAQ,SAACR,EAAOC,GACxB,GAAIM,EAAK5B,gBAAkBqB,EAAMnB,KAAM0B,EAAK7B,eAAiBuB,EAC7DM,EAAKR,eAAeC,EAAOC,E,IAG7B1B,KAAKuB,UAAUU,SAAQ,SAACR,GACtBO,EAAKR,eAAeC,E,KAIhB7B,EAAAC,UAAAqC,WAAA,WACN,IAAIC,EAAY,WAChB,GAAInC,KAAK6B,SAAW7B,KAAK6B,SAAW,UAAW,CAC7C,IAAMO,EAAmB,aAAAC,OAAarC,KAAK6B,SAC3CM,GAAa,IAAMC,C,CAGrB,OAAOD,C,EAGTvC,EAAAC,UAAAyC,kBAAA,WACEtC,KAAKoB,iB,EAGPxB,EAAAC,UAAA0C,oBAAA,WACEvC,KAAK+B,qB,EAGPnC,EAAAC,UAAA2C,OAAA,WACE,OACEC,EAACC,KAAI,CAAA/B,IAAA,6DAAkBX,KAAKI,cAAeuC,MAAO3C,KAAKkC,aAAcU,GAAI5C,KAAKC,aAC5EwC,EAAA,OAAA9B,IAAA,2CAAKgC,MAAM,oBAAoBE,KAAK,UAAS,aAAa7C,KAAK8C,cAC7DL,EAAA,QAAA9B,IAAA,2CAAML,KAAK,UAEbmC,EAAA,QAAA9B,IAAA,2CAAML,KAAK,c,gIA9HC,G","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__awaiter,__generator}from"tslib";import{r as registerInstance,c as createEvent,h,H as Host,g as getElement}from"./index-b1696fed.js";import{i as isRequired,a as assignDescription,m as messageId}from"./form-1b7b69e3.js";import{d as debounceEvent}from"./utils-5e425aaf.js";import{i as inheritAriaAttributes,a as inheritAttributes}from"./attributes-fe2c8c91.js";import{b as danger}from"./index-d320cfa9.js";var labelCss=":host{display:inline-block}:host([aria-disabled=true]) label{color:var(--pine-color-text-label-disabled)}:host([aria-readonly=true]) label{color:var(--pine-color-text-label-readonly)}label{color:var(--pine-color-text-label);font
|
|
1
|
+
import{__awaiter,__generator}from"tslib";import{r as registerInstance,c as createEvent,h,H as Host,g as getElement}from"./index-b1696fed.js";import{i as isRequired,a as assignDescription,m as messageId}from"./form-1b7b69e3.js";import{d as debounceEvent}from"./utils-5e425aaf.js";import{i as inheritAriaAttributes,a as inheritAttributes}from"./attributes-fe2c8c91.js";import{b as danger}from"./index-d320cfa9.js";var labelCss=":host{display:inline-block}:host([aria-disabled=true]) label{color:var(--pine-color-text-label-disabled)}:host([aria-readonly=true]) label{color:var(--pine-color-text-label-readonly)}label{color:var(--pine-color-text-label);font:var(--pine-typography-body-medium);letter-spacing:var(--pine-letter-spacing)}";var PdsTextareaStyle0=labelCss;var pdsInputTokensCss=":host{--pine-input-color-background-danger:var(--pine-color-red-050)}";var PdsTextareaStyle1=pdsInputTokensCss;var pdsTextareaCss=":host{--box-shadow-focus:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);--box-shadow-focus-error:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring-danger);display:inline}:host([aria-readonly=true]) textarea{background-color:var(--pine-color-background-container-disabled);color:var(--pine-color-text-readonly)}.pds-textarea{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}label{display:block;-webkit-margin-after:var(--pine-dimension-xs);margin-block-end:var(--pine-dimension-xs)}.pds-textarea__field{background-color:var(--pine-color-background-container);border:var(--pine-border);border-radius:calc(var(--pine-dimension-xs) * 1.25);font:var(--pine-typography-body);letter-spacing:var(--pine-letter-spacing);padding:var(--pine-dimension-xs) var(--pine-dimension-sm)}.pds-textarea__field:hover:not(:disabled,.is-invalid){border:var(--pine-border-hover)}.pds-textarea__field:disabled{background-color:var(--pine-color-background-container-disabled);color:var(--pine-color-text-disabled);cursor:not-allowed}.pds-textarea__field:focus-visible{-webkit-box-shadow:var(--box-shadow-focus);box-shadow:var(--box-shadow-focus);outline:none}.pds-textarea__field::-webkit-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field::-moz-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field:-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field::-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field::placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field.is-invalid{background-color:var(--pine-input-color-background-danger);border-color:var(--pine-color-border-danger)}.pds-textarea__field.is-invalid:focus-visible{-webkit-box-shadow:var(--box-shadow-focus-error);box-shadow:var(--box-shadow-focus-error)}.pds-textarea__error-message,.pds-textarea__helper-message{font:var(--pine-typography-body-sm-medium);-webkit-margin-before:var(--pine-dimension-xs);margin-block-start:var(--pine-dimension-xs)}.pds-textarea__error-message{-ms-flex-align:center;align-items:center;color:var(--pine-color-text-message-danger);display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}";var PdsTextareaStyle2=pdsTextareaCss;var PdsTextarea=function(){function e(e){var a=this;registerInstance(this,e);this.pdsBlur=createEvent(this,"pdsBlur",7);this.pdsFocus=createEvent(this,"pdsFocus",7);this.pdsInput=createEvent(this,"pdsInput",7);this.pdsTextareaChange=createEvent(this,"pdsTextareaChange",7);this.inheritedAttributes={};this.onBlur=function(e){a.hasFocus=false;if(a.focusedValue!==a.value){a.emitValueChange(e)}a.pdsBlur.emit(e)};this.onFocus=function(e){a.hasFocus=true;a.focusedValue=a.value;a.pdsFocus.emit(e)};this.onInput=function(e){var t=e.target;if(t){a.value=t.value||""}a.emitInputChange(e)};this.onTextareaChange=function(e){a.emitValueChange(e)};this.autocomplete=undefined;this.componentId=undefined;this.disabled=false;this.debounce=undefined;this.errorMessage=undefined;this.helperMessage=undefined;this.invalid=false;this.label=undefined;this.name=this.componentId;this.placeholder=undefined;this.readonly=false;this.required=false;this.rows=undefined;this.value="";this.hasFocus=false}e.prototype.setFocus=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(e){if(this.nativeTextarea){this.nativeTextarea.focus()}return[2]}))}))};e.prototype.debounceChanged=function(){var e=this,a=e.pdsInput,t=e.debounce,r=e.originalPdsInput;this.pdsInput=t===undefined?r!==null&&r!==void 0?r:a:debounceEvent(a,t)};e.prototype.valueChanged=function(){var e=this.nativeTextarea;var a=this.getValue();if(e&&e.value!==a){e.value=a}};e.prototype.emitInputChange=function(e){var a=this.value;this.pdsInput.emit({value:a,event:e})};e.prototype.emitValueChange=function(e){var a=e.target;isRequired(a,this);var t=a.value;var r=t==null?t:t.toString();this.focusedValue=r;this.pdsTextareaChange.emit({value:r,event:e})};e.prototype.getValue=function(){return this.value||""};e.prototype.textareaClassNames=function(){var e=["pds-textarea__field"];if(this.invalid&&this.invalid===true){e.push("is-invalid")}return e.join(" ")};e.prototype.connectedCallback=function(){this.debounceChanged()};e.prototype.componentWillLoad=function(){this.inheritedAttributes=Object.assign(Object.assign({},inheritAriaAttributes(this.el)),inheritAttributes(this.el))};e.prototype.componentDidLoad=function(){this.originalPdsInput=this.pdsInput};e.prototype.render=function(){var e=this;var a=this.getValue();return h(Host,{key:"aa960b2a67c927c296040e835fadcd8f8bcbbc18","aria-disabled":this.disabled?"true":null,"aria-readonly":this.readonly?"true":null},h("div",{key:"b95804e8ddbd92f4d7177c90d342d0ff2022ad44",class:"pds-textarea"},this.label&&h("label",{key:"ef508b6af03cf871b419b2dd4d79ded182b59da5",htmlFor:this.componentId},this.label),h("textarea",Object.assign({key:"2d2f195e8a715332eab0bba4f869db67b0f249c9",ref:function(a){return e.nativeTextarea=a},"aria-describedby":assignDescription(this.componentId,this.invalid,this.helperMessage),"aria-invalid":this.invalid?"true":undefined,autocomplete:this.autocomplete,class:this.textareaClassNames(),disabled:this.disabled,id:this.componentId,name:this.name,placeholder:this.placeholder,readOnly:this.readonly,required:this.required,rows:this.rows,onBlur:this.onBlur,onChange:this.onTextareaChange,onFocus:this.onFocus,onInput:this.onInput},this.inheritedAttributes),a),this.helperMessage&&h("p",{key:"84ad453017c378553eeda5198267564661b9bc8f",class:"pds-textarea__helper-message",id:messageId(this.componentId,"helper")},this.helperMessage),this.invalid&&h("p",{key:"d1fbcbe5af314a25bdec647d560f9e964a9c8b90","aria-live":"assertive",class:"pds-textarea__error-message",id:messageId(this.componentId,"error")},h("pds-icon",{key:"525edfdafeabd31a41e62c0c0e454752123c7c8a",icon:danger,size:"small"}),this.errorMessage)))};Object.defineProperty(e.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(e,"watchers",{get:function(){return{debounce:["debounceChanged"],value:["valueChanged"]}},enumerable:false,configurable:true});return e}();PdsTextarea.style=PdsTextareaStyle0+(PdsTextareaStyle1+PdsTextareaStyle2);export{PdsTextarea as pds_textarea};
|
|
2
2
|
//# sourceMappingURL=pds-textarea.entry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["labelCss","PdsTextareaStyle0","pdsInputTokensCss","PdsTextareaStyle1","pdsTextareaCss","PdsTextareaStyle2","PdsTextarea","this","inheritedAttributes","onBlur","ev","_this","hasFocus","focusedValue","value","emitValueChange","pdsBlur","emit","onFocus","pdsFocus","onInput","input","target","emitInputChange","onTextareaChange","componentId","class_1","prototype","setFocus","nativeTextarea","focus","debounceChanged","_a","pdsInput","debounce","originalPdsInput","undefined","debounceEvent","valueChanged","getValue","event","textarea","isRequired","newValue","toString","pdsTextareaChange","textareaClassNames","classNames","invalid","push","join","connectedCallback","componentWillLoad","Object","assign","inheritAriaAttributes","el","inheritAttributes","componentDidLoad","render","h","Host","key","disabled","readonly","class","label","htmlFor","ref","assignDescription","helperMessage","autocomplete","id","name","placeholder","readOnly","required","rows","onChange","messageId","icon","danger","size","errorMessage"],"sources":["src/global/styles/utils/label.scss?tag=pds-textarea&encapsulation=shadow","src/components/pds-input/pds-input.tokens.scss?tag=pds-textarea&encapsulation=shadow","src/components/pds-textarea/pds-textarea.scss?tag=pds-textarea&encapsulation=shadow","src/components/pds-textarea/pds-textarea.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n:host([aria-disabled=\"true\"]) label {\n color: var(--pine-color-text-label-disabled);\n}\n\n:host([aria-readonly=\"true\"]) {\n label {\n color: var(--pine-color-text-label-readonly);\n }\n}\n\nlabel {\n color: var(--pine-color-text-label);\n font-weight: var(--pine-font-weight-medium);\n\n}\n","/**\n * Do not edit directly, this file was auto-generated.\n */\n\n:host {\n --pine-input-color-background-danger: var(--pine-color-red-050);\n}\n",":host {\n\n --box-shadow-focus: 0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);\n --box-shadow-focus-error: 0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring-danger);\n\n display: inline;\n}\n\n:host([aria-readonly=\"true\"]) {\n textarea {\n background-color: var(--pine-color-background-container-disabled);\n color: var(--pine-color-text-readonly);\n }\n}\n\n.pds-textarea {\n display: flex;\n flex-direction: column;\n}\n\nlabel {\n display: block;\n font-weight: var(--pine-font-weight-medium);\n margin-block-end: var(--pine-dimension-xs);\n}\n\n.pds-textarea__field {\n background-color: var(--pine-color-background-container);\n border: var(--pine-border);\n border-radius: calc(var(--pine-dimension-xs) * 1.25);\n padding: var(--pine-dimension-xs) var(--pine-dimension-sm);\n\n &:hover:not(:disabled, .is-invalid) {\n border: var(--pine-border-hover);\n }\n\n &:disabled {\n background-color: var(--pine-color-background-container-disabled);\n color: var(--pine-color-text-disabled);\n cursor: not-allowed;\n }\n\n &:focus-visible {\n // outline: var(--pine-border-focus); Border radius for outline does not work in Safari\n box-shadow: var(--box-shadow-focus); // Remove when outline radius is supported in Safari\n outline: none;\n }\n\n &::placeholder {\n color: var(--pine-color-text-placeholder);\n }\n\n &.is-invalid {\n background-color: var(--pine-input-color-background-danger);\n border-color: var(--pine-color-border-danger);\n\n &:focus-visible {\n box-shadow: var(--box-shadow-focus-error);\n }\n }\n}\n\n.pds-textarea__error-message,\n.pds-textarea__helper-message {\n font: var(--pine-typography-body-sm-medium);\n margin-block-start: var(--pine-dimension-xs);\n}\n\n.pds-textarea__error-message {\n align-items: center;\n color: var(--pine-color-text-message-danger);\n display: flex;\n gap: var(--pine-dimension-2xs);\n}\n","import { Component, Element, Event, EventEmitter, Host, h, Method, Prop, State, Watch } from '@stencil/core';\nimport { assignDescription, isRequired, messageId } from '../../utils/form';\nimport { TextareaChangeEventDetail, TextareaInputEventDetail } from './textarea-interface';\nimport { debounceEvent } from '@utils/utils';\nimport type { Attributes } from '@utils/attributes';\nimport { inheritAttributes, inheritAriaAttributes } from '@utils/attributes';\nimport { danger } from '@pine-ds/icons/icons';\n\n@Component({\n tag: 'pds-textarea',\n styleUrls: [\n '../../global/styles/utils/label.scss',\n '../pds-input/pds-input.tokens.scss',\n 'pds-textarea.scss'\n ],\n shadow: true,\n})\nexport class PdsTextarea {\n private nativeTextarea?: HTMLTextAreaElement\n private focusedValue?: string | null;\n private inheritedAttributes: Attributes = {};\n private originalPdsInput?: EventEmitter<TextareaInputEventDetail>;\n\n @Element() el: HTMLPdsTextareaElement;\n\n /**\n * Emitted when the input loses focus.\n */\n @Event() pdsBlur!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the input has focus.\n */\n @Event() pdsFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when a keyboard input occurs.\n *\n * For elements that accept text input (`type=text`, `type=tel`, etc.), the interface\n * is [`InputEvent`](https://developer.mozilla.org/en-US/docs/Web/API/InputEvent); for others,\n * the interface is [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event). If\n * the input is cleared on edit, the type is `null`.\n */\n @Event() pdsInput: EventEmitter<TextareaInputEventDetail>;\n\n /**\n * Event emitted whenever the value of the textarea changes.\n *\n * This event will not emit when programmatically setting the `value` property.\n */\n @Event() pdsTextareaChange: EventEmitter<TextareaChangeEventDetail>;\n\n /**\n * Sets focus on the native `textarea` in the `pds-texarea`. Use this method instead of the global\n * `textarea.focus()`.\n */\n @Method()\n async setFocus() {\n if (this.nativeTextarea) {\n this.nativeTextarea.focus();\n }\n }\n\n /**\n * Specifies if and how the browser provides `autocomplete` assistance for the field.\n */\n @Prop() autocomplete: string;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Determines whether or not the textarea is disabled.\n * @defaultValue false\n */\n @Prop() disabled = false;\n\n /**\n * The amount of time, in milliseconds, to wait to trigger the event after each keystroke.\n */\n @Prop() debounce?: number;\n\n /**\n * Displays an error message below the textarea field.\n */\n @Prop() errorMessage?: string;\n\n /**\n * Displays a message or hint below the textarea field.\n */\n @Prop() helperMessage?: string;\n\n /**\n * Determines whether or not the textarea is invalid or throws an error.\n * @defaultValue false\n */\n @Prop({mutable: true}) invalid = false; // eslint-disable-line @stencil-community/strict-mutable\n\n /**\n * Text to be displayed as the textarea label.\n */\n @Prop() label?: string;\n\n /**\n * Specifies the name. Submitted with the form name/value pair. This value will mirror the componentId.\n */\n @Prop() name: string = this.componentId;\n\n /**\n * Specifies a short hint that describes the expected value of the textarea.\n */\n @Prop() placeholder?: string;\n\n /**\n * Determines whether or not the textarea is readonly.\n * @defaultValue false\n */\n @Prop() readonly = false;\n\n /**\n * Determines whether or not the textarea is required.\n * @defaultValue false\n */\n @Prop() required = false;\n\n /**\n * Sets number of rows of text visible without needing to scroll in the textarea.\n */\n @Prop() rows?: number;\n\n /**\n * The value of the textarea.\n */\n @Prop({mutable: true}) value?: string | null = '';\n\n @State() hasFocus = false;\n\n @Watch('debounce')\n protected debounceChanged() {\n const { pdsInput, debounce, originalPdsInput } = this;\n\n this.pdsInput = debounce === undefined ? originalPdsInput ?? pdsInput : debounceEvent(pdsInput, debounce);\n }\n\n /**\n * Update the native input element when the value changes\n */\n @Watch('value')\n protected valueChanged() {\n const nativeTextarea = this.nativeTextarea;\n const value = this.getValue();\n\n if (nativeTextarea && nativeTextarea.value !== value) {\n nativeTextarea.value = value;\n }\n }\n\n /**\n * Emits an `pdsInput` event.\n */\n private emitInputChange(event?: Event) {\n const { value } = this;\n this.pdsInput.emit({ value, event });\n }\n\n /**\n * Emits an `pdsTextareaChange` event.\n */\n private emitValueChange(event?: Event) {\n const textarea = event.target as HTMLTextAreaElement;\n isRequired(textarea, this);\n\n const { value } = textarea;\n\n // Checks for both null and undefined values\n const newValue = value == null ? value : value.toString();\n this.focusedValue = newValue;\n this.pdsTextareaChange.emit({ value: newValue, event });\n }\n\n private getValue(): string {\n return this.value || '';\n }\n\n private onBlur = (ev: FocusEvent) => {\n this.hasFocus = false;\n\n if (this.focusedValue !== this.value) {\n this.emitValueChange(ev);\n }\n\n this.pdsBlur.emit(ev);\n };\n\n private onFocus = (ev: FocusEvent) => {\n this.hasFocus = true;\n this.focusedValue = this.value;\n\n this.pdsFocus.emit(ev);\n };\n\n private onInput = (ev: Event) => {\n const input = ev.target as HTMLTextAreaElement | null;\n if (input) {\n this.value = input.value || '';\n }\n this.emitInputChange(ev);\n };\n\n private onTextareaChange = (ev: Event) => {\n this.emitValueChange(ev);\n };\n\n private textareaClassNames() {\n const classNames = ['pds-textarea__field'];\n\n if (this.invalid && this.invalid === true) {\n classNames.push('is-invalid');\n }\n\n return classNames.join(' ');\n }\n\n connectedCallback() {\n this.debounceChanged();\n }\n\n componentWillLoad() {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el),\n ...inheritAttributes(this.el),\n };\n }\n\n componentDidLoad() {\n this.originalPdsInput = this.pdsInput;\n }\n\n render() {\n const value = this.getValue();\n\n return (\n <Host\n aria-disabled={this.disabled ? 'true' : null}\n aria-readonly={this.readonly ? 'true' : null}\n >\n <div class=\"pds-textarea\">\n {this.label &&\n <label htmlFor={this.componentId}>{this.label}</label>\n }\n <textarea\n ref={(el) => this.nativeTextarea = el }\n aria-describedby={assignDescription(this.componentId, this.invalid, this.helperMessage)}\n aria-invalid={this.invalid ? \"true\" : undefined}\n autocomplete={this.autocomplete}\n class={this.textareaClassNames()}\n disabled={this.disabled}\n id={this.componentId}\n name={this.name}\n placeholder={this.placeholder}\n readOnly={this.readonly}\n required={this.required}\n rows={this.rows}\n onBlur={this.onBlur}\n onChange={this.onTextareaChange}\n onFocus={this.onFocus}\n onInput={this.onInput}\n {...this.inheritedAttributes}\n >\n {value}\n </textarea>\n {this.helperMessage &&\n <p\n class=\"pds-textarea__helper-message\"\n id={messageId(this.componentId, 'helper')}\n >\n {this.helperMessage}\n </p>\n }\n {this.invalid &&\n <p\n aria-live=\"assertive\"\n class=\"pds-textarea__error-message\"\n id={messageId(this.componentId, 'error')}\n >\n <pds-icon icon={danger} size=\"small\" />\n {this.errorMessage}\n </p>\n }\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["labelCss","PdsTextareaStyle0","pdsInputTokensCss","PdsTextareaStyle1","pdsTextareaCss","PdsTextareaStyle2","PdsTextarea","this","inheritedAttributes","onBlur","ev","_this","hasFocus","focusedValue","value","emitValueChange","pdsBlur","emit","onFocus","pdsFocus","onInput","input","target","emitInputChange","onTextareaChange","componentId","class_1","prototype","setFocus","nativeTextarea","focus","debounceChanged","_a","pdsInput","debounce","originalPdsInput","undefined","debounceEvent","valueChanged","getValue","event","textarea","isRequired","newValue","toString","pdsTextareaChange","textareaClassNames","classNames","invalid","push","join","connectedCallback","componentWillLoad","Object","assign","inheritAriaAttributes","el","inheritAttributes","componentDidLoad","render","h","Host","key","disabled","readonly","class","label","htmlFor","ref","assignDescription","helperMessage","autocomplete","id","name","placeholder","readOnly","required","rows","onChange","messageId","icon","danger","size","errorMessage"],"sources":["src/global/styles/utils/label.scss?tag=pds-textarea&encapsulation=shadow","src/components/pds-input/pds-input.tokens.scss?tag=pds-textarea&encapsulation=shadow","src/components/pds-textarea/pds-textarea.scss?tag=pds-textarea&encapsulation=shadow","src/components/pds-textarea/pds-textarea.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n:host([aria-disabled=\"true\"]) label {\n color: var(--pine-color-text-label-disabled);\n}\n\n:host([aria-readonly=\"true\"]) {\n label {\n color: var(--pine-color-text-label-readonly);\n }\n}\n\nlabel {\n color: var(--pine-color-text-label);\n font: var(--pine-typography-body-medium);\n letter-spacing: var(--pine-letter-spacing);\n}\n","/**\n * Do not edit directly, this file was auto-generated.\n */\n\n:host {\n --pine-input-color-background-danger: var(--pine-color-red-050);\n}\n",":host {\n\n --box-shadow-focus: 0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);\n --box-shadow-focus-error: 0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring-danger);\n\n display: inline;\n}\n\n:host([aria-readonly=\"true\"]) {\n textarea {\n background-color: var(--pine-color-background-container-disabled);\n color: var(--pine-color-text-readonly);\n }\n}\n\n.pds-textarea {\n display: flex;\n flex-direction: column;\n}\n\nlabel {\n display: block;\n margin-block-end: var(--pine-dimension-xs);\n}\n\n.pds-textarea__field {\n background-color: var(--pine-color-background-container);\n border: var(--pine-border);\n border-radius: calc(var(--pine-dimension-xs) * 1.25);\n font: var(--pine-typography-body);\n letter-spacing: var(--pine-letter-spacing);\n padding: var(--pine-dimension-xs) var(--pine-dimension-sm);\n\n &:hover:not(:disabled, .is-invalid) {\n border: var(--pine-border-hover);\n }\n\n &:disabled {\n background-color: var(--pine-color-background-container-disabled);\n color: var(--pine-color-text-disabled);\n cursor: not-allowed;\n }\n\n &:focus-visible {\n // outline: var(--pine-border-focus); Border radius for outline does not work in Safari\n box-shadow: var(--box-shadow-focus); // Remove when outline radius is supported in Safari\n outline: none;\n }\n\n &::placeholder {\n color: var(--pine-color-text-placeholder);\n }\n\n &.is-invalid {\n background-color: var(--pine-input-color-background-danger);\n border-color: var(--pine-color-border-danger);\n\n &:focus-visible {\n box-shadow: var(--box-shadow-focus-error);\n }\n }\n}\n\n.pds-textarea__error-message,\n.pds-textarea__helper-message {\n font: var(--pine-typography-body-sm-medium);\n margin-block-start: var(--pine-dimension-xs);\n}\n\n.pds-textarea__error-message {\n align-items: center;\n color: var(--pine-color-text-message-danger);\n display: flex;\n gap: var(--pine-dimension-2xs);\n}\n","import { Component, Element, Event, EventEmitter, Host, h, Method, Prop, State, Watch } from '@stencil/core';\nimport { assignDescription, isRequired, messageId } from '../../utils/form';\nimport { TextareaChangeEventDetail, TextareaInputEventDetail } from './textarea-interface';\nimport { debounceEvent } from '@utils/utils';\nimport type { Attributes } from '@utils/attributes';\nimport { inheritAttributes, inheritAriaAttributes } from '@utils/attributes';\nimport { danger } from '@pine-ds/icons/icons';\n\n@Component({\n tag: 'pds-textarea',\n styleUrls: [\n '../../global/styles/utils/label.scss',\n '../pds-input/pds-input.tokens.scss',\n 'pds-textarea.scss'\n ],\n shadow: true,\n})\nexport class PdsTextarea {\n private nativeTextarea?: HTMLTextAreaElement\n private focusedValue?: string | null;\n private inheritedAttributes: Attributes = {};\n private originalPdsInput?: EventEmitter<TextareaInputEventDetail>;\n\n @Element() el: HTMLPdsTextareaElement;\n\n /**\n * Emitted when the input loses focus.\n */\n @Event() pdsBlur!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the input has focus.\n */\n @Event() pdsFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when a keyboard input occurs.\n *\n * For elements that accept text input (`type=text`, `type=tel`, etc.), the interface\n * is [`InputEvent`](https://developer.mozilla.org/en-US/docs/Web/API/InputEvent); for others,\n * the interface is [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event). If\n * the input is cleared on edit, the type is `null`.\n */\n @Event() pdsInput: EventEmitter<TextareaInputEventDetail>;\n\n /**\n * Event emitted whenever the value of the textarea changes.\n *\n * This event will not emit when programmatically setting the `value` property.\n */\n @Event() pdsTextareaChange: EventEmitter<TextareaChangeEventDetail>;\n\n /**\n * Sets focus on the native `textarea` in the `pds-texarea`. Use this method instead of the global\n * `textarea.focus()`.\n */\n @Method()\n async setFocus() {\n if (this.nativeTextarea) {\n this.nativeTextarea.focus();\n }\n }\n\n /**\n * Specifies if and how the browser provides `autocomplete` assistance for the field.\n */\n @Prop() autocomplete: string;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Determines whether or not the textarea is disabled.\n * @defaultValue false\n */\n @Prop() disabled = false;\n\n /**\n * The amount of time, in milliseconds, to wait to trigger the event after each keystroke.\n */\n @Prop() debounce?: number;\n\n /**\n * Displays an error message below the textarea field.\n */\n @Prop() errorMessage?: string;\n\n /**\n * Displays a message or hint below the textarea field.\n */\n @Prop() helperMessage?: string;\n\n /**\n * Determines whether or not the textarea is invalid or throws an error.\n * @defaultValue false\n */\n @Prop({mutable: true}) invalid = false; // eslint-disable-line @stencil-community/strict-mutable\n\n /**\n * Text to be displayed as the textarea label.\n */\n @Prop() label?: string;\n\n /**\n * Specifies the name. Submitted with the form name/value pair. This value will mirror the componentId.\n */\n @Prop() name: string = this.componentId;\n\n /**\n * Specifies a short hint that describes the expected value of the textarea.\n */\n @Prop() placeholder?: string;\n\n /**\n * Determines whether or not the textarea is readonly.\n * @defaultValue false\n */\n @Prop() readonly = false;\n\n /**\n * Determines whether or not the textarea is required.\n * @defaultValue false\n */\n @Prop() required = false;\n\n /**\n * Sets number of rows of text visible without needing to scroll in the textarea.\n */\n @Prop() rows?: number;\n\n /**\n * The value of the textarea.\n */\n @Prop({mutable: true}) value?: string | null = '';\n\n @State() hasFocus = false;\n\n @Watch('debounce')\n protected debounceChanged() {\n const { pdsInput, debounce, originalPdsInput } = this;\n\n this.pdsInput = debounce === undefined ? originalPdsInput ?? pdsInput : debounceEvent(pdsInput, debounce);\n }\n\n /**\n * Update the native input element when the value changes\n */\n @Watch('value')\n protected valueChanged() {\n const nativeTextarea = this.nativeTextarea;\n const value = this.getValue();\n\n if (nativeTextarea && nativeTextarea.value !== value) {\n nativeTextarea.value = value;\n }\n }\n\n /**\n * Emits an `pdsInput` event.\n */\n private emitInputChange(event?: Event) {\n const { value } = this;\n this.pdsInput.emit({ value, event });\n }\n\n /**\n * Emits an `pdsTextareaChange` event.\n */\n private emitValueChange(event?: Event) {\n const textarea = event.target as HTMLTextAreaElement;\n isRequired(textarea, this);\n\n const { value } = textarea;\n\n // Checks for both null and undefined values\n const newValue = value == null ? value : value.toString();\n this.focusedValue = newValue;\n this.pdsTextareaChange.emit({ value: newValue, event });\n }\n\n private getValue(): string {\n return this.value || '';\n }\n\n private onBlur = (ev: FocusEvent) => {\n this.hasFocus = false;\n\n if (this.focusedValue !== this.value) {\n this.emitValueChange(ev);\n }\n\n this.pdsBlur.emit(ev);\n };\n\n private onFocus = (ev: FocusEvent) => {\n this.hasFocus = true;\n this.focusedValue = this.value;\n\n this.pdsFocus.emit(ev);\n };\n\n private onInput = (ev: Event) => {\n const input = ev.target as HTMLTextAreaElement | null;\n if (input) {\n this.value = input.value || '';\n }\n this.emitInputChange(ev);\n };\n\n private onTextareaChange = (ev: Event) => {\n this.emitValueChange(ev);\n };\n\n private textareaClassNames() {\n const classNames = ['pds-textarea__field'];\n\n if (this.invalid && this.invalid === true) {\n classNames.push('is-invalid');\n }\n\n return classNames.join(' ');\n }\n\n connectedCallback() {\n this.debounceChanged();\n }\n\n componentWillLoad() {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el),\n ...inheritAttributes(this.el),\n };\n }\n\n componentDidLoad() {\n this.originalPdsInput = this.pdsInput;\n }\n\n render() {\n const value = this.getValue();\n\n return (\n <Host\n aria-disabled={this.disabled ? 'true' : null}\n aria-readonly={this.readonly ? 'true' : null}\n >\n <div class=\"pds-textarea\">\n {this.label &&\n <label htmlFor={this.componentId}>{this.label}</label>\n }\n <textarea\n ref={(el) => this.nativeTextarea = el }\n aria-describedby={assignDescription(this.componentId, this.invalid, this.helperMessage)}\n aria-invalid={this.invalid ? \"true\" : undefined}\n autocomplete={this.autocomplete}\n class={this.textareaClassNames()}\n disabled={this.disabled}\n id={this.componentId}\n name={this.name}\n placeholder={this.placeholder}\n readOnly={this.readonly}\n required={this.required}\n rows={this.rows}\n onBlur={this.onBlur}\n onChange={this.onTextareaChange}\n onFocus={this.onFocus}\n onInput={this.onInput}\n {...this.inheritedAttributes}\n >\n {value}\n </textarea>\n {this.helperMessage &&\n <p\n class=\"pds-textarea__helper-message\"\n id={messageId(this.componentId, 'helper')}\n >\n {this.helperMessage}\n </p>\n }\n {this.invalid &&\n <p\n aria-live=\"assertive\"\n class=\"pds-textarea__error-message\"\n id={messageId(this.componentId, 'error')}\n >\n <pds-icon icon={danger} size=\"small\" />\n {this.errorMessage}\n </p>\n }\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as a,c as t,h as e,H as i,g as o}from"./p-87fe352f.js";const s='pds-tab{--box-shadow-focus:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);--outline:4px solid var(--pine-color-focus-ring);-ms-flex-align:center;align-items:center;display:-ms-inline-flexbox;display:inline-flex;position:relative}.pds-tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:var(--pine-dimension-none);-webkit-box-shadow:none;box-shadow:none;color:inherit;cursor:pointer;font-family:inherit;padding:var(--pine-dimension-none);-ms-flex-align:center;align-items:center;color:var(--pine-color-text-secondary);display:-ms-inline-flexbox;display:inline-flex;position:relative;text-decoration:none;white-space:nowrap}.pds-tab.is-active,.pds-tab[aria-selected=true]{color:var(--pine-color-text)}.pds-tab.is-active .pds-tab__content::after,.pds-tab[aria-selected=true] .pds-tab__content::after{opacity:1}.pds-tab:hover{color:var(--pine-color-text)}.pds-tab:focus-visible{-webkit-box-shadow:var(--box-shadow-focus);box-shadow:var(--box-shadow-focus);outline:none}.pds-tab .pds-tab__content{font-family:var(--pine-font-family-body);font-size:var(--pine-font-size);font-weight:var(--pine-font-weight-medium);letter-spacing:var(--pine-letter-spacing);line-height:var(--pine-line-height-body);-webkit-padding-after:11px;padding-block-end:11px;position:relative}.pds-tab .pds-tab__content::after{background-color:var(--pine-color-brand);bottom:0;content:"";height:3px;left:0;opacity:0;position:absolute;right:0}.pds-tab .pds-tab-edge{display:none}.pds-tabs--availability{--color-background-tab:transparent}.pds-tabs--availability .pds-tab{background-color:var(--color-background-tab);border-radius:calc(var(--pine-dimension-xs) * 1.25) calc(var(--pine-dimension-xs) * 1.25) var(--pine-dimension-none) var(--pine-dimension-none);padding:8px 16px 13px}.pds-tabs--availability .pds-tab.is-active,.pds-tabs--availability .pds-tab[aria-selected=true]{--color-background-tab:var(--pine-color-secondary)}.pds-tabs--availability .pds-tab.is-active .pds-tab__content::after,.pds-tabs--availability .pds-tab[aria-selected=true] .pds-tab__content::after{opacity:1}.pds-tabs--availability .pds-tab.is-active .pds-tab-edge,.pds-tabs--availability .pds-tab[aria-selected=true] .pds-tab-edge{z-index:1}.pds-tabs--availability .pds-tab:hover:not(.is-active,[aria-selected=true]){--color-background-tab:var(--pine-color-secondary-hover)}.pds-tabs--availability .pds-tab:focus-visible{color:var(--pine-color-text-secondary)}.pds-tabs--availability .pds-tab__content{padding-bottom:7px}.pds-tabs--availability .pds-tab-edge{bottom:0;display:block;height:8px;inset-inline-end:100%;overflow:hidden;position:absolute;width:8px}.pds-tabs--availability .pds-tab-edge::before{border-radius:50%;bottom:0;-webkit-box-shadow:4px 4px 0 0 var(--color-background-tab);box-shadow:4px 4px 0 0 var(--color-background-tab);content:"";display:block;height:200%;inset-inline-end:0;position:absolute;width:200%}.pds-tabs--availability .pds-tab-edge--end{inset-inline-end:unset;inset-inline-start:100%}.pds-tabs--availability .pds-tab-edge--end::before{-webkit-box-shadow:-4px 4px 0 0 var(--color-background-tab);box-shadow:-4px 4px 0 0 var(--color-background-tab);inset-inline-end:unset;inset-inline-start:0}.pds-tabs--filter{--color-background-tab:var(--pine-color-background-container)}.pds-tabs--filter .pds-tab{background-color:var(--color-background-tab);border-radius:50px;color:var(--pine-color-text);padding:6px 15px}.pds-tabs--filter .pds-tab.is-active,.pds-tabs--filter .pds-tab[aria-selected=true]{--color-background-tab:var(--pine-color-primary);color:var(--pine-color-text-primary)}.pds-tabs--filter .pds-tab:hover:not(.is-active,[aria-selected=true]){--color-background-tab:var(--pine-color-background-container-hover)}.pds-tabs--filter .pds-tab__content{-webkit-padding-after:var(--pine-dimension-none);padding-block-end:var(--pine-dimension-none)}.pds-tabs--filter .pds-tab__content::after{content:unset}.pds-tabs--pill{--color-background-tab:transparent}.pds-tabs--pill .pds-tab{background-color:var(--color-background-tab);border:var(--pine-border-width-thin) solid transparent;border-radius:var(--pine-dimension-xs);color:var(--color-text-default);height:34px}.pds-tabs--pill .pds-tab .pds-tab__content{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;min-width:90px;-webkit-padding-after:0;padding-block-end:0}.pds-tabs--pill .pds-tab.is-active,.pds-tabs--pill .pds-tab[aria-selected=true]{--color-background-tab:var(--pine-color-white);border-color:var(--pine-color-border);-webkit-box-shadow:var(--pine-box-shadow-100);box-shadow:var(--pine-box-shadow-100);z-index:1;}.pds-tabs--pill .pds-tab.is-active:focus-visible,.pds-tabs--pill .pds-tab[aria-selected=true]:focus-visible{--box-shadow-focus:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-purple-300);border-color:var(--color-border-focus);-webkit-box-shadow:var(--box-shadow-focus);box-shadow:var(--box-shadow-focus);outline:none}.pds-tabs--pill .pds-tab.is-active .pds-tab__content::after,.pds-tabs--pill .pds-tab[aria-selected=true] .pds-tab__content::after{opacity:0}';const n=s;const d=class{constructor(e){a(this,e);this.pdsTabClick=t(this,"pdsTabClick",7);this.name=undefined;this.parentComponentId=undefined;this.variant=undefined;this.index=undefined;this.selected=false}onTabClick(a,t){this.pdsTabClick.emit([a,t])}render(){const a=e("span",{key:"d98a922aaa1b9a6023830badc391c3d1d615ec6a",class:"pds-tab-edge",role:"presentation"});const t=e("span",{key:"390da28bb3fd9ab1fa2fddda45569e92d4547fa3",class:"pds-tab-edge pds-tab-edge--end",role:"presentation"});return e(i,{key:"5996673486d4bd95f98a691b155529a60655e92f",variant:this.variant,slot:"tabs",index:this.index},e("button",{key:"6eded79f9d5aa9093080933aa9aaa2ad88440759",role:"tab",id:this.parentComponentId+"__"+this.name,"aria-controls":this.parentComponentId+"__"+this.name+"-panel",tabindex:this.selected?"0":"-1","aria-selected":this.selected?"true":"false",class:this.selected?"pds-tab is-active":"pds-tab",onClick:this.onTabClick.bind(this,this.index,this.parentComponentId)},this.variant==="availability"&&a,this.variant==="availability"&&t,e("div",{key:"9f8927d976b6964c22414e9fbb8680b9132370fa",class:"pds-tab__content"},e("slot",{key:"691c6cf5e42bc42c6492276fd5905733c424921c"}))))}get el(){return o(this)}};d.style=n;export{d as pds_tab};
|
|
2
|
+
//# sourceMappingURL=p-03440844.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["pdsTabCss","PdsTabStyle0","PdsTab","onTabClick","index","parentComponentId","this","pdsTabClick","emit","render","availabilityTabEdgeInlineStart","h","key","class","role","availabilityTabEdgeInlineEnd","Host","variant","slot","id","name","tabindex","selected","onClick","bind"],"sources":["src/components/pds-tabs/pds-tab/pds-tab.scss?tag=pds-tab","src/components/pds-tabs/pds-tab/pds-tab.tsx"],"sourcesContent":["pds-tab {\n\n --box-shadow-focus: 0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);\n\n --outline: 4px solid var(--pine-color-focus-ring);\n\n align-items: center;\n display: inline-flex;\n position: relative;\n}\n\n///\n/// Resets base button styles\n///\n@mixin pds-button-style-reset {\n appearance: none;\n background-color: transparent;\n border: var(--pine-dimension-none);\n box-shadow: none;\n color: inherit;\n cursor: pointer;\n font-family: inherit;\n padding: var(--pine-dimension-none);\n}\n\n.pds-tab {\n @include pds-button-style-reset();\n\n align-items: center;\n color: var(--pine-color-text-secondary);\n display: inline-flex;\n position: relative;\n text-decoration: none;\n white-space: nowrap;\n\n &.is-active,\n &[aria-selected='true'] {\n color: var(--pine-color-text);\n\n .pds-tab__content::after {\n opacity: 1;\n }\n }\n\n &:hover {\n color: var(--pine-color-text);\n }\n\n &:focus-visible {\n // outline: var(--pine-border-focus); Border radius for outline does not work in Safari\n box-shadow: var(--box-shadow-focus); // Remove when outline radius is supported in Safari\n outline: none;\n }\n\n .pds-tab__content {\n font-family: var(--pine-font-family-body);\n font-size: var(--pine-font-size);\n font-weight: var(--pine-font-weight-medium);\n letter-spacing: var(--pine-letter-spacing);\n line-height: var(--pine-line-height-body);\n padding-block-end: 11px;\n position: relative;\n\n &::after {\n background-color: var(--pine-color-brand);\n bottom: 0;\n content: '';\n height: 3px;\n left: 0;\n opacity: 0;\n position: absolute;\n right: 0;\n }\n }\n\n .pds-tab-edge {\n display: none;\n }\n}\n\n.pds-tabs--availability {\n --color-background-tab: transparent;\n\n .pds-tab {\n background-color: var(--color-background-tab);\n border-radius: calc(var(--pine-dimension-xs) * 1.25) calc(var(--pine-dimension-xs) * 1.25) var(--pine-dimension-none) var(--pine-dimension-none);\n padding: 8px 16px 13px;\n\n &.is-active,\n &[aria-selected='true'] {\n --color-background-tab: var(--pine-color-secondary);\n\n .pds-tab__content::after {\n opacity: 1;\n }\n\n .pds-tab-edge {\n z-index: 1;\n }\n }\n\n &:hover:not(.is-active, [aria-selected='true']) {\n --color-background-tab: var(--pine-color-secondary-hover);\n }\n\n &:focus-visible {\n color: var(--pine-color-text-secondary);\n }\n }\n\n .pds-tab__content {\n padding-bottom: 7px;\n }\n\n .pds-tab-edge {\n bottom: 0;\n display: block;\n height: 8px;\n inset-inline-end: 100%;\n overflow: hidden;\n position: absolute;\n width: 8px;\n\n &::before {\n border-radius: 50%;\n bottom: 0;\n box-shadow: 4px 4px 0 0 var(--color-background-tab);\n content: '';\n display: block;\n height: 200%;\n inset-inline-end: 0;\n position: absolute;\n width: 200%;\n }\n }\n\n .pds-tab-edge--end {\n inset-inline-end: unset;\n inset-inline-start: 100%;\n\n &::before {\n box-shadow: -4px 4px 0 0 var(--color-background-tab);\n inset-inline-end: unset;\n inset-inline-start: 0;\n }\n }\n}\n\n.pds-tabs--filter {\n --color-background-tab: var(--pine-color-background-container);\n\n .pds-tab {\n background-color: var(--color-background-tab);\n border-radius: 50px;\n color: var(--pine-color-text);\n padding: 6px 15px;\n\n &.is-active,\n &[aria-selected='true'] {\n --color-background-tab: var(--pine-color-primary);\n color: var(--pine-color-text-primary);\n }\n\n &:hover:not(.is-active, [aria-selected='true']) {\n --color-background-tab: var(--pine-color-background-container-hover);\n }\n }\n\n .pds-tab__content {\n padding-block-end: var(--pine-dimension-none);\n\n &::after {\n content: unset;\n }\n }\n}\n\n.pds-tabs--pill {\n --color-background-tab: transparent;\n\n .pds-tab {\n background-color: var(--color-background-tab);\n border: var(--pine-border-width-thin) solid transparent;\n border-radius: var(--pine-dimension-xs);\n color: var(--color-text-default);\n height: 34px;\n\n .pds-tab__content {\n align-items: center;\n display: flex;\n justify-content: center;\n min-width: 90px;\n padding-block-end: 0;\n }\n\n &.is-active,\n &[aria-selected='true'] {\n --color-background-tab: var(--pine-color-white);\n border-color: var(--pine-color-border);\n box-shadow: var(--pine-box-shadow-100);\n z-index: 1;\n\n &:focus-visible {\n --box-shadow-focus: 0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-purple-300);\n border-color: var(--color-border-focus);\n // outline: var(--pine-border-focus); Border radius for outline does not work in Safari\n box-shadow: var(--box-shadow-focus); // Remove when outline radius is supported in Safari\n outline: none;\n }\n\n /* stylelint-disable max-nesting-depth */\n .pds-tab__content {\n &::after {\n opacity: 0;\n }\n }\n /* stylelint-enable max-nesting-depth */\n }\n }\n}\n","import { Component, Element, Host, h, Prop, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'pds-tab',\n styleUrl: 'pds-tab.scss',\n shadow: false,\n})\nexport class PdsTab {\n @Element() el: HTMLPdsTabElement;\n\n /**\n * Sets the related tab name, this name must match a `pds-tabpanel`'s tab name property\n */\n @Prop() name!: string;\n\n /**\n * Keeps track of the parentComponentId unique id, this property is passed by parent component\n */\n /** @internal */\n @Prop() parentComponentId: string;\n\n /**\n * Keeps track of if the expected tab variant, this property is passed by parent component\n */\n /** @internal */\n @Prop() variant: string;\n\n /**\n * Keeps track of if the tab index number, this property is passed by parent component\n */\n /** @internal */\n @Prop() index: number;\n\n /**\n * Keeps track of the tabpanel selected state, this property is passed by parent component\n */\n /** @internal */\n @Prop() selected = false;\n\n /**\n * Emits an event upon tab click for `pds-tab` and `pds-tabpanel` to listen for\n */\n /** @internal */\n @Event() pdsTabClick: EventEmitter<object>;\n private onTabClick(index, parentComponentId) {\n this.pdsTabClick.emit([index, parentComponentId]);\n }\n\n render() {\n const availabilityTabEdgeInlineStart = (\n <span class=\"pds-tab-edge\" role=\"presentation\"></span>\n )\n\n const availabilityTabEdgeInlineEnd = (\n <span class=\"pds-tab-edge pds-tab-edge--end\" role=\"presentation\"></span>\n )\n\n return (\n <Host variant={this.variant} slot=\"tabs\" index={this.index}>\n <button\n role=\"tab\"\n id={this.parentComponentId + \"__\" + this.name}\n aria-controls={this.parentComponentId + \"__\" + this.name + \"-panel\"}\n tabindex={this.selected ? \"0\" : \"-1\"}\n aria-selected={this.selected ? \"true\" : \"false\"}\n class={this.selected ? \"pds-tab is-active\" : \"pds-tab\"}\n onClick={this.onTabClick.bind(this, this.index, this.parentComponentId)}\n >\n {this.variant === \"availability\" && availabilityTabEdgeInlineStart}\n {this.variant === \"availability\" && availabilityTabEdgeInlineEnd}\n <div class=\"pds-tab__content\"><slot/></div>\n </button>\n </Host>\n );\n }\n}\n"],"mappings":"gEAAA,MAAMA,EAAY,ghKAClB,MAAAC,EAAeD,E,MCMFE,EAAM,M,iLA8BE,K,CAOX,UAAAC,CAAWC,EAAOC,GACxBC,KAAKC,YAAYC,KAAK,CAACJ,EAAOC,G,CAGhC,MAAAI,GACE,MAAMC,EACJC,EAAA,QAAAC,IAAA,2CAAMC,MAAM,eAAeC,KAAK,iBAGlC,MAAMC,EACJJ,EAAA,QAAAC,IAAA,2CAAMC,MAAM,iCAAiCC,KAAK,iBAGpD,OACEH,EAACK,EAAI,CAAAJ,IAAA,2CAACK,QAASX,KAAKW,QAASC,KAAK,OAAOd,MAAOE,KAAKF,OACnDO,EAAA,UAAAC,IAAA,2CACEE,KAAK,MACLK,GAAIb,KAAKD,kBAAoB,KAAOC,KAAKc,KAAI,gBAC9Bd,KAAKD,kBAAoB,KAAOC,KAAKc,KAAO,SAC3DC,SAAUf,KAAKgB,SAAW,IAAM,KAAI,gBACrBhB,KAAKgB,SAAW,OAAS,QACxCT,MAAOP,KAAKgB,SAAW,oBAAsB,UAC7CC,QAASjB,KAAKH,WAAWqB,KAAKlB,KAAMA,KAAKF,MAAOE,KAAKD,oBAEpDC,KAAKW,UAAY,gBAAkBP,EACnCJ,KAAKW,UAAY,gBAAkBF,EACpCJ,EAAA,OAAAC,IAAA,2CAAKC,MAAM,oBAAmBF,EAAA,QAAAC,IAAA,+C","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
System.register(["./p-45cf2585.system.js","./p-017e1978.system.js","./p-5480346a.system.js"],(function(o){"use strict";var r,e,n,a,i,t,d;return{setters:[function(o){r=o.r;e=o.c;n=o.h;a=o.H;i=o.g},function(o){t=o.h},function(o){d=o.f}],execute:function(){var c=":host{--color-border-default:transparent;--color-border-disabled:transparent;--color-border-focus:transparent;--color-border-hover:transparent;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.pds-button{-ms-flex-align:center;align-items:center;background-color:var(--color-background-default);border:var(--pine-border);border-color:var(--color-border-default);border-radius:var(--pine-border-radius-full);color:var(--color-text-default);cursor:pointer;display:-ms-flexbox;display:flex;font:var(--pine-typography-body-brand-label);letter-spacing:var(--pine-letter-spacing);min-height:40px;padding:var(--pine-dimension-xs) var(--pine-dimension-sm)}.pds-button pds-icon{color:currentColor;fill:currentColor;-webkit-margin-end:var(--pine-dimension-xs);margin-inline-end:var(--pine-dimension-xs)}.pds-button:hover{background-color:var(--color-background-hover);border-color:var(--color-border-hover)}.pds-button:focus-visible{--box-shadow-focus:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);border-color:var(--color-border-focus);-webkit-box-shadow:var(--box-shadow-focus);box-shadow:var(--box-shadow-focus);outline:none}.pds-button:disabled{background-color:var(--color-background-disabled);border-color:var(--color-border-disabled);color:var(--color-text-disabled);pointer-events:none}.pds-button--primary{--color-background-default:var(--pine-color-primary);--color-background-hover:var(--pine-color-primary-hover);--color-background-disabled:var(--pine-color-primary-disabled);--color-border-default:var(--pine-color-primary);--color-border-hover:var(--pine-color-primary-hover);--color-text-default:var(--pine-color-text-primary);--color-text-disabled:var(--pine-color-text-primary-disabled);--color-outline:var(--pine-color-focus-ring)}.pds-button--accent{--color-background-default:var(--pine-color-accent);--color-background-hover:var(--pine-color-accent-hover);--color-background-disabled:var(--pine-color-accent-disabled);--color-border-default:var(--pine-color-accent);--color-border-hover:var(--pine-color-accent-hover);--color-text-default:var(--pine-color-text-primary);--color-text-disabled:var(--pine-color-text-accent-disabled);--color-outline:var(--pine-color-focus-ring)}.pds-button--destructive{--color-background-default:var(--pine-color-danger);--color-background-hover:var(--pine-color-danger-hover);--color-background-disabled:var(--pine-color-danger-disabled);--color-border-default:var(--pine-color-danger);--color-border-hover:var(--pine-color-danger-hover);--color-text-default:var(--pine-color-text-primary);--color-text-disabled:var(--pine-color-text-danger-disabled);--color-outline:var(--pine-color-focus-ring-danger)}.pds-button--destructive:focus-visible{--box-shadow-focus:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-danger);-webkit-box-shadow:var(--box-shadow-focus);box-shadow:var(--box-shadow-focus);outline:none}.pds-button--secondary,.pds-button--disclosure{--color-background-default:transparent;--color-background-hover:transparent;--color-background-disabled:transparent;--color-border-disabled:var(--pine-color-border-disabled);--color-border-focus:var(--pine-color-border);--color-border-hover:var(--pine-color-border-hover);--color-border-default:var(--pine-color-border);--color-text-default:var(--pine-color-text-secondary);--color-text-disabled:var(--pine-color-text-secondary-disabled);--color-outline:var(--pine-color-focus-ring)}.pds-button--secondary:hover,.pds-button--disclosure:hover{background-color:var(--pine-color-secondary-hover)}.pds-button--disclosure pds-icon{-webkit-margin-end:var(--pine-dimension-none);margin-inline-end:var(--pine-dimension-none);-webkit-margin-start:var(--pine-dimension-xs);margin-inline-start:var(--pine-dimension-xs)}.pds-button--unstyled{--color-background-default:transparent;--color-background-hover:transparent;--color-background-disabled:transparent;--color-text-default:inherit;border-width:var(--pine-dimension-none);margin:var(--pine-dimension-none);min-height:auto;padding:var(--pine-dimension-none);width:inherit}";var l=c;var s=o("pds_button",function(){function o(o){var n=this;r(this,o);this.pdsClick=e(this,"pdsClick",7);this.handleClick=function(o){if(n.type!="button"){if(t(n.el)){var r=n.el.closest("form");if(r){o.preventDefault();var e=document.createElement("button");e.type=n.type;e.style.display="none";r.appendChild(e);e.click();e.remove()}}}n.pdsClick.emit(o)};this.componentId=undefined;this.disabled=false;this.icon=null;this.name=undefined;this.value=undefined;this.type="button";this.variant="primary"}o.prototype.classNames=function(){var o=["pds-button"];if(this.variant){o.push("pds-button--"+this.variant)}return o.join(" ")};o.prototype.render=function(){return n(a,{key:"09f73346a0de854613bb43e81a9099c2e3783ec0","aria-disabled":this.disabled?"true":null,id:this.componentId,onClick:this.handleClick,variant:this.variant},n("button",{key:"e02d07f103692dfdf0f40c4ef0659674d92b701a",class:this.classNames(),disabled:this.disabled,name:this.name,part:"button",type:this.type,value:this.value},this.icon&&this.variant!=="disclosure"&&n("pds-icon",{key:"642e6890c4d6cdbbe129af1ef3532fcd5c4a7925",name:this.icon,part:"icon"}),n("slot",{key:"58e95d868055a2723657a757a3c49cbb7989d912"}),this.variant==="disclosure"&&n("pds-icon",{key:"81d4456cb62d77056f93e60091215347ac743134",icon:d,part:"caret"})))};Object.defineProperty(o.prototype,"el",{get:function(){return i(this)},enumerable:false,configurable:true});return o}());s.style=l}}}));
|
|
2
|
+
//# sourceMappingURL=p-27e12bd2.system.entry.js.map
|