vuetify 3.0.3 → 3.0.5
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/json/attributes.json +907 -891
- package/dist/json/importMap.json +74 -74
- package/dist/json/tags.json +4 -0
- package/dist/json/web-types.json +1163 -1123
- package/dist/vuetify.css +64 -67
- package/dist/vuetify.d.ts +230 -120
- package/dist/vuetify.esm.js +355 -295
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +355 -295
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +712 -708
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/index.d.ts +25 -8
- package/lib/components/VBottomNavigation/VBottomNavigation.mjs +6 -3
- package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
- package/lib/components/VBottomNavigation/index.d.ts +9 -0
- package/lib/components/VBtn/index.d.ts +2 -3
- package/lib/components/VCard/index.d.ts +2 -3
- package/lib/components/VCheckbox/VCheckbox.css +1 -1
- package/lib/components/VCheckbox/VCheckbox.sass +1 -1
- package/lib/components/VChip/VChip.mjs +15 -7
- package/lib/components/VChip/VChip.mjs.map +1 -1
- package/lib/components/VChip/index.d.ts +2 -0
- package/lib/components/VColorPicker/VColorPicker.mjs +2 -2
- package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerPreview.mjs +2 -2
- package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
- package/lib/components/VColorPicker/util/index.mjs +24 -14
- package/lib/components/VColorPicker/util/index.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +1 -1
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.ts +25 -8
- package/lib/components/VDialog/index.d.ts +21 -6
- package/lib/components/VField/VField.mjs +1 -1
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VField/index.d.ts +5 -8
- package/lib/components/VFileInput/index.d.ts +2 -3
- package/lib/components/VGrid/VGrid.css +2 -2
- package/lib/components/VGrid/VGrid.sass +1 -1
- package/lib/components/VList/VListItem.mjs +2 -1
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VMenu/index.d.ts +21 -6
- package/lib/components/VOverlay/VOverlay.mjs +10 -3
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/index.d.ts +8 -1
- package/lib/components/VRadioGroup/VRadioGroup.mjs +1 -2
- package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.mjs +6 -2
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.ts +25 -8
- package/lib/components/VSelectionControl/VSelectionControl.css +4 -0
- package/lib/components/VSelectionControl/VSelectionControl.sass +4 -0
- package/lib/components/VSnackbar/index.d.ts +21 -6
- package/lib/components/VSwitch/VSwitch.css +1 -1
- package/lib/components/VSwitch/VSwitch.sass +1 -1
- package/lib/components/VSystemBar/VSystemBar.css +1 -1
- package/lib/components/VSystemBar/_variables.scss +1 -1
- package/lib/components/VTabs/VTab.css +2 -5
- package/lib/components/VTabs/VTab.sass +4 -6
- package/lib/components/VTabs/VTabs.css +0 -4
- package/lib/components/VTabs/VTabs.sass +0 -5
- package/lib/components/VTextField/index.d.ts +20 -29
- package/lib/components/VTextarea/index.d.ts +2 -3
- package/lib/components/VToolbar/VToolbar.mjs +32 -16
- package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
- package/lib/components/VTooltip/VTooltip.mjs +2 -1
- package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
- package/lib/components/VTooltip/index.d.ts +21 -6
- package/lib/components/index.d.ts +208 -98
- package/lib/composables/display.mjs +5 -4
- package/lib/composables/display.mjs.map +1 -1
- package/lib/composables/hydration.mjs +13 -8
- package/lib/composables/hydration.mjs.map +1 -1
- package/lib/composables/loader.mjs +1 -1
- package/lib/composables/loader.mjs.map +1 -1
- package/lib/composables/stack.mjs +16 -9
- package/lib/composables/stack.mjs.map +1 -1
- package/lib/composables/theme.mjs +7 -7
- package/lib/composables/theme.mjs.map +1 -1
- package/lib/composables/validation.mjs +2 -2
- package/lib/composables/validation.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.ts +22 -22
- package/lib/services/goto/util.mjs +1 -1
- package/lib/services/goto/util.mjs.map +1 -1
- package/lib/util/color/APCA.mjs +6 -6
- package/lib/util/color/APCA.mjs.map +1 -1
- package/lib/util/color/transformSRGB.mjs +15 -7
- package/lib/util/color/transformSRGB.mjs.map +1 -1
- package/lib/util/colorUtils.mjs +64 -81
- package/lib/util/colorUtils.mjs.map +1 -1
- package/lib/util/console.mjs +3 -3
- package/lib/util/console.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -12,7 +12,7 @@ import { makeElevationProps } from "../../composables/elevation.mjs";
|
|
|
12
12
|
import { makeRoundedProps } from "../../composables/rounded.mjs";
|
|
13
13
|
import { makeThemeProps } from "../../composables/theme.mjs";
|
|
14
14
|
import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
|
|
15
|
-
import { defineComponent,
|
|
15
|
+
import { defineComponent, HSVtoCSS, useRender } from "../../util/index.mjs";
|
|
16
16
|
import { extractColor, modes, nullColor, parseColor } from "./util/index.mjs";
|
|
17
17
|
import { onMounted, ref } from 'vue';
|
|
18
18
|
|
|
@@ -96,7 +96,7 @@ export const VColorPicker = defineComponent({
|
|
|
96
96
|
"theme": props.theme,
|
|
97
97
|
"class": ['v-color-picker'],
|
|
98
98
|
"style": {
|
|
99
|
-
'--v-color-picker-color-hsv':
|
|
99
|
+
'--v-color-picker-color-hsv': HSVtoCSS({
|
|
100
100
|
...(currentColor.value ?? nullColor),
|
|
101
101
|
a: 1
|
|
102
102
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VColorPicker.mjs","names":["VColorPickerCanvas","VColorPickerEdit","VColorPickerPreview","VColorPickerSwatches","VSheet","makeElevationProps","makeRoundedProps","makeThemeProps","useProxiedModel","defineComponent","
|
|
1
|
+
{"version":3,"file":"VColorPicker.mjs","names":["VColorPickerCanvas","VColorPickerEdit","VColorPickerPreview","VColorPickerSwatches","VSheet","makeElevationProps","makeRoundedProps","makeThemeProps","useProxiedModel","defineComponent","HSVtoCSS","useRender","extractColor","modes","nullColor","parseColor","onMounted","ref","VColorPicker","name","inheritAttrs","props","canvasHeight","type","String","Number","default","disabled","Boolean","dotSize","hideCanvas","hideSliders","hideInputs","mode","validator","v","Object","keys","includes","Array","isArray","every","m","showSwatches","swatches","swatchesMaxHeight","modelValue","width","emits","color","setup","lastPickedColor","currentColor","undefined","c","value","h","updateColor","hsva","rounded","elevation","theme","a","endsWith"],"sources":["../../../src/components/VColorPicker/VColorPicker.tsx"],"sourcesContent":["// Styles\nimport './VColorPicker.sass'\n\n// Components\nimport { VColorPickerCanvas } from './VColorPickerCanvas'\nimport { VColorPickerEdit } from './VColorPickerEdit'\nimport { VColorPickerPreview } from './VColorPickerPreview'\nimport { VColorPickerSwatches } from './VColorPickerSwatches'\nimport { VSheet } from '@/components/VSheet'\n\n// Composables\nimport { makeElevationProps } from '@/composables/elevation'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { makeThemeProps } from '@/composables/theme'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { defineComponent, HSVtoCSS, useRender } from '@/util'\nimport { extractColor, modes, nullColor, parseColor } from './util'\nimport { onMounted, ref } from 'vue'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { HSV } from '@/util'\n\nexport const VColorPicker = defineComponent({\n name: 'VColorPicker',\n\n inheritAttrs: false,\n\n props: {\n canvasHeight: {\n type: [String, Number],\n default: 150,\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n hideCanvas: Boolean,\n hideSliders: Boolean,\n hideInputs: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n modes: {\n type: Array as PropType<string[]>,\n default: () => Object.keys(modes),\n validator: (v: any) => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m)),\n },\n showSwatches: Boolean,\n swatches: Array as PropType<string[][]>,\n swatchesMaxHeight: {\n type: [Number, String],\n default: 150,\n },\n modelValue: {\n type: [Object, String] as PropType<Record<string, unknown> | string | undefined | null>,\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeThemeProps(),\n },\n\n emits: {\n 'update:modelValue': (color: any) => true,\n 'update:mode': (mode: string) => true,\n },\n\n setup (props) {\n const mode = useProxiedModel(props, 'mode')\n const lastPickedColor = ref<HSV | null>(null)\n const currentColor = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n v => {\n let c = parseColor(v)\n\n if (!c) return null\n\n if (lastPickedColor.value) {\n c = { ...c, h: lastPickedColor.value.h }\n lastPickedColor.value = null\n }\n\n return c\n },\n v => {\n if (!v) return null\n\n return extractColor(v, props.modelValue)\n }\n )\n\n const updateColor = (hsva: HSV) => {\n currentColor.value = hsva\n lastPickedColor.value = hsva\n }\n\n onMounted(() => {\n if (!props.modes.includes(mode.value)) mode.value = props.modes[0]\n })\n\n useRender(() => (\n <VSheet\n rounded={ props.rounded }\n elevation={ props.elevation }\n theme={ props.theme }\n class={[\n 'v-color-picker',\n ]}\n style={{\n '--v-color-picker-color-hsv': HSVtoCSS({ ...(currentColor.value ?? nullColor), a: 1 }),\n }}\n maxWidth={ props.width }\n >\n { !props.hideCanvas && (\n <VColorPickerCanvas\n key=\"canvas\"\n color={ currentColor.value }\n onUpdate:color={ updateColor }\n disabled={ props.disabled }\n dotSize={ props.dotSize }\n width={ props.width }\n height={ props.canvasHeight }\n />\n ) }\n\n { (!props.hideSliders || !props.hideInputs) && (\n <div key=\"controls\" class=\"v-color-picker__controls\">\n { !props.hideSliders && (\n <VColorPickerPreview\n key=\"preview\"\n color={ currentColor.value }\n onUpdate:color={ updateColor }\n hideAlpha={ !mode.value.endsWith('a') }\n disabled={ props.disabled }\n />\n ) }\n\n { !props.hideInputs && (\n <VColorPickerEdit\n key=\"edit\"\n modes={ props.modes }\n mode={ mode.value }\n onUpdate:mode={ m => mode.value = m }\n color={ currentColor.value }\n onUpdate:color={ updateColor }\n disabled={ props.disabled }\n />\n ) }\n </div>\n ) }\n\n { props.showSwatches && (\n <VColorPickerSwatches\n key=\"swatches\"\n color={ currentColor.value }\n onUpdate:color={ updateColor }\n maxHeight={ props.swatchesMaxHeight }\n swatches={ props.swatches }\n disabled={ props.disabled }\n />\n ) }\n </VSheet>\n ))\n\n return {}\n },\n})\n\nexport type VColorPicker = InstanceType<typeof VColorPicker>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VColorPickerCanvas.mjs","names":["clamp","convertToUnit","defineComponent","getEventCoordinates","useRender","computed","onMounted","ref","watch","VColorPickerCanvas","name","props","color","type","Object","disabled","Boolean","dotSize","Number","String","default","height","width","emits","hue","setup","emit","isInteracting","isOutsideUpdate","dotPosition","x","y","dotStyles","value","radius","parseInt","transform","canvasRef","updateDotPosition","rect","left","top","handleClick","e","clientX","clientY","getBoundingClientRect","handleMouseDown","preventDefault","window","addEventListener","handleMouseMove","handleMouseUp","coords","removeEventListener","h","s","v","a","updateCanvas","canvas","ctx","getContext","saturationGradient","createLinearGradient","addColorStop","fillStyle","fillRect","valueGradient","immediate","deep"],"sources":["../../../src/components/VColorPicker/VColorPickerCanvas.tsx"],"sourcesContent":["// Styles\nimport './VColorPickerCanvas.sass'\n\n// Utilities\nimport { clamp, convertToUnit, defineComponent, getEventCoordinates, useRender } from '@/util'\nimport { computed, onMounted, ref, watch } from 'vue'\n\n// Types\nimport type { HSVA } from '@/util'\nimport type { PropType } from 'vue'\n\nexport const VColorPickerCanvas = defineComponent({\n name: 'VColorPickerCanvas',\n\n props: {\n color: {\n type: Object as PropType<HSVA | null>,\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n height: {\n type: [Number, String],\n default: 150,\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n },\n\n emits: {\n 'update:color': (color: HSVA) => true,\n 'update:position': (hue: any) => true,\n },\n\n setup (props, { emit }) {\n const isInteracting = ref(false)\n const isOutsideUpdate = ref(false)\n const dotPosition = ref({ x: 0, y: 0 })\n\n const dotStyles = computed(() => {\n const { x, y } = dotPosition.value\n const radius = parseInt(props.dotSize, 10) / 2\n\n return {\n width: convertToUnit(props.dotSize),\n height: convertToUnit(props.dotSize),\n transform: `translate(${convertToUnit(x - radius)}, ${convertToUnit(y - radius)})`,\n }\n })\n\n const canvasRef = ref<HTMLCanvasElement | null>()\n\n function updateDotPosition (x: number, y: number, rect: DOMRect) {\n const { left, top, width, height } = rect\n dotPosition.value = {\n x: clamp(x - left, 0, width),\n y: clamp(y - top, 0, height),\n }\n }\n\n function handleClick (e: MouseEvent) {\n if (props.disabled || !canvasRef.value) return\n\n updateDotPosition(e.clientX, e.clientY, canvasRef.value.getBoundingClientRect())\n }\n\n function handleMouseDown (e: MouseEvent | TouchEvent) {\n // To prevent selection while moving cursor\n e.preventDefault()\n\n if (props.disabled) return\n\n isInteracting.value = true\n\n window.addEventListener('mousemove', handleMouseMove)\n window.addEventListener('mouseup', handleMouseUp)\n window.addEventListener('touchmove', handleMouseMove)\n window.addEventListener('touchend', handleMouseUp)\n }\n\n function handleMouseMove (e: MouseEvent | TouchEvent) {\n if (props.disabled || !canvasRef.value) return\n\n isInteracting.value = true\n\n const coords = getEventCoordinates(e)\n\n updateDotPosition(coords.clientX, coords.clientY, canvasRef.value.getBoundingClientRect())\n }\n\n function handleMouseUp () {\n window.removeEventListener('mousemove', handleMouseMove)\n window.removeEventListener('mouseup', handleMouseUp)\n window.removeEventListener('touchmove', handleMouseMove)\n window.removeEventListener('touchend', handleMouseUp)\n }\n\n watch(dotPosition, () => {\n if (isOutsideUpdate.value) {\n isOutsideUpdate.value = false\n return\n }\n\n if (!canvasRef.value) return\n\n const { width, height } = canvasRef.value.getBoundingClientRect()\n const { x, y } = dotPosition.value\n\n emit('update:color', {\n h: props.color?.h ?? 0,\n s: clamp(x, 0, width) / width,\n v: 1 - clamp(y, 0, height) / height,\n a: props.color?.a ?? 1,\n })\n })\n\n function updateCanvas () {\n if (!canvasRef.value) return\n\n const canvas = canvasRef.value\n const ctx = canvas.getContext('2d')\n\n if (!ctx) return\n\n const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0)\n saturationGradient.addColorStop(0, 'hsla(0, 0%, 100%, 1)') // white\n saturationGradient.addColorStop(1, `hsla(${props.color?.h ?? 0}, 100%, 50%, 1)`)\n ctx.fillStyle = saturationGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n\n const valueGradient = ctx.createLinearGradient(0, 0, 0, canvas.height)\n valueGradient.addColorStop(0, 'hsla(0, 0%, 100%, 0)') // transparent\n valueGradient.addColorStop(1, 'hsla(0, 0%, 0%, 1)') // black\n ctx.fillStyle = valueGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n }\n\n watch(() => props.color?.h, updateCanvas, { immediate: true })\n\n watch(() => props.color, () => {\n if (isInteracting.value) {\n isInteracting.value = false\n return\n }\n\n if (!props.color) return\n\n isOutsideUpdate.value = true\n\n dotPosition.value = {\n x: props.color.s * parseInt(props.width, 10),\n y: (1 - props.color.v) * parseInt(props.height, 10),\n }\n }, { deep: true, immediate: true })\n\n onMounted(() => updateCanvas())\n\n useRender(() => (\n <div\n class=\"v-color-picker-canvas\"\n style={{\n width: convertToUnit(props.width),\n height: convertToUnit(props.height),\n }}\n onClick={ handleClick }\n onMousedown={ handleMouseDown }\n onTouchstart={ handleMouseDown }\n >\n <canvas\n ref={ canvasRef }\n width={ props.width }\n height={ props.height }\n />\n <div\n class={[\n 'v-color-picker-canvas__dot',\n {\n 'v-color-picker-canvas__dot--disabled': props.disabled,\n },\n ]}\n style={ dotStyles.value }\n />\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VColorPickerCanvas = InstanceType<typeof VColorPickerCanvas>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VColorPickerCanvas.mjs","names":["clamp","convertToUnit","defineComponent","getEventCoordinates","useRender","computed","onMounted","ref","watch","VColorPickerCanvas","name","props","color","type","Object","disabled","Boolean","dotSize","Number","String","default","height","width","emits","hue","setup","emit","isInteracting","isOutsideUpdate","dotPosition","x","y","dotStyles","value","radius","parseInt","transform","canvasRef","updateDotPosition","rect","left","top","handleClick","e","clientX","clientY","getBoundingClientRect","handleMouseDown","preventDefault","window","addEventListener","handleMouseMove","handleMouseUp","coords","removeEventListener","h","s","v","a","updateCanvas","canvas","ctx","getContext","saturationGradient","createLinearGradient","addColorStop","fillStyle","fillRect","valueGradient","immediate","deep"],"sources":["../../../src/components/VColorPicker/VColorPickerCanvas.tsx"],"sourcesContent":["// Styles\nimport './VColorPickerCanvas.sass'\n\n// Utilities\nimport { clamp, convertToUnit, defineComponent, getEventCoordinates, useRender } from '@/util'\nimport { computed, onMounted, ref, watch } from 'vue'\n\n// Types\nimport type { HSV } from '@/util'\nimport type { PropType } from 'vue'\n\nexport const VColorPickerCanvas = defineComponent({\n name: 'VColorPickerCanvas',\n\n props: {\n color: {\n type: Object as PropType<HSV | null>,\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n height: {\n type: [Number, String],\n default: 150,\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n },\n\n emits: {\n 'update:color': (color: HSV) => true,\n 'update:position': (hue: any) => true,\n },\n\n setup (props, { emit }) {\n const isInteracting = ref(false)\n const isOutsideUpdate = ref(false)\n const dotPosition = ref({ x: 0, y: 0 })\n\n const dotStyles = computed(() => {\n const { x, y } = dotPosition.value\n const radius = parseInt(props.dotSize, 10) / 2\n\n return {\n width: convertToUnit(props.dotSize),\n height: convertToUnit(props.dotSize),\n transform: `translate(${convertToUnit(x - radius)}, ${convertToUnit(y - radius)})`,\n }\n })\n\n const canvasRef = ref<HTMLCanvasElement | null>()\n\n function updateDotPosition (x: number, y: number, rect: DOMRect) {\n const { left, top, width, height } = rect\n dotPosition.value = {\n x: clamp(x - left, 0, width),\n y: clamp(y - top, 0, height),\n }\n }\n\n function handleClick (e: MouseEvent) {\n if (props.disabled || !canvasRef.value) return\n\n updateDotPosition(e.clientX, e.clientY, canvasRef.value.getBoundingClientRect())\n }\n\n function handleMouseDown (e: MouseEvent | TouchEvent) {\n // To prevent selection while moving cursor\n e.preventDefault()\n\n if (props.disabled) return\n\n isInteracting.value = true\n\n window.addEventListener('mousemove', handleMouseMove)\n window.addEventListener('mouseup', handleMouseUp)\n window.addEventListener('touchmove', handleMouseMove)\n window.addEventListener('touchend', handleMouseUp)\n }\n\n function handleMouseMove (e: MouseEvent | TouchEvent) {\n if (props.disabled || !canvasRef.value) return\n\n isInteracting.value = true\n\n const coords = getEventCoordinates(e)\n\n updateDotPosition(coords.clientX, coords.clientY, canvasRef.value.getBoundingClientRect())\n }\n\n function handleMouseUp () {\n window.removeEventListener('mousemove', handleMouseMove)\n window.removeEventListener('mouseup', handleMouseUp)\n window.removeEventListener('touchmove', handleMouseMove)\n window.removeEventListener('touchend', handleMouseUp)\n }\n\n watch(dotPosition, () => {\n if (isOutsideUpdate.value) {\n isOutsideUpdate.value = false\n return\n }\n\n if (!canvasRef.value) return\n\n const { width, height } = canvasRef.value.getBoundingClientRect()\n const { x, y } = dotPosition.value\n\n emit('update:color', {\n h: props.color?.h ?? 0,\n s: clamp(x, 0, width) / width,\n v: 1 - clamp(y, 0, height) / height,\n a: props.color?.a ?? 1,\n })\n })\n\n function updateCanvas () {\n if (!canvasRef.value) return\n\n const canvas = canvasRef.value\n const ctx = canvas.getContext('2d')\n\n if (!ctx) return\n\n const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0)\n saturationGradient.addColorStop(0, 'hsla(0, 0%, 100%, 1)') // white\n saturationGradient.addColorStop(1, `hsla(${props.color?.h ?? 0}, 100%, 50%, 1)`)\n ctx.fillStyle = saturationGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n\n const valueGradient = ctx.createLinearGradient(0, 0, 0, canvas.height)\n valueGradient.addColorStop(0, 'hsla(0, 0%, 100%, 0)') // transparent\n valueGradient.addColorStop(1, 'hsla(0, 0%, 0%, 1)') // black\n ctx.fillStyle = valueGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n }\n\n watch(() => props.color?.h, updateCanvas, { immediate: true })\n\n watch(() => props.color, () => {\n if (isInteracting.value) {\n isInteracting.value = false\n return\n }\n\n if (!props.color) return\n\n isOutsideUpdate.value = true\n\n dotPosition.value = {\n x: props.color.s * parseInt(props.width, 10),\n y: (1 - props.color.v) * parseInt(props.height, 10),\n }\n }, { deep: true, immediate: true })\n\n onMounted(() => updateCanvas())\n\n useRender(() => (\n <div\n class=\"v-color-picker-canvas\"\n style={{\n width: convertToUnit(props.width),\n height: convertToUnit(props.height),\n }}\n onClick={ handleClick }\n onMousedown={ handleMouseDown }\n onTouchstart={ handleMouseDown }\n >\n <canvas\n ref={ canvasRef }\n width={ props.width }\n height={ props.height }\n />\n <div\n class={[\n 'v-color-picker-canvas__dot',\n {\n 'v-color-picker-canvas__dot--disabled': props.disabled,\n },\n ]}\n style={ dotStyles.value }\n />\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VColorPickerCanvas = InstanceType<typeof VColorPickerCanvas>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VColorPickerEdit.mjs","names":["VBtn","computed","defineComponent","useRender","modes","VColorPickerInput","label","rest","VColorPickerEdit","name","props","color","Object","disabled","Boolean","mode","type","String","default","validator","v","keys","includes","Array","isArray","every","m","emits","setup","emit","enabledModes","map","key","inputs","value","find","to","getValue","getColor","inputProps","onChange","e","target","from","length","mi","findIndex"],"sources":["../../../src/components/VColorPicker/VColorPickerEdit.tsx"],"sourcesContent":["// Styles\nimport './VColorPickerEdit.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Utilities\nimport { computed } from 'vue'\nimport { defineComponent, useRender } from '@/util'\nimport { modes } from './util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type {
|
|
1
|
+
{"version":3,"file":"VColorPickerEdit.mjs","names":["VBtn","computed","defineComponent","useRender","modes","VColorPickerInput","label","rest","VColorPickerEdit","name","props","color","Object","disabled","Boolean","mode","type","String","default","validator","v","keys","includes","Array","isArray","every","m","emits","setup","emit","enabledModes","map","key","inputs","value","find","to","getValue","getColor","inputProps","onChange","e","target","from","length","mi","findIndex"],"sources":["../../../src/components/VColorPicker/VColorPickerEdit.tsx"],"sourcesContent":["// Styles\nimport './VColorPickerEdit.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Utilities\nimport { computed } from 'vue'\nimport { defineComponent, useRender } from '@/util'\nimport { modes } from './util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { HSV } from '@/util/colorUtils'\n\nconst VColorPickerInput = ({ label, ...rest }: any) => {\n return (\n <div\n class=\"v-color-picker-edit__input\"\n >\n <input {...rest} />\n <span>{ label }</span>\n </div>\n )\n}\n\nexport const VColorPickerEdit = defineComponent({\n name: 'VColorPickerEdit',\n\n props: {\n color: Object as PropType<HSV | null>,\n disabled: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n modes: {\n type: Array as PropType<string[]>,\n default: () => Object.keys(modes),\n validator: (v: any) => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m)),\n },\n },\n\n emits: {\n 'update:color': (color: HSV) => true,\n 'update:mode': (mode: string) => true,\n },\n\n setup (props, { emit }) {\n const enabledModes = computed(() => {\n return props.modes.map(key => ({ ...modes[key], name: key }))\n })\n\n const inputs = computed(() => {\n const mode = enabledModes.value.find(m => m.name === props.mode)\n\n if (!mode) return []\n\n const color = props.color ? mode.to(props.color) : {}\n\n return mode.inputs?.map(({ getValue, getColor, ...inputProps }) => {\n return {\n ...mode.inputProps,\n ...inputProps,\n disabled: props.disabled,\n value: getValue(color),\n onChange: (e: InputEvent) => {\n const target = e.target as HTMLInputElement | null\n\n if (!target) return\n\n emit('update:color', mode.from(getColor(color, target.value)))\n },\n }\n })\n })\n\n useRender(() => (\n <div\n class=\"v-color-picker-edit\"\n >\n { inputs.value?.map(props => (\n <VColorPickerInput {...props} />\n )) }\n { enabledModes.value.length > 1 && (\n <VBtn\n icon=\"$unfold\"\n size=\"x-small\"\n variant=\"plain\"\n onClick={ () => {\n const mi = enabledModes.value.findIndex(m => m.name === props.mode)\n\n emit('update:mode', enabledModes.value[(mi + 1) % enabledModes.value.length].name)\n } }\n />\n ) }\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VColorPickerEdit = InstanceType<typeof VColorPickerEdit>\n"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import "./VColorPickerPreview.css";
|
|
|
4
4
|
|
|
5
5
|
// Components
|
|
6
6
|
import { VSlider } from "../VSlider/index.mjs"; // Utilities
|
|
7
|
-
import { defineComponent,
|
|
7
|
+
import { defineComponent, HSVtoCSS, useRender } from "../../util/index.mjs";
|
|
8
8
|
import { nullColor } from "./util/index.mjs"; // Types
|
|
9
9
|
export const VColorPickerPreview = defineComponent({
|
|
10
10
|
name: 'VColorPickerPreview',
|
|
@@ -32,7 +32,7 @@ export const VColorPickerPreview = defineComponent({
|
|
|
32
32
|
"class": "v-color-picker-preview__dot"
|
|
33
33
|
}, [_createVNode("div", {
|
|
34
34
|
"style": {
|
|
35
|
-
background:
|
|
35
|
+
background: HSVtoCSS(props.color ?? nullColor)
|
|
36
36
|
}
|
|
37
37
|
}, null)]), _createVNode("div", {
|
|
38
38
|
"class": "v-color-picker-preview__sliders"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VColorPickerPreview.mjs","names":["VSlider","defineComponent","
|
|
1
|
+
{"version":3,"file":"VColorPickerPreview.mjs","names":["VSlider","defineComponent","HSVtoCSS","useRender","nullColor","VColorPickerPreview","name","props","color","type","Object","disabled","Boolean","hideAlpha","emits","setup","emit","background","h","a"],"sources":["../../../src/components/VColorPicker/VColorPickerPreview.tsx"],"sourcesContent":["// Styles\nimport './VColorPickerPreview.sass'\n\n// Components\nimport { VSlider } from '@/components/VSlider'\n\n// Utilities\nimport { defineComponent, HSVtoCSS, useRender } from '@/util'\nimport { nullColor } from './util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { HSV } from '@/util'\n\nexport const VColorPickerPreview = defineComponent({\n name: 'VColorPickerPreview',\n\n props: {\n color: {\n type: Object as PropType<HSV | null>,\n },\n disabled: Boolean,\n hideAlpha: Boolean,\n },\n\n emits: {\n 'update:color': (color: HSV) => true,\n },\n\n setup (props, { emit }) {\n useRender(() => (\n <div\n class={[\n 'v-color-picker-preview',\n {\n 'v-color-picker-preview--hide-alpha': props.hideAlpha,\n },\n ]}\n >\n <div class=\"v-color-picker-preview__dot\">\n <div style={{ background: HSVtoCSS(props.color ?? nullColor) }} />\n </div>\n\n <div class=\"v-color-picker-preview__sliders\">\n <VSlider\n class=\"v-color-picker-preview__track v-color-picker-preview__hue\"\n modelValue={ props.color?.h }\n onUpdate:modelValue={ h => emit('update:color', { ...(props.color ?? nullColor), h }) }\n step={ 0 }\n min={ 0 }\n max={ 360 }\n disabled={ props.disabled }\n thumbSize={ 14 }\n trackSize={ 8 }\n trackFillColor=\"white\"\n hideDetails\n />\n\n { !props.hideAlpha && (\n <VSlider\n class=\"v-color-picker-preview__track v-color-picker-preview__alpha\"\n modelValue={ props.color?.a }\n onUpdate:modelValue={ a => emit('update:color', { ...(props.color ?? nullColor), a }) }\n step={ 0 }\n min={ 0 }\n max={ 1 }\n disabled={ props.disabled }\n thumbSize={ 14 }\n trackSize={ 8 }\n trackFillColor=\"white\"\n hideDetails\n />\n ) }\n </div>\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VColorPickerPreview = InstanceType<typeof VColorPickerPreview>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,OAAO,gCAEhB;AAAA,SACSC,eAAe,EAAEC,QAAQ,EAAEC,SAAS;AAAA,SACpCC,SAAS,4BAElB;AAIA,OAAO,MAAMC,mBAAmB,GAAGJ,eAAe,CAAC;EACjDK,IAAI,EAAE,qBAAqB;EAE3BC,KAAK,EAAE;IACLC,KAAK,EAAE;MACLC,IAAI,EAAEC;IACR,CAAC;IACDC,QAAQ,EAAEC,OAAO;IACjBC,SAAS,EAAED;EACb,CAAC;EAEDE,KAAK,EAAE;IACL,cAAc,EAAGN,KAAU,IAAK;EAClC,CAAC;EAEDO,KAAK,CAAER,KAAK,QAAY;IAAA,IAAV;MAAES;IAAK,CAAC;IACpBb,SAAS,CAAC;MAAA;MAAA;QAAA,SAEC,CACL,wBAAwB,EACxB;UACE,oCAAoC,EAAEI,KAAK,CAACM;QAC9C,CAAC;MACF;QAAA,SAEU;MAA6B;QAAA,SAC1B;UAAEI,UAAU,EAAEf,QAAQ,CAACK,KAAK,CAACC,KAAK,IAAIJ,SAAS;QAAE;MAAC;QAAA,SAGrD;MAAiC;QAAA,SAElC,2DAA2D;QAAA,8BACpDG,KAAK,CAACC,KAAK,qBAAX,aAAaU,CAAC;QAAA,uBACLA,CAAC,IAAIF,IAAI,CAAC,cAAc,EAAE;UAAE,IAAIT,KAAK,CAACC,KAAK,IAAIJ,SAAS,CAAC;UAAEc;QAAE,CAAC,CAAC;QAAA,QAC9E,CAAC;QAAA,OACF,CAAC;QAAA,OACD,GAAG;QAAA,YACEX,KAAK,CAACI,QAAQ;QAAA,aACb,EAAE;QAAA,aACF,CAAC;QAAA,kBACE,OAAO;QAAA;MAAA,UAItB,CAACJ,KAAK,CAACM,SAAS;QAAA,SAER,6DAA6D;QAAA,+BACtDN,KAAK,CAACC,KAAK,qBAAX,cAAaW,CAAC;QAAA,uBACLA,CAAC,IAAIH,IAAI,CAAC,cAAc,EAAE;UAAE,IAAIT,KAAK,CAACC,KAAK,IAAIJ,SAAS,CAAC;UAAEe;QAAE,CAAC,CAAC;QAAA,QAC9E,CAAC;QAAA,OACF,CAAC;QAAA,OACD,CAAC;QAAA,YACIZ,KAAK,CAACI,QAAQ;QAAA,aACb,EAAE;QAAA,aACF,CAAC;QAAA,kBACE,OAAO;QAAA;MAAA,QAGzB;IAAA,CAGN,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VColorPickerSwatches.mjs","names":["VIcon","convertToUnit","deepEqual","defineComponent","getContrast","useRender","parseColor","colors","parseDefaultColors","Object","keys","map","key","color","base","darken4","darken3","darken2","darken1","lighten1","lighten2","lighten3","lighten4","lighten5","black","white","transparent","VColorPickerSwatches","name","props","swatches","type","Array","default","disabled","Boolean","maxHeight","Number","String","emits","setup","emit","swatch","hsva","background","undefined"],"sources":["../../../src/components/VColorPicker/VColorPickerSwatches.tsx"],"sourcesContent":["// Styles\nimport './VColorPickerSwatches.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\n\n// Utilities\nimport { convertToUnit, deepEqual, defineComponent, getContrast, useRender } from '@/util'\nimport { parseColor } from './util'\nimport colors from '@/util/colors'\n\n// Types\nimport type {
|
|
1
|
+
{"version":3,"file":"VColorPickerSwatches.mjs","names":["VIcon","convertToUnit","deepEqual","defineComponent","getContrast","useRender","parseColor","colors","parseDefaultColors","Object","keys","map","key","color","base","darken4","darken3","darken2","darken1","lighten1","lighten2","lighten3","lighten4","lighten5","black","white","transparent","VColorPickerSwatches","name","props","swatches","type","Array","default","disabled","Boolean","maxHeight","Number","String","emits","setup","emit","swatch","hsva","background","undefined"],"sources":["../../../src/components/VColorPicker/VColorPickerSwatches.tsx"],"sourcesContent":["// Styles\nimport './VColorPickerSwatches.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\n\n// Utilities\nimport { convertToUnit, deepEqual, defineComponent, getContrast, useRender } from '@/util'\nimport { parseColor } from './util'\nimport colors from '@/util/colors'\n\n// Types\nimport type { HSV } from '@/util'\nimport type { PropType } from 'vue'\n\nfunction parseDefaultColors (colors: Record<string, Record<string, string>>) {\n return Object.keys(colors).map(key => {\n const color = colors[key]\n return color.base ? [\n color.base,\n color.darken4,\n color.darken3,\n color.darken2,\n color.darken1,\n color.lighten1,\n color.lighten2,\n color.lighten3,\n color.lighten4,\n color.lighten5,\n ] : [\n color.black,\n color.white,\n color.transparent,\n ]\n })\n}\n\nexport const VColorPickerSwatches = defineComponent({\n name: 'VColorPickerSwatches',\n\n props: {\n swatches: {\n type: Array as PropType<string[][]>,\n default: () => parseDefaultColors(colors),\n },\n disabled: Boolean,\n color: Object as PropType<HSV | null>,\n maxHeight: [Number, String],\n },\n\n emits: {\n 'update:color': (color: HSV) => true,\n },\n\n setup (props, { emit }) {\n useRender(() => (\n <div\n class=\"v-color-picker-swatches\"\n style={{\n maxHeight: convertToUnit(props.maxHeight),\n }}\n >\n <div>\n { props.swatches.map(swatch => (\n <div class=\"v-color-picker-swatches__swatch\">\n { swatch.map(color => {\n const hsva = parseColor(color)\n\n return (\n <div\n class=\"v-color-picker-swatches__color\"\n onClick={() => hsva && emit('update:color', hsva)}\n >\n <div style={{ background: color }}>\n { props.color && deepEqual(props.color, hsva)\n ? <VIcon size=\"x-small\" icon=\"$success\" color={getContrast(color, '#FFFFFF') > 2 ? 'white' : 'black' } />\n : undefined\n }\n </div>\n </div>\n )\n }) }\n </div>\n ))}\n </div>\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VColorPickerSwatches = InstanceType<typeof VColorPickerSwatches>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,KAAK,8BAEd;AAAA,SACSC,aAAa,EAAEC,SAAS,EAAEC,eAAe,EAAEC,WAAW,EAAEC,SAAS;AAAA,SACjEC,UAAU;AAAA,OACZC,MAAM,+BAEb;AAIA,SAASC,kBAAkB,CAAED,MAA8C,EAAE;EAC3E,OAAOE,MAAM,CAACC,IAAI,CAACH,MAAM,CAAC,CAACI,GAAG,CAACC,GAAG,IAAI;IACpC,MAAMC,KAAK,GAAGN,MAAM,CAACK,GAAG,CAAC;IACzB,OAAOC,KAAK,CAACC,IAAI,GAAG,CAClBD,KAAK,CAACC,IAAI,EACVD,KAAK,CAACE,OAAO,EACbF,KAAK,CAACG,OAAO,EACbH,KAAK,CAACI,OAAO,EACbJ,KAAK,CAACK,OAAO,EACbL,KAAK,CAACM,QAAQ,EACdN,KAAK,CAACO,QAAQ,EACdP,KAAK,CAACQ,QAAQ,EACdR,KAAK,CAACS,QAAQ,EACdT,KAAK,CAACU,QAAQ,CACf,GAAG,CACFV,KAAK,CAACW,KAAK,EACXX,KAAK,CAACY,KAAK,EACXZ,KAAK,CAACa,WAAW,CAClB;EACH,CAAC,CAAC;AACJ;AAEA,OAAO,MAAMC,oBAAoB,GAAGxB,eAAe,CAAC;EAClDyB,IAAI,EAAE,sBAAsB;EAE5BC,KAAK,EAAE;IACLC,QAAQ,EAAE;MACRC,IAAI,EAAEC,KAA6B;MACnCC,OAAO,EAAE,MAAMzB,kBAAkB,CAACD,MAAM;IAC1C,CAAC;IACD2B,QAAQ,EAAEC,OAAO;IACjBtB,KAAK,EAAEJ,MAA8B;IACrC2B,SAAS,EAAE,CAACC,MAAM,EAAEC,MAAM;EAC5B,CAAC;EAEDC,KAAK,EAAE;IACL,cAAc,EAAG1B,KAAU,IAAK;EAClC,CAAC;EAED2B,KAAK,CAAEX,KAAK,QAAY;IAAA,IAAV;MAAEY;IAAK,CAAC;IACpBpC,SAAS,CAAC;MAAA,SAEA,yBAAyB;MAAA,SACxB;QACL+B,SAAS,EAAEnC,aAAa,CAAC4B,KAAK,CAACO,SAAS;MAC1C;IAAC,+BAGGP,KAAK,CAACC,QAAQ,CAACnB,GAAG,CAAC+B,MAAM;MAAA,SACd;IAAiC,IACxCA,MAAM,CAAC/B,GAAG,CAACE,KAAK,IAAI;MACpB,MAAM8B,IAAI,GAAGrC,UAAU,CAACO,KAAK,CAAC;MAE9B;QAAA,SAEU,gCAAgC;QAAA,WAC7B,MAAM8B,IAAI,IAAIF,IAAI,CAAC,cAAc,EAAEE,IAAI;MAAC;QAAA,SAErC;UAAEC,UAAU,EAAE/B;QAAM;MAAC,IAC7BgB,KAAK,CAAChB,KAAK,IAAIX,SAAS,CAAC2B,KAAK,CAAChB,KAAK,EAAE8B,IAAI,CAAC;QAAA,QAC7B,SAAS;QAAA,QAAM,UAAU;QAAA,SAAQvC,WAAW,CAACS,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG;MAAO,WAClGgC,SAAS;IAKrB,CAAC,CAAC,EAEL,CAAC,IAGP,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var _rgba$inputs;
|
|
2
2
|
// Utilities
|
|
3
|
-
import {
|
|
3
|
+
import { HexToHSV, HSLtoHSV, HSVtoHex, HSVtoHSL, HSVtoRGB, parseHex, RGBtoHSV } from "../../../util/colorUtils.mjs"; // Types
|
|
4
4
|
function has(obj, key) {
|
|
5
5
|
return key.every(k => obj.hasOwnProperty(k));
|
|
6
6
|
}
|
|
@@ -9,13 +9,13 @@ export function parseColor(color) {
|
|
|
9
9
|
let hsva = null;
|
|
10
10
|
if (typeof color === 'string') {
|
|
11
11
|
const hex = parseHex(color);
|
|
12
|
-
hsva =
|
|
12
|
+
hsva = HexToHSV(hex);
|
|
13
13
|
}
|
|
14
14
|
if (typeof color === 'object') {
|
|
15
15
|
if (has(color, ['r', 'g', 'b'])) {
|
|
16
|
-
hsva =
|
|
16
|
+
hsva = RGBtoHSV(color);
|
|
17
17
|
} else if (has(color, ['h', 's', 'l'])) {
|
|
18
|
-
hsva =
|
|
18
|
+
hsva = HSLtoHSV(color);
|
|
19
19
|
} else if (has(color, ['h', 's', 'v'])) {
|
|
20
20
|
hsva = color;
|
|
21
21
|
}
|
|
@@ -37,12 +37,12 @@ function stripAlpha(color, stripAlpha) {
|
|
|
37
37
|
}
|
|
38
38
|
export function extractColor(color, input) {
|
|
39
39
|
if (input == null || typeof input === 'string') {
|
|
40
|
-
const hex =
|
|
40
|
+
const hex = HSVtoHex(color);
|
|
41
41
|
if (color.a === 1) return hex.slice(0, 7);else return hex;
|
|
42
42
|
}
|
|
43
43
|
if (typeof input === 'object') {
|
|
44
44
|
let converted;
|
|
45
|
-
if (has(input, ['r', 'g', 'b'])) converted =
|
|
45
|
+
if (has(input, ['r', 'g', 'b'])) converted = HSVtoRGB(color);else if (has(input, ['h', 's', 'l'])) converted = HSVtoHSL(color);else if (has(input, ['h', 's', 'v'])) converted = color;
|
|
46
46
|
return stripAlpha(converted, !has(input, ['a']));
|
|
47
47
|
}
|
|
48
48
|
return color;
|
|
@@ -99,14 +99,19 @@ const rgba = {
|
|
|
99
99
|
label: 'A',
|
|
100
100
|
max: 1,
|
|
101
101
|
step: 0.01,
|
|
102
|
-
getValue:
|
|
102
|
+
getValue: _ref => {
|
|
103
|
+
let {
|
|
104
|
+
a
|
|
105
|
+
} = _ref;
|
|
106
|
+
return a ? Math.round(a * 100) / 100 : 1;
|
|
107
|
+
},
|
|
103
108
|
getColor: (c, v) => ({
|
|
104
109
|
...c,
|
|
105
110
|
a: Number(v)
|
|
106
111
|
})
|
|
107
112
|
}],
|
|
108
|
-
to:
|
|
109
|
-
from:
|
|
113
|
+
to: HSVtoRGB,
|
|
114
|
+
from: RGBtoHSV
|
|
110
115
|
};
|
|
111
116
|
const rgb = {
|
|
112
117
|
...rgba,
|
|
@@ -148,14 +153,19 @@ const hsla = {
|
|
|
148
153
|
label: 'A',
|
|
149
154
|
max: 1,
|
|
150
155
|
step: 0.01,
|
|
151
|
-
getValue:
|
|
156
|
+
getValue: _ref2 => {
|
|
157
|
+
let {
|
|
158
|
+
a
|
|
159
|
+
} = _ref2;
|
|
160
|
+
return a ? Math.round(a * 100) / 100 : 1;
|
|
161
|
+
},
|
|
152
162
|
getColor: (c, v) => ({
|
|
153
163
|
...c,
|
|
154
164
|
a: Number(v)
|
|
155
165
|
})
|
|
156
166
|
}],
|
|
157
|
-
to:
|
|
158
|
-
from:
|
|
167
|
+
to: HSVtoHSL,
|
|
168
|
+
from: HSLtoHSV
|
|
159
169
|
};
|
|
160
170
|
const hsl = {
|
|
161
171
|
...hsla,
|
|
@@ -170,8 +180,8 @@ const hexa = {
|
|
|
170
180
|
getValue: c => c,
|
|
171
181
|
getColor: (c, v) => v
|
|
172
182
|
}],
|
|
173
|
-
to:
|
|
174
|
-
from:
|
|
183
|
+
to: HSVtoHex,
|
|
184
|
+
from: HexToHSV
|
|
175
185
|
};
|
|
176
186
|
const hex = {
|
|
177
187
|
...hexa,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["HexToHSVA","HSLAtoHSVA","HSVAtoHex","HSVAtoHSLA","HSVAtoRGBA","parseHex","RGBAtoHSVA","has","obj","key","every","k","hasOwnProperty","parseColor","color","hsva","hex","a","stripAlpha","rest","extractColor","input","slice","converted","hasAlpha","length","nullColor","h","s","v","rgba","inputProps","type","min","inputs","label","max","step","getValue","c","Math","round","r","getColor","Number","g","b","to","from","rgb","hsla","l","hsl","hexa","modes"],"sources":["../../../../src/components/VColorPicker/util/index.ts"],"sourcesContent":["// Utilities\nimport {\n HexToHSVA,\n HSLAtoHSVA,\n HSVAtoHex,\n HSVAtoHSLA,\n HSVAtoRGBA,\n parseHex,\n RGBAtoHSVA,\n} from '@/util/colorUtils'\n\n// Types\nimport type {\n HSLA,\n HSVA,\n RGBA,\n} from '@/util/colorUtils'\n\nfunction has (obj: object, key: string[]) {\n return key.every(k => obj.hasOwnProperty(k))\n}\n\nexport function parseColor (color: any): HSVA | null {\n if (!color) return null\n\n let hsva: HSVA | null = null\n\n if (typeof color === 'string') {\n const hex = parseHex(color)\n\n hsva = HexToHSVA(hex)\n }\n\n if (typeof color === 'object') {\n if (has(color, ['r', 'g', 'b'])) {\n hsva = RGBAtoHSVA(color)\n } else if (has(color, ['h', 's', 'l'])) {\n hsva = HSLAtoHSVA(color)\n } else if (has(color, ['h', 's', 'v'])) {\n hsva = color\n }\n }\n\n return hsva != null ? { ...hsva, a: hsva.a ?? 1 } : null\n}\n\nfunction stripAlpha (color: any, stripAlpha: boolean) {\n if (stripAlpha) {\n const { a, ...rest } = color\n\n return rest\n }\n\n return color\n}\n\nexport function extractColor (color: HSVA, input: any) {\n if (input == null || typeof input === 'string') {\n const hex = HSVAtoHex(color)\n\n if (color.a === 1) return hex.slice(0, 7)\n else return hex\n }\n\n if (typeof input === 'object') {\n let converted\n\n if (has(input, ['r', 'g', 'b'])) converted = HSVAtoRGBA(color)\n else if (has(input, ['h', 's', 'l'])) converted = HSVAtoHSLA(color)\n else if (has(input, ['h', 's', 'v'])) converted = color\n\n return stripAlpha(converted, !has(input, ['a']))\n }\n\n return color\n}\n\nexport function hasAlpha (color: any) {\n if (!color) return false\n\n if (typeof color === 'string') {\n return color.length > 7\n }\n\n if (typeof color === 'object') {\n return has(color, ['a']) || has(color, ['alpha'])\n }\n\n return false\n}\n\nexport const nullColor = { h: 0, s: 0, v: 1, a: 1 }\n\nexport type ColorPickerMode = {\n inputProps: Record<string, unknown>\n inputs: {\n [key: string]: any\n getValue: (color: any) => number | string\n getColor: (color: any, v: string) => any\n }[]\n from: (color: any) => HSVA\n to: (color: HSVA) => any\n}\n\nconst rgba: ColorPickerMode = {\n inputProps: {\n type: 'number',\n min: 0,\n },\n inputs: [\n {\n label: 'R',\n max: 255,\n step: 1,\n getValue: (c: RGBA) => Math.round(c.r),\n getColor: (c: RGBA, v: string): RGBA => ({ ...c, r: Number(v) }),\n },\n {\n label: 'G',\n max: 255,\n step: 1,\n getValue: (c: RGBA) => Math.round(c.g),\n getColor: (c: RGBA, v: string): RGBA => ({ ...c, g: Number(v) }),\n },\n {\n label: 'B',\n max: 255,\n step: 1,\n getValue: (c: RGBA) => Math.round(c.b),\n getColor: (c: RGBA, v: string): RGBA => ({ ...c, b: Number(v) }),\n },\n {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: (c: RGBA) => Math.round(c.a * 100) / 100,\n getColor: (c: RGBA, v: string): RGBA => ({ ...c, a: Number(v) }),\n },\n ],\n to: HSVAtoRGBA,\n from: RGBAtoHSVA,\n}\n\nconst rgb = {\n ...rgba,\n inputs: rgba.inputs?.slice(0, 3),\n}\n\nconst hsla: ColorPickerMode = {\n inputProps: {\n type: 'number',\n min: 0,\n },\n inputs: [\n {\n label: 'H',\n max: 360,\n step: 1,\n getValue: (c: HSLA) => Math.round(c.h),\n getColor: (c: HSLA, v: string): HSLA => ({ ...c, h: Number(v) }),\n },\n {\n label: 'S',\n max: 1,\n step: 0.01,\n getValue: (c: HSLA) => Math.round(c.s * 100) / 100,\n getColor: (c: HSLA, v: string): HSLA => ({ ...c, s: Number(v) }),\n },\n {\n label: 'L',\n max: 1,\n step: 0.01,\n getValue: (c: HSLA) => Math.round(c.l * 100) / 100,\n getColor: (c: HSLA, v: string): HSLA => ({ ...c, l: Number(v) }),\n },\n {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: (c: HSLA) => Math.round(c.a * 100) / 100,\n getColor: (c: HSLA, v: string): HSLA => ({ ...c, a: Number(v) }),\n },\n ],\n to: HSVAtoHSLA,\n from: HSLAtoHSVA,\n}\n\nconst hsl = {\n ...hsla,\n inputs: hsla.inputs.slice(0, 3),\n}\n\nconst hexa: ColorPickerMode = {\n inputProps: {\n type: 'text',\n },\n inputs: [\n {\n label: 'HEXA',\n getValue: (c: string) => c,\n getColor: (c: string, v: string) => v,\n },\n ],\n to: HSVAtoHex,\n from: HexToHSVA,\n}\n\nconst hex = {\n ...hexa,\n inputs: [\n {\n label: 'HEX',\n getValue: (c: string) => c.slice(0, 7),\n getColor: (c: string, v: string) => v,\n },\n ],\n}\n\nexport const modes: Record<string, ColorPickerMode> = {\n rgb,\n rgba,\n hsl,\n hsla,\n hex,\n hexa,\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["HexToHSV","HSLtoHSV","HSVtoHex","HSVtoHSL","HSVtoRGB","parseHex","RGBtoHSV","has","obj","key","every","k","hasOwnProperty","parseColor","color","hsva","hex","a","stripAlpha","rest","extractColor","input","slice","converted","hasAlpha","length","nullColor","h","s","v","rgba","inputProps","type","min","inputs","label","max","step","getValue","c","Math","round","r","getColor","Number","g","b","to","from","rgb","hsla","l","hsl","hexa","modes"],"sources":["../../../../src/components/VColorPicker/util/index.ts"],"sourcesContent":["// Utilities\nimport {\n HexToHSV,\n HSLtoHSV,\n HSVtoHex,\n HSVtoHSL,\n HSVtoRGB,\n parseHex,\n RGBtoHSV,\n} from '@/util/colorUtils'\n\n// Types\nimport type { HSL, HSV, RGB } from '@/util/colorUtils'\n\nfunction has (obj: object, key: string[]) {\n return key.every(k => obj.hasOwnProperty(k))\n}\n\nexport function parseColor (color: any): HSV | null {\n if (!color) return null\n\n let hsva: HSV | null = null\n\n if (typeof color === 'string') {\n const hex = parseHex(color)\n\n hsva = HexToHSV(hex)\n }\n\n if (typeof color === 'object') {\n if (has(color, ['r', 'g', 'b'])) {\n hsva = RGBtoHSV(color)\n } else if (has(color, ['h', 's', 'l'])) {\n hsva = HSLtoHSV(color)\n } else if (has(color, ['h', 's', 'v'])) {\n hsva = color\n }\n }\n\n return hsva != null ? { ...hsva, a: hsva.a ?? 1 } : null\n}\n\nfunction stripAlpha (color: any, stripAlpha: boolean) {\n if (stripAlpha) {\n const { a, ...rest } = color\n\n return rest\n }\n\n return color\n}\n\nexport function extractColor (color: HSV, input: any) {\n if (input == null || typeof input === 'string') {\n const hex = HSVtoHex(color)\n\n if (color.a === 1) return hex.slice(0, 7)\n else return hex\n }\n\n if (typeof input === 'object') {\n let converted\n\n if (has(input, ['r', 'g', 'b'])) converted = HSVtoRGB(color)\n else if (has(input, ['h', 's', 'l'])) converted = HSVtoHSL(color)\n else if (has(input, ['h', 's', 'v'])) converted = color\n\n return stripAlpha(converted, !has(input, ['a']))\n }\n\n return color\n}\n\nexport function hasAlpha (color: any) {\n if (!color) return false\n\n if (typeof color === 'string') {\n return color.length > 7\n }\n\n if (typeof color === 'object') {\n return has(color, ['a']) || has(color, ['alpha'])\n }\n\n return false\n}\n\nexport const nullColor = { h: 0, s: 0, v: 1, a: 1 }\n\nexport type ColorPickerMode = {\n inputProps: Record<string, unknown>\n inputs: {\n [key: string]: any\n getValue: (color: any) => number | string\n getColor: (color: any, v: string) => any\n }[]\n from: (color: any) => HSV\n to: (color: HSV) => any\n}\n\nconst rgba: ColorPickerMode = {\n inputProps: {\n type: 'number',\n min: 0,\n },\n inputs: [\n {\n label: 'R',\n max: 255,\n step: 1,\n getValue: (c: RGB) => Math.round(c.r),\n getColor: (c: RGB, v: string): RGB => ({ ...c, r: Number(v) }),\n },\n {\n label: 'G',\n max: 255,\n step: 1,\n getValue: (c: RGB) => Math.round(c.g),\n getColor: (c: RGB, v: string): RGB => ({ ...c, g: Number(v) }),\n },\n {\n label: 'B',\n max: 255,\n step: 1,\n getValue: (c: RGB) => Math.round(c.b),\n getColor: (c: RGB, v: string): RGB => ({ ...c, b: Number(v) }),\n },\n {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: ({ a }: RGB) => a ? Math.round(a * 100) / 100 : 1,\n getColor: (c: RGB, v: string): RGB => ({ ...c, a: Number(v) }),\n },\n ],\n to: HSVtoRGB,\n from: RGBtoHSV,\n}\n\nconst rgb = {\n ...rgba,\n inputs: rgba.inputs?.slice(0, 3),\n}\n\nconst hsla: ColorPickerMode = {\n inputProps: {\n type: 'number',\n min: 0,\n },\n inputs: [\n {\n label: 'H',\n max: 360,\n step: 1,\n getValue: (c: HSL) => Math.round(c.h),\n getColor: (c: HSL, v: string): HSL => ({ ...c, h: Number(v) }),\n },\n {\n label: 'S',\n max: 1,\n step: 0.01,\n getValue: (c: HSL) => Math.round(c.s * 100) / 100,\n getColor: (c: HSL, v: string): HSL => ({ ...c, s: Number(v) }),\n },\n {\n label: 'L',\n max: 1,\n step: 0.01,\n getValue: (c: HSL) => Math.round(c.l * 100) / 100,\n getColor: (c: HSL, v: string): HSL => ({ ...c, l: Number(v) }),\n },\n {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: ({ a }: HSL) => a ? Math.round(a * 100) / 100 : 1,\n getColor: (c: HSL, v: string): HSL => ({ ...c, a: Number(v) }),\n },\n ],\n to: HSVtoHSL,\n from: HSLtoHSV,\n}\n\nconst hsl = {\n ...hsla,\n inputs: hsla.inputs.slice(0, 3),\n}\n\nconst hexa: ColorPickerMode = {\n inputProps: {\n type: 'text',\n },\n inputs: [\n {\n label: 'HEXA',\n getValue: (c: string) => c,\n getColor: (c: string, v: string) => v,\n },\n ],\n to: HSVtoHex,\n from: HexToHSV,\n}\n\nconst hex = {\n ...hexa,\n inputs: [\n {\n label: 'HEX',\n getValue: (c: string) => c.slice(0, 7),\n getColor: (c: string, v: string) => v,\n },\n ],\n}\n\nexport const modes: Record<string, ColorPickerMode> = {\n rgb,\n rgba,\n hsl,\n hsla,\n hex,\n hexa,\n}\n"],"mappings":"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"}
|
|
@@ -126,7 +126,7 @@ export const VCombobox = genericComponent()({
|
|
|
126
126
|
} = useFilter(props, items, computed(() => isPristine.value ? undefined : search.value));
|
|
127
127
|
const selections = computed(() => {
|
|
128
128
|
return model.value.map(v => {
|
|
129
|
-
return items.value.find(item => item.value
|
|
129
|
+
return items.value.find(item => props.valueComparator(item.value, v.value)) || v;
|
|
130
130
|
});
|
|
131
131
|
});
|
|
132
132
|
const selected = computed(() => selections.value.map(selection => selection.props.value));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VCombobox.mjs","names":["makeSelectProps","VCheckboxBtn","VChip","VDefaultsProvider","VList","VListItem","VMenu","VTextField","makeFilterProps","useFilter","makeTransitionProps","transformItem","useItems","forwardRefs","useLocale","useProxiedModel","useTextColor","computed","mergeProps","nextTick","ref","watch","genericComponent","omit","useRender","wrapInArray","filterVTextFieldProps","makeVTextFieldProps","highlightResult","text","matches","length","Array","isArray","Error","substr","VCombobox","name","props","delimiters","filterKeys","hideNoData","returnObject","modelValue","transition","emits","val","setup","emit","slots","t","vTextFieldRef","isFocused","isPristine","menu","selectionIndex","color","value","items","transformIn","transformOut","textColorClasses","textColorStyles","model","v","transformed","multiple","_search","title","search","get","set","values","split","RegExp","join","forEach","trim","select","filteredItems","undefined","selections","map","find","item","selected","selection","listRef","onClear","e","openOnClear","onClickControl","readonly","onKeydown","selectionStart","preventDefault","includes","key","focus","prev","setSelectionRange","next","onAfterLeave","index","findIndex","splice","onFocusin","onFocusout","relatedTarget","hasChips","chips","chip","textFieldProps","externalValue","menuIcon","default","eager","menuProps","noDataText","onClick","prepend","isSelected","hideSelected","onChipClose","stopPropagation","slotProps","closable","closableChips","size"],"sources":["../../../src/components/VCombobox/VCombobox.tsx"],"sourcesContent":["// Styles\nimport './VCombobox.sass'\n\n// Components\nimport { makeSelectProps } from '@/components/VSelect/VSelect'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { VTextField } from '@/components/VTextField'\n\n// Composables\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { transformItem, useItems } from '@/composables/items'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\n\n// Utility\nimport { computed, mergeProps, nextTick, ref, watch } from 'vue'\nimport { genericComponent, omit, useRender, wrapInArray } from '@/util'\nimport { filterVTextFieldProps, makeVTextFieldProps } from '../VTextField/VTextField'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { MakeSlots, SlotsToProps } from '@/util'\nimport type { FilterMatch } from '@/composables/filter'\nimport type { InternalItem } from '@/composables/items'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nfunction highlightResult (text: string, matches: FilterMatch, length: number) {\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented')\n\n return typeof matches === 'number' && ~matches\n ? (\n <>\n <span class=\"v-combobox__unmask\">{ text.substr(0, matches) }</span>\n <span class=\"v-combobox__mask\">{ text.substr(matches, length) }</span>\n <span class=\"v-combobox__unmask\">{ text.substr(matches + length) }</span>\n </>\n )\n : text\n}\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val <T, ReturnObject extends boolean> = string | (T extends Primitive\n ? T\n : (ReturnObject extends true ? T : any))\n\ntype Value <T, ReturnObject extends boolean, Multiple extends boolean> =\n Multiple extends true\n ? readonly Val<T, ReturnObject>[]\n : Val<T, ReturnObject>\n\nexport const VCombobox = genericComponent<new <\n T,\n ReturnObject extends boolean = true,\n Multiple extends boolean = false,\n V extends Value<T, ReturnObject, Multiple> = Value<T, ReturnObject, Multiple>\n>() => {\n $props: {\n items?: readonly T[]\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V\n 'onUpdate:modelValue'?: (val: V) => void\n } & SlotsToProps<\n Omit<VInputSlots & VFieldSlots, 'default'> & MakeSlots<{\n item: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n chip: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n selection: [{ item: InternalItem<T>, index: number }]\n 'prepend-item': []\n 'append-item': []\n 'no-data': []\n }>\n >\n}>()({\n name: 'VCombobox',\n\n props: {\n // TODO: implement post keyboard support\n // autoSelectFirst: Boolean,\n delimiters: Array as PropType<string[]>,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps({ hideNoData: true, returnObject: true }),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: false }),\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n 'update:search': (val: string) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { emit, slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const isFocused = ref(false)\n const isPristine = ref(true)\n const menu = useProxiedModel(props, 'menu')\n const selectionIndex = ref(-1)\n const color = computed(() => vTextFieldRef.value?.color)\n const { items, transformIn, transformOut } = useItems(props)\n const { textColorClasses, textColorStyles } = useTextColor(color)\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => transformIn(wrapInArray(v || [])),\n v => {\n const transformed = transformOut(v)\n return props.multiple ? transformed : (transformed[0] ?? null)\n }\n )\n const _search = ref(!props.multiple ? model.value[0]?.title ?? '' : '')\n const search = computed<string>({\n get: () => {\n return _search.value\n },\n set: val => {\n _search.value = val\n if (!props.multiple) {\n model.value = [transformItem(props, val)]\n }\n\n if (val && props.multiple && props.delimiters?.length) {\n const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`))\n if (values.length > 1) {\n values.forEach(v => {\n v = v.trim()\n if (v) select(transformItem(props, v))\n })\n _search.value = ''\n }\n }\n\n if (!val) selectionIndex.value = -1\n if (isFocused.value) menu.value = true\n\n isPristine.value = !val\n },\n })\n watch(_search, value => {\n emit('update:search', value)\n })\n watch(model, value => {\n if (!props.multiple) {\n _search.value = value[0]?.title ?? ''\n }\n })\n\n const { filteredItems } = useFilter(props, items, computed(() => isPristine.value ? undefined : search.value))\n\n const selections = computed(() => {\n return model.value.map(v => {\n return items.value.find(item => item.value === v.value) || v\n })\n })\n const selected = computed(() => selections.value.map(selection => selection.props.value))\n const selection = computed(() => selections.value[selectionIndex.value])\n const listRef = ref<VList>()\n\n function onClear (e: MouseEvent) {\n model.value = []\n\n if (props.openOnClear) {\n menu.value = true\n }\n }\n function onClickControl () {\n if (\n (props.hideNoData && !items.value.length) ||\n props.readonly\n ) return\n\n menu.value = true\n }\n function onKeydown (e: KeyboardEvent) {\n if (props.readonly) return\n\n const selectionStart = vTextFieldRef.value.selectionStart\n const length = selected.value.length\n\n if (selectionIndex.value > -1) e.preventDefault()\n\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape'].includes(e.key)) {\n menu.value = false\n }\n\n if (['Enter', 'Escape', 'Tab'].includes(e.key)) {\n isPristine.value = true\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n listRef.value?.focus('next')\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n listRef.value?.focus('prev')\n }\n\n if (!props.multiple) return\n\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (selectionIndex.value < 0) {\n if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1\n }\n\n return\n }\n\n select(selection.value)\n\n nextTick(() => !selection.value && (selectionIndex.value = length - 2))\n }\n\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart > 0) return\n\n const prev = selectionIndex.value > -1\n ? selectionIndex.value - 1\n : length - 1\n\n if (selections.value[prev]) {\n selectionIndex.value = prev\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(search.value.length, search.value.length)\n }\n }\n\n if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return\n\n const next = selectionIndex.value + 1\n\n if (selections.value[next]) {\n selectionIndex.value = next\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(0, 0)\n }\n }\n\n if (e.key === 'Enter') {\n select(transformItem(props, search.value))\n search.value = ''\n }\n }\n function onAfterLeave () {\n if (isFocused.value) isPristine.value = true\n }\n function select (item: InternalItem) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => selection === item.value)\n\n if (index === -1) {\n model.value = [...model.value, item]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n\n search.value = ''\n } else {\n model.value = [item]\n _search.value = item.title\n\n // watch for search watcher to trigger\n nextTick(() => {\n menu.value = false\n isPristine.value = true\n })\n }\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n }\n\n function onFocusout (e: FocusEvent) {\n if (e.relatedTarget == null) {\n vTextFieldRef.value?.focus()\n }\n }\n\n watch(filteredItems, val => {\n if (!val.length && props.hideNoData) menu.value = false\n })\n\n watch(isFocused, val => {\n if (val) {\n selectionIndex.value = -1\n } else {\n menu.value = false\n\n if (!props.multiple || !search.value) return\n\n model.value = [...model.value, transformItem(props, search.value)]\n search.value = ''\n }\n })\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n const [textFieldProps] = filterVTextFieldProps(props)\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n v-model={ search.value }\n onUpdate:modelValue={ v => { if (v == null) model.value = [] } }\n validationValue={ model.externalValue }\n dirty={ model.value.length > 0 }\n class={[\n 'v-combobox',\n {\n 'v-combobox--active-menu': menu.value,\n 'v-combobox--chips': !!props.chips,\n 'v-combobox--selecting-index': selectionIndex.value > -1,\n [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true,\n },\n ]}\n appendInnerIcon={ props.items.length ? props.menuIcon : undefined }\n readonly={ props.readonly }\n onClick:clear={ onClear }\n onClick:control={ onClickControl }\n onClick:input={ onClickControl }\n onFocus={ () => isFocused.value = true }\n onBlur={ () => isFocused.value = false }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n contentClass=\"v-combobox__content\"\n eager={ props.eager }\n openOnClick={ false }\n closeOnContentClick={ false }\n transition={ props.transition }\n onAfterLeave={ onAfterLeave }\n { ...props.menuProps }\n >\n <VList\n ref={ listRef }\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n >\n { !filteredItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n )) }\n\n { slots['prepend-item']?.() }\n\n { filteredItems.value.map(({ item, matches }, index) => slots.item?.({\n item,\n index,\n props: mergeProps(item.props, { onClick: () => select(item) }),\n }) ?? (\n <VListItem\n key={ index }\n { ...item.props }\n onClick={ () => select(item) }\n >\n {{\n prepend: ({ isSelected }) => props.multiple && !props.hideSelected ? (\n <VCheckboxBtn modelValue={ isSelected } ripple={ false } />\n ) : undefined,\n title: () => {\n return isPristine.value\n ? item.title\n : highlightResult(item.title, matches.title, search.value?.length ?? 0)\n },\n }}\n </VListItem>\n )) }\n\n { slots['append-item']?.() }\n </VList>\n </VMenu>\n\n { selections.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n return (\n <div\n key={ item.value }\n class={[\n 'v-combobox__selection',\n index === selectionIndex.value && [\n 'v-combobox__selection--selected',\n textColorClasses.value,\n ],\n ]}\n style={ index === selectionIndex.value ? textColorStyles.value : {} }\n >\n { hasChips ? (\n <VDefaultsProvider\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title,\n },\n }}\n >\n { slots.chip\n ? slots.chip({ item, index, props: slotProps })\n : (<VChip { ...slotProps } />)\n }\n </VDefaultsProvider>\n ) : (\n slots.selection\n ? slots.selection({ item, index })\n : (\n <span class=\"v-combobox__selection-text\">\n { item.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-combobox__selection-comma\">,</span>\n ) }\n </span>\n )\n ) }\n </div>\n )\n }) }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n selectionIndex,\n filteredItems,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VCombobox = InstanceType<typeof VCombobox>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VCombobox.mjs","names":["makeSelectProps","VCheckboxBtn","VChip","VDefaultsProvider","VList","VListItem","VMenu","VTextField","makeFilterProps","useFilter","makeTransitionProps","transformItem","useItems","forwardRefs","useLocale","useProxiedModel","useTextColor","computed","mergeProps","nextTick","ref","watch","genericComponent","omit","useRender","wrapInArray","filterVTextFieldProps","makeVTextFieldProps","highlightResult","text","matches","length","Array","isArray","Error","substr","VCombobox","name","props","delimiters","filterKeys","hideNoData","returnObject","modelValue","transition","emits","val","setup","emit","slots","t","vTextFieldRef","isFocused","isPristine","menu","selectionIndex","color","value","items","transformIn","transformOut","textColorClasses","textColorStyles","model","v","transformed","multiple","_search","title","search","get","set","values","split","RegExp","join","forEach","trim","select","filteredItems","undefined","selections","map","find","item","valueComparator","selected","selection","listRef","onClear","e","openOnClear","onClickControl","readonly","onKeydown","selectionStart","preventDefault","includes","key","focus","prev","setSelectionRange","next","onAfterLeave","index","findIndex","splice","onFocusin","onFocusout","relatedTarget","hasChips","chips","chip","textFieldProps","externalValue","menuIcon","default","eager","menuProps","noDataText","onClick","prepend","isSelected","hideSelected","onChipClose","stopPropagation","slotProps","closable","closableChips","size"],"sources":["../../../src/components/VCombobox/VCombobox.tsx"],"sourcesContent":["// Styles\nimport './VCombobox.sass'\n\n// Components\nimport { makeSelectProps } from '@/components/VSelect/VSelect'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { VTextField } from '@/components/VTextField'\n\n// Composables\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { transformItem, useItems } from '@/composables/items'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\n\n// Utility\nimport { computed, mergeProps, nextTick, ref, watch } from 'vue'\nimport { genericComponent, omit, useRender, wrapInArray } from '@/util'\nimport { filterVTextFieldProps, makeVTextFieldProps } from '../VTextField/VTextField'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { MakeSlots, SlotsToProps } from '@/util'\nimport type { FilterMatch } from '@/composables/filter'\nimport type { InternalItem } from '@/composables/items'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nfunction highlightResult (text: string, matches: FilterMatch, length: number) {\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented')\n\n return typeof matches === 'number' && ~matches\n ? (\n <>\n <span class=\"v-combobox__unmask\">{ text.substr(0, matches) }</span>\n <span class=\"v-combobox__mask\">{ text.substr(matches, length) }</span>\n <span class=\"v-combobox__unmask\">{ text.substr(matches + length) }</span>\n </>\n )\n : text\n}\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val <T, ReturnObject extends boolean> = string | (T extends Primitive\n ? T\n : (ReturnObject extends true ? T : any))\n\ntype Value <T, ReturnObject extends boolean, Multiple extends boolean> =\n Multiple extends true\n ? readonly Val<T, ReturnObject>[]\n : Val<T, ReturnObject>\n\nexport const VCombobox = genericComponent<new <\n T,\n ReturnObject extends boolean = true,\n Multiple extends boolean = false,\n V extends Value<T, ReturnObject, Multiple> = Value<T, ReturnObject, Multiple>\n>() => {\n $props: {\n items?: readonly T[]\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V\n 'onUpdate:modelValue'?: (val: V) => void\n } & SlotsToProps<\n Omit<VInputSlots & VFieldSlots, 'default'> & MakeSlots<{\n item: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n chip: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n selection: [{ item: InternalItem<T>, index: number }]\n 'prepend-item': []\n 'append-item': []\n 'no-data': []\n }>\n >\n}>()({\n name: 'VCombobox',\n\n props: {\n // TODO: implement post keyboard support\n // autoSelectFirst: Boolean,\n delimiters: Array as PropType<string[]>,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps({ hideNoData: true, returnObject: true }),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: false }),\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n 'update:search': (val: string) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { emit, slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const isFocused = ref(false)\n const isPristine = ref(true)\n const menu = useProxiedModel(props, 'menu')\n const selectionIndex = ref(-1)\n const color = computed(() => vTextFieldRef.value?.color)\n const { items, transformIn, transformOut } = useItems(props)\n const { textColorClasses, textColorStyles } = useTextColor(color)\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => transformIn(wrapInArray(v || [])),\n v => {\n const transformed = transformOut(v)\n return props.multiple ? transformed : (transformed[0] ?? null)\n }\n )\n const _search = ref(!props.multiple ? model.value[0]?.title ?? '' : '')\n const search = computed<string>({\n get: () => {\n return _search.value\n },\n set: val => {\n _search.value = val\n if (!props.multiple) {\n model.value = [transformItem(props, val)]\n }\n\n if (val && props.multiple && props.delimiters?.length) {\n const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`))\n if (values.length > 1) {\n values.forEach(v => {\n v = v.trim()\n if (v) select(transformItem(props, v))\n })\n _search.value = ''\n }\n }\n\n if (!val) selectionIndex.value = -1\n if (isFocused.value) menu.value = true\n\n isPristine.value = !val\n },\n })\n watch(_search, value => {\n emit('update:search', value)\n })\n watch(model, value => {\n if (!props.multiple) {\n _search.value = value[0]?.title ?? ''\n }\n })\n\n const { filteredItems } = useFilter(props, items, computed(() => isPristine.value ? undefined : search.value))\n\n const selections = computed(() => {\n return model.value.map(v => {\n return items.value.find(item => props.valueComparator(item.value, v.value)) || v\n })\n })\n const selected = computed(() => selections.value.map(selection => selection.props.value))\n const selection = computed(() => selections.value[selectionIndex.value])\n const listRef = ref<VList>()\n\n function onClear (e: MouseEvent) {\n model.value = []\n\n if (props.openOnClear) {\n menu.value = true\n }\n }\n function onClickControl () {\n if (\n (props.hideNoData && !items.value.length) ||\n props.readonly\n ) return\n\n menu.value = true\n }\n function onKeydown (e: KeyboardEvent) {\n if (props.readonly) return\n\n const selectionStart = vTextFieldRef.value.selectionStart\n const length = selected.value.length\n\n if (selectionIndex.value > -1) e.preventDefault()\n\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape'].includes(e.key)) {\n menu.value = false\n }\n\n if (['Enter', 'Escape', 'Tab'].includes(e.key)) {\n isPristine.value = true\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n listRef.value?.focus('next')\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n listRef.value?.focus('prev')\n }\n\n if (!props.multiple) return\n\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (selectionIndex.value < 0) {\n if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1\n }\n\n return\n }\n\n select(selection.value)\n\n nextTick(() => !selection.value && (selectionIndex.value = length - 2))\n }\n\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart > 0) return\n\n const prev = selectionIndex.value > -1\n ? selectionIndex.value - 1\n : length - 1\n\n if (selections.value[prev]) {\n selectionIndex.value = prev\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(search.value.length, search.value.length)\n }\n }\n\n if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return\n\n const next = selectionIndex.value + 1\n\n if (selections.value[next]) {\n selectionIndex.value = next\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(0, 0)\n }\n }\n\n if (e.key === 'Enter') {\n select(transformItem(props, search.value))\n search.value = ''\n }\n }\n function onAfterLeave () {\n if (isFocused.value) isPristine.value = true\n }\n function select (item: InternalItem) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => selection === item.value)\n\n if (index === -1) {\n model.value = [...model.value, item]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n\n search.value = ''\n } else {\n model.value = [item]\n _search.value = item.title\n\n // watch for search watcher to trigger\n nextTick(() => {\n menu.value = false\n isPristine.value = true\n })\n }\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n }\n\n function onFocusout (e: FocusEvent) {\n if (e.relatedTarget == null) {\n vTextFieldRef.value?.focus()\n }\n }\n\n watch(filteredItems, val => {\n if (!val.length && props.hideNoData) menu.value = false\n })\n\n watch(isFocused, val => {\n if (val) {\n selectionIndex.value = -1\n } else {\n menu.value = false\n\n if (!props.multiple || !search.value) return\n\n model.value = [...model.value, transformItem(props, search.value)]\n search.value = ''\n }\n })\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n const [textFieldProps] = filterVTextFieldProps(props)\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n v-model={ search.value }\n onUpdate:modelValue={ v => { if (v == null) model.value = [] } }\n validationValue={ model.externalValue }\n dirty={ model.value.length > 0 }\n class={[\n 'v-combobox',\n {\n 'v-combobox--active-menu': menu.value,\n 'v-combobox--chips': !!props.chips,\n 'v-combobox--selecting-index': selectionIndex.value > -1,\n [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true,\n },\n ]}\n appendInnerIcon={ props.items.length ? props.menuIcon : undefined }\n readonly={ props.readonly }\n onClick:clear={ onClear }\n onClick:control={ onClickControl }\n onClick:input={ onClickControl }\n onFocus={ () => isFocused.value = true }\n onBlur={ () => isFocused.value = false }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n contentClass=\"v-combobox__content\"\n eager={ props.eager }\n openOnClick={ false }\n closeOnContentClick={ false }\n transition={ props.transition }\n onAfterLeave={ onAfterLeave }\n { ...props.menuProps }\n >\n <VList\n ref={ listRef }\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n >\n { !filteredItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n )) }\n\n { slots['prepend-item']?.() }\n\n { filteredItems.value.map(({ item, matches }, index) => slots.item?.({\n item,\n index,\n props: mergeProps(item.props, { onClick: () => select(item) }),\n }) ?? (\n <VListItem\n key={ index }\n { ...item.props }\n onClick={ () => select(item) }\n >\n {{\n prepend: ({ isSelected }) => props.multiple && !props.hideSelected ? (\n <VCheckboxBtn modelValue={ isSelected } ripple={ false } />\n ) : undefined,\n title: () => {\n return isPristine.value\n ? item.title\n : highlightResult(item.title, matches.title, search.value?.length ?? 0)\n },\n }}\n </VListItem>\n )) }\n\n { slots['append-item']?.() }\n </VList>\n </VMenu>\n\n { selections.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n return (\n <div\n key={ item.value }\n class={[\n 'v-combobox__selection',\n index === selectionIndex.value && [\n 'v-combobox__selection--selected',\n textColorClasses.value,\n ],\n ]}\n style={ index === selectionIndex.value ? textColorStyles.value : {} }\n >\n { hasChips ? (\n <VDefaultsProvider\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title,\n },\n }}\n >\n { slots.chip\n ? slots.chip({ item, index, props: slotProps })\n : (<VChip { ...slotProps } />)\n }\n </VDefaultsProvider>\n ) : (\n slots.selection\n ? slots.selection({ item, index })\n : (\n <span class=\"v-combobox__selection-text\">\n { item.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-combobox__selection-comma\">,</span>\n ) }\n </span>\n )\n ) }\n </div>\n )\n }) }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n selectionIndex,\n filteredItems,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VCombobox = InstanceType<typeof VCombobox>\n"],"mappings":"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"}
|