scu-web-components 0.0.21 → 0.0.22
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/dist/chunks/chunk.2SWJYWHF.js +4 -0
- package/dist/chunks/chunk.2SWJYWHF.js.map +7 -0
- package/dist/chunks/chunk.3FBPDSVX.js +246 -0
- package/dist/chunks/chunk.3FBPDSVX.js.map +7 -0
- package/dist/chunks/chunk.3ZF5XE56.js +2 -0
- package/dist/chunks/chunk.3ZF5XE56.js.map +7 -0
- package/dist/chunks/chunk.5B2MVQ27.js +2 -0
- package/dist/chunks/chunk.5B2MVQ27.js.map +7 -0
- package/dist/chunks/chunk.5O57EYF4.js +2 -0
- package/dist/chunks/chunk.5O57EYF4.js.map +7 -0
- package/dist/chunks/chunk.5P5RU7GD.js +2 -0
- package/dist/chunks/chunk.5P5RU7GD.js.map +7 -0
- package/dist/chunks/chunk.5SNSWZHO.js +2 -0
- package/dist/chunks/chunk.5SNSWZHO.js.map +7 -0
- package/dist/chunks/chunk.62GWBO3B.js +2 -0
- package/dist/chunks/chunk.62GWBO3B.js.map +7 -0
- package/dist/chunks/chunk.6JEOFLOD.js +2 -0
- package/dist/chunks/chunk.6JEOFLOD.js.map +7 -0
- package/dist/chunks/chunk.6JZBSBO7.js +2 -0
- package/dist/chunks/chunk.6JZBSBO7.js.map +7 -0
- package/dist/chunks/chunk.75XREEIK.js +58 -0
- package/dist/chunks/chunk.75XREEIK.js.map +7 -0
- package/dist/chunks/chunk.7CJJ52HY.js +2 -0
- package/dist/chunks/chunk.7CJJ52HY.js.map +7 -0
- package/dist/chunks/chunk.7RDBE3IG.js +2 -0
- package/dist/chunks/chunk.7RDBE3IG.js.map +7 -0
- package/dist/chunks/chunk.7VW267FJ.js +17 -0
- package/dist/chunks/chunk.7VW267FJ.js.map +7 -0
- package/dist/chunks/chunk.7Z2IEKUA.js +17 -0
- package/dist/chunks/chunk.7Z2IEKUA.js.map +7 -0
- package/dist/chunks/chunk.ACJT3GFX.js +17 -0
- package/dist/chunks/chunk.ACJT3GFX.js.map +7 -0
- package/dist/chunks/chunk.B63G34N3.js +2 -0
- package/dist/chunks/chunk.B63G34N3.js.map +7 -0
- package/dist/chunks/chunk.BXOGDFND.js +17 -0
- package/dist/chunks/chunk.BXOGDFND.js.map +7 -0
- package/dist/chunks/chunk.DCCR6AGA.js +4 -0
- package/dist/chunks/chunk.DCCR6AGA.js.map +7 -0
- package/dist/chunks/chunk.DTU7NHQP.js +2 -0
- package/dist/chunks/chunk.DTU7NHQP.js.map +7 -0
- package/dist/chunks/chunk.EXCY4PGS.js +2 -0
- package/dist/chunks/chunk.EXCY4PGS.js.map +7 -0
- package/dist/chunks/chunk.F7TA5BBQ.js +4 -0
- package/dist/chunks/chunk.F7TA5BBQ.js.map +7 -0
- package/dist/chunks/chunk.HLMRJM7V.js +47 -0
- package/dist/chunks/chunk.HLMRJM7V.js.map +7 -0
- package/dist/chunks/chunk.IAALPGL2.js +2 -0
- package/dist/chunks/chunk.IAALPGL2.js.map +7 -0
- package/dist/chunks/chunk.KLCHR5KI.js +2 -0
- package/dist/chunks/chunk.KLCHR5KI.js.map +7 -0
- package/dist/chunks/chunk.KLH46EZA.js +2 -0
- package/dist/chunks/chunk.KLH46EZA.js.map +7 -0
- package/dist/chunks/chunk.L6NJJXH5.js +2 -0
- package/dist/chunks/chunk.L6NJJXH5.js.map +7 -0
- package/dist/chunks/chunk.LAQTQIRZ.js +2 -0
- package/dist/chunks/chunk.LAQTQIRZ.js.map +7 -0
- package/dist/chunks/chunk.MBVU2OPU.js +4 -0
- package/dist/chunks/chunk.MBVU2OPU.js.map +7 -0
- package/dist/chunks/chunk.MGZVQJ3S.js +245 -0
- package/dist/chunks/chunk.MGZVQJ3S.js.map +7 -0
- package/dist/chunks/chunk.MLENW6F3.js +246 -0
- package/dist/chunks/chunk.MLENW6F3.js.map +7 -0
- package/dist/chunks/chunk.O5A7YZKV.js +29 -0
- package/dist/chunks/chunk.O5A7YZKV.js.map +7 -0
- package/dist/chunks/chunk.O6N6AMBN.js +209 -0
- package/dist/chunks/chunk.O6N6AMBN.js.map +7 -0
- package/dist/chunks/chunk.PXGXIL4I.js +246 -0
- package/dist/chunks/chunk.PXGXIL4I.js.map +7 -0
- package/dist/chunks/chunk.QXE7UNSK.js +245 -0
- package/dist/chunks/chunk.QXE7UNSK.js.map +7 -0
- package/dist/chunks/chunk.R4YGOT4Y.js +49 -0
- package/dist/chunks/chunk.R4YGOT4Y.js.map +7 -0
- package/dist/chunks/chunk.RBSBLP6E.js +256 -0
- package/dist/chunks/chunk.RBSBLP6E.js.map +7 -0
- package/dist/chunks/chunk.RXMGI7HR.js +2 -0
- package/dist/chunks/chunk.RXMGI7HR.js.map +7 -0
- package/dist/chunks/chunk.S4MESEBR.js +32 -0
- package/dist/chunks/chunk.S4MESEBR.js.map +7 -0
- package/dist/chunks/chunk.SIJSFRVB.js +2 -0
- package/dist/chunks/chunk.SIJSFRVB.js.map +7 -0
- package/dist/chunks/chunk.TXOGG2T7.js +2 -0
- package/dist/chunks/chunk.TXOGG2T7.js.map +7 -0
- package/dist/chunks/chunk.UVVG6NF4.js +2 -0
- package/dist/chunks/chunk.UVVG6NF4.js.map +7 -0
- package/dist/chunks/chunk.W3ITQHQQ.js +245 -0
- package/dist/chunks/chunk.W3ITQHQQ.js.map +7 -0
- package/dist/chunks/chunk.WPOS6KBC.js +2 -0
- package/dist/chunks/chunk.WPOS6KBC.js.map +7 -0
- package/dist/chunks/chunk.WSDDWC5Y.js +47 -0
- package/dist/chunks/chunk.WSDDWC5Y.js.map +7 -0
- package/dist/chunks/chunk.YPWTNS7G.js +17 -0
- package/dist/chunks/chunk.YPWTNS7G.js.map +7 -0
- package/dist/chunks/chunk.YXBLJ773.js +4 -0
- package/dist/chunks/chunk.YXBLJ773.js.map +7 -0
- package/dist/chunks/chunk.Z3OBLET2.js +2 -0
- package/dist/chunks/chunk.Z3OBLET2.js.map +7 -0
- package/dist/chunks/chunk.ZKGK7XFD.js +117 -0
- package/dist/chunks/chunk.ZKGK7XFD.js.map +7 -0
- package/dist/chunks/chunk.ZKH7NVYV.js +17 -0
- package/dist/chunks/chunk.ZKH7NVYV.js.map +7 -0
- package/dist/chunks/chunk.ZWJHKP3F.js +4 -0
- package/dist/chunks/chunk.ZWJHKP3F.js.map +7 -0
- package/dist/custom-elements.json +187 -132
- package/dist/docs/components/ScwCard.json +19 -0
- package/dist/docs/components/ScwImage.json +46 -10
- package/dist/docs/components/manifest.json +78 -78
- package/dist/docs/config.json +1 -1
- package/dist/scw-alert/ScwAlert.js +1 -1
- package/dist/scw-alert/scw-alert.js +1 -1
- package/dist/scw-button/ScwButton.js +1 -1
- package/dist/scw-button/scw-button.js +1 -1
- package/dist/scw-card/ScwCard.js +1 -1
- package/dist/scw-card/scw-card.js +1 -1
- package/dist/scw-components.js +1 -1
- package/dist/scw-form-component/scw-form-component.js +1 -1
- package/dist/scw-heading/ScwHeading.js +1 -1
- package/dist/scw-heading/scw-heading.js +1 -1
- package/dist/scw-icon/ScwIcon.js +1 -1
- package/dist/scw-icon/scw-icon.js +1 -1
- package/dist/scw-image/ScwImage.js +1 -1
- package/dist/scw-image/scw-image-validate.js +1 -1
- package/dist/scw-image/scw-image.js +1 -1
- package/dist/scw-input/scw-input.js +1 -1
- package/dist/scw-link/ScwLink.js +1 -1
- package/dist/scw-link/scw-link.js +1 -1
- package/dist/scw-link-base/ScwLinkBase.js +1 -1
- package/dist/scw-link-base/scw-link-base.js +1 -1
- package/dist/scw-menu-item/ScwMenuItem.js +1 -1
- package/dist/scw-menu-item/scw-menu-item.js +1 -1
- package/dist/scw-page-alert/scw-page-alert.js +1 -1
- package/dist/scw-select/scw-select.js +1 -1
- package/dist/scw-single-input/scw-single-input.js +1 -1
- package/dist/scw-textarea/scw-textarea.js +1 -1
- package/dist/scw.js +1 -1
- package/dist/utils/suffix.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/scw-form-component/scw-form-component.ts"],
|
|
4
|
+
"sourcesContent": ["import {html} from 'lit';\nimport {property, state} from 'lit/decorators.js';\nimport ScwComponent from '../scw-component/ScwComponent';\nimport {Components} from '../utils/enums/Components';\nimport ScwValidate from '../scw-validate/scw-validate';\nimport ScwValidation from '../scw-validation/scw-validation';\nimport {ValidationResult, ValidationTypes}\n from '../scw-validate/validationTypes';\nimport getSuffix from '../utils/suffix';\n\nexport enum ScwFormComponentTypes {\n text = 'text',\n boolean = 'boolean',\n submit = 'submit'\n}\n\nexport enum ScwFormComponentSubmitTypes {\n submit = 'submit',\n cancel = 'cancel'\n}\n\n/**\n * ScwFormComponent\n * @class\n * @tag scw-form-component\n */\nexport default class ScwFormComponent extends ScwComponent {\n // ============== ScwFormComponent ===========================================\n /** (ScwFormComponent) the usage in a form (& scw-form a query target) */\n @property({\n type: ScwFormComponentTypes,\n reflect: true,\n attribute: 'form-type',\n })\n formType: ScwFormComponentTypes = ScwFormComponentTypes.text;\n\n /** (ScwFormComponent) name to identify form element and attach data */\n @property({type: String})\n name: string | undefined;\n\n /** (ScwFormComponent) name to identify form element and attach data */\n @property({type: String})\n value: string = '';\n\n /** (ScwFormComponent) text showing when there is no value */\n @property({type: String})\n placeholder: string = '';\n\n /** (ScwFormComponent) name to identify form element and attach data */\n @property({type: String})\n selected: boolean = false;\n\n /** (ScwFormComponent) read-only state management */\n @property({type: Boolean, attribute: 'read-only'})\n readOnly: boolean = false;\n\n /** (ScwFormComponent) required state management */\n @property({type: Boolean})\n required: boolean = false;\n\n /** (ScwFormComponent) label indicator for required */\n @property({type: String, attribute: 'required-label'})\n requiredLabel: string = ' *';\n\n /** (ScwFormComponent) label indicator for required */\n @property({type: String, attribute: 'required-feedback'})\n requiredFeedback?: string;\n\n // ===== STATE ===============================================================\n /** the text to use for feedback */\n @state() feedback: string | undefined;\n\n /** determines whether the input is focused or not */\n @state() focused : boolean = false;\n\n /** whether this form element is valid, passed validation */\n @state() invalid: boolean = false;\n\n /** connectedCallback */\n connectedCallback(): void {\n super.connectedCallback();\n if (this.required) {\n this.createAndAddValidationRule(\n ValidationTypes.required,\n this.requiredFeedback,\n );\n }\n }\n\n /** (ScwFormComponent) each form element to decorates the final data object\n * @param {Object} formData\n */\n decorateValues(formData: {}): void {\n if (!this.name) {\n this.warn(`${this.element} didn't find a name`);\n return;\n }\n if (this.formType === ScwFormComponentTypes.boolean) {\n formData[this.name] = this.selected;// ? 'true' : 'false';\n } else {\n formData[this.name] = this.value;\n }\n }\n\n /**\n * Check to see if form element is required w/o knowing if there is validation\n * @return {boolean}\n */\n findIfRequired() : boolean {\n const rules = this.findValidationRules();\n if (rules) {\n return rules.isRequired();\n }\n return false;\n }\n\n /**\n * Find validation child if there...\n * @return {ScwValidation | undefined}\n */\n findValidationRules() : ScwValidation | undefined {\n const childrenArr = Array.from(this.children);\n const validation = childrenArr.find((child: any) => {\n // component may not be initialized yet...\n return child.nodeName.indexOf('SCW-VALIDATION') === 0;\n // return child.element === Components.validation;\n });\n return validation as unknown as ScwValidation;\n }\n\n /**\n * run the validation rules if there...\n * @param {string} value\n * @return {ValidationResult[]}\n */\n validate() : ValidationResult[] {\n const validation = this.findValidationRules();\n let results : ValidationResult[] = [];\n if (validation) {\n results = validation.validate(this.value);\n }\n this.invalid = ( results.length > 0);\n if (this.invalid ) {\n this.feedback = results[0].feedback;\n } else {\n this.feedback = '';\n }\n return results;\n }\n\n\n /**\n * create a validation rule from scratch\n * @return {ScwValidate}\n */\n createValidateRule() : ScwValidate {\n return document.createElement(\n `scw-${Components.validate}${getSuffix()}`,\n ) as unknown as ScwValidate;\n }\n\n /**\n * add validation to to child validation (create if not there)\n * @param {ScwValidate} rule\n */\n addValidationRule(rule: ScwValidate ) {\n let validationRules = this.findValidationRules();\n if (!validationRules) {\n validationRules = document.createElement(\n `scw-${Components.validation}${getSuffix()}`,\n ) as unknown as ScwValidation;\n this.prepend( validationRules );\n }\n // Check for dups?\n const children = Array.from(validationRules.children);\n const existingRule = children.find((child : any) => {\n return child.getAttribute('type') === rule.type;\n });\n if ( !existingRule ) {\n validationRules.appendChild(rule);\n }\n }\n\n /**\n * create a validation of a certain type...\n * @param {ValidationTypes} type\n * @param {string} feedbackOverride\n */\n createAndAddValidationRule(\n type: ValidationTypes,\n feedbackOverride?: string,\n ) {\n const rule = this.createValidateRule();\n rule.setAttribute('type', type );// .type = type;\n if (feedbackOverride) {\n rule.setAttribute('feedback', feedbackOverride );\n }\n this.addValidationRule( rule );\n }\n\n /**\n *\n * @param {ValidationTypes} type\n */\n removeValidationRule(\n type: ValidationTypes,\n ) {\n const validationRules = this.findValidationRules();\n if (!validationRules) return;\n const children = Array.from(validationRules.children);\n const child = children.find(\n (child : any) => child.type === type,\n ) as unknown as HTMLElement;\n if ( child && child.parentNode ) child.parentNode.removeChild(child);\n }\n\n /**\n * render\n * @return {object} component DOM\n */\n render(): object {\n return html`\n scw-form-component\n `;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{a as u}from"./chunk.RXMGI7HR.js";import{b as n,c as r,e as f}from"./chunk.HCMPRDIX.js";import{a as o}from"./chunk.ZS4C3T6Z.js";import{g as a}from"./chunk.5YJY6NT6.js";var c=(e=>(e.text="text",e.boolean="boolean",e.submit="submit",e))(c||{}),h=(i=>(i.submit="submit",i.cancel="cancel",i))(h||{}),t=class extends f{constructor(){super(...arguments);this.formType="text";this.value="";this.placeholder="";this.selected=!1;this.readOnly=!1;this.required=!1;this.requiredLabel=" *";this.focused=!1;this.invalid=!1}connectedCallback(){super.connectedCallback(),this.required&&this.createAndAddValidationRule("required",this.requiredFeedback)}decorateValues(i){if(!this.name){this.warn(`${this.element} didn't find a name`);return}this.formType==="boolean"?i[this.name]=this.selected:i[this.name]=this.value}findIfRequired(){let i=this.findValidationRules();return i?i.isRequired():!1}findValidationRules(){return Array.from(this.children).find(l=>l.nodeName.indexOf("SCW-VALIDATION")===0)}validate(){let i=this.findValidationRules(),e=[];return i&&(e=i.validate(this.value)),this.invalid=e.length>0,this.invalid?this.feedback=e[0].feedback:this.feedback="",e}createValidateRule(){return document.createElement(`scw-${"validate"}${u()}`)}addValidationRule(i){let e=this.findValidationRules();e||(e=document.createElement(`scw-${"validation"}${u()}`),this.prepend(e)),Array.from(e.children).find(s=>s.getAttribute("type")===i.type)||e.appendChild(i)}createAndAddValidationRule(i,e){let l=this.createValidateRule();l.setAttribute("type",i),e&&l.setAttribute("feedback",e),this.addValidationRule(l)}removeValidationRule(i){let e=this.findValidationRules();if(!e)return;let d=Array.from(e.children).find(s=>s.type===i);d&&d.parentNode&&d.parentNode.removeChild(d)}render(){return o`
|
|
2
|
+
scw-form-component
|
|
3
|
+
`}};a([n({type:c,reflect:!0,attribute:"form-type"})],t.prototype,"formType",2),a([n({type:String})],t.prototype,"name",2),a([n({type:String})],t.prototype,"value",2),a([n({type:String})],t.prototype,"placeholder",2),a([n({type:String})],t.prototype,"selected",2),a([n({type:Boolean,attribute:"read-only"})],t.prototype,"readOnly",2),a([n({type:Boolean})],t.prototype,"required",2),a([n({type:String,attribute:"required-label"})],t.prototype,"requiredLabel",2),a([n({type:String,attribute:"required-feedback"})],t.prototype,"requiredFeedback",2),a([r()],t.prototype,"feedback",2),a([r()],t.prototype,"focused",2),a([r()],t.prototype,"invalid",2);export{c as a,h as b,t as c};
|
|
4
|
+
//# sourceMappingURL=chunk.F7TA5BBQ.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/scw-form-component/scw-form-component.ts"],
|
|
4
|
+
"sourcesContent": ["import {html} from 'lit';\nimport {property, state} from 'lit/decorators.js';\nimport ScwComponent from '../scw-component/ScwComponent';\nimport {Components} from '../utils/enums/Components';\nimport ScwValidate from '../scw-validate/scw-validate';\nimport ScwValidation from '../scw-validation/scw-validation';\nimport {ValidationResult, ValidationTypes}\n from '../scw-validate/validationTypes';\nimport getSuffix from '../utils/suffix';\n\nexport enum ScwFormComponentTypes {\n text = 'text',\n boolean = 'boolean',\n submit = 'submit'\n}\n\nexport enum ScwFormComponentSubmitTypes {\n submit = 'submit',\n cancel = 'cancel'\n}\n\n/**\n * ScwFormComponent\n * @class\n * @tag scw-form-component\n */\nexport default class ScwFormComponent extends ScwComponent {\n // ============== ScwFormComponent ===========================================\n /** (ScwFormComponent) the usage in a form (& scw-form a query target) */\n @property({\n type: ScwFormComponentTypes,\n reflect: true,\n attribute: 'form-type',\n })\n formType: ScwFormComponentTypes = ScwFormComponentTypes.text;\n\n /** (ScwFormComponent) name to identify form element and attach data */\n @property({type: String})\n name: string | undefined;\n\n /** (ScwFormComponent) name to identify form element and attach data */\n @property({type: String})\n value: string = '';\n\n /** (ScwFormComponent) text showing when there is no value */\n @property({type: String})\n placeholder: string = '';\n\n /** (ScwFormComponent) name to identify form element and attach data */\n @property({type: String})\n selected: boolean = false;\n\n /** (ScwFormComponent) read-only state management */\n @property({type: Boolean, attribute: 'read-only'})\n readOnly: boolean = false;\n\n /** (ScwFormComponent) required state management */\n @property({type: Boolean})\n required: boolean = false;\n\n /** (ScwFormComponent) label indicator for required */\n @property({type: String, attribute: 'required-label'})\n requiredLabel: string = ' *';\n\n /** (ScwFormComponent) label indicator for required */\n @property({type: String, attribute: 'required-feedback'})\n requiredFeedback?: string;\n\n // ===== STATE ===============================================================\n /** the text to use for feedback */\n @state() feedback: string | undefined;\n\n /** determines whether the input is focused or not */\n @state() focused : boolean = false;\n\n /** whether this form element is valid, passed validation */\n @state() invalid: boolean = false;\n\n /** connectedCallback */\n connectedCallback(): void {\n super.connectedCallback();\n if (this.required) {\n this.createAndAddValidationRule(\n ValidationTypes.required,\n this.requiredFeedback,\n );\n }\n }\n\n /** (ScwFormComponent) each form element to decorates the final data object\n * @param {Object} formData\n */\n decorateValues(formData: {}): void {\n if (!this.name) {\n this.warn(`${this.element} didn't find a name`);\n return;\n }\n if (this.formType === ScwFormComponentTypes.boolean) {\n formData[this.name] = this.selected;// ? 'true' : 'false';\n } else {\n formData[this.name] = this.value;\n }\n }\n\n /**\n * Check to see if form element is required w/o knowing if there is validation\n * @return {boolean}\n */\n findIfRequired() : boolean {\n const rules = this.findValidationRules();\n if (rules) {\n return rules.isRequired();\n }\n return false;\n }\n\n /**\n * Find validation child if there...\n * @return {ScwValidation | undefined}\n */\n findValidationRules() : ScwValidation | undefined {\n const childrenArr = Array.from(this.children);\n const validation = childrenArr.find((child: any) => {\n // component may not be initialized yet...\n return child.nodeName.indexOf('SCW-VALIDATION') === 0;\n // return child.element === Components.validation;\n });\n return validation as unknown as ScwValidation;\n }\n\n /**\n * run the validation rules if there...\n * @param {string} value\n * @return {ValidationResult[]}\n */\n validate() : ValidationResult[] {\n const validation = this.findValidationRules();\n let results : ValidationResult[] = [];\n if (validation) {\n results = validation.validate(this.value);\n }\n this.invalid = ( results.length > 0);\n if (this.invalid ) {\n this.feedback = results[0].feedback;\n } else {\n this.feedback = '';\n }\n return results;\n }\n\n\n /**\n * create a validation rule from scratch\n * @return {ScwValidate}\n */\n createValidateRule() : ScwValidate {\n return document.createElement(\n `scw-${Components.validate}${getSuffix()}`,\n ) as unknown as ScwValidate;\n }\n\n /**\n * add validation to to child validation (create if not there)\n * @param {ScwValidate} rule\n */\n addValidationRule(rule: ScwValidate ) {\n let validationRules = this.findValidationRules();\n if (!validationRules) {\n validationRules = document.createElement(\n `scw-${Components.validation}${getSuffix()}`,\n ) as unknown as ScwValidation;\n this.prepend( validationRules );\n }\n // Check for dups?\n const children = Array.from(validationRules.children);\n const existingRule = children.find((child : any) => {\n return child.getAttribute('type') === rule.type;\n });\n if ( !existingRule ) {\n validationRules.appendChild(rule);\n }\n }\n\n /**\n * create a validation of a certain type...\n * @param {ValidationTypes} type\n * @param {string} feedbackOverride\n */\n createAndAddValidationRule(\n type: ValidationTypes,\n feedbackOverride?: string,\n ) {\n const rule = this.createValidateRule();\n rule.setAttribute('type', type );// .type = type;\n if (feedbackOverride) {\n rule.setAttribute('feedback', feedbackOverride );\n }\n this.addValidationRule( rule );\n }\n\n /**\n *\n * @param {ValidationTypes} type\n */\n removeValidationRule(\n type: ValidationTypes,\n ) {\n const validationRules = this.findValidationRules();\n if (!validationRules) return;\n const children = Array.from(validationRules.children);\n const child = children.find(\n (child : any) => child.type === type,\n ) as unknown as HTMLElement;\n if ( child && child.parentNode ) child.parentNode.removeChild(child);\n }\n\n /**\n * render\n * @return {object} component DOM\n */\n render(): object {\n return html`\n scw-form-component\n `;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import{a as p}from"./chunk.O3SA7BGC.js";import{a as m}from"./chunk.XYQXIJM3.js";import{d as b}from"./chunk.S4MESEBR.js";import{a as d,b as s,c as n}from"./chunk.HCMPRDIX.js";import{a as l}from"./chunk.WO7EIYQ3.js";import{b as c}from"./chunk.ZZQE6TG6.js";import{a as r}from"./chunk.ZS4C3T6Z.js";import{g as i}from"./chunk.5YJY6NT6.js";var g=d`
|
|
2
|
+
:host {
|
|
3
|
+
/* scw element */
|
|
4
|
+
position: relative;
|
|
5
|
+
box-sizing: border-box;
|
|
6
|
+
--margin-right: initial;
|
|
7
|
+
--margin-bottom: initial;
|
|
8
|
+
--gap-h-int: initial;
|
|
9
|
+
--gap-v-int: initial;
|
|
10
|
+
margin-right: var(--margin-right, var(--gap-h-int, initial));
|
|
11
|
+
margin-bottom: var(--margin-bottom, var(--gap-v-int, initial));
|
|
12
|
+
display: block;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
:host([warning]) {
|
|
16
|
+
outline: 2px solid red !important;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
:host .scw-link-base {
|
|
20
|
+
display: block;
|
|
21
|
+
overflow: hidden;
|
|
22
|
+
position: relative;
|
|
23
|
+
width: 100%;
|
|
24
|
+
height: 100%;
|
|
25
|
+
}
|
|
26
|
+
:host .scw-link-base img {
|
|
27
|
+
display: block;
|
|
28
|
+
position: absolute;
|
|
29
|
+
}`;var t=class extends b{constructor(){super();this.noLazyLoading=!1;this.resizeBreakpoints=`${"sm"}, ${"md"}, ${"lg"}`;this._isIntersecting=!1;this._hasIntersected=!1;this._resizeBreakpoints=[];this.element="image"}static get styles(){return[super.styles,g]}firstUpdated(e){super.firstUpdated(e),this._resizeHandler=this._resizeHandler.bind(this),this._intersectionHandler=this._intersectionHandler.bind(this),this.noLazyLoading?this._hasIntersected=!0:p.registerCallback(this,this._intersectionHandler),this.establishResizeBreakpoints()}parseAndValidateLightDom(){super.parseAndValidateLightDom(),m(this)}disconnectedCallback(){super.disconnectedCallback(),this._lightDomMutationObserver&&this._lightDomMutationObserver.disconnect(),p.unregisterCallback(this,this._intersectionHandler),l.removeBreakpointListener(this._resizeBreakpoints,this._resizeHandler)}establishResizeBreakpoints(){if(this.srcset){let e=this.resizeBreakpoints.split(","),o=c();this._resizeBreakpoints=[],e.map(h=>{let a=o[h.trim()];a&&this._resizeBreakpoints.push(a)}),l.addBreakpointListener(this._resizeBreakpoints,this._resizeHandler),this._resizeHandler()}}_resizeHandler(){this._imageSize=this.clientWidth}_intersectionHandler(e){this._isIntersecting=e,this._hasIntersected=this._hasIntersected?!0:e}renderContainerCss(){if(this.aspectRatio){let e=this.aspectRatio.split(":"),o=parseFloat(e[0]);return`
|
|
30
|
+
display: block;
|
|
31
|
+
padding-bottom: ${parseFloat(e[1])/o*100}%;
|
|
32
|
+
height: 0;`}return""}renderImgCss(){return this.objectFit||this.objectPosition?`
|
|
33
|
+
position: absolute;
|
|
34
|
+
top: 0; left: 0;
|
|
35
|
+
width: 100%; height: 100%;
|
|
36
|
+
object-fit: ${this.objectFit?this.objectFit:"contain"};
|
|
37
|
+
object-position: ${this.objectPosition?this.objectPosition:"center"}`:""}renderContent(){return this._hasIntersected?this._imageSize&&this.srcset?r`
|
|
38
|
+
<img
|
|
39
|
+
style="${this.renderImgCss()}"
|
|
40
|
+
srcset="${this.srcset}"
|
|
41
|
+
sizes="${this._imageSize}px"
|
|
42
|
+
alt="${this.alt?this.alt:"NO ALT!"}" />`:r`
|
|
43
|
+
<img
|
|
44
|
+
style="${this.renderImgCss()}"
|
|
45
|
+
src="${this.src?this.src:!1}"
|
|
46
|
+
alt="${this.alt?this.alt:"NO ALT!"}" />`:r``}render(){return this.renderLink(this.renderContent(),this.renderContainerCss())}};i([s({type:String,attribute:"aspect-ratio"})],t.prototype,"aspectRatio",2),i([s({type:String,attribute:"object-fit"})],t.prototype,"objectFit",2),i([s({type:String,attribute:"object-position"})],t.prototype,"objectPosition",2),i([s({type:String})],t.prototype,"srcset",2),i([s({type:String})],t.prototype,"src",2),i([s({type:String})],t.prototype,"alt",2),i([s({type:Boolean,attribute:"no-lazy-loading"})],t.prototype,"noLazyLoading",2),i([s({type:String,attribute:"resize-breakpoints"})],t.prototype,"resizeBreakpoints",2),i([n()],t.prototype,"_imageSize",2),i([n()],t.prototype,"_isIntersecting",2),i([n()],t.prototype,"_hasIntersected",2);export{t as a};
|
|
47
|
+
//# sourceMappingURL=chunk.HLMRJM7V.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["sass-plugin-0:/Users/scottrouse/Workspace/scu-design-system-mono/scu-web-components/src/scw-image/scss/scw-image.scss", "../../src/scw-image/ScwImage.ts"],
|
|
4
|
+
"sourcesContent": ["import {css} from \"lit-element/lit-element.js\";\nexport default css`\n:host {\n /* scw element */\n position: relative;\n box-sizing: border-box;\n --margin-right: initial;\n --margin-bottom: initial;\n --gap-h-int: initial;\n --gap-v-int: initial;\n margin-right: var(--margin-right, var(--gap-h-int, initial));\n margin-bottom: var(--margin-bottom, var(--gap-v-int, initial));\n display: block;\n}\n\n:host([warning]) {\n outline: 2px solid red !important;\n}\n\n:host .scw-link-base {\n display: block;\n overflow: hidden;\n position: relative;\n width: 100%;\n height: 100%;\n}\n:host .scw-link-base img {\n display: block;\n position: absolute;\n}`;\n", "import {html} from 'lit';\nimport {property, state} from 'lit/decorators.js';\nimport styles from './scss/scw-image.scss';\nimport {Components} from '../utils/enums/Components';\n// import resizeSingleton from '../utils/observers/resizeObserverSingleton';\nimport mediaQueryListSingleton\n from '../utils/observers/mediaQueryListSingleton';\nimport intersectionObserverSingleton\n from '../utils/observers/intersectionObserverSingleton';\nimport ScwLinkBase from '../scw-link-base/ScwLinkBase';\nimport validate from './scw-image-validate';\nimport {BreakpointNames, Breakpoint} from '../utils/responsive/BreakpointTypes';\n// import ResponsiveElement from '../utils/responsive/ResponsiveElement';\nimport {breakpointLookup} from '../utils/responsive/breakpoints';\n\n/**\n * ScwImage\n * @class\n * @tag scw-image\n *\n * @slot [default=\"<img src alt />\"]\n Base image to display. This is generally a LQIP (Low Quality Image\n Placeholder)\n * @slot [default=\"<a href target><source /><img src alt /></a>\"]\n (OPTIONAL) anchor (for SEO) will determine the label, href, and target in\n addition to size and label.\n */\nexport default class ScwImage extends ScwLinkBase {\n /**\n * styles\n */\n static get styles() {\n return [\n super.styles,\n styles,\n ];\n }\n\n // ============== ScwImage =================================================\n /** (ScwImage) Width:Height ratio */\n @property({type: String, attribute: 'aspect-ratio'})\n aspectRatio: string | undefined;// = '2:1';\n\n /** (ScwImage) Object Fit CSS */\n @property({type: String, attribute: 'object-fit'})\n objectFit: string | undefined;// = 'contain';\n\n /** (ScwImage) Object Position CSS */\n @property({type: String, attribute: 'object-position'})\n objectPosition: string | undefined;// = 'center';\n\n /** (ScwImage) srcset of image */\n @property({type: String})\n srcset: string | undefined;\n\n /** (ScwImage) src of image */\n @property({type: String})\n src: string | undefined;// NOTE: \"#\" don't work in chrome w/ inline imgs\n\n /** (ScwImage) alt of image */\n @property({type: String})\n alt: string | undefined;\n\n /** (ScwImage) turn off lazy loading */\n @property({type: Boolean, attribute: 'no-lazy-loading'})\n noLazyLoading: boolean = false;\n\n /** (ScwImage) establishes when (via the name of the breakpoint)\n * the image figures out it's sizing for srcset */\n @property({type: String, attribute: 'resize-breakpoints'})\n resizeBreakpoints: string = `${\n BreakpointNames.breakpointSM}, ${\n BreakpointNames.breakpointMD}, ${\n BreakpointNames.breakpointLG}`;\n\n // ====== STATES =============================================================\n /** (ScwImage) the image size derived from resize observer */\n @state()\n _imageSize : number | undefined;\n\n /** (ScwImage) determines whether element is intersecting */\n @state()\n _isIntersecting : boolean = false;\n\n /** (ScwImage) determines whether element has intersected once */\n @state()\n _hasIntersected : boolean = false;\n\n _resizeBreakpoints: Breakpoint[] = [];\n\n /** Constructor */\n constructor() {\n super();\n this.element = Components.image;\n }\n\n /**\n * first updated\n * @param {Map<string | number | symbol, unknown>} changedProps\n */\n firstUpdated(changedProps: Map<string | number | symbol, unknown>) {\n super.firstUpdated(changedProps);\n this._resizeHandler = this._resizeHandler.bind(this);\n this._intersectionHandler = this._intersectionHandler.bind(this);\n if (!this.noLazyLoading) {\n intersectionObserverSingleton.registerCallback(\n this, this._intersectionHandler,\n );\n } else {\n // resizeSingleton.registerCallback(this, this._resizeHandler);\n this._hasIntersected = true;\n }\n\n this.establishResizeBreakpoints();\n }\n\n /** parseAndValidateLightDom, just adding local parsing and validation */\n parseAndValidateLightDom() {\n super.parseAndValidateLightDom();\n validate( this );\n }\n\n /**\n * disconnect from dom\n */\n disconnectedCallback() {\n super.disconnectedCallback();\n if (this._lightDomMutationObserver) {\n this._lightDomMutationObserver.disconnect();\n }\n intersectionObserverSingleton.unregisterCallback(\n this, this._intersectionHandler,\n );\n mediaQueryListSingleton.removeBreakpointListener(\n this._resizeBreakpoints,\n this._resizeHandler,\n );\n }\n\n /**\n * Establish Resize Breakpoints\n */\n establishResizeBreakpoints() {\n if (this.srcset) {\n const resizeBreakpointsArr = this.resizeBreakpoints.split(',');\n const bpLookup = breakpointLookup();\n this._resizeBreakpoints = [];\n resizeBreakpointsArr.map((bp) => {\n const bpObj = bpLookup[bp.trim()];\n if (bpObj) {\n this._resizeBreakpoints.push(bpObj);\n }\n });\n mediaQueryListSingleton.addBreakpointListener(\n this._resizeBreakpoints,\n this._resizeHandler,\n );\n this._resizeHandler();// need a first _imageSize\n }\n }\n\n /**\n * handle resize events\n */\n _resizeHandler() {\n this._imageSize = this.clientWidth;\n }\n\n /**\n * handle resize events\n * @param {boolean} intersecting\n * @param {number} ratio\n */\n _intersectionHandler(intersecting: boolean) {// }, ratio: number) {\n this._isIntersecting = intersecting;\n // images only render once...\n this._hasIntersected = this._hasIntersected ? true : intersecting;\n }\n\n /**\n * Translate aspect ration string to a number (percent)\n * @return {string}\n */\n renderContainerCss() {\n if ( this.aspectRatio) {\n const aspectRatioArr = this.aspectRatio.split(':');\n const w = parseFloat(aspectRatioArr[0]);\n const h = parseFloat(aspectRatioArr[1]);\n const percent = (h / w) * 100;\n return `\n display: block;\n padding-bottom: ${percent}%;\n height: 0;`;\n }\n return ``;\n }\n\n /**\n * Css for image\n * @return {string}\n */\n renderImgCss() : string {\n if ( this.objectFit || this.objectPosition ) { // this.aspectRatio ) {\n return `\n position: absolute;\n top: 0; left: 0;\n width: 100%; height: 100%;\n object-fit: ${this.objectFit ? this.objectFit : 'contain'};\n object-position: ${this.objectPosition ?\n this.objectPosition : 'center'}`;\n } else {\n return ``;\n }\n }\n\n /**\n * render\n * @return {object} component DOM\n */\n renderContent(): object {\n if (this._hasIntersected) {\n if (this._imageSize && this.srcset) {\n return html`\n <img\n style=\"${this.renderImgCss()}\"\n srcset=\"${this.srcset}\"\n sizes=\"${this._imageSize}px\"\n alt=\"${this.alt ? this.alt : 'NO ALT!'}\" />`;\n } else {\n return html`\n <img\n style=\"${this.renderImgCss()}\"\n src=\"${this.src ? this.src : false}\"\n alt=\"${this.alt ? this.alt : 'NO ALT!'}\" />`;\n }\n } else {\n return html``;\n }\n }\n\n /**\n * render\n * @return {object} component DOM\n */\n render(): object {\n return this.renderLink(\n this.renderContent(),\n this.renderContainerCss(),\n );\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/suffix.ts"],
|
|
4
|
+
"sourcesContent": ["import {config} from '../scw';\n\n/**\n * Pulls suffix from global design system config with some formatting options\n * @param {string} connector\n * @return {string}\n */\nexport default function getSuffix(connector: string = '-') {\n return config ? config.suffix ? `${connector}${config.suffix}` : '' : '';\n}\n\n"],
|
|
5
|
+
"mappings": "wCAOe,WAAmB,EAAoB,IAAK,CACzD,MAAO,IAAS,EAAO,OAAS,GAAG,IAAY,EAAO,SAAgB,EACxE",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as r}from"./chunk.RBSBLP6E.js";import{a as m}from"./chunk.2VW3SHYK.js";import{b as i}from"./chunk.HCMPRDIX.js";import{g as e}from"./chunk.5YJY6NT6.js";var t=class extends r{constructor(){super();this.submitType="submit";this.element="button",this.setAttribute("onclick","javascript:")}connectedCallback(){super.connectedCallback(),this.addEventListener("click",()=>{this.submitType==="submit"&&m("scw-submit-intent",this)})}};e([i({type:String,reflect:!0,attribute:"submit-type"})],t.prototype,"submitType",2);export{t as a};
|
|
2
|
+
//# sourceMappingURL=chunk.KLCHR5KI.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/scw-button/ScwButton.ts"],
|
|
4
|
+
"sourcesContent": ["import {property} from 'lit/decorators.js';\nimport ScwLink from '../scw-link/ScwLink';\nimport {ScwFormComponentSubmitTypes}\n from '../scw-form-component/scw-form-component';\nimport {Components} from '../utils/enums/Components';\nimport {ScwEvents} from '../utils/events/event';\nimport {emit} from '../utils/events/event';\n\n/**\n * ScwButton\n * @class\n * @tag scw-button\n *\n * @slot [default=\"<a href target />\"]\n (OPTIONAL) anchor (for SEO) will determine the label, href, and target.\n * @slot [default=\"<... />\"]\n (OPTIONAL) random content (paired with design=\"plain\") will wrap that\n content with a link.\n */\nexport default class ScwButton extends ScwLink {\n /** <ScwFormComponent> the usage in a form (& scw-form a query target) */\n @property({type: String, reflect: true, attribute: 'submit-type'})\n submitType: ScwFormComponentSubmitTypes =\n ScwFormComponentSubmitTypes.submit;\n\n /** connectedCallback */\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener(\n 'click',\n () => {\n if (this.submitType === ScwFormComponentSubmitTypes.submit ) {\n emit(\n ScwEvents.submitIntent,\n this,\n );\n }\n },\n );\n }\n\n /** Constructor */\n constructor() {\n super();\n this.element = Components.button;\n // need to tell scw-link-base to turn this into a link each time...\n this.setAttribute('onclick', 'javascript:');\n }\n}\n"],
|
|
5
|
+
"mappings": "gKAmBA,mBAAuC,EAAQ,CAuB7C,aAAc,CACZ,MAAM,EArBN,gBACI,SAqBJ,KAAK,QAAU,SAEf,KAAK,aAAa,UAAW,aAAa,CAC5C,CArBA,mBAA0B,CACxB,MAAM,kBAAkB,EACxB,KAAK,iBACH,QACA,IAAM,CACJ,AAAI,KAAK,aAAe,UACtB,EACE,oBACA,IACF,CAEJ,CACF,CACF,CASF,EA1BI,GADF,AAAC,EAAS,CAAC,KAAM,OAAQ,QAAS,GAAM,UAAW,aAAa,CAAC,GAC/D,AAHJ,EAGI",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/suffix.ts"],
|
|
4
|
+
"sourcesContent": ["import {config} from '../scw';\n\n/**\n * Pulls suffix from global design system config with some formatting options\n * @param {string} connector\n * @return {string}\n */\nexport default function getSuffix(connector: string = '-') {\n return config ? config.suffix ? `${connector}${config.suffix}` : '' : '';\n}\n\n"],
|
|
5
|
+
"mappings": "wCAOe,WAAmB,EAAoB,IAAK,CACzD,MAAO,IAAS,EAAO,OAAS,GAAG,IAAY,EAAO,SAAgB,EACxE",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{a as u}from"./chunk.IAALPGL2.js";import{b as n,c as r,e as f}from"./chunk.HCMPRDIX.js";import{a as o}from"./chunk.ZS4C3T6Z.js";import{g as a}from"./chunk.5YJY6NT6.js";var c=(e=>(e.text="text",e.boolean="boolean",e.submit="submit",e))(c||{}),h=(i=>(i.submit="submit",i.cancel="cancel",i))(h||{}),t=class extends f{constructor(){super(...arguments);this.formType="text";this.value="";this.placeholder="";this.selected=!1;this.readOnly=!1;this.required=!1;this.requiredLabel=" *";this.focused=!1;this.invalid=!1}connectedCallback(){super.connectedCallback(),this.required&&this.createAndAddValidationRule("required",this.requiredFeedback)}decorateValues(i){if(!this.name){this.warn(`${this.element} didn't find a name`);return}this.formType==="boolean"?i[this.name]=this.selected:i[this.name]=this.value}findIfRequired(){let i=this.findValidationRules();return i?i.isRequired():!1}findValidationRules(){return Array.from(this.children).find(l=>l.nodeName.indexOf("SCW-VALIDATION")===0)}validate(){let i=this.findValidationRules(),e=[];return i&&(e=i.validate(this.value)),this.invalid=e.length>0,this.invalid?this.feedback=e[0].feedback:this.feedback="",e}createValidateRule(){return document.createElement(`scw-${"validate"}${u()}`)}addValidationRule(i){let e=this.findValidationRules();e||(e=document.createElement(`scw-${"validation"}${u()}`),this.prepend(e)),Array.from(e.children).find(s=>s.getAttribute("type")===i.type)||e.appendChild(i)}createAndAddValidationRule(i,e){let l=this.createValidateRule();l.setAttribute("type",i),e&&l.setAttribute("feedback",e),this.addValidationRule(l)}removeValidationRule(i){let e=this.findValidationRules();if(!e)return;let d=Array.from(e.children).find(s=>s.type===i);d&&d.parentNode&&d.parentNode.removeChild(d)}render(){return o`
|
|
2
|
+
scw-form-component
|
|
3
|
+
`}};a([n({type:c,reflect:!0,attribute:"form-type"})],t.prototype,"formType",2),a([n({type:String})],t.prototype,"name",2),a([n({type:String})],t.prototype,"value",2),a([n({type:String})],t.prototype,"placeholder",2),a([n({type:String})],t.prototype,"selected",2),a([n({type:Boolean,attribute:"read-only"})],t.prototype,"readOnly",2),a([n({type:Boolean})],t.prototype,"required",2),a([n({type:String,attribute:"required-label"})],t.prototype,"requiredLabel",2),a([n({type:String,attribute:"required-feedback"})],t.prototype,"requiredFeedback",2),a([r()],t.prototype,"feedback",2),a([r()],t.prototype,"focused",2),a([r()],t.prototype,"invalid",2);export{c as a,h as b,t as c};
|
|
4
|
+
//# sourceMappingURL=chunk.MBVU2OPU.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/scw-form-component/scw-form-component.ts"],
|
|
4
|
+
"sourcesContent": ["import {html} from 'lit';\nimport {property, state} from 'lit/decorators.js';\nimport ScwComponent from '../scw-component/ScwComponent';\nimport {Components} from '../utils/enums/Components';\nimport ScwValidate from '../scw-validate/scw-validate';\nimport ScwValidation from '../scw-validation/scw-validation';\nimport {ValidationResult, ValidationTypes}\n from '../scw-validate/validationTypes';\nimport getSuffix from '../utils/suffix';\n\nexport enum ScwFormComponentTypes {\n text = 'text',\n boolean = 'boolean',\n submit = 'submit'\n}\n\nexport enum ScwFormComponentSubmitTypes {\n submit = 'submit',\n cancel = 'cancel'\n}\n\n/**\n * ScwFormComponent\n * @class\n * @tag scw-form-component\n */\nexport default class ScwFormComponent extends ScwComponent {\n // ============== ScwFormComponent ===========================================\n /** (ScwFormComponent) the usage in a form (& scw-form a query target) */\n @property({\n type: ScwFormComponentTypes,\n reflect: true,\n attribute: 'form-type',\n })\n formType: ScwFormComponentTypes = ScwFormComponentTypes.text;\n\n /** (ScwFormComponent) name to identify form element and attach data */\n @property({type: String})\n name: string | undefined;\n\n /** (ScwFormComponent) name to identify form element and attach data */\n @property({type: String})\n value: string = '';\n\n /** (ScwFormComponent) text showing when there is no value */\n @property({type: String})\n placeholder: string = '';\n\n /** (ScwFormComponent) name to identify form element and attach data */\n @property({type: String})\n selected: boolean = false;\n\n /** (ScwFormComponent) read-only state management */\n @property({type: Boolean, attribute: 'read-only'})\n readOnly: boolean = false;\n\n /** (ScwFormComponent) required state management */\n @property({type: Boolean})\n required: boolean = false;\n\n /** (ScwFormComponent) label indicator for required */\n @property({type: String, attribute: 'required-label'})\n requiredLabel: string = ' *';\n\n /** (ScwFormComponent) label indicator for required */\n @property({type: String, attribute: 'required-feedback'})\n requiredFeedback?: string;\n\n // ===== STATE ===============================================================\n /** the text to use for feedback */\n @state() feedback: string | undefined;\n\n /** determines whether the input is focused or not */\n @state() focused : boolean = false;\n\n /** whether this form element is valid, passed validation */\n @state() invalid: boolean = false;\n\n /** connectedCallback */\n connectedCallback(): void {\n super.connectedCallback();\n if (this.required) {\n this.createAndAddValidationRule(\n ValidationTypes.required,\n this.requiredFeedback,\n );\n }\n }\n\n /** (ScwFormComponent) each form element to decorates the final data object\n * @param {Object} formData\n */\n decorateValues(formData: {}): void {\n if (!this.name) {\n this.warn(`${this.element} didn't find a name`);\n return;\n }\n if (this.formType === ScwFormComponentTypes.boolean) {\n formData[this.name] = this.selected;// ? 'true' : 'false';\n } else {\n formData[this.name] = this.value;\n }\n }\n\n /**\n * Check to see if form element is required w/o knowing if there is validation\n * @return {boolean}\n */\n findIfRequired() : boolean {\n const rules = this.findValidationRules();\n if (rules) {\n return rules.isRequired();\n }\n return false;\n }\n\n /**\n * Find validation child if there...\n * @return {ScwValidation | undefined}\n */\n findValidationRules() : ScwValidation | undefined {\n const childrenArr = Array.from(this.children);\n const validation = childrenArr.find((child: any) => {\n // component may not be initialized yet...\n return child.nodeName.indexOf('SCW-VALIDATION') === 0;\n // return child.element === Components.validation;\n });\n return validation as unknown as ScwValidation;\n }\n\n /**\n * run the validation rules if there...\n * @param {string} value\n * @return {ValidationResult[]}\n */\n validate() : ValidationResult[] {\n const validation = this.findValidationRules();\n let results : ValidationResult[] = [];\n if (validation) {\n results = validation.validate(this.value);\n }\n this.invalid = ( results.length > 0);\n if (this.invalid ) {\n this.feedback = results[0].feedback;\n } else {\n this.feedback = '';\n }\n return results;\n }\n\n\n /**\n * create a validation rule from scratch\n * @return {ScwValidate}\n */\n createValidateRule() : ScwValidate {\n return document.createElement(\n `scw-${Components.validate}${getSuffix()}`,\n ) as unknown as ScwValidate;\n }\n\n /**\n * add validation to to child validation (create if not there)\n * @param {ScwValidate} rule\n */\n addValidationRule(rule: ScwValidate ) {\n let validationRules = this.findValidationRules();\n if (!validationRules) {\n validationRules = document.createElement(\n `scw-${Components.validation}${getSuffix()}`,\n ) as unknown as ScwValidation;\n this.prepend( validationRules );\n }\n // Check for dups?\n const children = Array.from(validationRules.children);\n const existingRule = children.find((child : any) => {\n return child.getAttribute('type') === rule.type;\n });\n if ( !existingRule ) {\n validationRules.appendChild(rule);\n }\n }\n\n /**\n * create a validation of a certain type...\n * @param {ValidationTypes} type\n * @param {string} feedbackOverride\n */\n createAndAddValidationRule(\n type: ValidationTypes,\n feedbackOverride?: string,\n ) {\n const rule = this.createValidateRule();\n rule.setAttribute('type', type );// .type = type;\n if (feedbackOverride) {\n rule.setAttribute('feedback', feedbackOverride );\n }\n this.addValidationRule( rule );\n }\n\n /**\n *\n * @param {ValidationTypes} type\n */\n removeValidationRule(\n type: ValidationTypes,\n ) {\n const validationRules = this.findValidationRules();\n if (!validationRules) return;\n const children = Array.from(validationRules.children);\n const child = children.find(\n (child : any) => child.type === type,\n ) as unknown as HTMLElement;\n if ( child && child.parentNode ) child.parentNode.removeChild(child);\n }\n\n /**\n * render\n * @return {object} component DOM\n */\n render(): object {\n return html`\n scw-form-component\n `;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import{a as r,b as s}from"./chunk.RGGLFZST.js";import{a as g}from"./chunk.IAALPGL2.js";import{a as n,d as l}from"./chunk.S4MESEBR.js";import{a,b as i,e as c}from"./chunk.HCMPRDIX.js";import{a as d}from"./chunk.Y2P62L7U.js";import{g as e}from"./chunk.5YJY6NT6.js";var p=a`
|
|
2
|
+
:host {
|
|
3
|
+
/* scw element */
|
|
4
|
+
position: relative;
|
|
5
|
+
box-sizing: border-box;
|
|
6
|
+
--margin-right: initial;
|
|
7
|
+
--margin-bottom: initial;
|
|
8
|
+
--gap-h-int: initial;
|
|
9
|
+
--gap-v-int: initial;
|
|
10
|
+
margin-right: var(--margin-right, var(--gap-h-int, initial));
|
|
11
|
+
margin-bottom: var(--margin-bottom, var(--gap-v-int, initial));
|
|
12
|
+
display: block;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
:host([warning]) {
|
|
16
|
+
outline: 2px solid red !important;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
:host([size=medium]) {
|
|
20
|
+
display: block;
|
|
21
|
+
background-color: rgba(0, 0, 0, 0);
|
|
22
|
+
display: flex;
|
|
23
|
+
flex-flow: column nowrap;
|
|
24
|
+
justify-content: flex-start;
|
|
25
|
+
align-items: flex-start;
|
|
26
|
+
padding-left: 0px;
|
|
27
|
+
padding-right: 0px;
|
|
28
|
+
padding-top: 0px;
|
|
29
|
+
padding-bottom: 0px;
|
|
30
|
+
/*.image-box {
|
|
31
|
+
width: 100%;
|
|
32
|
+
padding-bottom: 38.8888888889%;
|
|
33
|
+
position: relative;
|
|
34
|
+
}*/
|
|
35
|
+
/*.image {
|
|
36
|
+
@include size-medium-image-mixins.box;
|
|
37
|
+
|
|
38
|
+
position: absolute;
|
|
39
|
+
inset: 0;
|
|
40
|
+
background-position: center;
|
|
41
|
+
background-size: cover;
|
|
42
|
+
}*/
|
|
43
|
+
/*.action {
|
|
44
|
+
@include size-medium-action-mixins.box;
|
|
45
|
+
@include size-medium-action-mixins.sizing;
|
|
46
|
+
}*/
|
|
47
|
+
}
|
|
48
|
+
:host([size=medium]) > *:not(:last-child) {
|
|
49
|
+
margin-bottom: calc(var(--scw-spacing-1) * 0.8);
|
|
50
|
+
--margin-bottom: calc( var( --scw-spacing-1 ) * 0.8 );
|
|
51
|
+
}
|
|
52
|
+
:host([size=medium]) .image-box {
|
|
53
|
+
height: 161px;
|
|
54
|
+
}
|
|
55
|
+
:host([size=medium]) .description {
|
|
56
|
+
text-align: LEFT;
|
|
57
|
+
font: var(--scw-type-text-font);
|
|
58
|
+
color: var(--scw-color-grey-02);
|
|
59
|
+
align-self: stretch;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
:host([size=small]) {
|
|
63
|
+
display: block;
|
|
64
|
+
background-color: rgba(0, 0, 0, 0);
|
|
65
|
+
display: flex;
|
|
66
|
+
flex-flow: column nowrap;
|
|
67
|
+
justify-content: flex-start;
|
|
68
|
+
align-items: flex-start;
|
|
69
|
+
padding-left: 0px;
|
|
70
|
+
padding-right: 0px;
|
|
71
|
+
padding-top: 0px;
|
|
72
|
+
padding-bottom: 0px;
|
|
73
|
+
/*.image-box {
|
|
74
|
+
width: 100%;
|
|
75
|
+
padding-bottom: 88.9473684211%;
|
|
76
|
+
position: relative;
|
|
77
|
+
}*/
|
|
78
|
+
/*.image {
|
|
79
|
+
@include size-small-image-mixins.box;
|
|
80
|
+
|
|
81
|
+
position: absolute;
|
|
82
|
+
inset: 0;
|
|
83
|
+
background-position: center;
|
|
84
|
+
background-size: cover;
|
|
85
|
+
}*/
|
|
86
|
+
}
|
|
87
|
+
:host([size=small]) > *:not(:last-child) {
|
|
88
|
+
margin-bottom: calc(var(--scw-spacing-1) * 0.8);
|
|
89
|
+
--margin-bottom: calc( var( --scw-spacing-1 ) * 0.8 );
|
|
90
|
+
}
|
|
91
|
+
:host([size=small]) .image-box {
|
|
92
|
+
height: 169px;
|
|
93
|
+
}
|
|
94
|
+
:host([size=small]) .description {
|
|
95
|
+
display: none;
|
|
96
|
+
}
|
|
97
|
+
:host([size=small]) .action {
|
|
98
|
+
display: none;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
:host .super-heading.mortgage {
|
|
102
|
+
text-align: LEFT;
|
|
103
|
+
font: var(--scw-type-text-bold-condensed-font);
|
|
104
|
+
color: var(--scw-color-04, var(--scw-color-mortgage-04));
|
|
105
|
+
align-self: stretch;
|
|
106
|
+
}
|
|
107
|
+
:host .super-heading.savings {
|
|
108
|
+
text-align: LEFT;
|
|
109
|
+
font: var(--scw-type-text-bold-condensed-font);
|
|
110
|
+
color: var(--scw-color-04, var(--scw-color-savings-04));
|
|
111
|
+
align-self: stretch;
|
|
112
|
+
}
|
|
113
|
+
:host .super-heading.student {
|
|
114
|
+
text-align: LEFT;
|
|
115
|
+
font: var(--scw-type-text-bold-condensed-font);
|
|
116
|
+
color: var(--scw-color-04, var(--scw-color-student-04));
|
|
117
|
+
align-self: stretch;
|
|
118
|
+
}
|
|
119
|
+
:host .super-heading.investments {
|
|
120
|
+
text-align: LEFT;
|
|
121
|
+
font: var(--scw-type-text-bold-condensed-font);
|
|
122
|
+
color: var(--scw-color-04, var(--scw-color-investments-04));
|
|
123
|
+
align-self: stretch;
|
|
124
|
+
}
|
|
125
|
+
:host .super-heading.checking {
|
|
126
|
+
text-align: LEFT;
|
|
127
|
+
font: var(--scw-type-text-bold-condensed-font);
|
|
128
|
+
color: var(--scw-color-04, var(--scw-color-checking-04));
|
|
129
|
+
align-self: stretch;
|
|
130
|
+
}
|
|
131
|
+
:host .super-heading.credit-cards {
|
|
132
|
+
text-align: LEFT;
|
|
133
|
+
font: var(--scw-type-text-bold-condensed-font);
|
|
134
|
+
color: var(--scw-color-04, var(--scw-color-credit-cards-04));
|
|
135
|
+
align-self: stretch;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
:host {
|
|
139
|
+
display: block;
|
|
140
|
+
background-color: var(--scw-color, rgba(0, 0, 0, 0));
|
|
141
|
+
display: flex;
|
|
142
|
+
flex-flow: column nowrap;
|
|
143
|
+
justify-content: flex-start;
|
|
144
|
+
align-items: flex-start;
|
|
145
|
+
padding-left: 0px;
|
|
146
|
+
padding-right: 0px;
|
|
147
|
+
padding-top: 0px;
|
|
148
|
+
padding-bottom: 0px;
|
|
149
|
+
/*.image {
|
|
150
|
+
@include default-image-mixins.box;
|
|
151
|
+
|
|
152
|
+
position: absolute;
|
|
153
|
+
inset: 0;
|
|
154
|
+
background-position: center;
|
|
155
|
+
background-size: cover;
|
|
156
|
+
}*/
|
|
157
|
+
}
|
|
158
|
+
:host > *:not(:last-child) {
|
|
159
|
+
margin-bottom: calc(var(--scw-spacing-1) * 0.8);
|
|
160
|
+
--margin-bottom: calc( var( --scw-spacing-1 ) * 0.8 );
|
|
161
|
+
}
|
|
162
|
+
:host .image-box {
|
|
163
|
+
background-color: var(--scw-color-09, var(--scw-color-grey-09));
|
|
164
|
+
border-radius: 10px 10px 10px 10px;
|
|
165
|
+
align-self: stretch;
|
|
166
|
+
flex: 1;
|
|
167
|
+
flex: initial;
|
|
168
|
+
overflow: hidden;
|
|
169
|
+
height: 345px;
|
|
170
|
+
}
|
|
171
|
+
:host .heading {
|
|
172
|
+
background-color: rgba(0, 0, 0, 0);
|
|
173
|
+
align-self: stretch;
|
|
174
|
+
}
|
|
175
|
+
:host .super-heading {
|
|
176
|
+
text-align: LEFT;
|
|
177
|
+
font: var(--scw-type-text-bold-condensed-font);
|
|
178
|
+
color: var(--scw-color-03, var(--scw-color-primary-03));
|
|
179
|
+
align-self: stretch;
|
|
180
|
+
}
|
|
181
|
+
:host .description {
|
|
182
|
+
text-align: LEFT;
|
|
183
|
+
font: var(--scw-type-text-06-font);
|
|
184
|
+
color: var(--scw-color-02, var(--scw-color-grey-02));
|
|
185
|
+
align-self: stretch;
|
|
186
|
+
}
|
|
187
|
+
:host .action {
|
|
188
|
+
width: 83px;
|
|
189
|
+
height: 32px;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
:host([action=none]) {
|
|
193
|
+
pointer-events: none;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
:host([action=whole]) {
|
|
197
|
+
pointer-events: all;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
:host([action=whole]:hover) {
|
|
201
|
+
cursor: pointer;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
:host([action=whole]:focus-visible) {
|
|
205
|
+
outline: none;
|
|
206
|
+
box-shadow: var(--scw-effect-focus-shadow);
|
|
207
|
+
border-radius: 10px 10px 4px 4px;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
:host([action=link]) {
|
|
211
|
+
pointer-events: none;
|
|
212
|
+
}
|
|
213
|
+
:host([action=link]) scw-link {
|
|
214
|
+
pointer-events: all;
|
|
215
|
+
}`;var t=class extends l{constructor(){super();this.size="large";this.action="none";this.element="card",this.clickHandler=this.clickHandler.bind(this);let o=g();this.headerNodeName=r(`scw-${"heading"}${o}`),this.imageNodeName=r(`scw-${"image"}${o}`),this.linkNodeName=r(`scw-${"link"}${o}`)}static get styles(){return[super.styles,p]}parseAndValidateLightDom(){d(this),super.parseAndValidateLightDom()}clickHandler(o){o.stopPropagation(),this.click()}warn(o){this.heading=`error: ${o}`,c.prototype.warn.call(this,o)}renderImage(){if((this.src||this.srcset)&&this.alt)return s`
|
|
216
|
+
<scw-image
|
|
217
|
+
class="image-box"
|
|
218
|
+
src="${n(this.src)}"
|
|
219
|
+
srcset="${n(this.srcset)}"
|
|
220
|
+
alt="${this.alt}"
|
|
221
|
+
object-fit="cover">
|
|
222
|
+
</scw-image>
|
|
223
|
+
`}renderButton(){return this.action==="link"?s`
|
|
224
|
+
<scw-link
|
|
225
|
+
aria-label="${this.linkLabel?this.linkLabel:"no label"}"
|
|
226
|
+
@click="${this.clickHandler}">
|
|
227
|
+
</scw-link>`:null}getSizeStringForHeader(){switch(this.size){case"large":return"h1";case"medium":return"h2";case"small":return"h3"}}renderBody(){return s`
|
|
228
|
+
${this.renderImage()}
|
|
229
|
+
${this.superHeading?s`
|
|
230
|
+
<div class="super-heading">
|
|
231
|
+
${this.superHeading}
|
|
232
|
+
</div>`:""}
|
|
233
|
+
<scw-heading
|
|
234
|
+
style="--scw-color-04: var( --scw-color-grey-02 );"
|
|
235
|
+
dynamic class="heading"
|
|
236
|
+
aria-label="${n(this.heading)}"
|
|
237
|
+
size="${this.getSizeStringForHeader()}">
|
|
238
|
+
</scw-heading>
|
|
239
|
+
${this.description?s`
|
|
240
|
+
<div class="description">
|
|
241
|
+
${this.description}
|
|
242
|
+
</div>`:""}`}render(){return this.action==="whole"?this.renderBody():s`
|
|
243
|
+
${this.renderBody()}
|
|
244
|
+
${this.renderButton()}`}};e([i()],t.prototype,"src",2),e([i()],t.prototype,"srcset",2),e([i()],t.prototype,"alt",2),e([i()],t.prototype,"heading",2),e([i()],t.prototype,"superHeading",2),e([i()],t.prototype,"description",2),e([i()],t.prototype,"linkLabel",2),e([i({type:String,reflect:!0})],t.prototype,"size",2),e([i({type:String,reflect:!0})],t.prototype,"action",2);export{t as a};
|
|
245
|
+
//# sourceMappingURL=chunk.MGZVQJ3S.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["sass-plugin-0:/Users/scottrouse/Workspace/scu-design-system-mono/scu-web-components/src/scw-card/scss/scw-card.scss", "../../src/scw-card/ScwCard.ts"],
|
|
4
|
+
"sourcesContent": ["import {css} from \"lit-element/lit-element.js\";\nexport default css`\n:host {\n /* scw element */\n position: relative;\n box-sizing: border-box;\n --margin-right: initial;\n --margin-bottom: initial;\n --gap-h-int: initial;\n --gap-v-int: initial;\n margin-right: var(--margin-right, var(--gap-h-int, initial));\n margin-bottom: var(--margin-bottom, var(--gap-v-int, initial));\n display: block;\n}\n\n:host([warning]) {\n outline: 2px solid red !important;\n}\n\n:host([size=medium]) {\n display: block;\n background-color: rgba(0, 0, 0, 0);\n display: flex;\n flex-flow: column nowrap;\n justify-content: flex-start;\n align-items: flex-start;\n padding-left: 0px;\n padding-right: 0px;\n padding-top: 0px;\n padding-bottom: 0px;\n /*.image-box {\n width: 100%;\n padding-bottom: 38.8888888889%;\n position: relative;\n }*/\n /*.image {\n @include size-medium-image-mixins.box;\n\n position: absolute;\n inset: 0;\n background-position: center;\n background-size: cover;\n }*/\n /*.action {\n @include size-medium-action-mixins.box;\n @include size-medium-action-mixins.sizing;\n }*/\n}\n:host([size=medium]) > *:not(:last-child) {\n margin-bottom: calc(var(--scw-spacing-1) * 0.8);\n --margin-bottom: calc( var( --scw-spacing-1 ) * 0.8 );\n}\n:host([size=medium]) .image-box {\n height: 161px;\n}\n:host([size=medium]) .description {\n text-align: LEFT;\n font: var(--scw-type-text-font);\n color: var(--scw-color-grey-02);\n align-self: stretch;\n}\n\n:host([size=small]) {\n display: block;\n background-color: rgba(0, 0, 0, 0);\n display: flex;\n flex-flow: column nowrap;\n justify-content: flex-start;\n align-items: flex-start;\n padding-left: 0px;\n padding-right: 0px;\n padding-top: 0px;\n padding-bottom: 0px;\n /*.image-box {\n width: 100%;\n padding-bottom: 88.9473684211%;\n position: relative;\n }*/\n /*.image {\n @include size-small-image-mixins.box;\n\n position: absolute;\n inset: 0;\n background-position: center;\n background-size: cover;\n }*/\n}\n:host([size=small]) > *:not(:last-child) {\n margin-bottom: calc(var(--scw-spacing-1) * 0.8);\n --margin-bottom: calc( var( --scw-spacing-1 ) * 0.8 );\n}\n:host([size=small]) .image-box {\n height: 169px;\n}\n:host([size=small]) .description {\n display: none;\n}\n:host([size=small]) .action {\n display: none;\n}\n\n:host .super-heading.mortgage {\n text-align: LEFT;\n font: var(--scw-type-text-bold-condensed-font);\n color: var(--scw-color-04, var(--scw-color-mortgage-04));\n align-self: stretch;\n}\n:host .super-heading.savings {\n text-align: LEFT;\n font: var(--scw-type-text-bold-condensed-font);\n color: var(--scw-color-04, var(--scw-color-savings-04));\n align-self: stretch;\n}\n:host .super-heading.student {\n text-align: LEFT;\n font: var(--scw-type-text-bold-condensed-font);\n color: var(--scw-color-04, var(--scw-color-student-04));\n align-self: stretch;\n}\n:host .super-heading.investments {\n text-align: LEFT;\n font: var(--scw-type-text-bold-condensed-font);\n color: var(--scw-color-04, var(--scw-color-investments-04));\n align-self: stretch;\n}\n:host .super-heading.checking {\n text-align: LEFT;\n font: var(--scw-type-text-bold-condensed-font);\n color: var(--scw-color-04, var(--scw-color-checking-04));\n align-self: stretch;\n}\n:host .super-heading.credit-cards {\n text-align: LEFT;\n font: var(--scw-type-text-bold-condensed-font);\n color: var(--scw-color-04, var(--scw-color-credit-cards-04));\n align-self: stretch;\n}\n\n:host {\n display: block;\n background-color: var(--scw-color, rgba(0, 0, 0, 0));\n display: flex;\n flex-flow: column nowrap;\n justify-content: flex-start;\n align-items: flex-start;\n padding-left: 0px;\n padding-right: 0px;\n padding-top: 0px;\n padding-bottom: 0px;\n /*.image {\n @include default-image-mixins.box;\n\n position: absolute;\n inset: 0;\n background-position: center;\n background-size: cover;\n }*/\n}\n:host > *:not(:last-child) {\n margin-bottom: calc(var(--scw-spacing-1) * 0.8);\n --margin-bottom: calc( var( --scw-spacing-1 ) * 0.8 );\n}\n:host .image-box {\n background-color: var(--scw-color-09, var(--scw-color-grey-09));\n border-radius: 10px 10px 10px 10px;\n align-self: stretch;\n flex: 1;\n flex: initial;\n overflow: hidden;\n height: 345px;\n}\n:host .heading {\n background-color: rgba(0, 0, 0, 0);\n align-self: stretch;\n}\n:host .super-heading {\n text-align: LEFT;\n font: var(--scw-type-text-bold-condensed-font);\n color: var(--scw-color-03, var(--scw-color-primary-03));\n align-self: stretch;\n}\n:host .description {\n text-align: LEFT;\n font: var(--scw-type-text-06-font);\n color: var(--scw-color-02, var(--scw-color-grey-02));\n align-self: stretch;\n}\n:host .action {\n width: 83px;\n height: 32px;\n}\n\n:host([action=none]) {\n pointer-events: none;\n}\n\n:host([action=whole]) {\n pointer-events: all;\n}\n\n:host([action=whole]:hover) {\n cursor: pointer;\n}\n\n:host([action=whole]:focus-visible) {\n outline: none;\n box-shadow: var(--scw-effect-focus-shadow);\n border-radius: 10px 10px 4px 4px;\n}\n\n:host([action=link]) {\n pointer-events: none;\n}\n:host([action=link]) scw-link {\n pointer-events: all;\n}`;\n", "import {property} from 'lit/decorators.js';\nimport {html} from 'lit/static-html.js';// import {html} from 'lit';\nimport {unsafeStatic} from 'lit/static-html.js';// USE DIFFERENT 'html'!!!!\nimport styles from './scss/scw-card.scss';\nimport ScwComponent from '../scw-component/ScwComponent';\nimport {ScwCardSizes, ScwCardActions} from './scw-card-enums';\nimport parseLightDomCard from './scw-card-light-dom';\nimport ScwLinkBase from '../scw-link-base/ScwLinkBase';\nimport {Components} from '../utils/enums/Components';\nimport getSuffix from '../utils/suffix';\nimport {ScwHeadingSizes} from '../scw-heading/scw-heading-enums';\nimport {ifDefined} from 'lit/directives/if-defined.js';\n\n/**\n * ScwCard a first LitElement web component\n * @class\n * @tag scw-card\n *\n * @slot [default=\"<img src alt /><h1, h2, h3 /><sup /><p />\"]\n The parts of scw-card are configured via nested html elements.\n img defines the image, heading the main heading, sup the category heading,\n and p the descriptive text. Only headings is required (with src, srcset,\n and alt attributes).\n * @slot [default=\"<img src alt /><h1, h2, h3 /><sup /><p /><a />\"]\n Adding an anchor will show a link.\n * @slot [default=\"<a><img src alt /><h1, h2, h3 /><sup /><p /></a>\"]\n Wrapping the entire content in an anchor will make it interactive\n */\nexport default class ScwCard extends ScwLinkBase {\n /**\n * styles\n */\n static get styles() {\n return [\n super.styles,\n styles,\n ];\n }\n\n // ============== ScwCard ====================================================\n /** (ScwCard) The src of the image within the card */\n @property() src: string | undefined;\n\n /** (ScwCard) The srcset of the image within the card */\n @property() srcset: string | undefined;\n\n /** (ScwCard) Alternative description of the image. */\n @property() alt: string | undefined;\n\n /** (ScwCard) Main title or header of the card (determined by\n * <h1, h2, h3> content) */\n @property() heading: string | undefined;\n\n /** (ScwCard) Super title, describing a category or area pertaining to title\n * (determined by <sup> content) */\n @property() superHeading: string | undefined;\n\n /** (ScwCard) Fuller description of what the card is about (determined by\n * <p> content) */\n @property() description: string | undefined;\n\n /** (ScwCard) Label on the link */\n @property() linkLabel : string | undefined;\n\n // ----------- END STATES ----------------------------------------------------\n /** (ScwCard) Readonly - Size of the card. This\n * is determined by the nested html content (h1 = large,\n * h2 = medium, h3 = small). */\n @property({type: String, reflect: true})\n size: ScwCardSizes = ScwCardSizes.large;\n\n /** (ScwCard) Readonly - The type of action (whole card, link, or none).\n * This is determined by the use of an anchor tag. */\n @property({type: String, reflect: true})\n action: ScwCardActions = ScwCardActions.none;\n\n /** scw-header with versioning suffix */\n headerNodeName : any;\n\n /** scw-image with versioning suffix */\n imageNodeName : any;\n\n /** scw-link with versioning suffix */\n linkNodeName : any;\n\n /**\n * Constructor\n */\n constructor() {\n super();\n this.element = Components.card;\n this.clickHandler = this.clickHandler.bind(this);\n\n const suffix = getSuffix();\n this.headerNodeName = unsafeStatic(`scw-${Components.heading}${suffix}`);\n this.imageNodeName = unsafeStatic(`scw-${Components.image}${suffix}`);\n this.linkNodeName = unsafeStatic(`scw-${Components.link}${suffix}`);\n }\n\n /** parseAndValidateLightDom, just adding local parsing and validation */\n parseAndValidateLightDom() {\n parseLightDomCard(this);\n super.parseAndValidateLightDom();\n }\n\n /**\n * Handle click event from link so it doesn't trigger twice\n * @param {Event} evt\n */\n clickHandler(evt : Event) {\n evt.stopPropagation();\n this.click();\n }\n\n /**\n * change the main heading to be the error.\n * @param {string} message describing warning\n */\n warn( message: string ) {\n this.heading = `error: ${message}`;\n ScwComponent.prototype.warn.call(this, message );\n }\n\n /**\n * Render image area\n * @return {object} component DOM\n */\n renderImage() {\n if (\n ( this.src || this.srcset ) &&\n this.alt ) {\n return html`\n <scw-image\n class=\"image-box\"\n src=\"${ifDefined(this.src)}\"\n srcset=\"${ifDefined(this.srcset)}\"\n alt=\"${this.alt}\"\n object-fit=\"cover\">\n </scw-image>\n `;\n }\n }\n\n /**\n * Render link area\n * @return {object} component DOM\n */\n renderButton() {\n if ( this.action === ScwCardActions.link) {\n return html`\n <scw-link\n aria-label=\"${this.linkLabel ? this.linkLabel : 'no label'}\" \n @click=\"${this.clickHandler}\">\n </scw-link>`;\n }\n return null;\n }\n\n /**\n * get string to use in the size attribute of scw-header\n * @return {string}\n */\n getSizeStringForHeader() {\n switch (this.size) {\n case ScwCardSizes.large:\n return 'h1';\n case ScwCardSizes.medium:\n return 'h2';\n case ScwCardSizes.small:\n return 'h3';\n }\n }\n\n /**\n * render body\n * @return {object} component DOM\n */\n renderBody() : object {\n return html`\n ${this.renderImage()}\n ${this.superHeading ?\n html`\n <div class=\"super-heading\">\n ${this.superHeading}\n </div>` : ''\n }\n <scw-heading\n style=\"--scw-color-04: var( --scw-color-grey-02 );\"\n dynamic class=\"heading\"\n aria-label=\"${ifDefined(this.heading)}\"\n size=\"${this.getSizeStringForHeader() as ScwHeadingSizes}\">\n </scw-heading>\n ${this.description ?\n html`\n <div class=\"description\">\n ${this.description}\n </div>` : ''\n }`;\n }\n\n /**\n * render\n * @return {object} component DOM\n */\n render() : object {\n if (this.action === ScwCardActions.whole) {\n return this.renderBody();\n } else {\n return html`\n ${this.renderBody()}\n ${this.renderButton()}`;\n };\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|