@gospore/checkbox 1.0.62 → 1.0.64
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/checkbox.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require("vue"),l=require("@fortawesome/vue-fontawesome"),u=require("@fortawesome/free-solid-svg-icons"),d=require("lodash/without.js");d=s(d,1);let f=require("@gospore/skeleton");var p=[`title`],m={class:`checkbox-input-container`},h=[`value`,`disabled`],g={key:0,class:`checkbox-label`},_={key:1,class:`checkbox-label`},v=(0,c.defineComponent)({name:`Checkbox`,inheritAttrs:!1,__name:`Checkbox`,props:{checked:{type:[Boolean,Array],default:!1},value:{type:[String,Object],default:``},label:{type:String,default:``},disabled:{type:Boolean,default:!1}},emits:[`update:checked`,`keyup`,`click`],setup(e,{emit:t}){let n=e,r=t,i=(0,c.useAttrs)(),a=(0,c.useSlots)(),o=(0,c.ref)(!1),s=(0,c.ref)(n.checked),f=(0,c.computed)(()=>typeof s.value==`boolean`?s.value:s.value.includes(n.value)),v=(0,c.computed)(()=>{let{class:e,...t}=i;return Object.assign({},t,{onClick(e){n.disabled||r(`click`,e)},onKeyup(e){r(`keyup`,e),!n.disabled&&e.key===`Enter`&&(r(`click`,e),typeof s.value==`boolean`?s.value=!s.value:s.value.includes(n.value)?s.value=(0,d.default)(s.value,n.value):s.value=[...s.value,n.value])}})});return(0,c.watch)(()=>n.checked,e=>{s.value=e}),(0,c.watch)(()=>s.value,()=>{s.value!=n.checked&&r(`update:checked`,s.value)}),(t,n)=>((0,c.openBlock)(),(0,c.createElementBlock)(`label`,{class:(0,c.normalizeClass)([`checkbox`,{"checkbox-disabled":e.disabled},(0,c.unref)(i).class]),title:(0,c.unref)(i).title},[(0,c.createElementVNode)(`div`,m,[(0,c.createElementVNode)(`span`,{class:(0,c.normalizeClass)([`checkbox-input`,{"checkbox-checked":f.value,"checkbox-focused":o.value}])},[(0,c.createVNode)((0,c.unref)(l.FontAwesomeIcon),{class:`checkbox-input-icon`,icon:(0,c.unref)(u.faCheck),"aria-hidden":`true`},null,8,[`icon`]),(0,c.withDirectives)((0,c.createElementVNode)(`input`,(0,c.mergeProps)(v.value,{"onUpdate:modelValue":n[0]||=e=>s.value=e,type:`checkbox`,value:e.value,disabled:e.disabled,onFocus:n[1]||=e=>o.value=!0,onFocusout:n[2]||=e=>o.value=!1}),null,16,h),[[c.vModelCheckbox,s.value]])],2)]),a.default?((0,c.openBlock)(),(0,c.createElementBlock)(`div`,g,[(0,c.renderSlot)(t.$slots,`default`,{},void 0,!0)])):((0,c.openBlock)(),(0,c.createElementBlock)(`span`,_,(0,c.toDisplayString)(e.label),1))],10,p))}}),y=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},b=y(v,[[`__scopeId`,`data-v-7f545d9a`]]),x={class:`checkbox-skeleton`},S=y((0,c.defineComponent)({name:`CheckboxSkeleton`,__name:`CheckboxSkeleton`,props:{labelWidth:{type:[String,Number],default:`10rem`},shimmer:{type:Boolean,default:!1}},setup(e){return(t,n)=>((0,c.openBlock)(),(0,c.createElementBlock)(`div`,x,[(0,c.createVNode)((0,c.unref)(f.Skeleton),{width:`var(--size-20)`,height:`var(--size-20)`,radius:`var(--border-radius-regular)`,shimmer:e.shimmer},null,8,[`shimmer`]),(0,c.createVNode)((0,c.unref)(f.Skeleton),{width:e.labelWidth,height:`var(--size-16)`,shimmer:e.shimmer},null,8,[`width`,`shimmer`])]))}}),[[`__scopeId`,`data-v-472ff734`]]);exports.Checkbox=b,exports.CheckboxSkeleton=S;
|
|
2
2
|
//# sourceMappingURL=checkbox.cjs.js.map
|
package/dist/checkbox.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.cjs.js","names":[],"sources":["../src/Checkbox.vue","../src/Checkbox.vue","../src/CheckboxSkeleton.vue","../src/CheckboxSkeleton.vue"],"sourcesContent":["<template>\n <label\n :class=\"['checkbox', { 'checkbox-disabled': disabled }, defaultAttrs.class]\"\n :title=\"defaultAttrs.title\"\n >\n <div class=\"checkbox-input-container\">\n <span\n :class=\"[\n 'checkbox-input',\n {\n 'checkbox-checked': isChecked,\n 'checkbox-focused': focused,\n },\n ]\"\n >\n <font-awesome-icon class=\"checkbox-input-icon\" :icon=\"faCheck\" aria-hidden=\"true\" />\n <input\n v-bind=\"attrs\"\n v-model=\"internalChecked\"\n type=\"checkbox\"\n :value=\"value\"\n :disabled=\"disabled\"\n @focus=\"focused = true\"\n @focusout=\"focused = false\"\n />\n </span>\n </div>\n <div v-if=\"slots.default\" class=\"checkbox-label\">\n <slot />\n </div>\n <span v-else class=\"checkbox-label\">{{ label }}</span>\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs, ref, computed, watch } from \"vue\";\nimport type { PropType } from \"vue\";\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheck } from \"@fortawesome/free-solid-svg-icons\";\nimport without from \"lodash/without.js\";\n\ntype CheckboxValue = string | Record<string, unknown>;\ntype CheckboxChecked = boolean | CheckboxValue[];\n\ndefineOptions({\n name: \"Checkbox\",\n inheritAttrs: false,\n});\nconst props = defineProps({\n /**\n * Controlled state. Pass a boolean for single checkboxes or an array for checkbox groups (the\n * component will push/pop value). Supports v-model:checked.\n */\n checked: {\n type: [Boolean, Array] as PropType<CheckboxChecked>,\n default: false,\n },\n /**\n * The value inserted or removed from the bound array when used in group mode. Ignored for\n * boolean usage.\n */\n value: {\n type: [String, Object] as PropType<CheckboxValue>,\n default: \"\",\n },\n /** Fallback label text when no default slot is provided. */\n label: {\n type: String,\n default: \"\",\n },\n /** Greys out the checkbox and prevents user interaction. */\n disabled: {\n type: Boolean,\n default: false,\n },\n});\nconst emit = defineEmits([\"update:checked\", \"keyup\", \"click\"]);\nconst defaultAttrs = useAttrs() as Record<string, unknown> & {\n class?: unknown;\n title?: string;\n};\nconst slots = defineSlots<{\n /** Custom label content rendered next to the checkbox input. */\n default?: () => unknown;\n}>();\nconst focused = ref(false);\nconst internalChecked = ref<CheckboxChecked>(props.checked);\n\nconst isChecked = computed(() => {\n if (typeof internalChecked.value === \"boolean\") {\n return internalChecked.value;\n } else {\n return internalChecked.value.includes(props.value);\n }\n});\nconst attrs = computed(() => {\n const { class: omittedClass, ...inputAttrs } = defaultAttrs;\n void omittedClass;\n return Object.assign({}, inputAttrs, {\n onClick(event: MouseEvent) {\n if (!props.disabled) {\n emit(\"click\", event);\n }\n },\n // Pressing the enter key gets handled like a click.\n onKeyup(event: KeyboardEvent) {\n emit(\"keyup\", event);\n if (props.disabled) {\n return;\n }\n if (event.key === \"Enter\") {\n emit(\"click\", event);\n if (typeof internalChecked.value == \"boolean\") {\n internalChecked.value = !internalChecked.value;\n } else {\n if (internalChecked.value.includes(props.value)) {\n internalChecked.value = without(internalChecked.value, props.value);\n } else {\n internalChecked.value = [...internalChecked.value, props.value];\n }\n }\n }\n },\n });\n});\n\nwatch(\n () => props.checked,\n (checked) => {\n internalChecked.value = checked;\n },\n);\nwatch(\n () => internalChecked.value,\n () => {\n // Only emit the update:checked event if the mutation came from within the checkbox component.\n if (internalChecked.value != props.checked) {\n emit(\"update:checked\", internalChecked.value);\n }\n },\n);\n</script>\n\n<style>\n@import \"theme.css\";\n</style>\n\n<style lang=\"less\" scoped>\n.checkbox {\n position: relative;\n display: flex;\n padding: var(--checkbox-padding);\n\n .checkbox-input-container {\n padding: 5px;\n }\n .checkbox-input {\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--checkbox-height);\n width: var(--checkbox-width);\n box-sizing: border-box;\n border-radius: var(--checkbox-border-radius);\n border: var(--checkbox-border-width) solid;\n background-color: var(--checkbox-background-default-default-light);\n color: var(--checkbox-color-default-default-light);\n border-color: var(--checkbox-border-color-default-default-light);\n transition: var(--checkbox-transition);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-light);\n color: var(--checkbox-color-default-hover-light);\n border-color: var(--checkbox-border-color-default-hover-light);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-light);\n color: var(--checkbox-color-default-active-light);\n border-color: var(--checkbox-border-color-default-active-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-light);\n color: var(--checkbox-color-checked-default-light);\n border-color: var(--checkbox-border-color-checked-default-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-light);\n color: var(--checkbox-color-checked-hover-light);\n border-color: var(--checkbox-border-color-checked-hover-light);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-light);\n color: var(--checkbox-color-checked-active-light);\n border-color: var(--checkbox-border-color-checked-active-light);\n }\n}\n.checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-light);\n cursor: not-allowed;\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n}\n.checkbox-input-icon {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n padding: 1px;\n}\n.checkbox-label {\n padding: var(--checkbox-label-padding);\n line-height: var(--checkbox-line-height);\n}\ninput {\n margin: 0;\n opacity: 0;\n position: absolute;\n pointer-events: none;\n}\n[data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-light) !important;\n}\n\n[dark-mode=\"true\"] {\n .checkbox {\n .checkbox-input {\n background-color: var(--checkbox-background-default-default-dark);\n color: var(--checkbox-color-default-default-dark);\n border-color: var(--checkbox-border-color-default-default-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-dark);\n color: var(--checkbox-color-default-hover-dark);\n border-color: var(--checkbox-border-color-default-hover-dark);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-dark);\n color: var(--checkbox-color-default-active-dark);\n border-color: var(--checkbox-border-color-default-active-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-dark);\n color: var(--checkbox-color-checked-default-dark);\n border-color: var(--checkbox-border-color-checked-default-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-dark);\n color: var(--checkbox-color-checked-hover-dark);\n border-color: var(--checkbox-border-color-checked-hover-dark);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-dark);\n color: var(--checkbox-color-checked-active-dark);\n border-color: var(--checkbox-border-color-checked-active-dark);\n }\n }\n .checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-dark);\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n }\n\n [data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-dark) !important;\n }\n}\n</style>\n","<template>\n <label\n :class=\"['checkbox', { 'checkbox-disabled': disabled }, defaultAttrs.class]\"\n :title=\"defaultAttrs.title\"\n >\n <div class=\"checkbox-input-container\">\n <span\n :class=\"[\n 'checkbox-input',\n {\n 'checkbox-checked': isChecked,\n 'checkbox-focused': focused,\n },\n ]\"\n >\n <font-awesome-icon class=\"checkbox-input-icon\" :icon=\"faCheck\" aria-hidden=\"true\" />\n <input\n v-bind=\"attrs\"\n v-model=\"internalChecked\"\n type=\"checkbox\"\n :value=\"value\"\n :disabled=\"disabled\"\n @focus=\"focused = true\"\n @focusout=\"focused = false\"\n />\n </span>\n </div>\n <div v-if=\"slots.default\" class=\"checkbox-label\">\n <slot />\n </div>\n <span v-else class=\"checkbox-label\">{{ label }}</span>\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs, ref, computed, watch } from \"vue\";\nimport type { PropType } from \"vue\";\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheck } from \"@fortawesome/free-solid-svg-icons\";\nimport without from \"lodash/without.js\";\n\ntype CheckboxValue = string | Record<string, unknown>;\ntype CheckboxChecked = boolean | CheckboxValue[];\n\ndefineOptions({\n name: \"Checkbox\",\n inheritAttrs: false,\n});\nconst props = defineProps({\n /**\n * Controlled state. Pass a boolean for single checkboxes or an array for checkbox groups (the\n * component will push/pop value). Supports v-model:checked.\n */\n checked: {\n type: [Boolean, Array] as PropType<CheckboxChecked>,\n default: false,\n },\n /**\n * The value inserted or removed from the bound array when used in group mode. Ignored for\n * boolean usage.\n */\n value: {\n type: [String, Object] as PropType<CheckboxValue>,\n default: \"\",\n },\n /** Fallback label text when no default slot is provided. */\n label: {\n type: String,\n default: \"\",\n },\n /** Greys out the checkbox and prevents user interaction. */\n disabled: {\n type: Boolean,\n default: false,\n },\n});\nconst emit = defineEmits<{\n \"update:checked\": [value: CheckboxChecked];\n keyup: [event: KeyboardEvent];\n click: [event: MouseEvent | KeyboardEvent];\n}>();\nconst defaultAttrs = useAttrs() as Record<string, unknown> & {\n class?: unknown;\n title?: string;\n};\nconst slots = defineSlots<{\n /** Custom label content rendered next to the checkbox input. */\n default?: () => unknown;\n}>();\nconst focused = ref(false);\nconst internalChecked = ref<CheckboxChecked>(props.checked);\n\nconst isChecked = computed(() => {\n if (typeof internalChecked.value === \"boolean\") {\n return internalChecked.value;\n } else {\n return internalChecked.value.includes(props.value);\n }\n});\nconst attrs = computed(() => {\n const { class: omittedClass, ...inputAttrs } = defaultAttrs;\n void omittedClass;\n return Object.assign({}, inputAttrs, {\n onClick(event: MouseEvent) {\n if (!props.disabled) {\n emit(\"click\", event);\n }\n },\n // Pressing the enter key gets handled like a click.\n onKeyup(event: KeyboardEvent) {\n emit(\"keyup\", event);\n if (props.disabled) {\n return;\n }\n if (event.key === \"Enter\") {\n emit(\"click\", event);\n if (typeof internalChecked.value == \"boolean\") {\n internalChecked.value = !internalChecked.value;\n } else {\n if (internalChecked.value.includes(props.value)) {\n internalChecked.value = without(internalChecked.value, props.value);\n } else {\n internalChecked.value = [...internalChecked.value, props.value];\n }\n }\n }\n },\n });\n});\n\nwatch(\n () => props.checked,\n (checked) => {\n internalChecked.value = checked;\n },\n);\nwatch(\n () => internalChecked.value,\n () => {\n // Only emit the update:checked event if the mutation came from within the checkbox component.\n if (internalChecked.value != props.checked) {\n emit(\"update:checked\", internalChecked.value);\n }\n },\n);\n</script>\n\n<style>\n@import \"theme.css\";\n</style>\n\n<style lang=\"less\" scoped>\n.checkbox {\n position: relative;\n display: flex;\n padding: var(--checkbox-padding);\n\n .checkbox-input-container {\n padding: 5px;\n }\n .checkbox-input {\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--checkbox-height);\n width: var(--checkbox-width);\n box-sizing: border-box;\n border-radius: var(--checkbox-border-radius);\n border: var(--checkbox-border-width) solid;\n background-color: var(--checkbox-background-default-default-light);\n color: var(--checkbox-color-default-default-light);\n border-color: var(--checkbox-border-color-default-default-light);\n transition: var(--checkbox-transition);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-light);\n color: var(--checkbox-color-default-hover-light);\n border-color: var(--checkbox-border-color-default-hover-light);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-light);\n color: var(--checkbox-color-default-active-light);\n border-color: var(--checkbox-border-color-default-active-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-light);\n color: var(--checkbox-color-checked-default-light);\n border-color: var(--checkbox-border-color-checked-default-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-light);\n color: var(--checkbox-color-checked-hover-light);\n border-color: var(--checkbox-border-color-checked-hover-light);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-light);\n color: var(--checkbox-color-checked-active-light);\n border-color: var(--checkbox-border-color-checked-active-light);\n }\n}\n.checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-light);\n cursor: not-allowed;\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n}\n.checkbox-input-icon {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n padding: 1px;\n}\n.checkbox-label {\n padding: var(--checkbox-label-padding);\n line-height: var(--checkbox-line-height);\n}\ninput {\n margin: 0;\n opacity: 0;\n position: absolute;\n pointer-events: none;\n}\n[data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-light) !important;\n}\n\n[dark-mode=\"true\"] {\n .checkbox {\n .checkbox-input {\n background-color: var(--checkbox-background-default-default-dark);\n color: var(--checkbox-color-default-default-dark);\n border-color: var(--checkbox-border-color-default-default-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-dark);\n color: var(--checkbox-color-default-hover-dark);\n border-color: var(--checkbox-border-color-default-hover-dark);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-dark);\n color: var(--checkbox-color-default-active-dark);\n border-color: var(--checkbox-border-color-default-active-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-dark);\n color: var(--checkbox-color-checked-default-dark);\n border-color: var(--checkbox-border-color-checked-default-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-dark);\n color: var(--checkbox-color-checked-hover-dark);\n border-color: var(--checkbox-border-color-checked-hover-dark);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-dark);\n color: var(--checkbox-color-checked-active-dark);\n border-color: var(--checkbox-border-color-checked-active-dark);\n }\n }\n .checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-dark);\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n }\n\n [data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-dark) !important;\n }\n}\n</style>\n","<template>\n <div class=\"checkbox-skeleton\">\n <Skeleton\n width=\"var(--size-20)\"\n height=\"var(--size-20)\"\n radius=\"var(--border-radius-regular)\"\n :shimmer=\"shimmer\"\n />\n <Skeleton :width=\"labelWidth\" height=\"var(--size-16)\" :shimmer=\"shimmer\" />\n </div>\n</template>\n<script setup lang=\"ts\">\nimport type { PropType } from \"vue\";\nimport { Skeleton } from \"@gospore/skeleton\";\ntype SkeletonDimension = string | number;\ndefineOptions({ name: \"CheckboxSkeleton\" });\ndefineProps({\n /** Sets the placeholder width for the label line. Numbers are converted to px. */\n labelWidth: { type: [String, Number] as PropType<SkeletonDimension>, default: \"10rem\" },\n /** Enables the animated shimmer effect for the placeholder. */\n shimmer: { type: Boolean, default: false },\n});\n</script>\n<style scoped lang=\"less\">\n.checkbox-skeleton {\n display: inline-flex;\n align-items: center;\n gap: var(--size-8);\n}\n</style>\n","<template>\n <div class=\"checkbox-skeleton\">\n <Skeleton\n width=\"var(--size-20)\"\n height=\"var(--size-20)\"\n radius=\"var(--border-radius-regular)\"\n :shimmer=\"shimmer\"\n />\n <Skeleton :width=\"labelWidth\" height=\"var(--size-16)\" :shimmer=\"shimmer\" />\n </div>\n</template>\n<script setup lang=\"ts\">\nimport type { PropType } from \"vue\";\nimport { Skeleton } from \"@gospore/skeleton\";\ntype SkeletonDimension = string | number;\ndefineOptions({ name: \"CheckboxSkeleton\" });\ndefineProps({\n /** Sets the placeholder width for the label line. Numbers are converted to px. */\n labelWidth: { type: [String, Number] as PropType<SkeletonDimension>, default: \"10rem\" },\n /** Enables the animated shimmer effect for the placeholder. */\n shimmer: { type: Boolean, default: false },\n});\n</script>\n<style scoped lang=\"less\">\n.checkbox-skeleton {\n display: inline-flex;\n align-items: center;\n gap: var(--size-8);\n}\n</style>\n"],"mappings":"0oCAgDA,IAAM,EAAQ,EA4BR,EAAO,EACP,GAAA,EAAA,EAAA,UAAwB,EAIxB,GAAA,EAAA,EAAA,UAAQ,EAIR,GAAA,EAAA,EAAA,KAAc,EAAK,EACnB,GAAA,EAAA,EAAA,KAAuC,EAAM,OAAO,EAEpD,GAAA,EAAA,EAAA,cACE,OAAO,EAAgB,OAAU,UAC1B,EAAgB,MAEhB,EAAgB,MAAM,SAAS,EAAM,KAAK,CAExD,EACK,GAAA,EAAA,EAAA,cAAuB,CACzB,GAAM,CAAE,MAAO,EAAc,GAAG,GAAe,EAE/C,OAAO,OAAO,OAAO,CAAC,EAAG,EAAY,CACjC,QAAQ,EAAmB,CAClB,EAAM,UACP,EAAK,QAAS,CAAK,CAE3B,EAEA,QAAQ,EAAsB,CAC1B,EAAK,QAAS,CAAK,EACf,GAAM,UAGN,EAAM,MAAQ,UACd,EAAK,QAAS,CAAK,EACf,OAAO,EAAgB,OAAS,UAChC,EAAgB,MAAQ,CAAC,EAAgB,MAErC,EAAgB,MAAM,SAAS,EAAM,KAAK,EAC1C,EAAgB,OAAA,EAAA,EAAA,SAAgB,EAAgB,MAAO,EAAM,KAAK,EAElE,EAAgB,MAAQ,CAAC,GAAG,EAAgB,MAAO,EAAM,KAAK,EAI9E,CACJ,CAAC,CACL,CAAC,SAED,EAAA,EAAA,WACU,EAAM,QACX,GAAY,CACT,EAAgB,MAAQ,CAC5B,CACJ,GACA,EAAA,EAAA,WACU,EAAgB,UAChB,CAEE,EAAgB,OAAS,EAAM,SAC/B,EAAK,iBAAkB,EAAgB,KAAK,CAEpD,CACJ,qDA7GY,QAAA,CA7BH,OAAA,EAAA,EAAA,gBAAK,CAAA,WAAA,CAAA,oBAAsC,EAAA,QAAQ,cAAI,CAAA,EAAa,KAAK,CAAA,EACzE,OAAA,EAAA,EAAA,OAAO,CAAA,EAAa,iCAuBf,MArBN,EAqBM,EAAA,EAAA,EAAA,oBADK,OAAA,CAlBF,OAAA,EAAA,EAAA,gBAAK,CAAA,iBAAA,oBAA4G,EAAA,yBAAuD,EAAA,yCAQrF,EAAA,eAAA,EAAA,CAAjE,MAAM,sBAAuB,MAAA,EAAA,EAAA,OAAM,EAAA,OAAA,EAAS,cAAY,uEASzE,SAAA,EAAA,EAAA,YAPU,EAOV,MAPe,mCACW,MAAA,EACxB,KAAK,WACJ,MAAO,EAAA,MACP,SAAU,EAAA,SACV,QAAK,AAAA,EAAA,KAAA,GAAE,EAAA,MAAO,GACd,WAAQ,AAAA,EAAA,KAAA,GAAE,EAAA,MAAO,mCALT,EAAA,KAAe,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EASzB,EAAM,UAAA,EAAA,EAAA,WAAA,GAAA,EAAA,EAAA,oBAEX,MAFN,EAEM,EAAA,EAAA,EAAA,YADM,EAAA,OAAA,UAAA,CAAA,EAAA,IAAA,GAAA,EAAA,CAAA,CAAA,KAAA,EAAA,EAAA,WAAA,GAAA,EAAA,EAAA,oBAE0C,OAAtD,GAAA,EAAA,EAAA,iBAAuC,EAAA,KAAK,EAAA,CAAA,EAAA,EAAA,GAAA,CAAA,yXErB1C,MARN,EAQM,EAAA,EAAA,EAAA,cAAA,EAAA,EAAA,OAFA,EAAA,QAAA,EAAA,CAJE,MAAM,iBACN,OAAO,iBACP,OAAO,+BACN,QAAS,EAAA,2DAE6D,EAAA,QAAA,EAAA,CAAhE,MAAO,EAAA,WAAY,OAAO,iBAAkB,QAAS,EAAA"}
|
|
1
|
+
{"version":3,"file":"checkbox.cjs.js","names":[],"sources":["../src/Checkbox.vue","../src/Checkbox.vue","../src/CheckboxSkeleton.vue","../src/CheckboxSkeleton.vue"],"sourcesContent":["<template>\n <label\n :class=\"['checkbox', { 'checkbox-disabled': disabled }, defaultAttrs.class]\"\n :title=\"defaultAttrs.title\"\n >\n <div class=\"checkbox-input-container\">\n <span\n :class=\"[\n 'checkbox-input',\n {\n 'checkbox-checked': isChecked,\n 'checkbox-focused': focused,\n },\n ]\"\n >\n <font-awesome-icon class=\"checkbox-input-icon\" :icon=\"faCheck\" aria-hidden=\"true\" />\n <input\n v-bind=\"attrs\"\n v-model=\"internalChecked\"\n type=\"checkbox\"\n :value=\"value\"\n :disabled=\"disabled\"\n @focus=\"focused = true\"\n @focusout=\"focused = false\"\n />\n </span>\n </div>\n <div v-if=\"slots.default\" class=\"checkbox-label\">\n <slot />\n </div>\n <span v-else class=\"checkbox-label\">{{ label }}</span>\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs, ref, computed, watch } from \"vue\";\nimport type { PropType } from \"vue\";\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheck } from \"@fortawesome/free-solid-svg-icons\";\nimport without from \"lodash/without.js\";\n\ntype CheckboxValue = string | Record<string, unknown>;\ntype CheckboxChecked = boolean | CheckboxValue[];\n\ndefineOptions({\n name: \"Checkbox\",\n inheritAttrs: false,\n});\nconst props = defineProps({\n /**\n * Controlled state. Pass a boolean for single checkboxes or an array for checkbox groups (the\n * component will push/pop value). Supports v-model:checked.\n */\n checked: {\n type: [Boolean, Array] as PropType<CheckboxChecked>,\n default: false,\n },\n /**\n * The value inserted or removed from the bound array when used in group mode. Ignored for\n * boolean usage.\n */\n value: {\n type: [String, Object] as PropType<CheckboxValue>,\n default: \"\",\n },\n /** Fallback label text when no default slot is provided. */\n label: {\n type: String,\n default: \"\",\n },\n /** Greys out the checkbox and prevents user interaction. */\n disabled: {\n type: Boolean,\n default: false,\n },\n});\nconst emit = defineEmits([\"update:checked\", \"keyup\", \"click\"]);\nconst defaultAttrs = useAttrs() as Record<string, unknown> & {\n class?: unknown;\n title?: string;\n};\nconst slots = defineSlots<{\n /** Custom label content rendered next to the checkbox input. */\n default?: () => unknown;\n}>();\nconst focused = ref(false);\nconst internalChecked = ref<CheckboxChecked>(props.checked);\n\nconst isChecked = computed(() => {\n if (typeof internalChecked.value === \"boolean\") {\n return internalChecked.value;\n } else {\n return internalChecked.value.includes(props.value);\n }\n});\nconst attrs = computed(() => {\n const { class: omittedClass, ...inputAttrs } = defaultAttrs;\n void omittedClass;\n return Object.assign({}, inputAttrs, {\n onClick(event: MouseEvent) {\n if (!props.disabled) {\n emit(\"click\", event);\n }\n },\n // Pressing the enter key gets handled like a click.\n onKeyup(event: KeyboardEvent) {\n emit(\"keyup\", event);\n if (props.disabled) {\n return;\n }\n if (event.key === \"Enter\") {\n emit(\"click\", event);\n if (typeof internalChecked.value == \"boolean\") {\n internalChecked.value = !internalChecked.value;\n } else {\n if (internalChecked.value.includes(props.value)) {\n internalChecked.value = without(internalChecked.value, props.value);\n } else {\n internalChecked.value = [...internalChecked.value, props.value];\n }\n }\n }\n },\n });\n});\n\nwatch(\n () => props.checked,\n (checked) => {\n internalChecked.value = checked;\n },\n);\nwatch(\n () => internalChecked.value,\n () => {\n // Only emit the update:checked event if the mutation came from within the checkbox component.\n if (internalChecked.value != props.checked) {\n emit(\"update:checked\", internalChecked.value);\n }\n },\n);\n</script>\n\n<style>\n@import \"theme.css\";\n</style>\n\n<style lang=\"less\" scoped>\n.checkbox {\n position: relative;\n display: flex;\n padding: var(--checkbox-padding);\n\n .checkbox-input-container {\n padding: 5px;\n }\n .checkbox-input {\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--checkbox-height);\n width: var(--checkbox-width);\n box-sizing: border-box;\n border-radius: var(--checkbox-border-radius);\n border: var(--checkbox-border-width) solid;\n background-color: var(--checkbox-background-default-default-light);\n color: var(--checkbox-color-default-default-light);\n border-color: var(--checkbox-border-color-default-default-light);\n transition: var(--checkbox-transition);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-light);\n color: var(--checkbox-color-default-hover-light);\n border-color: var(--checkbox-border-color-default-hover-light);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-light);\n color: var(--checkbox-color-default-active-light);\n border-color: var(--checkbox-border-color-default-active-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-light);\n color: var(--checkbox-color-checked-default-light);\n border-color: var(--checkbox-border-color-checked-default-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-light);\n color: var(--checkbox-color-checked-hover-light);\n border-color: var(--checkbox-border-color-checked-hover-light);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-light);\n color: var(--checkbox-color-checked-active-light);\n border-color: var(--checkbox-border-color-checked-active-light);\n }\n}\n.checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-light);\n cursor: not-allowed;\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n}\n.checkbox-input-icon {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n padding: 1px;\n}\n.checkbox-label {\n padding: var(--checkbox-label-padding);\n line-height: var(--checkbox-line-height);\n}\ninput {\n margin: 0;\n opacity: 0;\n position: absolute;\n pointer-events: none;\n}\n[data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-light) !important;\n}\n\n[dark-mode=\"true\"] {\n .checkbox {\n .checkbox-input {\n background-color: var(--checkbox-background-default-default-dark);\n color: var(--checkbox-color-default-default-dark);\n border-color: var(--checkbox-border-color-default-default-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-dark);\n color: var(--checkbox-color-default-hover-dark);\n border-color: var(--checkbox-border-color-default-hover-dark);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-dark);\n color: var(--checkbox-color-default-active-dark);\n border-color: var(--checkbox-border-color-default-active-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-dark);\n color: var(--checkbox-color-checked-default-dark);\n border-color: var(--checkbox-border-color-checked-default-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-dark);\n color: var(--checkbox-color-checked-hover-dark);\n border-color: var(--checkbox-border-color-checked-hover-dark);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-dark);\n color: var(--checkbox-color-checked-active-dark);\n border-color: var(--checkbox-border-color-checked-active-dark);\n }\n }\n .checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-dark);\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n }\n\n [data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-dark) !important;\n }\n}\n</style>\n","<template>\n <label\n :class=\"['checkbox', { 'checkbox-disabled': disabled }, defaultAttrs.class]\"\n :title=\"defaultAttrs.title\"\n >\n <div class=\"checkbox-input-container\">\n <span\n :class=\"[\n 'checkbox-input',\n {\n 'checkbox-checked': isChecked,\n 'checkbox-focused': focused,\n },\n ]\"\n >\n <font-awesome-icon class=\"checkbox-input-icon\" :icon=\"faCheck\" aria-hidden=\"true\" />\n <input\n v-bind=\"attrs\"\n v-model=\"internalChecked\"\n type=\"checkbox\"\n :value=\"value\"\n :disabled=\"disabled\"\n @focus=\"focused = true\"\n @focusout=\"focused = false\"\n />\n </span>\n </div>\n <div v-if=\"slots.default\" class=\"checkbox-label\">\n <slot />\n </div>\n <span v-else class=\"checkbox-label\">{{ label }}</span>\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs, ref, computed, watch } from \"vue\";\nimport type { PropType } from \"vue\";\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheck } from \"@fortawesome/free-solid-svg-icons\";\nimport without from \"lodash/without.js\";\n\ntype CheckboxValue = string | Record<string, unknown>;\ntype CheckboxChecked = boolean | CheckboxValue[];\n\ndefineOptions({\n name: \"Checkbox\",\n inheritAttrs: false,\n});\nconst props = defineProps({\n /**\n * Controlled state. Pass a boolean for single checkboxes or an array for checkbox groups (the\n * component will push/pop value). Supports v-model:checked.\n */\n checked: {\n type: [Boolean, Array] as PropType<CheckboxChecked>,\n default: false,\n },\n /**\n * The value inserted or removed from the bound array when used in group mode. Ignored for\n * boolean usage.\n */\n value: {\n type: [String, Object] as PropType<CheckboxValue>,\n default: \"\",\n },\n /** Fallback label text when no default slot is provided. */\n label: {\n type: String,\n default: \"\",\n },\n /** Greys out the checkbox and prevents user interaction. */\n disabled: {\n type: Boolean,\n default: false,\n },\n});\nconst emit = defineEmits<{\n \"update:checked\": [value: CheckboxChecked];\n keyup: [event: KeyboardEvent];\n click: [event: MouseEvent | KeyboardEvent];\n}>();\nconst defaultAttrs = useAttrs() as Record<string, unknown> & {\n class?: unknown;\n title?: string;\n};\nconst slots = defineSlots<{\n /** Custom label content rendered next to the checkbox input. */\n default?: () => unknown;\n}>();\nconst focused = ref(false);\nconst internalChecked = ref<CheckboxChecked>(props.checked);\n\nconst isChecked = computed(() => {\n if (typeof internalChecked.value === \"boolean\") {\n return internalChecked.value;\n } else {\n return internalChecked.value.includes(props.value);\n }\n});\nconst attrs = computed(() => {\n const { class: omittedClass, ...inputAttrs } = defaultAttrs;\n void omittedClass;\n return Object.assign({}, inputAttrs, {\n onClick(event: MouseEvent) {\n if (!props.disabled) {\n emit(\"click\", event);\n }\n },\n // Pressing the enter key gets handled like a click.\n onKeyup(event: KeyboardEvent) {\n emit(\"keyup\", event);\n if (props.disabled) {\n return;\n }\n if (event.key === \"Enter\") {\n emit(\"click\", event);\n if (typeof internalChecked.value == \"boolean\") {\n internalChecked.value = !internalChecked.value;\n } else {\n if (internalChecked.value.includes(props.value)) {\n internalChecked.value = without(internalChecked.value, props.value);\n } else {\n internalChecked.value = [...internalChecked.value, props.value];\n }\n }\n }\n },\n });\n});\n\nwatch(\n () => props.checked,\n (checked) => {\n internalChecked.value = checked;\n },\n);\nwatch(\n () => internalChecked.value,\n () => {\n // Only emit the update:checked event if the mutation came from within the checkbox component.\n if (internalChecked.value != props.checked) {\n emit(\"update:checked\", internalChecked.value);\n }\n },\n);\n</script>\n\n<style>\n@import \"theme.css\";\n</style>\n\n<style lang=\"less\" scoped>\n.checkbox {\n position: relative;\n display: flex;\n padding: var(--checkbox-padding);\n\n .checkbox-input-container {\n padding: 5px;\n }\n .checkbox-input {\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--checkbox-height);\n width: var(--checkbox-width);\n box-sizing: border-box;\n border-radius: var(--checkbox-border-radius);\n border: var(--checkbox-border-width) solid;\n background-color: var(--checkbox-background-default-default-light);\n color: var(--checkbox-color-default-default-light);\n border-color: var(--checkbox-border-color-default-default-light);\n transition: var(--checkbox-transition);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-light);\n color: var(--checkbox-color-default-hover-light);\n border-color: var(--checkbox-border-color-default-hover-light);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-light);\n color: var(--checkbox-color-default-active-light);\n border-color: var(--checkbox-border-color-default-active-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-light);\n color: var(--checkbox-color-checked-default-light);\n border-color: var(--checkbox-border-color-checked-default-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-light);\n color: var(--checkbox-color-checked-hover-light);\n border-color: var(--checkbox-border-color-checked-hover-light);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-light);\n color: var(--checkbox-color-checked-active-light);\n border-color: var(--checkbox-border-color-checked-active-light);\n }\n}\n.checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-light);\n cursor: not-allowed;\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n}\n.checkbox-input-icon {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n padding: 1px;\n}\n.checkbox-label {\n padding: var(--checkbox-label-padding);\n line-height: var(--checkbox-line-height);\n}\ninput {\n margin: 0;\n opacity: 0;\n position: absolute;\n pointer-events: none;\n}\n[data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-light) !important;\n}\n\n[dark-mode=\"true\"] {\n .checkbox {\n .checkbox-input {\n background-color: var(--checkbox-background-default-default-dark);\n color: var(--checkbox-color-default-default-dark);\n border-color: var(--checkbox-border-color-default-default-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-dark);\n color: var(--checkbox-color-default-hover-dark);\n border-color: var(--checkbox-border-color-default-hover-dark);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-dark);\n color: var(--checkbox-color-default-active-dark);\n border-color: var(--checkbox-border-color-default-active-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-dark);\n color: var(--checkbox-color-checked-default-dark);\n border-color: var(--checkbox-border-color-checked-default-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-dark);\n color: var(--checkbox-color-checked-hover-dark);\n border-color: var(--checkbox-border-color-checked-hover-dark);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-dark);\n color: var(--checkbox-color-checked-active-dark);\n border-color: var(--checkbox-border-color-checked-active-dark);\n }\n }\n .checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-dark);\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n }\n\n [data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-dark) !important;\n }\n}\n</style>\n","<template>\n <div class=\"checkbox-skeleton\">\n <Skeleton\n width=\"var(--size-20)\"\n height=\"var(--size-20)\"\n radius=\"var(--border-radius-regular)\"\n :shimmer=\"shimmer\"\n />\n <Skeleton :width=\"labelWidth\" height=\"var(--size-16)\" :shimmer=\"shimmer\" />\n </div>\n</template>\n<script setup lang=\"ts\">\nimport type { PropType } from \"vue\";\nimport { Skeleton } from \"@gospore/skeleton\";\ntype SkeletonDimension = string | number;\ndefineOptions({ name: \"CheckboxSkeleton\" });\ndefineProps({\n /** Sets the placeholder width for the label line. Numbers are converted to px. */\n labelWidth: { type: [String, Number] as PropType<SkeletonDimension>, default: \"10rem\" },\n /** Enables the animated shimmer effect for the placeholder. */\n shimmer: { type: Boolean, default: false },\n});\n</script>\n<style scoped lang=\"less\">\n.checkbox-skeleton {\n display: inline-flex;\n align-items: center;\n gap: var(--size-8);\n}\n</style>\n","<template>\n <div class=\"checkbox-skeleton\">\n <Skeleton\n width=\"var(--size-20)\"\n height=\"var(--size-20)\"\n radius=\"var(--border-radius-regular)\"\n :shimmer=\"shimmer\"\n />\n <Skeleton :width=\"labelWidth\" height=\"var(--size-16)\" :shimmer=\"shimmer\" />\n </div>\n</template>\n<script setup lang=\"ts\">\nimport type { PropType } from \"vue\";\nimport { Skeleton } from \"@gospore/skeleton\";\ntype SkeletonDimension = string | number;\ndefineOptions({ name: \"CheckboxSkeleton\" });\ndefineProps({\n /** Sets the placeholder width for the label line. Numbers are converted to px. */\n labelWidth: { type: [String, Number] as PropType<SkeletonDimension>, default: \"10rem\" },\n /** Enables the animated shimmer effect for the placeholder. */\n shimmer: { type: Boolean, default: false },\n});\n</script>\n<style scoped lang=\"less\">\n.checkbox-skeleton {\n display: inline-flex;\n align-items: center;\n gap: var(--size-8);\n}\n</style>\n"],"mappings":"0oCAgDA,IAAM,EAAQ,EA4BR,EAAO,EACP,GAAA,EAAA,EAAA,SAAA,CAAwB,EAIxB,GAAA,EAAA,EAAA,SAAA,CAAQ,EAIR,GAAA,EAAA,EAAA,IAAA,CAAc,EAAK,EACnB,GAAA,EAAA,EAAA,IAAA,CAAuC,EAAM,OAAO,EAEpD,GAAA,EAAA,EAAA,SAAA,KACE,OAAO,EAAgB,OAAU,UAC1B,EAAgB,MAEhB,EAAgB,MAAM,SAAS,EAAM,KAAK,CAExD,EACK,GAAA,EAAA,EAAA,SAAA,KAAuB,CACzB,GAAM,CAAE,MAAO,EAAc,GAAG,GAAe,EAE/C,OAAO,OAAO,OAAO,CAAC,EAAG,EAAY,CACjC,QAAQ,EAAmB,CAClB,EAAM,UACP,EAAK,QAAS,CAAK,CAE3B,EAEA,QAAQ,EAAsB,CAC1B,EAAK,QAAS,CAAK,EACf,GAAM,UAGN,EAAM,MAAQ,UACd,EAAK,QAAS,CAAK,EACf,OAAO,EAAgB,OAAS,UAChC,EAAgB,MAAQ,CAAC,EAAgB,MAErC,EAAgB,MAAM,SAAS,EAAM,KAAK,EAC1C,EAAgB,OAAA,EAAA,EAAA,QAAA,CAAgB,EAAgB,MAAO,EAAM,KAAK,EAElE,EAAgB,MAAQ,CAAC,GAAG,EAAgB,MAAO,EAAM,KAAK,EAI9E,CACJ,CAAC,CACL,CAAC,SAED,EAAA,EAAA,MAAA,KACU,EAAM,QACX,GAAY,CACT,EAAgB,MAAQ,CAC5B,CACJ,GACA,EAAA,EAAA,MAAA,KACU,EAAgB,UAChB,CAEE,EAAgB,OAAS,EAAM,SAC/B,EAAK,iBAAkB,EAAgB,KAAK,CAEpD,CACJ,qDA7GY,QAAA,CA7BH,OAAA,EAAA,EAAA,eAAA,CAAK,CAAA,WAAA,CAAA,oBAAsC,EAAA,QAAQ,cAAI,CAAA,CAAY,CAAC,KAAK,CAAA,EACzE,OAAA,EAAA,EAAA,MAAA,CAAO,CAAA,CAAY,CAAC,iCAuBf,MArBN,EAqBM,EAAA,EAAA,EAAA,mBAAA,CADK,OAAA,CAlBF,OAAA,EAAA,EAAA,eAAA,CAAK,CAAA,iBAAA,oBAA4G,EAAA,yBAAuD,EAAA,yCAQrF,EAAA,eAAA,EAAA,CAAjE,MAAM,sBAAuB,MAAA,EAAA,EAAA,MAAA,CAAM,EAAA,OAAA,EAAS,cAAY,uEASzE,SAAA,EAAA,EAAA,WAAA,CAPU,EAOV,MAPe,mCACW,MAAA,EACxB,KAAK,WACJ,MAAO,EAAA,MACP,SAAU,EAAA,SACV,QAAK,AAAA,EAAA,KAAA,GAAE,EAAA,MAAO,GACd,WAAQ,AAAA,EAAA,KAAA,GAAE,EAAA,MAAO,mCALT,EAAA,KAAe,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EASzB,EAAM,UAAA,EAAA,EAAA,UAAA,CAAA,GAAA,EAAA,EAAA,mBAAA,CAEX,MAFN,EAEM,EAAA,EAAA,EAAA,WAAA,CADM,EAAA,OAAA,UAAA,CAAA,EAAA,IAAA,GAAA,EAAA,CAAA,CAAA,KAAA,EAAA,EAAA,UAAA,CAAA,GAAA,EAAA,EAAA,mBAAA,CAE0C,OAAtD,GAAA,EAAA,EAAA,gBAAA,CAAuC,EAAA,KAAK,EAAA,CAAA,EAAA,EAAA,GAAA,CAAA,yXErB1C,MARN,EAQM,EAAA,EAAA,EAAA,YAAA,EAAA,EAAA,EAAA,MAAA,CAFA,EAAA,QAAA,EAAA,CAJE,MAAM,iBACN,OAAO,iBACP,OAAO,+BACN,QAAS,EAAA,2DAE6D,EAAA,QAAA,EAAA,CAAhE,MAAO,EAAA,WAAY,OAAO,iBAAkB,QAAS,EAAA"}
|
package/dist/checkbox.es.js
CHANGED
|
@@ -10,7 +10,7 @@ var x = ["title"], S = { class: "checkbox-input-container" }, C = ["value", "dis
|
|
|
10
10
|
}, T = {
|
|
11
11
|
key: 1,
|
|
12
12
|
class: "checkbox-label"
|
|
13
|
-
}, E =
|
|
13
|
+
}, E = /*@__PURE__*/ i({
|
|
14
14
|
name: "Checkbox",
|
|
15
15
|
inheritAttrs: !1,
|
|
16
16
|
__name: "Checkbox",
|
|
@@ -80,7 +80,7 @@ var x = ["title"], S = { class: "checkbox-input-container" }, C = ["value", "dis
|
|
|
80
80
|
let n = e.__vccOpts || e;
|
|
81
81
|
for (let [e, r] of t) n[e] = r;
|
|
82
82
|
return n;
|
|
83
|
-
}, O =
|
|
83
|
+
}, O = /*#__PURE__*/ D(E, [["__scopeId", "data-v-7f545d9a"]]), k = { class: "checkbox-skeleton" }, A = /*#__PURE__*/ D(/* @__PURE__ */ i({
|
|
84
84
|
name: "CheckboxSkeleton",
|
|
85
85
|
__name: "CheckboxSkeleton",
|
|
86
86
|
props: {
|
package/dist/checkbox.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.es.js","names":[],"sources":["../src/Checkbox.vue","../src/Checkbox.vue","../src/CheckboxSkeleton.vue","../src/CheckboxSkeleton.vue"],"sourcesContent":["<template>\n <label\n :class=\"['checkbox', { 'checkbox-disabled': disabled }, defaultAttrs.class]\"\n :title=\"defaultAttrs.title\"\n >\n <div class=\"checkbox-input-container\">\n <span\n :class=\"[\n 'checkbox-input',\n {\n 'checkbox-checked': isChecked,\n 'checkbox-focused': focused,\n },\n ]\"\n >\n <font-awesome-icon class=\"checkbox-input-icon\" :icon=\"faCheck\" aria-hidden=\"true\" />\n <input\n v-bind=\"attrs\"\n v-model=\"internalChecked\"\n type=\"checkbox\"\n :value=\"value\"\n :disabled=\"disabled\"\n @focus=\"focused = true\"\n @focusout=\"focused = false\"\n />\n </span>\n </div>\n <div v-if=\"slots.default\" class=\"checkbox-label\">\n <slot />\n </div>\n <span v-else class=\"checkbox-label\">{{ label }}</span>\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs, ref, computed, watch } from \"vue\";\nimport type { PropType } from \"vue\";\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheck } from \"@fortawesome/free-solid-svg-icons\";\nimport without from \"lodash/without.js\";\n\ntype CheckboxValue = string | Record<string, unknown>;\ntype CheckboxChecked = boolean | CheckboxValue[];\n\ndefineOptions({\n name: \"Checkbox\",\n inheritAttrs: false,\n});\nconst props = defineProps({\n /**\n * Controlled state. Pass a boolean for single checkboxes or an array for checkbox groups (the\n * component will push/pop value). Supports v-model:checked.\n */\n checked: {\n type: [Boolean, Array] as PropType<CheckboxChecked>,\n default: false,\n },\n /**\n * The value inserted or removed from the bound array when used in group mode. Ignored for\n * boolean usage.\n */\n value: {\n type: [String, Object] as PropType<CheckboxValue>,\n default: \"\",\n },\n /** Fallback label text when no default slot is provided. */\n label: {\n type: String,\n default: \"\",\n },\n /** Greys out the checkbox and prevents user interaction. */\n disabled: {\n type: Boolean,\n default: false,\n },\n});\nconst emit = defineEmits([\"update:checked\", \"keyup\", \"click\"]);\nconst defaultAttrs = useAttrs() as Record<string, unknown> & {\n class?: unknown;\n title?: string;\n};\nconst slots = defineSlots<{\n /** Custom label content rendered next to the checkbox input. */\n default?: () => unknown;\n}>();\nconst focused = ref(false);\nconst internalChecked = ref<CheckboxChecked>(props.checked);\n\nconst isChecked = computed(() => {\n if (typeof internalChecked.value === \"boolean\") {\n return internalChecked.value;\n } else {\n return internalChecked.value.includes(props.value);\n }\n});\nconst attrs = computed(() => {\n const { class: omittedClass, ...inputAttrs } = defaultAttrs;\n void omittedClass;\n return Object.assign({}, inputAttrs, {\n onClick(event: MouseEvent) {\n if (!props.disabled) {\n emit(\"click\", event);\n }\n },\n // Pressing the enter key gets handled like a click.\n onKeyup(event: KeyboardEvent) {\n emit(\"keyup\", event);\n if (props.disabled) {\n return;\n }\n if (event.key === \"Enter\") {\n emit(\"click\", event);\n if (typeof internalChecked.value == \"boolean\") {\n internalChecked.value = !internalChecked.value;\n } else {\n if (internalChecked.value.includes(props.value)) {\n internalChecked.value = without(internalChecked.value, props.value);\n } else {\n internalChecked.value = [...internalChecked.value, props.value];\n }\n }\n }\n },\n });\n});\n\nwatch(\n () => props.checked,\n (checked) => {\n internalChecked.value = checked;\n },\n);\nwatch(\n () => internalChecked.value,\n () => {\n // Only emit the update:checked event if the mutation came from within the checkbox component.\n if (internalChecked.value != props.checked) {\n emit(\"update:checked\", internalChecked.value);\n }\n },\n);\n</script>\n\n<style>\n@import \"theme.css\";\n</style>\n\n<style lang=\"less\" scoped>\n.checkbox {\n position: relative;\n display: flex;\n padding: var(--checkbox-padding);\n\n .checkbox-input-container {\n padding: 5px;\n }\n .checkbox-input {\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--checkbox-height);\n width: var(--checkbox-width);\n box-sizing: border-box;\n border-radius: var(--checkbox-border-radius);\n border: var(--checkbox-border-width) solid;\n background-color: var(--checkbox-background-default-default-light);\n color: var(--checkbox-color-default-default-light);\n border-color: var(--checkbox-border-color-default-default-light);\n transition: var(--checkbox-transition);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-light);\n color: var(--checkbox-color-default-hover-light);\n border-color: var(--checkbox-border-color-default-hover-light);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-light);\n color: var(--checkbox-color-default-active-light);\n border-color: var(--checkbox-border-color-default-active-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-light);\n color: var(--checkbox-color-checked-default-light);\n border-color: var(--checkbox-border-color-checked-default-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-light);\n color: var(--checkbox-color-checked-hover-light);\n border-color: var(--checkbox-border-color-checked-hover-light);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-light);\n color: var(--checkbox-color-checked-active-light);\n border-color: var(--checkbox-border-color-checked-active-light);\n }\n}\n.checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-light);\n cursor: not-allowed;\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n}\n.checkbox-input-icon {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n padding: 1px;\n}\n.checkbox-label {\n padding: var(--checkbox-label-padding);\n line-height: var(--checkbox-line-height);\n}\ninput {\n margin: 0;\n opacity: 0;\n position: absolute;\n pointer-events: none;\n}\n[data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-light) !important;\n}\n\n[dark-mode=\"true\"] {\n .checkbox {\n .checkbox-input {\n background-color: var(--checkbox-background-default-default-dark);\n color: var(--checkbox-color-default-default-dark);\n border-color: var(--checkbox-border-color-default-default-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-dark);\n color: var(--checkbox-color-default-hover-dark);\n border-color: var(--checkbox-border-color-default-hover-dark);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-dark);\n color: var(--checkbox-color-default-active-dark);\n border-color: var(--checkbox-border-color-default-active-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-dark);\n color: var(--checkbox-color-checked-default-dark);\n border-color: var(--checkbox-border-color-checked-default-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-dark);\n color: var(--checkbox-color-checked-hover-dark);\n border-color: var(--checkbox-border-color-checked-hover-dark);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-dark);\n color: var(--checkbox-color-checked-active-dark);\n border-color: var(--checkbox-border-color-checked-active-dark);\n }\n }\n .checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-dark);\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n }\n\n [data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-dark) !important;\n }\n}\n</style>\n","<template>\n <label\n :class=\"['checkbox', { 'checkbox-disabled': disabled }, defaultAttrs.class]\"\n :title=\"defaultAttrs.title\"\n >\n <div class=\"checkbox-input-container\">\n <span\n :class=\"[\n 'checkbox-input',\n {\n 'checkbox-checked': isChecked,\n 'checkbox-focused': focused,\n },\n ]\"\n >\n <font-awesome-icon class=\"checkbox-input-icon\" :icon=\"faCheck\" aria-hidden=\"true\" />\n <input\n v-bind=\"attrs\"\n v-model=\"internalChecked\"\n type=\"checkbox\"\n :value=\"value\"\n :disabled=\"disabled\"\n @focus=\"focused = true\"\n @focusout=\"focused = false\"\n />\n </span>\n </div>\n <div v-if=\"slots.default\" class=\"checkbox-label\">\n <slot />\n </div>\n <span v-else class=\"checkbox-label\">{{ label }}</span>\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs, ref, computed, watch } from \"vue\";\nimport type { PropType } from \"vue\";\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheck } from \"@fortawesome/free-solid-svg-icons\";\nimport without from \"lodash/without.js\";\n\ntype CheckboxValue = string | Record<string, unknown>;\ntype CheckboxChecked = boolean | CheckboxValue[];\n\ndefineOptions({\n name: \"Checkbox\",\n inheritAttrs: false,\n});\nconst props = defineProps({\n /**\n * Controlled state. Pass a boolean for single checkboxes or an array for checkbox groups (the\n * component will push/pop value). Supports v-model:checked.\n */\n checked: {\n type: [Boolean, Array] as PropType<CheckboxChecked>,\n default: false,\n },\n /**\n * The value inserted or removed from the bound array when used in group mode. Ignored for\n * boolean usage.\n */\n value: {\n type: [String, Object] as PropType<CheckboxValue>,\n default: \"\",\n },\n /** Fallback label text when no default slot is provided. */\n label: {\n type: String,\n default: \"\",\n },\n /** Greys out the checkbox and prevents user interaction. */\n disabled: {\n type: Boolean,\n default: false,\n },\n});\nconst emit = defineEmits<{\n \"update:checked\": [value: CheckboxChecked];\n keyup: [event: KeyboardEvent];\n click: [event: MouseEvent | KeyboardEvent];\n}>();\nconst defaultAttrs = useAttrs() as Record<string, unknown> & {\n class?: unknown;\n title?: string;\n};\nconst slots = defineSlots<{\n /** Custom label content rendered next to the checkbox input. */\n default?: () => unknown;\n}>();\nconst focused = ref(false);\nconst internalChecked = ref<CheckboxChecked>(props.checked);\n\nconst isChecked = computed(() => {\n if (typeof internalChecked.value === \"boolean\") {\n return internalChecked.value;\n } else {\n return internalChecked.value.includes(props.value);\n }\n});\nconst attrs = computed(() => {\n const { class: omittedClass, ...inputAttrs } = defaultAttrs;\n void omittedClass;\n return Object.assign({}, inputAttrs, {\n onClick(event: MouseEvent) {\n if (!props.disabled) {\n emit(\"click\", event);\n }\n },\n // Pressing the enter key gets handled like a click.\n onKeyup(event: KeyboardEvent) {\n emit(\"keyup\", event);\n if (props.disabled) {\n return;\n }\n if (event.key === \"Enter\") {\n emit(\"click\", event);\n if (typeof internalChecked.value == \"boolean\") {\n internalChecked.value = !internalChecked.value;\n } else {\n if (internalChecked.value.includes(props.value)) {\n internalChecked.value = without(internalChecked.value, props.value);\n } else {\n internalChecked.value = [...internalChecked.value, props.value];\n }\n }\n }\n },\n });\n});\n\nwatch(\n () => props.checked,\n (checked) => {\n internalChecked.value = checked;\n },\n);\nwatch(\n () => internalChecked.value,\n () => {\n // Only emit the update:checked event if the mutation came from within the checkbox component.\n if (internalChecked.value != props.checked) {\n emit(\"update:checked\", internalChecked.value);\n }\n },\n);\n</script>\n\n<style>\n@import \"theme.css\";\n</style>\n\n<style lang=\"less\" scoped>\n.checkbox {\n position: relative;\n display: flex;\n padding: var(--checkbox-padding);\n\n .checkbox-input-container {\n padding: 5px;\n }\n .checkbox-input {\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--checkbox-height);\n width: var(--checkbox-width);\n box-sizing: border-box;\n border-radius: var(--checkbox-border-radius);\n border: var(--checkbox-border-width) solid;\n background-color: var(--checkbox-background-default-default-light);\n color: var(--checkbox-color-default-default-light);\n border-color: var(--checkbox-border-color-default-default-light);\n transition: var(--checkbox-transition);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-light);\n color: var(--checkbox-color-default-hover-light);\n border-color: var(--checkbox-border-color-default-hover-light);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-light);\n color: var(--checkbox-color-default-active-light);\n border-color: var(--checkbox-border-color-default-active-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-light);\n color: var(--checkbox-color-checked-default-light);\n border-color: var(--checkbox-border-color-checked-default-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-light);\n color: var(--checkbox-color-checked-hover-light);\n border-color: var(--checkbox-border-color-checked-hover-light);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-light);\n color: var(--checkbox-color-checked-active-light);\n border-color: var(--checkbox-border-color-checked-active-light);\n }\n}\n.checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-light);\n cursor: not-allowed;\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n}\n.checkbox-input-icon {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n padding: 1px;\n}\n.checkbox-label {\n padding: var(--checkbox-label-padding);\n line-height: var(--checkbox-line-height);\n}\ninput {\n margin: 0;\n opacity: 0;\n position: absolute;\n pointer-events: none;\n}\n[data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-light) !important;\n}\n\n[dark-mode=\"true\"] {\n .checkbox {\n .checkbox-input {\n background-color: var(--checkbox-background-default-default-dark);\n color: var(--checkbox-color-default-default-dark);\n border-color: var(--checkbox-border-color-default-default-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-dark);\n color: var(--checkbox-color-default-hover-dark);\n border-color: var(--checkbox-border-color-default-hover-dark);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-dark);\n color: var(--checkbox-color-default-active-dark);\n border-color: var(--checkbox-border-color-default-active-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-dark);\n color: var(--checkbox-color-checked-default-dark);\n border-color: var(--checkbox-border-color-checked-default-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-dark);\n color: var(--checkbox-color-checked-hover-dark);\n border-color: var(--checkbox-border-color-checked-hover-dark);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-dark);\n color: var(--checkbox-color-checked-active-dark);\n border-color: var(--checkbox-border-color-checked-active-dark);\n }\n }\n .checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-dark);\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n }\n\n [data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-dark) !important;\n }\n}\n</style>\n","<template>\n <div class=\"checkbox-skeleton\">\n <Skeleton\n width=\"var(--size-20)\"\n height=\"var(--size-20)\"\n radius=\"var(--border-radius-regular)\"\n :shimmer=\"shimmer\"\n />\n <Skeleton :width=\"labelWidth\" height=\"var(--size-16)\" :shimmer=\"shimmer\" />\n </div>\n</template>\n<script setup lang=\"ts\">\nimport type { PropType } from \"vue\";\nimport { Skeleton } from \"@gospore/skeleton\";\ntype SkeletonDimension = string | number;\ndefineOptions({ name: \"CheckboxSkeleton\" });\ndefineProps({\n /** Sets the placeholder width for the label line. Numbers are converted to px. */\n labelWidth: { type: [String, Number] as PropType<SkeletonDimension>, default: \"10rem\" },\n /** Enables the animated shimmer effect for the placeholder. */\n shimmer: { type: Boolean, default: false },\n});\n</script>\n<style scoped lang=\"less\">\n.checkbox-skeleton {\n display: inline-flex;\n align-items: center;\n gap: var(--size-8);\n}\n</style>\n","<template>\n <div class=\"checkbox-skeleton\">\n <Skeleton\n width=\"var(--size-20)\"\n height=\"var(--size-20)\"\n radius=\"var(--border-radius-regular)\"\n :shimmer=\"shimmer\"\n />\n <Skeleton :width=\"labelWidth\" height=\"var(--size-16)\" :shimmer=\"shimmer\" />\n </div>\n</template>\n<script setup lang=\"ts\">\nimport type { PropType } from \"vue\";\nimport { Skeleton } from \"@gospore/skeleton\";\ntype SkeletonDimension = string | number;\ndefineOptions({ name: \"CheckboxSkeleton\" });\ndefineProps({\n /** Sets the placeholder width for the label line. Numbers are converted to px. */\n labelWidth: { type: [String, Number] as PropType<SkeletonDimension>, default: \"10rem\" },\n /** Enables the animated shimmer effect for the placeholder. */\n shimmer: { type: Boolean, default: false },\n});\n</script>\n<style scoped lang=\"less\">\n.checkbox-skeleton {\n display: inline-flex;\n align-items: center;\n gap: var(--size-8);\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDA,IAAM,IAAQ,GA4BR,IAAO,GACP,IAAe,EAAS,GAIxB,IAAQ,EAAA,GAIR,IAAU,EAAI,EAAK,GACnB,IAAkB,EAAqB,EAAM,OAAO,GAEpD,IAAY,QACV,OAAO,EAAgB,SAAU,YAC1B,EAAgB,QAEhB,EAAgB,MAAM,SAAS,EAAM,KAAK,CAExD,GACK,IAAQ,QAAe;GACzB,IAAM,EAAE,OAAO,GAAc,GAAG,MAAe;GAE/C,OAAO,OAAO,OAAO,CAAC,GAAG,GAAY;IACjC,QAAQ,GAAmB;KACvB,AAAK,EAAM,YACP,EAAK,SAAS,CAAK;IAE3B;IAEA,QAAQ,GAAsB;KAC1B,EAAK,SAAS,CAAK,GACf,GAAM,YAGN,EAAM,QAAQ,YACd,EAAK,SAAS,CAAK,GACf,OAAO,EAAgB,SAAS,YAChC,EAAgB,QAAQ,CAAC,EAAgB,QAErC,EAAgB,MAAM,SAAS,EAAM,KAAK,IAC1C,EAAgB,QAAQ,EAAQ,EAAgB,OAAO,EAAM,KAAK,IAElE,EAAgB,QAAQ,CAAC,GAAG,EAAgB,OAAO,EAAM,KAAK;IAI9E;GACJ,CAAC;EACL,CAAC;SAED,QACU,EAAM,UACX,MAAY;GACT,EAAgB,QAAQ;EAC5B,CACJ,GACA,QACU,EAAgB,aAChB;GAEF,AAAI,EAAgB,SAAS,EAAM,WAC/B,EAAK,kBAAkB,EAAgB,KAAK;EAEpD,CACJ,mBA3II,EA8BQ,SAAA;GA7BH,OAAK,EAAA;IAAA;IAAA,EAAA,qBAAsC,EAAA,SAAQ;IAAI,EAAA,CAAA,EAAa;GAAK,CAAA;GACzE,OAAO,EAAA,CAAA,EAAa;MAErB,EAqBM,OArBN,GAqBM,CApBF,EAmBO,QAAA,EAlBF,OAAK,EAAA,CAAA,kBAAA;uBAA4G,EAAA;uBAAuD,EAAA;UAQzK,EAAoF,EAAA,CAAA,GAAA;GAAjE,OAAM;GAAuB,MAAM,EAAA,CAAA;GAAS,eAAY;2BAC3E,EAQE,SARF,EACY,EAOV,OAPe;4CACW,QAAA;GACxB,MAAK;GACJ,OAAO,EAAA;GACP,UAAU,EAAA;GACV,SAAK,AAAA,EAAA,QAAA,MAAE,EAAA,QAAO;GACd,YAAQ,AAAA,EAAA,QAAA,MAAE,EAAA,QAAO;yBALT,EAAA,KAAe,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GASzB,EAAM,WAAA,EAAA,GAAjB,EAEM,OAFN,GAEM,CADF,EAAQ,EAAA,QAAA,WAAA,CAAA,GAAA,KAAA,GAAA,EAAA,CAAA,CAAA,MAAA,EAAA,GAEZ,EAAsD,QAAtD,GAAsD,EAAf,EAAA,KAAK,GAAA,CAAA,EAAA,GAAA,IAAA,CAAA;;;;;;;;;;;;;;;;;;;;yBE7BhD,EAQM,OARN,GAQM,CAPF,EAKE,EAAA,CAAA,GAAA;GAJE,OAAM;GACN,QAAO;GACP,QAAO;GACN,SAAS,EAAA;4BAEd,EAA2E,EAAA,CAAA,GAAA;GAAhE,OAAO,EAAA;GAAY,QAAO;GAAkB,SAAS,EAAA"}
|
|
1
|
+
{"version":3,"file":"checkbox.es.js","names":[],"sources":["../src/Checkbox.vue","../src/Checkbox.vue","../src/CheckboxSkeleton.vue","../src/CheckboxSkeleton.vue"],"sourcesContent":["<template>\n <label\n :class=\"['checkbox', { 'checkbox-disabled': disabled }, defaultAttrs.class]\"\n :title=\"defaultAttrs.title\"\n >\n <div class=\"checkbox-input-container\">\n <span\n :class=\"[\n 'checkbox-input',\n {\n 'checkbox-checked': isChecked,\n 'checkbox-focused': focused,\n },\n ]\"\n >\n <font-awesome-icon class=\"checkbox-input-icon\" :icon=\"faCheck\" aria-hidden=\"true\" />\n <input\n v-bind=\"attrs\"\n v-model=\"internalChecked\"\n type=\"checkbox\"\n :value=\"value\"\n :disabled=\"disabled\"\n @focus=\"focused = true\"\n @focusout=\"focused = false\"\n />\n </span>\n </div>\n <div v-if=\"slots.default\" class=\"checkbox-label\">\n <slot />\n </div>\n <span v-else class=\"checkbox-label\">{{ label }}</span>\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs, ref, computed, watch } from \"vue\";\nimport type { PropType } from \"vue\";\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheck } from \"@fortawesome/free-solid-svg-icons\";\nimport without from \"lodash/without.js\";\n\ntype CheckboxValue = string | Record<string, unknown>;\ntype CheckboxChecked = boolean | CheckboxValue[];\n\ndefineOptions({\n name: \"Checkbox\",\n inheritAttrs: false,\n});\nconst props = defineProps({\n /**\n * Controlled state. Pass a boolean for single checkboxes or an array for checkbox groups (the\n * component will push/pop value). Supports v-model:checked.\n */\n checked: {\n type: [Boolean, Array] as PropType<CheckboxChecked>,\n default: false,\n },\n /**\n * The value inserted or removed from the bound array when used in group mode. Ignored for\n * boolean usage.\n */\n value: {\n type: [String, Object] as PropType<CheckboxValue>,\n default: \"\",\n },\n /** Fallback label text when no default slot is provided. */\n label: {\n type: String,\n default: \"\",\n },\n /** Greys out the checkbox and prevents user interaction. */\n disabled: {\n type: Boolean,\n default: false,\n },\n});\nconst emit = defineEmits([\"update:checked\", \"keyup\", \"click\"]);\nconst defaultAttrs = useAttrs() as Record<string, unknown> & {\n class?: unknown;\n title?: string;\n};\nconst slots = defineSlots<{\n /** Custom label content rendered next to the checkbox input. */\n default?: () => unknown;\n}>();\nconst focused = ref(false);\nconst internalChecked = ref<CheckboxChecked>(props.checked);\n\nconst isChecked = computed(() => {\n if (typeof internalChecked.value === \"boolean\") {\n return internalChecked.value;\n } else {\n return internalChecked.value.includes(props.value);\n }\n});\nconst attrs = computed(() => {\n const { class: omittedClass, ...inputAttrs } = defaultAttrs;\n void omittedClass;\n return Object.assign({}, inputAttrs, {\n onClick(event: MouseEvent) {\n if (!props.disabled) {\n emit(\"click\", event);\n }\n },\n // Pressing the enter key gets handled like a click.\n onKeyup(event: KeyboardEvent) {\n emit(\"keyup\", event);\n if (props.disabled) {\n return;\n }\n if (event.key === \"Enter\") {\n emit(\"click\", event);\n if (typeof internalChecked.value == \"boolean\") {\n internalChecked.value = !internalChecked.value;\n } else {\n if (internalChecked.value.includes(props.value)) {\n internalChecked.value = without(internalChecked.value, props.value);\n } else {\n internalChecked.value = [...internalChecked.value, props.value];\n }\n }\n }\n },\n });\n});\n\nwatch(\n () => props.checked,\n (checked) => {\n internalChecked.value = checked;\n },\n);\nwatch(\n () => internalChecked.value,\n () => {\n // Only emit the update:checked event if the mutation came from within the checkbox component.\n if (internalChecked.value != props.checked) {\n emit(\"update:checked\", internalChecked.value);\n }\n },\n);\n</script>\n\n<style>\n@import \"theme.css\";\n</style>\n\n<style lang=\"less\" scoped>\n.checkbox {\n position: relative;\n display: flex;\n padding: var(--checkbox-padding);\n\n .checkbox-input-container {\n padding: 5px;\n }\n .checkbox-input {\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--checkbox-height);\n width: var(--checkbox-width);\n box-sizing: border-box;\n border-radius: var(--checkbox-border-radius);\n border: var(--checkbox-border-width) solid;\n background-color: var(--checkbox-background-default-default-light);\n color: var(--checkbox-color-default-default-light);\n border-color: var(--checkbox-border-color-default-default-light);\n transition: var(--checkbox-transition);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-light);\n color: var(--checkbox-color-default-hover-light);\n border-color: var(--checkbox-border-color-default-hover-light);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-light);\n color: var(--checkbox-color-default-active-light);\n border-color: var(--checkbox-border-color-default-active-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-light);\n color: var(--checkbox-color-checked-default-light);\n border-color: var(--checkbox-border-color-checked-default-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-light);\n color: var(--checkbox-color-checked-hover-light);\n border-color: var(--checkbox-border-color-checked-hover-light);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-light);\n color: var(--checkbox-color-checked-active-light);\n border-color: var(--checkbox-border-color-checked-active-light);\n }\n}\n.checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-light);\n cursor: not-allowed;\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n}\n.checkbox-input-icon {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n padding: 1px;\n}\n.checkbox-label {\n padding: var(--checkbox-label-padding);\n line-height: var(--checkbox-line-height);\n}\ninput {\n margin: 0;\n opacity: 0;\n position: absolute;\n pointer-events: none;\n}\n[data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-light) !important;\n}\n\n[dark-mode=\"true\"] {\n .checkbox {\n .checkbox-input {\n background-color: var(--checkbox-background-default-default-dark);\n color: var(--checkbox-color-default-default-dark);\n border-color: var(--checkbox-border-color-default-default-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-dark);\n color: var(--checkbox-color-default-hover-dark);\n border-color: var(--checkbox-border-color-default-hover-dark);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-dark);\n color: var(--checkbox-color-default-active-dark);\n border-color: var(--checkbox-border-color-default-active-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-dark);\n color: var(--checkbox-color-checked-default-dark);\n border-color: var(--checkbox-border-color-checked-default-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-dark);\n color: var(--checkbox-color-checked-hover-dark);\n border-color: var(--checkbox-border-color-checked-hover-dark);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-dark);\n color: var(--checkbox-color-checked-active-dark);\n border-color: var(--checkbox-border-color-checked-active-dark);\n }\n }\n .checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-dark);\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n }\n\n [data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-dark) !important;\n }\n}\n</style>\n","<template>\n <label\n :class=\"['checkbox', { 'checkbox-disabled': disabled }, defaultAttrs.class]\"\n :title=\"defaultAttrs.title\"\n >\n <div class=\"checkbox-input-container\">\n <span\n :class=\"[\n 'checkbox-input',\n {\n 'checkbox-checked': isChecked,\n 'checkbox-focused': focused,\n },\n ]\"\n >\n <font-awesome-icon class=\"checkbox-input-icon\" :icon=\"faCheck\" aria-hidden=\"true\" />\n <input\n v-bind=\"attrs\"\n v-model=\"internalChecked\"\n type=\"checkbox\"\n :value=\"value\"\n :disabled=\"disabled\"\n @focus=\"focused = true\"\n @focusout=\"focused = false\"\n />\n </span>\n </div>\n <div v-if=\"slots.default\" class=\"checkbox-label\">\n <slot />\n </div>\n <span v-else class=\"checkbox-label\">{{ label }}</span>\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs, ref, computed, watch } from \"vue\";\nimport type { PropType } from \"vue\";\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheck } from \"@fortawesome/free-solid-svg-icons\";\nimport without from \"lodash/without.js\";\n\ntype CheckboxValue = string | Record<string, unknown>;\ntype CheckboxChecked = boolean | CheckboxValue[];\n\ndefineOptions({\n name: \"Checkbox\",\n inheritAttrs: false,\n});\nconst props = defineProps({\n /**\n * Controlled state. Pass a boolean for single checkboxes or an array for checkbox groups (the\n * component will push/pop value). Supports v-model:checked.\n */\n checked: {\n type: [Boolean, Array] as PropType<CheckboxChecked>,\n default: false,\n },\n /**\n * The value inserted or removed from the bound array when used in group mode. Ignored for\n * boolean usage.\n */\n value: {\n type: [String, Object] as PropType<CheckboxValue>,\n default: \"\",\n },\n /** Fallback label text when no default slot is provided. */\n label: {\n type: String,\n default: \"\",\n },\n /** Greys out the checkbox and prevents user interaction. */\n disabled: {\n type: Boolean,\n default: false,\n },\n});\nconst emit = defineEmits<{\n \"update:checked\": [value: CheckboxChecked];\n keyup: [event: KeyboardEvent];\n click: [event: MouseEvent | KeyboardEvent];\n}>();\nconst defaultAttrs = useAttrs() as Record<string, unknown> & {\n class?: unknown;\n title?: string;\n};\nconst slots = defineSlots<{\n /** Custom label content rendered next to the checkbox input. */\n default?: () => unknown;\n}>();\nconst focused = ref(false);\nconst internalChecked = ref<CheckboxChecked>(props.checked);\n\nconst isChecked = computed(() => {\n if (typeof internalChecked.value === \"boolean\") {\n return internalChecked.value;\n } else {\n return internalChecked.value.includes(props.value);\n }\n});\nconst attrs = computed(() => {\n const { class: omittedClass, ...inputAttrs } = defaultAttrs;\n void omittedClass;\n return Object.assign({}, inputAttrs, {\n onClick(event: MouseEvent) {\n if (!props.disabled) {\n emit(\"click\", event);\n }\n },\n // Pressing the enter key gets handled like a click.\n onKeyup(event: KeyboardEvent) {\n emit(\"keyup\", event);\n if (props.disabled) {\n return;\n }\n if (event.key === \"Enter\") {\n emit(\"click\", event);\n if (typeof internalChecked.value == \"boolean\") {\n internalChecked.value = !internalChecked.value;\n } else {\n if (internalChecked.value.includes(props.value)) {\n internalChecked.value = without(internalChecked.value, props.value);\n } else {\n internalChecked.value = [...internalChecked.value, props.value];\n }\n }\n }\n },\n });\n});\n\nwatch(\n () => props.checked,\n (checked) => {\n internalChecked.value = checked;\n },\n);\nwatch(\n () => internalChecked.value,\n () => {\n // Only emit the update:checked event if the mutation came from within the checkbox component.\n if (internalChecked.value != props.checked) {\n emit(\"update:checked\", internalChecked.value);\n }\n },\n);\n</script>\n\n<style>\n@import \"theme.css\";\n</style>\n\n<style lang=\"less\" scoped>\n.checkbox {\n position: relative;\n display: flex;\n padding: var(--checkbox-padding);\n\n .checkbox-input-container {\n padding: 5px;\n }\n .checkbox-input {\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--checkbox-height);\n width: var(--checkbox-width);\n box-sizing: border-box;\n border-radius: var(--checkbox-border-radius);\n border: var(--checkbox-border-width) solid;\n background-color: var(--checkbox-background-default-default-light);\n color: var(--checkbox-color-default-default-light);\n border-color: var(--checkbox-border-color-default-default-light);\n transition: var(--checkbox-transition);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-light);\n color: var(--checkbox-color-default-hover-light);\n border-color: var(--checkbox-border-color-default-hover-light);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-light);\n color: var(--checkbox-color-default-active-light);\n border-color: var(--checkbox-border-color-default-active-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-light);\n color: var(--checkbox-color-checked-default-light);\n border-color: var(--checkbox-border-color-checked-default-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-light);\n color: var(--checkbox-color-checked-hover-light);\n border-color: var(--checkbox-border-color-checked-hover-light);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-light);\n color: var(--checkbox-color-checked-active-light);\n border-color: var(--checkbox-border-color-checked-active-light);\n }\n}\n.checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-light);\n cursor: not-allowed;\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n}\n.checkbox-input-icon {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n padding: 1px;\n}\n.checkbox-label {\n padding: var(--checkbox-label-padding);\n line-height: var(--checkbox-line-height);\n}\ninput {\n margin: 0;\n opacity: 0;\n position: absolute;\n pointer-events: none;\n}\n[data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-light) !important;\n}\n\n[dark-mode=\"true\"] {\n .checkbox {\n .checkbox-input {\n background-color: var(--checkbox-background-default-default-dark);\n color: var(--checkbox-color-default-default-dark);\n border-color: var(--checkbox-border-color-default-default-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-dark);\n color: var(--checkbox-color-default-hover-dark);\n border-color: var(--checkbox-border-color-default-hover-dark);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-dark);\n color: var(--checkbox-color-default-active-dark);\n border-color: var(--checkbox-border-color-default-active-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-dark);\n color: var(--checkbox-color-checked-default-dark);\n border-color: var(--checkbox-border-color-checked-default-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-dark);\n color: var(--checkbox-color-checked-hover-dark);\n border-color: var(--checkbox-border-color-checked-hover-dark);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-dark);\n color: var(--checkbox-color-checked-active-dark);\n border-color: var(--checkbox-border-color-checked-active-dark);\n }\n }\n .checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-dark);\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n }\n\n [data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-dark) !important;\n }\n}\n</style>\n","<template>\n <div class=\"checkbox-skeleton\">\n <Skeleton\n width=\"var(--size-20)\"\n height=\"var(--size-20)\"\n radius=\"var(--border-radius-regular)\"\n :shimmer=\"shimmer\"\n />\n <Skeleton :width=\"labelWidth\" height=\"var(--size-16)\" :shimmer=\"shimmer\" />\n </div>\n</template>\n<script setup lang=\"ts\">\nimport type { PropType } from \"vue\";\nimport { Skeleton } from \"@gospore/skeleton\";\ntype SkeletonDimension = string | number;\ndefineOptions({ name: \"CheckboxSkeleton\" });\ndefineProps({\n /** Sets the placeholder width for the label line. Numbers are converted to px. */\n labelWidth: { type: [String, Number] as PropType<SkeletonDimension>, default: \"10rem\" },\n /** Enables the animated shimmer effect for the placeholder. */\n shimmer: { type: Boolean, default: false },\n});\n</script>\n<style scoped lang=\"less\">\n.checkbox-skeleton {\n display: inline-flex;\n align-items: center;\n gap: var(--size-8);\n}\n</style>\n","<template>\n <div class=\"checkbox-skeleton\">\n <Skeleton\n width=\"var(--size-20)\"\n height=\"var(--size-20)\"\n radius=\"var(--border-radius-regular)\"\n :shimmer=\"shimmer\"\n />\n <Skeleton :width=\"labelWidth\" height=\"var(--size-16)\" :shimmer=\"shimmer\" />\n </div>\n</template>\n<script setup lang=\"ts\">\nimport type { PropType } from \"vue\";\nimport { Skeleton } from \"@gospore/skeleton\";\ntype SkeletonDimension = string | number;\ndefineOptions({ name: \"CheckboxSkeleton\" });\ndefineProps({\n /** Sets the placeholder width for the label line. Numbers are converted to px. */\n labelWidth: { type: [String, Number] as PropType<SkeletonDimension>, default: \"10rem\" },\n /** Enables the animated shimmer effect for the placeholder. */\n shimmer: { type: Boolean, default: false },\n});\n</script>\n<style scoped lang=\"less\">\n.checkbox-skeleton {\n display: inline-flex;\n align-items: center;\n gap: var(--size-8);\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDA,IAAM,IAAQ,GA4BR,IAAO,GACP,IAAe,EAAS,GAIxB,IAAQ,EAAA,GAIR,IAAU,EAAI,EAAK,GACnB,IAAkB,EAAqB,EAAM,OAAO,GAEpD,IAAY,QACV,OAAO,EAAgB,SAAU,YAC1B,EAAgB,QAEhB,EAAgB,MAAM,SAAS,EAAM,KAAK,CAExD,GACK,IAAQ,QAAe;GACzB,IAAM,EAAE,OAAO,GAAc,GAAG,MAAe;GAE/C,OAAO,OAAO,OAAO,CAAC,GAAG,GAAY;IACjC,QAAQ,GAAmB;KACvB,AAAK,EAAM,YACP,EAAK,SAAS,CAAK;IAE3B;IAEA,QAAQ,GAAsB;KAC1B,EAAK,SAAS,CAAK,GACf,GAAM,YAGN,EAAM,QAAQ,YACd,EAAK,SAAS,CAAK,GACf,OAAO,EAAgB,SAAS,YAChC,EAAgB,QAAQ,CAAC,EAAgB,QAErC,EAAgB,MAAM,SAAS,EAAM,KAAK,IAC1C,EAAgB,QAAQ,EAAQ,EAAgB,OAAO,EAAM,KAAK,IAElE,EAAgB,QAAQ,CAAC,GAAG,EAAgB,OAAO,EAAM,KAAK;IAI9E;GACJ,CAAC;EACL,CAAC;SAED,QACU,EAAM,UACX,MAAY;GACT,EAAgB,QAAQ;EAC5B,CACJ,GACA,QACU,EAAgB,aAChB;GAEF,AAAI,EAAgB,SAAS,EAAM,WAC/B,EAAK,kBAAkB,EAAgB,KAAK;EAEpD,CACJ,mBA3II,EA8BQ,SAAA;GA7BH,OAAK,EAAA;IAAA;IAAA,EAAA,qBAAsC,EAAA,SAAQ;IAAI,EAAA,CAAA,CAAY,CAAC;GAAK,CAAA;GACzE,OAAO,EAAA,CAAA,CAAY,CAAC;MAErB,EAqBM,OArBN,GAqBM,CApBF,EAmBO,QAAA,EAlBF,OAAK,EAAA,CAAA,kBAAA;uBAA4G,EAAA;uBAAuD,EAAA;UAQzK,EAAoF,EAAA,CAAA,GAAA;GAAjE,OAAM;GAAuB,MAAM,EAAA,CAAA;GAAS,eAAY;2BAC3E,EAQE,SARF,EACY,EAOV,OAPe;4CACW,QAAA;GACxB,MAAK;GACJ,OAAO,EAAA;GACP,UAAU,EAAA;GACV,SAAK,AAAA,EAAA,QAAA,MAAE,EAAA,QAAO;GACd,YAAQ,AAAA,EAAA,QAAA,MAAE,EAAA,QAAO;yBALT,EAAA,KAAe,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GASzB,EAAM,WAAA,EAAA,GAAjB,EAEM,OAFN,GAEM,CADF,EAAQ,EAAA,QAAA,WAAA,CAAA,GAAA,KAAA,GAAA,EAAA,CAAA,CAAA,MAAA,EAAA,GAEZ,EAAsD,QAAtD,GAAsD,EAAf,EAAA,KAAK,GAAA,CAAA,EAAA,GAAA,IAAA,CAAA;;;;;;;;;;;;;;;;;;;;yBE7BhD,EAQM,OARN,GAQM,CAPF,EAKE,EAAA,CAAA,GAAA;GAJE,OAAM;GACN,QAAO;GACP,QAAO;GACN,SAAS,EAAA;4BAEd,EAA2E,EAAA,CAAA,GAAA;GAAhE,OAAO,EAAA;GAAY,QAAO;GAAkB,SAAS,EAAA"}
|
package/dist/checkbox.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("vue"),require("@fortawesome/vue-fontawesome"),require("@fortawesome/free-solid-svg-icons"),require("lodash/without.js"),require("@gospore/skeleton")):typeof define==`function`&&define.amd?define([`exports`,`vue`,`@fortawesome/vue-fontawesome`,`@fortawesome/free-solid-svg-icons`,`lodash/without.js`,`@gospore/skeleton`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.checkbox={},e.Vue,e.VueFontawesome,e.FreeSolidIcons,e.without,e.Skeleton))})(this,function(e,t,n,r,i,a){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var o=Object.create,s=Object.defineProperty,c=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,u=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty,f=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=l(t),a=0,o=i.length,u;a<o;a++)u=i[a],!d.call(e,u)&&u!==n&&s(e,u,{get:(e=>t[e]).bind(null,u),enumerable:!(r=c(t,u))||r.enumerable});return e};i=((e,t,n)=>(n=e==null?{}:o(u(e)),f(t||!e||!e.__esModule?s(n,`default`,{value:e,enumerable:!0}):n,e)))(i,1);var p=[`title`],m={class:`checkbox-input-container`},h=[`value`,`disabled`],g={key:0,class:`checkbox-label`},_={key:1,class:`checkbox-label`},v=(0,t.defineComponent)({name:`Checkbox`,inheritAttrs:!1,__name:`Checkbox`,props:{checked:{type:[Boolean,Array],default:!1},value:{type:[String,Object],default:``},label:{type:String,default:``},disabled:{type:Boolean,default:!1}},emits:[`update:checked`,`keyup`,`click`],setup(e,{emit:a}){let o=e,s=a,c=(0,t.useAttrs)(),l=(0,t.useSlots)(),u=(0,t.ref)(!1),d=(0,t.ref)(o.checked),f=(0,t.computed)(()=>typeof d.value==`boolean`?d.value:d.value.includes(o.value)),v=(0,t.computed)(()=>{let{class:e,...t}=c;return Object.assign({},t,{onClick(e){o.disabled||s(`click`,e)},onKeyup(e){s(`keyup`,e),!o.disabled&&e.key===`Enter`&&(s(`click`,e),typeof d.value==`boolean`?d.value=!d.value:d.value.includes(o.value)?d.value=(0,i.default)(d.value,o.value):d.value=[...d.value,o.value])}})});return(0,t.watch)(()=>o.checked,e=>{d.value=e}),(0,t.watch)(()=>d.value,()=>{d.value!=o.checked&&s(`update:checked`,d.value)}),(i,a)=>((0,t.openBlock)(),(0,t.createElementBlock)(`label`,{class:(0,t.normalizeClass)([`checkbox`,{"checkbox-disabled":e.disabled},(0,t.unref)(c).class]),title:(0,t.unref)(c).title},[(0,t.createElementVNode)(`div`,m,[(0,t.createElementVNode)(`span`,{class:(0,t.normalizeClass)([`checkbox-input`,{"checkbox-checked":f.value,"checkbox-focused":u.value}])},[(0,t.createVNode)((0,t.unref)(n.FontAwesomeIcon),{class:`checkbox-input-icon`,icon:(0,t.unref)(r.faCheck),"aria-hidden":`true`},null,8,[`icon`]),(0,t.withDirectives)((0,t.createElementVNode)(`input`,(0,t.mergeProps)(v.value,{"onUpdate:modelValue":a[0]||=e=>d.value=e,type:`checkbox`,value:e.value,disabled:e.disabled,onFocus:a[1]||=e=>u.value=!0,onFocusout:a[2]||=e=>u.value=!1}),null,16,h),[[t.vModelCheckbox,d.value]])],2)]),l.default?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,g,[(0,t.renderSlot)(i.$slots,`default`,{},void 0,!0)])):((0,t.openBlock)(),(0,t.createElementBlock)(`span`,_,(0,t.toDisplayString)(e.label),1))],10,p))}}),y=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},b=y(v,[[`__scopeId`,`data-v-7f545d9a`]]),x={class:`checkbox-skeleton`},S=y((0,t.defineComponent)({name:`CheckboxSkeleton`,__name:`CheckboxSkeleton`,props:{labelWidth:{type:[String,Number],default:`10rem`},shimmer:{type:Boolean,default:!1}},setup(e){return(n,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,x,[(0,t.createVNode)((0,t.unref)(a.Skeleton),{width:`var(--size-20)`,height:`var(--size-20)`,radius:`var(--border-radius-regular)`,shimmer:e.shimmer},null,8,[`shimmer`]),(0,t.createVNode)((0,t.unref)(a.Skeleton),{width:e.labelWidth,height:`var(--size-16)`,shimmer:e.shimmer},null,8,[`width`,`shimmer`])]))}}),[[`__scopeId`,`data-v-472ff734`]]);e.Checkbox=b,e.CheckboxSkeleton=S});
|
|
2
2
|
//# sourceMappingURL=checkbox.umd.js.map
|
package/dist/checkbox.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.umd.js","names":[],"sources":["../src/Checkbox.vue","../src/Checkbox.vue","../src/CheckboxSkeleton.vue","../src/CheckboxSkeleton.vue"],"sourcesContent":["<template>\n <label\n :class=\"['checkbox', { 'checkbox-disabled': disabled }, defaultAttrs.class]\"\n :title=\"defaultAttrs.title\"\n >\n <div class=\"checkbox-input-container\">\n <span\n :class=\"[\n 'checkbox-input',\n {\n 'checkbox-checked': isChecked,\n 'checkbox-focused': focused,\n },\n ]\"\n >\n <font-awesome-icon class=\"checkbox-input-icon\" :icon=\"faCheck\" aria-hidden=\"true\" />\n <input\n v-bind=\"attrs\"\n v-model=\"internalChecked\"\n type=\"checkbox\"\n :value=\"value\"\n :disabled=\"disabled\"\n @focus=\"focused = true\"\n @focusout=\"focused = false\"\n />\n </span>\n </div>\n <div v-if=\"slots.default\" class=\"checkbox-label\">\n <slot />\n </div>\n <span v-else class=\"checkbox-label\">{{ label }}</span>\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs, ref, computed, watch } from \"vue\";\nimport type { PropType } from \"vue\";\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheck } from \"@fortawesome/free-solid-svg-icons\";\nimport without from \"lodash/without.js\";\n\ntype CheckboxValue = string | Record<string, unknown>;\ntype CheckboxChecked = boolean | CheckboxValue[];\n\ndefineOptions({\n name: \"Checkbox\",\n inheritAttrs: false,\n});\nconst props = defineProps({\n /**\n * Controlled state. Pass a boolean for single checkboxes or an array for checkbox groups (the\n * component will push/pop value). Supports v-model:checked.\n */\n checked: {\n type: [Boolean, Array] as PropType<CheckboxChecked>,\n default: false,\n },\n /**\n * The value inserted or removed from the bound array when used in group mode. Ignored for\n * boolean usage.\n */\n value: {\n type: [String, Object] as PropType<CheckboxValue>,\n default: \"\",\n },\n /** Fallback label text when no default slot is provided. */\n label: {\n type: String,\n default: \"\",\n },\n /** Greys out the checkbox and prevents user interaction. */\n disabled: {\n type: Boolean,\n default: false,\n },\n});\nconst emit = defineEmits([\"update:checked\", \"keyup\", \"click\"]);\nconst defaultAttrs = useAttrs() as Record<string, unknown> & {\n class?: unknown;\n title?: string;\n};\nconst slots = defineSlots<{\n /** Custom label content rendered next to the checkbox input. */\n default?: () => unknown;\n}>();\nconst focused = ref(false);\nconst internalChecked = ref<CheckboxChecked>(props.checked);\n\nconst isChecked = computed(() => {\n if (typeof internalChecked.value === \"boolean\") {\n return internalChecked.value;\n } else {\n return internalChecked.value.includes(props.value);\n }\n});\nconst attrs = computed(() => {\n const { class: omittedClass, ...inputAttrs } = defaultAttrs;\n void omittedClass;\n return Object.assign({}, inputAttrs, {\n onClick(event: MouseEvent) {\n if (!props.disabled) {\n emit(\"click\", event);\n }\n },\n // Pressing the enter key gets handled like a click.\n onKeyup(event: KeyboardEvent) {\n emit(\"keyup\", event);\n if (props.disabled) {\n return;\n }\n if (event.key === \"Enter\") {\n emit(\"click\", event);\n if (typeof internalChecked.value == \"boolean\") {\n internalChecked.value = !internalChecked.value;\n } else {\n if (internalChecked.value.includes(props.value)) {\n internalChecked.value = without(internalChecked.value, props.value);\n } else {\n internalChecked.value = [...internalChecked.value, props.value];\n }\n }\n }\n },\n });\n});\n\nwatch(\n () => props.checked,\n (checked) => {\n internalChecked.value = checked;\n },\n);\nwatch(\n () => internalChecked.value,\n () => {\n // Only emit the update:checked event if the mutation came from within the checkbox component.\n if (internalChecked.value != props.checked) {\n emit(\"update:checked\", internalChecked.value);\n }\n },\n);\n</script>\n\n<style>\n@import \"theme.css\";\n</style>\n\n<style lang=\"less\" scoped>\n.checkbox {\n position: relative;\n display: flex;\n padding: var(--checkbox-padding);\n\n .checkbox-input-container {\n padding: 5px;\n }\n .checkbox-input {\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--checkbox-height);\n width: var(--checkbox-width);\n box-sizing: border-box;\n border-radius: var(--checkbox-border-radius);\n border: var(--checkbox-border-width) solid;\n background-color: var(--checkbox-background-default-default-light);\n color: var(--checkbox-color-default-default-light);\n border-color: var(--checkbox-border-color-default-default-light);\n transition: var(--checkbox-transition);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-light);\n color: var(--checkbox-color-default-hover-light);\n border-color: var(--checkbox-border-color-default-hover-light);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-light);\n color: var(--checkbox-color-default-active-light);\n border-color: var(--checkbox-border-color-default-active-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-light);\n color: var(--checkbox-color-checked-default-light);\n border-color: var(--checkbox-border-color-checked-default-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-light);\n color: var(--checkbox-color-checked-hover-light);\n border-color: var(--checkbox-border-color-checked-hover-light);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-light);\n color: var(--checkbox-color-checked-active-light);\n border-color: var(--checkbox-border-color-checked-active-light);\n }\n}\n.checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-light);\n cursor: not-allowed;\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n}\n.checkbox-input-icon {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n padding: 1px;\n}\n.checkbox-label {\n padding: var(--checkbox-label-padding);\n line-height: var(--checkbox-line-height);\n}\ninput {\n margin: 0;\n opacity: 0;\n position: absolute;\n pointer-events: none;\n}\n[data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-light) !important;\n}\n\n[dark-mode=\"true\"] {\n .checkbox {\n .checkbox-input {\n background-color: var(--checkbox-background-default-default-dark);\n color: var(--checkbox-color-default-default-dark);\n border-color: var(--checkbox-border-color-default-default-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-dark);\n color: var(--checkbox-color-default-hover-dark);\n border-color: var(--checkbox-border-color-default-hover-dark);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-dark);\n color: var(--checkbox-color-default-active-dark);\n border-color: var(--checkbox-border-color-default-active-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-dark);\n color: var(--checkbox-color-checked-default-dark);\n border-color: var(--checkbox-border-color-checked-default-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-dark);\n color: var(--checkbox-color-checked-hover-dark);\n border-color: var(--checkbox-border-color-checked-hover-dark);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-dark);\n color: var(--checkbox-color-checked-active-dark);\n border-color: var(--checkbox-border-color-checked-active-dark);\n }\n }\n .checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-dark);\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n }\n\n [data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-dark) !important;\n }\n}\n</style>\n","<template>\n <label\n :class=\"['checkbox', { 'checkbox-disabled': disabled }, defaultAttrs.class]\"\n :title=\"defaultAttrs.title\"\n >\n <div class=\"checkbox-input-container\">\n <span\n :class=\"[\n 'checkbox-input',\n {\n 'checkbox-checked': isChecked,\n 'checkbox-focused': focused,\n },\n ]\"\n >\n <font-awesome-icon class=\"checkbox-input-icon\" :icon=\"faCheck\" aria-hidden=\"true\" />\n <input\n v-bind=\"attrs\"\n v-model=\"internalChecked\"\n type=\"checkbox\"\n :value=\"value\"\n :disabled=\"disabled\"\n @focus=\"focused = true\"\n @focusout=\"focused = false\"\n />\n </span>\n </div>\n <div v-if=\"slots.default\" class=\"checkbox-label\">\n <slot />\n </div>\n <span v-else class=\"checkbox-label\">{{ label }}</span>\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs, ref, computed, watch } from \"vue\";\nimport type { PropType } from \"vue\";\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheck } from \"@fortawesome/free-solid-svg-icons\";\nimport without from \"lodash/without.js\";\n\ntype CheckboxValue = string | Record<string, unknown>;\ntype CheckboxChecked = boolean | CheckboxValue[];\n\ndefineOptions({\n name: \"Checkbox\",\n inheritAttrs: false,\n});\nconst props = defineProps({\n /**\n * Controlled state. Pass a boolean for single checkboxes or an array for checkbox groups (the\n * component will push/pop value). Supports v-model:checked.\n */\n checked: {\n type: [Boolean, Array] as PropType<CheckboxChecked>,\n default: false,\n },\n /**\n * The value inserted or removed from the bound array when used in group mode. Ignored for\n * boolean usage.\n */\n value: {\n type: [String, Object] as PropType<CheckboxValue>,\n default: \"\",\n },\n /** Fallback label text when no default slot is provided. */\n label: {\n type: String,\n default: \"\",\n },\n /** Greys out the checkbox and prevents user interaction. */\n disabled: {\n type: Boolean,\n default: false,\n },\n});\nconst emit = defineEmits<{\n \"update:checked\": [value: CheckboxChecked];\n keyup: [event: KeyboardEvent];\n click: [event: MouseEvent | KeyboardEvent];\n}>();\nconst defaultAttrs = useAttrs() as Record<string, unknown> & {\n class?: unknown;\n title?: string;\n};\nconst slots = defineSlots<{\n /** Custom label content rendered next to the checkbox input. */\n default?: () => unknown;\n}>();\nconst focused = ref(false);\nconst internalChecked = ref<CheckboxChecked>(props.checked);\n\nconst isChecked = computed(() => {\n if (typeof internalChecked.value === \"boolean\") {\n return internalChecked.value;\n } else {\n return internalChecked.value.includes(props.value);\n }\n});\nconst attrs = computed(() => {\n const { class: omittedClass, ...inputAttrs } = defaultAttrs;\n void omittedClass;\n return Object.assign({}, inputAttrs, {\n onClick(event: MouseEvent) {\n if (!props.disabled) {\n emit(\"click\", event);\n }\n },\n // Pressing the enter key gets handled like a click.\n onKeyup(event: KeyboardEvent) {\n emit(\"keyup\", event);\n if (props.disabled) {\n return;\n }\n if (event.key === \"Enter\") {\n emit(\"click\", event);\n if (typeof internalChecked.value == \"boolean\") {\n internalChecked.value = !internalChecked.value;\n } else {\n if (internalChecked.value.includes(props.value)) {\n internalChecked.value = without(internalChecked.value, props.value);\n } else {\n internalChecked.value = [...internalChecked.value, props.value];\n }\n }\n }\n },\n });\n});\n\nwatch(\n () => props.checked,\n (checked) => {\n internalChecked.value = checked;\n },\n);\nwatch(\n () => internalChecked.value,\n () => {\n // Only emit the update:checked event if the mutation came from within the checkbox component.\n if (internalChecked.value != props.checked) {\n emit(\"update:checked\", internalChecked.value);\n }\n },\n);\n</script>\n\n<style>\n@import \"theme.css\";\n</style>\n\n<style lang=\"less\" scoped>\n.checkbox {\n position: relative;\n display: flex;\n padding: var(--checkbox-padding);\n\n .checkbox-input-container {\n padding: 5px;\n }\n .checkbox-input {\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--checkbox-height);\n width: var(--checkbox-width);\n box-sizing: border-box;\n border-radius: var(--checkbox-border-radius);\n border: var(--checkbox-border-width) solid;\n background-color: var(--checkbox-background-default-default-light);\n color: var(--checkbox-color-default-default-light);\n border-color: var(--checkbox-border-color-default-default-light);\n transition: var(--checkbox-transition);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-light);\n color: var(--checkbox-color-default-hover-light);\n border-color: var(--checkbox-border-color-default-hover-light);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-light);\n color: var(--checkbox-color-default-active-light);\n border-color: var(--checkbox-border-color-default-active-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-light);\n color: var(--checkbox-color-checked-default-light);\n border-color: var(--checkbox-border-color-checked-default-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-light);\n color: var(--checkbox-color-checked-hover-light);\n border-color: var(--checkbox-border-color-checked-hover-light);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-light);\n color: var(--checkbox-color-checked-active-light);\n border-color: var(--checkbox-border-color-checked-active-light);\n }\n}\n.checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-light);\n cursor: not-allowed;\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n}\n.checkbox-input-icon {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n padding: 1px;\n}\n.checkbox-label {\n padding: var(--checkbox-label-padding);\n line-height: var(--checkbox-line-height);\n}\ninput {\n margin: 0;\n opacity: 0;\n position: absolute;\n pointer-events: none;\n}\n[data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-light) !important;\n}\n\n[dark-mode=\"true\"] {\n .checkbox {\n .checkbox-input {\n background-color: var(--checkbox-background-default-default-dark);\n color: var(--checkbox-color-default-default-dark);\n border-color: var(--checkbox-border-color-default-default-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-dark);\n color: var(--checkbox-color-default-hover-dark);\n border-color: var(--checkbox-border-color-default-hover-dark);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-dark);\n color: var(--checkbox-color-default-active-dark);\n border-color: var(--checkbox-border-color-default-active-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-dark);\n color: var(--checkbox-color-checked-default-dark);\n border-color: var(--checkbox-border-color-checked-default-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-dark);\n color: var(--checkbox-color-checked-hover-dark);\n border-color: var(--checkbox-border-color-checked-hover-dark);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-dark);\n color: var(--checkbox-color-checked-active-dark);\n border-color: var(--checkbox-border-color-checked-active-dark);\n }\n }\n .checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-dark);\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n }\n\n [data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-dark) !important;\n }\n}\n</style>\n","<template>\n <div class=\"checkbox-skeleton\">\n <Skeleton\n width=\"var(--size-20)\"\n height=\"var(--size-20)\"\n radius=\"var(--border-radius-regular)\"\n :shimmer=\"shimmer\"\n />\n <Skeleton :width=\"labelWidth\" height=\"var(--size-16)\" :shimmer=\"shimmer\" />\n </div>\n</template>\n<script setup lang=\"ts\">\nimport type { PropType } from \"vue\";\nimport { Skeleton } from \"@gospore/skeleton\";\ntype SkeletonDimension = string | number;\ndefineOptions({ name: \"CheckboxSkeleton\" });\ndefineProps({\n /** Sets the placeholder width for the label line. Numbers are converted to px. */\n labelWidth: { type: [String, Number] as PropType<SkeletonDimension>, default: \"10rem\" },\n /** Enables the animated shimmer effect for the placeholder. */\n shimmer: { type: Boolean, default: false },\n});\n</script>\n<style scoped lang=\"less\">\n.checkbox-skeleton {\n display: inline-flex;\n align-items: center;\n gap: var(--size-8);\n}\n</style>\n","<template>\n <div class=\"checkbox-skeleton\">\n <Skeleton\n width=\"var(--size-20)\"\n height=\"var(--size-20)\"\n radius=\"var(--border-radius-regular)\"\n :shimmer=\"shimmer\"\n />\n <Skeleton :width=\"labelWidth\" height=\"var(--size-16)\" :shimmer=\"shimmer\" />\n </div>\n</template>\n<script setup lang=\"ts\">\nimport type { PropType } from \"vue\";\nimport { Skeleton } from \"@gospore/skeleton\";\ntype SkeletonDimension = string | number;\ndefineOptions({ name: \"CheckboxSkeleton\" });\ndefineProps({\n /** Sets the placeholder width for the label line. Numbers are converted to px. */\n labelWidth: { type: [String, Number] as PropType<SkeletonDimension>, default: \"10rem\" },\n /** Enables the animated shimmer effect for the placeholder. */\n shimmer: { type: Boolean, default: false },\n});\n</script>\n<style scoped lang=\"less\">\n.checkbox-skeleton {\n display: inline-flex;\n align-items: center;\n gap: var(--size-8);\n}\n</style>\n"],"mappings":"2/CAgDA,IAAM,EAAQ,EA4BR,EAAO,EACP,GAAA,EAAA,EAAA,UAAwB,EAIxB,GAAA,EAAA,EAAA,UAAQ,EAIR,GAAA,EAAA,EAAA,KAAc,EAAK,EACnB,GAAA,EAAA,EAAA,KAAuC,EAAM,OAAO,EAEpD,GAAA,EAAA,EAAA,cACE,OAAO,EAAgB,OAAU,UAC1B,EAAgB,MAEhB,EAAgB,MAAM,SAAS,EAAM,KAAK,CAExD,EACK,GAAA,EAAA,EAAA,cAAuB,CACzB,GAAM,CAAE,MAAO,EAAc,GAAG,GAAe,EAE/C,OAAO,OAAO,OAAO,CAAC,EAAG,EAAY,CACjC,QAAQ,EAAmB,CAClB,EAAM,UACP,EAAK,QAAS,CAAK,CAE3B,EAEA,QAAQ,EAAsB,CAC1B,EAAK,QAAS,CAAK,EACf,GAAM,UAGN,EAAM,MAAQ,UACd,EAAK,QAAS,CAAK,EACf,OAAO,EAAgB,OAAS,UAChC,EAAgB,MAAQ,CAAC,EAAgB,MAErC,EAAgB,MAAM,SAAS,EAAM,KAAK,EAC1C,EAAgB,OAAA,EAAA,EAAA,SAAgB,EAAgB,MAAO,EAAM,KAAK,EAElE,EAAgB,MAAQ,CAAC,GAAG,EAAgB,MAAO,EAAM,KAAK,EAI9E,CACJ,CAAC,CACL,CAAC,SAED,EAAA,EAAA,WACU,EAAM,QACX,GAAY,CACT,EAAgB,MAAQ,CAC5B,CACJ,GACA,EAAA,EAAA,WACU,EAAgB,UAChB,CAEE,EAAgB,OAAS,EAAM,SAC/B,EAAK,iBAAkB,EAAgB,KAAK,CAEpD,CACJ,qDA7GY,QAAA,CA7BH,OAAA,EAAA,EAAA,gBAAK,CAAA,WAAA,CAAA,oBAAsC,EAAA,QAAQ,cAAI,CAAA,EAAa,KAAK,CAAA,EACzE,OAAA,EAAA,EAAA,OAAO,CAAA,EAAa,iCAuBf,MArBN,EAqBM,EAAA,EAAA,EAAA,oBADK,OAAA,CAlBF,OAAA,EAAA,EAAA,gBAAK,CAAA,iBAAA,oBAA4G,EAAA,yBAAuD,EAAA,yCAQrF,EAAA,eAAA,EAAA,CAAjE,MAAM,sBAAuB,MAAA,EAAA,EAAA,OAAM,EAAA,OAAA,EAAS,cAAY,uEASzE,SAAA,EAAA,EAAA,YAPU,EAOV,MAPe,mCACW,MAAA,EACxB,KAAK,WACJ,MAAO,EAAA,MACP,SAAU,EAAA,SACV,QAAK,AAAA,EAAA,KAAA,GAAE,EAAA,MAAO,GACd,WAAQ,AAAA,EAAA,KAAA,GAAE,EAAA,MAAO,mCALT,EAAA,KAAe,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EASzB,EAAM,UAAA,EAAA,EAAA,WAAA,GAAA,EAAA,EAAA,oBAEX,MAFN,EAEM,EAAA,EAAA,EAAA,YADM,EAAA,OAAA,UAAA,CAAA,EAAA,IAAA,GAAA,EAAA,CAAA,CAAA,KAAA,EAAA,EAAA,WAAA,GAAA,EAAA,EAAA,oBAE0C,OAAtD,GAAA,EAAA,EAAA,iBAAuC,EAAA,KAAK,EAAA,CAAA,EAAA,EAAA,GAAA,CAAA,yXErB1C,MARN,EAQM,EAAA,EAAA,EAAA,cAAA,EAAA,EAAA,OAFA,EAAA,QAAA,EAAA,CAJE,MAAM,iBACN,OAAO,iBACP,OAAO,+BACN,QAAS,EAAA,2DAE6D,EAAA,QAAA,EAAA,CAAhE,MAAO,EAAA,WAAY,OAAO,iBAAkB,QAAS,EAAA"}
|
|
1
|
+
{"version":3,"file":"checkbox.umd.js","names":[],"sources":["../src/Checkbox.vue","../src/Checkbox.vue","../src/CheckboxSkeleton.vue","../src/CheckboxSkeleton.vue"],"sourcesContent":["<template>\n <label\n :class=\"['checkbox', { 'checkbox-disabled': disabled }, defaultAttrs.class]\"\n :title=\"defaultAttrs.title\"\n >\n <div class=\"checkbox-input-container\">\n <span\n :class=\"[\n 'checkbox-input',\n {\n 'checkbox-checked': isChecked,\n 'checkbox-focused': focused,\n },\n ]\"\n >\n <font-awesome-icon class=\"checkbox-input-icon\" :icon=\"faCheck\" aria-hidden=\"true\" />\n <input\n v-bind=\"attrs\"\n v-model=\"internalChecked\"\n type=\"checkbox\"\n :value=\"value\"\n :disabled=\"disabled\"\n @focus=\"focused = true\"\n @focusout=\"focused = false\"\n />\n </span>\n </div>\n <div v-if=\"slots.default\" class=\"checkbox-label\">\n <slot />\n </div>\n <span v-else class=\"checkbox-label\">{{ label }}</span>\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs, ref, computed, watch } from \"vue\";\nimport type { PropType } from \"vue\";\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheck } from \"@fortawesome/free-solid-svg-icons\";\nimport without from \"lodash/without.js\";\n\ntype CheckboxValue = string | Record<string, unknown>;\ntype CheckboxChecked = boolean | CheckboxValue[];\n\ndefineOptions({\n name: \"Checkbox\",\n inheritAttrs: false,\n});\nconst props = defineProps({\n /**\n * Controlled state. Pass a boolean for single checkboxes or an array for checkbox groups (the\n * component will push/pop value). Supports v-model:checked.\n */\n checked: {\n type: [Boolean, Array] as PropType<CheckboxChecked>,\n default: false,\n },\n /**\n * The value inserted or removed from the bound array when used in group mode. Ignored for\n * boolean usage.\n */\n value: {\n type: [String, Object] as PropType<CheckboxValue>,\n default: \"\",\n },\n /** Fallback label text when no default slot is provided. */\n label: {\n type: String,\n default: \"\",\n },\n /** Greys out the checkbox and prevents user interaction. */\n disabled: {\n type: Boolean,\n default: false,\n },\n});\nconst emit = defineEmits([\"update:checked\", \"keyup\", \"click\"]);\nconst defaultAttrs = useAttrs() as Record<string, unknown> & {\n class?: unknown;\n title?: string;\n};\nconst slots = defineSlots<{\n /** Custom label content rendered next to the checkbox input. */\n default?: () => unknown;\n}>();\nconst focused = ref(false);\nconst internalChecked = ref<CheckboxChecked>(props.checked);\n\nconst isChecked = computed(() => {\n if (typeof internalChecked.value === \"boolean\") {\n return internalChecked.value;\n } else {\n return internalChecked.value.includes(props.value);\n }\n});\nconst attrs = computed(() => {\n const { class: omittedClass, ...inputAttrs } = defaultAttrs;\n void omittedClass;\n return Object.assign({}, inputAttrs, {\n onClick(event: MouseEvent) {\n if (!props.disabled) {\n emit(\"click\", event);\n }\n },\n // Pressing the enter key gets handled like a click.\n onKeyup(event: KeyboardEvent) {\n emit(\"keyup\", event);\n if (props.disabled) {\n return;\n }\n if (event.key === \"Enter\") {\n emit(\"click\", event);\n if (typeof internalChecked.value == \"boolean\") {\n internalChecked.value = !internalChecked.value;\n } else {\n if (internalChecked.value.includes(props.value)) {\n internalChecked.value = without(internalChecked.value, props.value);\n } else {\n internalChecked.value = [...internalChecked.value, props.value];\n }\n }\n }\n },\n });\n});\n\nwatch(\n () => props.checked,\n (checked) => {\n internalChecked.value = checked;\n },\n);\nwatch(\n () => internalChecked.value,\n () => {\n // Only emit the update:checked event if the mutation came from within the checkbox component.\n if (internalChecked.value != props.checked) {\n emit(\"update:checked\", internalChecked.value);\n }\n },\n);\n</script>\n\n<style>\n@import \"theme.css\";\n</style>\n\n<style lang=\"less\" scoped>\n.checkbox {\n position: relative;\n display: flex;\n padding: var(--checkbox-padding);\n\n .checkbox-input-container {\n padding: 5px;\n }\n .checkbox-input {\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--checkbox-height);\n width: var(--checkbox-width);\n box-sizing: border-box;\n border-radius: var(--checkbox-border-radius);\n border: var(--checkbox-border-width) solid;\n background-color: var(--checkbox-background-default-default-light);\n color: var(--checkbox-color-default-default-light);\n border-color: var(--checkbox-border-color-default-default-light);\n transition: var(--checkbox-transition);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-light);\n color: var(--checkbox-color-default-hover-light);\n border-color: var(--checkbox-border-color-default-hover-light);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-light);\n color: var(--checkbox-color-default-active-light);\n border-color: var(--checkbox-border-color-default-active-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-light);\n color: var(--checkbox-color-checked-default-light);\n border-color: var(--checkbox-border-color-checked-default-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-light);\n color: var(--checkbox-color-checked-hover-light);\n border-color: var(--checkbox-border-color-checked-hover-light);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-light);\n color: var(--checkbox-color-checked-active-light);\n border-color: var(--checkbox-border-color-checked-active-light);\n }\n}\n.checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-light);\n cursor: not-allowed;\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n}\n.checkbox-input-icon {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n padding: 1px;\n}\n.checkbox-label {\n padding: var(--checkbox-label-padding);\n line-height: var(--checkbox-line-height);\n}\ninput {\n margin: 0;\n opacity: 0;\n position: absolute;\n pointer-events: none;\n}\n[data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-light) !important;\n}\n\n[dark-mode=\"true\"] {\n .checkbox {\n .checkbox-input {\n background-color: var(--checkbox-background-default-default-dark);\n color: var(--checkbox-color-default-default-dark);\n border-color: var(--checkbox-border-color-default-default-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-dark);\n color: var(--checkbox-color-default-hover-dark);\n border-color: var(--checkbox-border-color-default-hover-dark);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-dark);\n color: var(--checkbox-color-default-active-dark);\n border-color: var(--checkbox-border-color-default-active-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-dark);\n color: var(--checkbox-color-checked-default-dark);\n border-color: var(--checkbox-border-color-checked-default-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-dark);\n color: var(--checkbox-color-checked-hover-dark);\n border-color: var(--checkbox-border-color-checked-hover-dark);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-dark);\n color: var(--checkbox-color-checked-active-dark);\n border-color: var(--checkbox-border-color-checked-active-dark);\n }\n }\n .checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-dark);\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n }\n\n [data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-dark) !important;\n }\n}\n</style>\n","<template>\n <label\n :class=\"['checkbox', { 'checkbox-disabled': disabled }, defaultAttrs.class]\"\n :title=\"defaultAttrs.title\"\n >\n <div class=\"checkbox-input-container\">\n <span\n :class=\"[\n 'checkbox-input',\n {\n 'checkbox-checked': isChecked,\n 'checkbox-focused': focused,\n },\n ]\"\n >\n <font-awesome-icon class=\"checkbox-input-icon\" :icon=\"faCheck\" aria-hidden=\"true\" />\n <input\n v-bind=\"attrs\"\n v-model=\"internalChecked\"\n type=\"checkbox\"\n :value=\"value\"\n :disabled=\"disabled\"\n @focus=\"focused = true\"\n @focusout=\"focused = false\"\n />\n </span>\n </div>\n <div v-if=\"slots.default\" class=\"checkbox-label\">\n <slot />\n </div>\n <span v-else class=\"checkbox-label\">{{ label }}</span>\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAttrs, ref, computed, watch } from \"vue\";\nimport type { PropType } from \"vue\";\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheck } from \"@fortawesome/free-solid-svg-icons\";\nimport without from \"lodash/without.js\";\n\ntype CheckboxValue = string | Record<string, unknown>;\ntype CheckboxChecked = boolean | CheckboxValue[];\n\ndefineOptions({\n name: \"Checkbox\",\n inheritAttrs: false,\n});\nconst props = defineProps({\n /**\n * Controlled state. Pass a boolean for single checkboxes or an array for checkbox groups (the\n * component will push/pop value). Supports v-model:checked.\n */\n checked: {\n type: [Boolean, Array] as PropType<CheckboxChecked>,\n default: false,\n },\n /**\n * The value inserted or removed from the bound array when used in group mode. Ignored for\n * boolean usage.\n */\n value: {\n type: [String, Object] as PropType<CheckboxValue>,\n default: \"\",\n },\n /** Fallback label text when no default slot is provided. */\n label: {\n type: String,\n default: \"\",\n },\n /** Greys out the checkbox and prevents user interaction. */\n disabled: {\n type: Boolean,\n default: false,\n },\n});\nconst emit = defineEmits<{\n \"update:checked\": [value: CheckboxChecked];\n keyup: [event: KeyboardEvent];\n click: [event: MouseEvent | KeyboardEvent];\n}>();\nconst defaultAttrs = useAttrs() as Record<string, unknown> & {\n class?: unknown;\n title?: string;\n};\nconst slots = defineSlots<{\n /** Custom label content rendered next to the checkbox input. */\n default?: () => unknown;\n}>();\nconst focused = ref(false);\nconst internalChecked = ref<CheckboxChecked>(props.checked);\n\nconst isChecked = computed(() => {\n if (typeof internalChecked.value === \"boolean\") {\n return internalChecked.value;\n } else {\n return internalChecked.value.includes(props.value);\n }\n});\nconst attrs = computed(() => {\n const { class: omittedClass, ...inputAttrs } = defaultAttrs;\n void omittedClass;\n return Object.assign({}, inputAttrs, {\n onClick(event: MouseEvent) {\n if (!props.disabled) {\n emit(\"click\", event);\n }\n },\n // Pressing the enter key gets handled like a click.\n onKeyup(event: KeyboardEvent) {\n emit(\"keyup\", event);\n if (props.disabled) {\n return;\n }\n if (event.key === \"Enter\") {\n emit(\"click\", event);\n if (typeof internalChecked.value == \"boolean\") {\n internalChecked.value = !internalChecked.value;\n } else {\n if (internalChecked.value.includes(props.value)) {\n internalChecked.value = without(internalChecked.value, props.value);\n } else {\n internalChecked.value = [...internalChecked.value, props.value];\n }\n }\n }\n },\n });\n});\n\nwatch(\n () => props.checked,\n (checked) => {\n internalChecked.value = checked;\n },\n);\nwatch(\n () => internalChecked.value,\n () => {\n // Only emit the update:checked event if the mutation came from within the checkbox component.\n if (internalChecked.value != props.checked) {\n emit(\"update:checked\", internalChecked.value);\n }\n },\n);\n</script>\n\n<style>\n@import \"theme.css\";\n</style>\n\n<style lang=\"less\" scoped>\n.checkbox {\n position: relative;\n display: flex;\n padding: var(--checkbox-padding);\n\n .checkbox-input-container {\n padding: 5px;\n }\n .checkbox-input {\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--checkbox-height);\n width: var(--checkbox-width);\n box-sizing: border-box;\n border-radius: var(--checkbox-border-radius);\n border: var(--checkbox-border-width) solid;\n background-color: var(--checkbox-background-default-default-light);\n color: var(--checkbox-color-default-default-light);\n border-color: var(--checkbox-border-color-default-default-light);\n transition: var(--checkbox-transition);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-light);\n color: var(--checkbox-color-default-hover-light);\n border-color: var(--checkbox-border-color-default-hover-light);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-light);\n color: var(--checkbox-color-default-active-light);\n border-color: var(--checkbox-border-color-default-active-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-light);\n color: var(--checkbox-color-checked-default-light);\n border-color: var(--checkbox-border-color-checked-default-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-light);\n color: var(--checkbox-color-checked-hover-light);\n border-color: var(--checkbox-border-color-checked-hover-light);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-light);\n color: var(--checkbox-color-checked-active-light);\n border-color: var(--checkbox-border-color-checked-active-light);\n }\n}\n.checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-light);\n cursor: not-allowed;\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-light);\n color: var(--checkbox-color-default-disabled-light);\n border-color: var(--checkbox-border-color-default-disabled-light);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-light);\n color: var(--checkbox-color-checked-disabled-light);\n border-color: var(--checkbox-border-color-checked-disabled-light);\n }\n}\n.checkbox-input-icon {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n padding: 1px;\n}\n.checkbox-label {\n padding: var(--checkbox-label-padding);\n line-height: var(--checkbox-line-height);\n}\ninput {\n margin: 0;\n opacity: 0;\n position: absolute;\n pointer-events: none;\n}\n[data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-light) !important;\n}\n\n[dark-mode=\"true\"] {\n .checkbox {\n .checkbox-input {\n background-color: var(--checkbox-background-default-default-dark);\n color: var(--checkbox-color-default-default-dark);\n border-color: var(--checkbox-border-color-default-default-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-hover-dark);\n color: var(--checkbox-color-default-hover-dark);\n border-color: var(--checkbox-border-color-default-hover-dark);\n }\n &:active .checkbox-input {\n background-color: var(--checkbox-background-default-active-dark);\n color: var(--checkbox-color-default-active-dark);\n border-color: var(--checkbox-border-color-default-active-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-default-dark);\n color: var(--checkbox-color-checked-default-dark);\n border-color: var(--checkbox-border-color-checked-default-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-hover-dark);\n color: var(--checkbox-color-checked-hover-dark);\n border-color: var(--checkbox-border-color-checked-hover-dark);\n }\n &:active .checkbox-checked {\n background-color: var(--checkbox-background-checked-active-dark);\n color: var(--checkbox-color-checked-active-dark);\n border-color: var(--checkbox-border-color-checked-active-dark);\n }\n }\n .checkbox-disabled {\n color: var(--checkbox-color-checked-disabled-dark);\n\n .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n &:hover .checkbox-input {\n background-color: var(--checkbox-background-default-disabled-dark);\n color: var(--checkbox-color-default-disabled-dark);\n border-color: var(--checkbox-border-color-default-disabled-dark);\n }\n\n .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n &:hover .checkbox-checked {\n background-color: var(--checkbox-background-checked-disabled-dark);\n color: var(--checkbox-color-checked-disabled-dark);\n border-color: var(--checkbox-border-color-checked-disabled-dark);\n }\n }\n\n [data-whatinput=\"keyboard\"] .checkbox-focused {\n border-color: var(--checkbox-focus-outline-color-dark) !important;\n }\n}\n</style>\n","<template>\n <div class=\"checkbox-skeleton\">\n <Skeleton\n width=\"var(--size-20)\"\n height=\"var(--size-20)\"\n radius=\"var(--border-radius-regular)\"\n :shimmer=\"shimmer\"\n />\n <Skeleton :width=\"labelWidth\" height=\"var(--size-16)\" :shimmer=\"shimmer\" />\n </div>\n</template>\n<script setup lang=\"ts\">\nimport type { PropType } from \"vue\";\nimport { Skeleton } from \"@gospore/skeleton\";\ntype SkeletonDimension = string | number;\ndefineOptions({ name: \"CheckboxSkeleton\" });\ndefineProps({\n /** Sets the placeholder width for the label line. Numbers are converted to px. */\n labelWidth: { type: [String, Number] as PropType<SkeletonDimension>, default: \"10rem\" },\n /** Enables the animated shimmer effect for the placeholder. */\n shimmer: { type: Boolean, default: false },\n});\n</script>\n<style scoped lang=\"less\">\n.checkbox-skeleton {\n display: inline-flex;\n align-items: center;\n gap: var(--size-8);\n}\n</style>\n","<template>\n <div class=\"checkbox-skeleton\">\n <Skeleton\n width=\"var(--size-20)\"\n height=\"var(--size-20)\"\n radius=\"var(--border-radius-regular)\"\n :shimmer=\"shimmer\"\n />\n <Skeleton :width=\"labelWidth\" height=\"var(--size-16)\" :shimmer=\"shimmer\" />\n </div>\n</template>\n<script setup lang=\"ts\">\nimport type { PropType } from \"vue\";\nimport { Skeleton } from \"@gospore/skeleton\";\ntype SkeletonDimension = string | number;\ndefineOptions({ name: \"CheckboxSkeleton\" });\ndefineProps({\n /** Sets the placeholder width for the label line. Numbers are converted to px. */\n labelWidth: { type: [String, Number] as PropType<SkeletonDimension>, default: \"10rem\" },\n /** Enables the animated shimmer effect for the placeholder. */\n shimmer: { type: Boolean, default: false },\n});\n</script>\n<style scoped lang=\"less\">\n.checkbox-skeleton {\n display: inline-flex;\n align-items: center;\n gap: var(--size-8);\n}\n</style>\n"],"mappings":"2/CAgDA,IAAM,EAAQ,EA4BR,EAAO,EACP,GAAA,EAAA,EAAA,SAAA,CAAwB,EAIxB,GAAA,EAAA,EAAA,SAAA,CAAQ,EAIR,GAAA,EAAA,EAAA,IAAA,CAAc,EAAK,EACnB,GAAA,EAAA,EAAA,IAAA,CAAuC,EAAM,OAAO,EAEpD,GAAA,EAAA,EAAA,SAAA,KACE,OAAO,EAAgB,OAAU,UAC1B,EAAgB,MAEhB,EAAgB,MAAM,SAAS,EAAM,KAAK,CAExD,EACK,GAAA,EAAA,EAAA,SAAA,KAAuB,CACzB,GAAM,CAAE,MAAO,EAAc,GAAG,GAAe,EAE/C,OAAO,OAAO,OAAO,CAAC,EAAG,EAAY,CACjC,QAAQ,EAAmB,CAClB,EAAM,UACP,EAAK,QAAS,CAAK,CAE3B,EAEA,QAAQ,EAAsB,CAC1B,EAAK,QAAS,CAAK,EACf,GAAM,UAGN,EAAM,MAAQ,UACd,EAAK,QAAS,CAAK,EACf,OAAO,EAAgB,OAAS,UAChC,EAAgB,MAAQ,CAAC,EAAgB,MAErC,EAAgB,MAAM,SAAS,EAAM,KAAK,EAC1C,EAAgB,OAAA,EAAA,EAAA,QAAA,CAAgB,EAAgB,MAAO,EAAM,KAAK,EAElE,EAAgB,MAAQ,CAAC,GAAG,EAAgB,MAAO,EAAM,KAAK,EAI9E,CACJ,CAAC,CACL,CAAC,SAED,EAAA,EAAA,MAAA,KACU,EAAM,QACX,GAAY,CACT,EAAgB,MAAQ,CAC5B,CACJ,GACA,EAAA,EAAA,MAAA,KACU,EAAgB,UAChB,CAEE,EAAgB,OAAS,EAAM,SAC/B,EAAK,iBAAkB,EAAgB,KAAK,CAEpD,CACJ,qDA7GY,QAAA,CA7BH,OAAA,EAAA,EAAA,eAAA,CAAK,CAAA,WAAA,CAAA,oBAAsC,EAAA,QAAQ,cAAI,CAAA,CAAY,CAAC,KAAK,CAAA,EACzE,OAAA,EAAA,EAAA,MAAA,CAAO,CAAA,CAAY,CAAC,iCAuBf,MArBN,EAqBM,EAAA,EAAA,EAAA,mBAAA,CADK,OAAA,CAlBF,OAAA,EAAA,EAAA,eAAA,CAAK,CAAA,iBAAA,oBAA4G,EAAA,yBAAuD,EAAA,yCAQrF,EAAA,eAAA,EAAA,CAAjE,MAAM,sBAAuB,MAAA,EAAA,EAAA,MAAA,CAAM,EAAA,OAAA,EAAS,cAAY,uEASzE,SAAA,EAAA,EAAA,WAAA,CAPU,EAOV,MAPe,mCACW,MAAA,EACxB,KAAK,WACJ,MAAO,EAAA,MACP,SAAU,EAAA,SACV,QAAK,AAAA,EAAA,KAAA,GAAE,EAAA,MAAO,GACd,WAAQ,AAAA,EAAA,KAAA,GAAE,EAAA,MAAO,mCALT,EAAA,KAAe,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EASzB,EAAM,UAAA,EAAA,EAAA,UAAA,CAAA,GAAA,EAAA,EAAA,mBAAA,CAEX,MAFN,EAEM,EAAA,EAAA,EAAA,WAAA,CADM,EAAA,OAAA,UAAA,CAAA,EAAA,IAAA,GAAA,EAAA,CAAA,CAAA,KAAA,EAAA,EAAA,UAAA,CAAA,GAAA,EAAA,EAAA,mBAAA,CAE0C,OAAtD,GAAA,EAAA,EAAA,gBAAA,CAAuC,EAAA,KAAK,EAAA,CAAA,EAAA,EAAA,GAAA,CAAA,yXErB1C,MARN,EAQM,EAAA,EAAA,EAAA,YAAA,EAAA,EAAA,EAAA,MAAA,CAFA,EAAA,QAAA,EAAA,CAJE,MAAM,iBACN,OAAO,iBACP,OAAO,+BACN,QAAS,EAAA,2DAE6D,EAAA,QAAA,EAAA,CAAhE,MAAO,EAAA,WAAY,OAAO,iBAAkB,QAAS,EAAA"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gospore/checkbox",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"gitHead": "
|
|
3
|
+
"version": "1.0.64",
|
|
4
|
+
"gitHead": "b38dc9bd51b509549ff16bbdd473c379766c9623",
|
|
5
5
|
"description": "",
|
|
6
6
|
"author": "Gospore",
|
|
7
7
|
"files": [
|
|
@@ -27,16 +27,16 @@
|
|
|
27
27
|
"build": "vite build"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@fortawesome/fontawesome-svg-core": "^7.
|
|
31
|
-
"@fortawesome/free-solid-svg-icons": "^7.
|
|
32
|
-
"@fortawesome/vue-fontawesome": "^3.
|
|
33
|
-
"@gospore/skeleton": "^1.0.
|
|
30
|
+
"@fortawesome/fontawesome-svg-core": "^7.3.0",
|
|
31
|
+
"@fortawesome/free-solid-svg-icons": "^7.3.0",
|
|
32
|
+
"@fortawesome/vue-fontawesome": "^3.3.0",
|
|
33
|
+
"@gospore/skeleton": "^1.0.7",
|
|
34
34
|
"lodash": "^4.18.1"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@vitejs/plugin-vue": "^6.0.7",
|
|
38
38
|
"unplugin-vue-macros": "^2.14.5",
|
|
39
|
-
"vite": "^8.
|
|
39
|
+
"vite": "^8.1.3"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
42
|
"vue": "^3.4.20"
|