vuetify 3.9.3 → 3.9.4
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 +3341 -3329
- package/dist/json/importMap-labs.json +12 -12
- package/dist/json/importMap.json +192 -192
- package/dist/json/tags.json +5 -2
- package/dist/json/web-types.json +6346 -6317
- package/dist/vuetify-labs.cjs +219 -116
- package/dist/vuetify-labs.css +3398 -3353
- package/dist/vuetify-labs.d.ts +180 -148
- package/dist/vuetify-labs.esm.js +219 -116
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +219 -116
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +161 -93
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +4301 -4271
- package/dist/vuetify.d.ts +63 -76
- package/dist/vuetify.esm.js +161 -93
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +161 -93
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +482 -481
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/VAlert.css +9 -2
- package/lib/components/VAlert/VAlert.js +2 -2
- package/lib/components/VAlert/VAlert.js.map +1 -1
- package/lib/components/VAlert/VAlert.sass +10 -3
- package/lib/components/VAlert/_variables.scss +1 -1
- package/lib/components/VApp/VApp.d.ts +0 -25
- package/lib/components/VApp/VApp.js +6 -5
- package/lib/components/VApp/VApp.js.map +1 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.css +1 -0
- package/lib/components/VColorPicker/VColorPickerCanvas.sass +1 -0
- package/lib/components/VColorPicker/VColorPickerEdit.css +5 -0
- package/lib/components/VColorPicker/VColorPickerEdit.js +8 -1
- package/lib/components/VColorPicker/VColorPickerEdit.js.map +1 -1
- package/lib/components/VColorPicker/VColorPickerEdit.sass +5 -0
- package/lib/components/VColorPicker/VColorPickerPreview.js +8 -1
- package/lib/components/VColorPicker/VColorPickerPreview.js.map +1 -1
- package/lib/components/VColorPicker/util/index.d.ts +1 -0
- package/lib/components/VColorPicker/util/index.js +20 -10
- package/lib/components/VColorPicker/util/index.js.map +1 -1
- package/lib/components/VConfirmEdit/VConfirmEdit.js +1 -1
- package/lib/components/VConfirmEdit/VConfirmEdit.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.css +2 -1
- package/lib/components/VDataTable/VDataTable.sass +2 -1
- package/lib/components/VDataTable/composables/headers.js +53 -42
- package/lib/components/VDataTable/composables/headers.js.map +1 -1
- package/lib/components/VDataTable/composables/sort.js +1 -1
- package/lib/components/VDataTable/composables/sort.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.js +1 -0
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VOverlay/scrollStrategies.js +7 -7
- package/lib/components/VOverlay/scrollStrategies.js.map +1 -1
- package/lib/components/VSlider/VSliderThumb.css +2 -2
- package/lib/components/VSlider/VSliderThumb.sass +2 -2
- package/lib/components/VStepper/VStepperItem.css +2 -0
- package/lib/components/VStepper/VStepperItem.sass +3 -0
- package/lib/components/VTable/VTable.css +2 -2
- package/lib/components/VTable/VTable.js +32 -20
- package/lib/components/VTable/VTable.js.map +1 -1
- package/lib/components/VTable/VTable.sass +4 -4
- package/lib/components/VTreeview/VTreeviewItem.css +6 -0
- package/lib/components/VTreeview/VTreeviewItem.sass +7 -0
- package/lib/components/VWindow/VWindow.css +8 -0
- package/lib/components/VWindow/VWindow.sass +9 -0
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +62 -62
- package/lib/framework.js +1 -1
- package/lib/labs/VColorInput/VColorInput.css +15 -0
- package/lib/labs/VColorInput/VColorInput.d.ts +287 -215
- package/lib/labs/VColorInput/VColorInput.js +23 -8
- package/lib/labs/VColorInput/VColorInput.js.map +1 -1
- package/lib/labs/VColorInput/VColorInput.sass +8 -0
- package/lib/labs/VColorInput/_variables.scss +2 -0
- package/lib/labs/VVideo/VVideo.css +4 -4
- package/lib/labs/VVideo/VVideo.d.ts +10 -0
- package/lib/labs/VVideo/VVideo.js +6 -3
- package/lib/labs/VVideo/VVideo.js.map +1 -1
- package/lib/labs/VVideo/VVideo.sass +4 -2
- package/lib/labs/VVideo/VVideoControls.js +33 -16
- package/lib/labs/VVideo/VVideoControls.js.map +1 -1
- package/lib/labs/VVideo/VVideoVolume.js +1 -1
- package/lib/labs/VVideo/VVideoVolume.js.map +1 -1
- package/lib/labs/VVideo/_variables.scss +3 -2
- package/lib/labs/rules/rules.d.ts +10 -3
- package/lib/labs/rules/rules.js +13 -5
- package/lib/labs/rules/rules.js.map +1 -1
- package/lib/locale/af.d.ts +17 -0
- package/lib/locale/af.js +17 -0
- package/lib/locale/af.js.map +1 -1
- package/lib/locale/ar.d.ts +17 -0
- package/lib/locale/ar.js +17 -0
- package/lib/locale/ar.js.map +1 -1
- package/lib/locale/az.d.ts +17 -0
- package/lib/locale/az.js +17 -0
- package/lib/locale/az.js.map +1 -1
- package/lib/locale/bg.d.ts +17 -0
- package/lib/locale/bg.js +17 -0
- package/lib/locale/bg.js.map +1 -1
- package/lib/locale/ca.d.ts +17 -0
- package/lib/locale/ca.js +17 -0
- package/lib/locale/ca.js.map +1 -1
- package/lib/locale/ckb.d.ts +17 -0
- package/lib/locale/ckb.js +17 -0
- package/lib/locale/ckb.js.map +1 -1
- package/lib/locale/cs.d.ts +17 -0
- package/lib/locale/cs.js +17 -0
- package/lib/locale/cs.js.map +1 -1
- package/lib/locale/da.d.ts +17 -0
- package/lib/locale/da.js +17 -0
- package/lib/locale/da.js.map +1 -1
- package/lib/locale/de.d.ts +17 -0
- package/lib/locale/de.js +17 -0
- package/lib/locale/de.js.map +1 -1
- package/lib/locale/el.d.ts +17 -0
- package/lib/locale/el.js +17 -0
- package/lib/locale/el.js.map +1 -1
- package/lib/locale/en.d.ts +17 -0
- package/lib/locale/en.js +17 -0
- package/lib/locale/en.js.map +1 -1
- package/lib/locale/es.d.ts +17 -0
- package/lib/locale/es.js +17 -0
- package/lib/locale/es.js.map +1 -1
- package/lib/locale/et.d.ts +17 -0
- package/lib/locale/et.js +17 -0
- package/lib/locale/et.js.map +1 -1
- package/lib/locale/fa.d.ts +17 -0
- package/lib/locale/fa.js +17 -0
- package/lib/locale/fa.js.map +1 -1
- package/lib/locale/fi.d.ts +17 -0
- package/lib/locale/fi.js +17 -0
- package/lib/locale/fi.js.map +1 -1
- package/lib/locale/fr.d.ts +17 -0
- package/lib/locale/fr.js +17 -0
- package/lib/locale/fr.js.map +1 -1
- package/lib/locale/he.d.ts +17 -0
- package/lib/locale/he.js +17 -0
- package/lib/locale/he.js.map +1 -1
- package/lib/locale/hr.d.ts +17 -0
- package/lib/locale/hr.js +17 -0
- package/lib/locale/hr.js.map +1 -1
- package/lib/locale/hu.d.ts +17 -0
- package/lib/locale/hu.js +17 -0
- package/lib/locale/hu.js.map +1 -1
- package/lib/locale/id.d.ts +17 -0
- package/lib/locale/id.js +17 -0
- package/lib/locale/id.js.map +1 -1
- package/lib/locale/it.d.ts +17 -0
- package/lib/locale/it.js +17 -0
- package/lib/locale/it.js.map +1 -1
- package/lib/locale/ja.d.ts +17 -0
- package/lib/locale/ja.js +17 -0
- package/lib/locale/ja.js.map +1 -1
- package/lib/locale/km.d.ts +17 -0
- package/lib/locale/km.js +17 -0
- package/lib/locale/km.js.map +1 -1
- package/lib/locale/ko.d.ts +17 -0
- package/lib/locale/ko.js +17 -0
- package/lib/locale/ko.js.map +1 -1
- package/lib/locale/lt.d.ts +17 -0
- package/lib/locale/lt.js +17 -0
- package/lib/locale/lt.js.map +1 -1
- package/lib/locale/lv.d.ts +17 -0
- package/lib/locale/lv.js +17 -0
- package/lib/locale/lv.js.map +1 -1
- package/lib/locale/nl.d.ts +17 -0
- package/lib/locale/nl.js +17 -0
- package/lib/locale/nl.js.map +1 -1
- package/lib/locale/no.d.ts +17 -0
- package/lib/locale/no.js +17 -0
- package/lib/locale/no.js.map +1 -1
- package/lib/locale/pl.d.ts +17 -0
- package/lib/locale/pl.js +17 -0
- package/lib/locale/pl.js.map +1 -1
- package/lib/locale/pt.d.ts +17 -0
- package/lib/locale/pt.js +17 -0
- package/lib/locale/pt.js.map +1 -1
- package/lib/locale/ro.d.ts +17 -0
- package/lib/locale/ro.js +17 -0
- package/lib/locale/ro.js.map +1 -1
- package/lib/locale/ru.d.ts +17 -0
- package/lib/locale/ru.js +17 -0
- package/lib/locale/ru.js.map +1 -1
- package/lib/locale/sk.d.ts +17 -0
- package/lib/locale/sk.js +17 -0
- package/lib/locale/sk.js.map +1 -1
- package/lib/locale/sl.d.ts +17 -0
- package/lib/locale/sl.js +17 -0
- package/lib/locale/sl.js.map +1 -1
- package/lib/locale/sr-Cyrl.d.ts +17 -0
- package/lib/locale/sr-Cyrl.js +17 -0
- package/lib/locale/sr-Cyrl.js.map +1 -1
- package/lib/locale/sr-Latn.d.ts +17 -0
- package/lib/locale/sr-Latn.js +17 -0
- package/lib/locale/sr-Latn.js.map +1 -1
- package/lib/locale/sv.d.ts +17 -0
- package/lib/locale/sv.js +17 -0
- package/lib/locale/sv.js.map +1 -1
- package/lib/locale/th.d.ts +17 -0
- package/lib/locale/th.js +17 -0
- package/lib/locale/th.js.map +1 -1
- package/lib/locale/tr.d.ts +17 -0
- package/lib/locale/tr.js +17 -0
- package/lib/locale/tr.js.map +1 -1
- package/lib/locale/uk.d.ts +17 -0
- package/lib/locale/uk.js +17 -0
- package/lib/locale/uk.js.map +1 -1
- package/lib/locale/vi.d.ts +17 -0
- package/lib/locale/vi.js +17 -0
- package/lib/locale/vi.js.map +1 -1
- package/lib/locale/zh-Hans.d.ts +17 -0
- package/lib/locale/zh-Hans.js +17 -0
- package/lib/locale/zh-Hans.js.map +1 -1
- package/lib/locale/zh-Hant.d.ts +17 -0
- package/lib/locale/zh-Hant.js +17 -0
- package/lib/locale/zh-Hant.js.map +1 -1
- package/lib/util/getScrollParent.js +3 -1
- package/lib/util/getScrollParent.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["HexToHSV","HSLtoHSV","HSVtoHex","HSVtoHSL","HSVtoRGB","RGBtoHSV","has","stripAlpha","color","a","rest","extractColor","input","hasA","startsWith","r","g","b","h","s","l","Math","round","hex","slice","converted","hasAlpha","length","nullColor","v","rgba","inputProps","type","min","inputs","label","max","step","getValue","c","getColor","Number","_ref","to","from","rgb","hsla","_ref2","hsl","hexa","modes"],"sources":["../../../../src/components/VColorPicker/util/index.ts"],"sourcesContent":["// Utilities\nimport {\n HexToHSV,\n HSLtoHSV,\n HSVtoHex,\n HSVtoHSL,\n HSVtoRGB,\n RGBtoHSV,\n} from '@/util/colorUtils'\nimport { has } from '@/util/helpers'\n\n// Types\nimport type { HSL, HSV, RGB } from '@/util/colorUtils'\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 hasA = color.a !== 1\n if (input?.startsWith('rgb(')) {\n const { r, g, b, a } = HSVtoRGB(color)\n return `rgb(${r} ${g} ${b}` + (hasA ? ` / ${a})` : ')')\n } else if (input?.startsWith('hsl(')) {\n const { h, s, l, a } = HSVtoHSL(color)\n return `hsl(${h} ${Math.round(s * 100)} ${Math.round(l * 100)}` + (hasA ? ` / ${a})` : ')')\n }\n\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']) && color.a === 1)\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: 0, 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 != null ? 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 != null ? 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 = {\n rgb,\n rgba,\n hsl,\n hsla,\n hex,\n hexa,\n} satisfies Record<string, ColorPickerMode>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["HexToHSV","HSLtoHSV","HSVtoHex","HSVtoHSL","HSVtoRGB","RGBtoHSV","has","stripAlpha","color","a","rest","extractColor","input","hasA","startsWith","r","g","b","h","s","l","Math","round","hex","slice","converted","hasAlpha","length","nullColor","v","rgba","inputProps","type","min","inputs","label","max","step","getValue","c","getColor","Number","localeKey","_ref","to","from","rgb","hsla","_ref2","hsl","hexa","modes"],"sources":["../../../../src/components/VColorPicker/util/index.ts"],"sourcesContent":["// Utilities\nimport {\n HexToHSV,\n HSLtoHSV,\n HSVtoHex,\n HSVtoHSL,\n HSVtoRGB,\n RGBtoHSV,\n} from '@/util/colorUtils'\nimport { has } from '@/util/helpers'\n\n// Types\nimport type { HSL, HSV, RGB } from '@/util/colorUtils'\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 hasA = color.a !== 1\n if (input?.startsWith('rgb(')) {\n const { r, g, b, a } = HSVtoRGB(color)\n return `rgb(${r} ${g} ${b}` + (hasA ? ` / ${a})` : ')')\n } else if (input?.startsWith('hsl(')) {\n const { h, s, l, a } = HSVtoHSL(color)\n return `hsl(${h} ${Math.round(s * 100)} ${Math.round(l * 100)}` + (hasA ? ` / ${a})` : ')')\n }\n\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']) && color.a === 1)\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: 0, 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 localeKey: 'redInput',\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 localeKey: 'greenInput',\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 localeKey: 'blueInput',\n },\n {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: ({ a }: RGB) => a != null ? Math.round(a * 100) / 100 : 1,\n getColor: (c: RGB, v: string): RGB => ({ ...c, a: Number(v) }),\n localeKey: 'alphaInput',\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 localeKey: 'hueInput',\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 localeKey: 'saturationInput',\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 localeKey: 'lightnessInput',\n },\n {\n label: 'A',\n max: 1,\n step: 0.01,\n getValue: ({ a }: HSL) => a != null ? Math.round(a * 100) / 100 : 1,\n getColor: (c: HSL, v: string): HSL => ({ ...c, a: Number(v) }),\n localeKey: 'alphaInput',\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 localeKey: 'hexaInput',\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 localeKey: 'hexInput',\n },\n ],\n}\n\nexport const modes = {\n rgb,\n rgba,\n hsl,\n hsla,\n hex,\n hexa,\n} satisfies Record<string, ColorPickerMode>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Fragment as _Fragment, mergeProps as _mergeProps, createVNode as _createVNode, createElementVNode as _createElementVNode } from "vue";
|
|
2
2
|
// Components
|
|
3
3
|
import { VBtn } from "../VBtn/index.js"; // Composables
|
|
4
|
-
import { useLocale } from "../../composables/
|
|
4
|
+
import { useLocale } from "../../composables/locale.js";
|
|
5
5
|
import { useProxiedModel } from "../../composables/proxiedModel.js"; // Utilities
|
|
6
6
|
import { computed, ref, toRaw, watchEffect } from 'vue';
|
|
7
7
|
import { deepEqual, genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VConfirmEdit.js","names":["VBtn","useLocale","useProxiedModel","computed","ref","toRaw","watchEffect","deepEqual","genericComponent","propsFactory","useRender","makeVConfirmEditProps","modelValue","color","String","cancelText","type","default","okText","disabled","Boolean","Array","undefined","hideActions","VConfirmEdit","name","props","emits","cancel","save","value","setup","_ref","emit","slots","model","internalModel","structuredClone","t","isPristine","isActionDisabled","action","isArray","includes","isSaveDisabled","isCancelDisabled","actions","actionsProps","_createElementVNode","_Fragment","_createVNode","_mergeProps","actionsUsed"],"sources":["../../../src/components/VConfirmEdit/VConfirmEdit.tsx"],"sourcesContent":["// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { useLocale } from '@/composables'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, toRaw, watchEffect } from 'vue'\nimport { deepEqual, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType, Ref, VNode } from 'vue'\nimport type { GenericProps } from '@/util'\n\nexport type VConfirmEditSlots<T> = {\n default: {\n model: Ref<T>\n save: () => void\n cancel: () => void\n isPristine: boolean\n get actions (): (props?: {}) => VNode\n }\n}\n\nexport const makeVConfirmEditProps = propsFactory({\n modelValue: null,\n color: String,\n cancelText: {\n type: String,\n default: '$vuetify.confirmEdit.cancel',\n },\n okText: {\n type: String,\n default: '$vuetify.confirmEdit.ok',\n },\n disabled: {\n type: [Boolean, Array] as PropType<boolean | ('save' | 'cancel')[]>,\n default: undefined,\n },\n hideActions: Boolean,\n}, 'VConfirmEdit')\n\nexport const VConfirmEdit = genericComponent<new <T> (\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n 'onSave'?: (value: T) => void\n },\n slots: VConfirmEditSlots<T>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VConfirmEdit',\n\n props: makeVConfirmEditProps(),\n\n emits: {\n cancel: () => true,\n save: (value: any) => true,\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const internalModel = ref()\n watchEffect(() => {\n internalModel.value = structuredClone(toRaw(model.value))\n })\n\n const { t } = useLocale()\n\n const isPristine = computed(() => {\n return deepEqual(model.value, internalModel.value)\n })\n\n function isActionDisabled (action: 'save' | 'cancel') {\n if (typeof props.disabled === 'boolean') {\n return props.disabled\n }\n\n if (Array.isArray(props.disabled)) {\n return props.disabled.includes(action)\n }\n\n return isPristine.value\n }\n\n const isSaveDisabled = computed(() => isActionDisabled('save'))\n const isCancelDisabled = computed(() => isActionDisabled('cancel'))\n\n function save () {\n model.value = internalModel.value\n emit('save', internalModel.value)\n }\n\n function cancel () {\n internalModel.value = structuredClone(toRaw(model.value))\n emit('cancel')\n }\n\n function actions (actionsProps?: {}) {\n return (\n <>\n <VBtn\n disabled={ isCancelDisabled.value }\n variant=\"text\"\n color={ props.color }\n onClick={ cancel }\n text={ t(props.cancelText) }\n { ...actionsProps }\n />\n\n <VBtn\n disabled={ isSaveDisabled.value }\n variant=\"text\"\n color={ props.color }\n onClick={ save }\n text={ t(props.okText) }\n { ...actionsProps }\n />\n </>\n )\n }\n\n let actionsUsed = false\n useRender(() => {\n return (\n <>\n {\n slots.default?.({\n model: internalModel,\n save,\n cancel,\n isPristine: isPristine.value,\n get actions () {\n actionsUsed = true\n return actions\n },\n })\n }\n\n { !props.hideActions && !actionsUsed && actions() }\n </>\n )\n })\n\n return {\n save,\n cancel,\n isPristine,\n }\n },\n})\n\nexport type VConfirmEdit = InstanceType<typeof VConfirmEdit>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VConfirmEdit.js","names":["VBtn","useLocale","useProxiedModel","computed","ref","toRaw","watchEffect","deepEqual","genericComponent","propsFactory","useRender","makeVConfirmEditProps","modelValue","color","String","cancelText","type","default","okText","disabled","Boolean","Array","undefined","hideActions","VConfirmEdit","name","props","emits","cancel","save","value","setup","_ref","emit","slots","model","internalModel","structuredClone","t","isPristine","isActionDisabled","action","isArray","includes","isSaveDisabled","isCancelDisabled","actions","actionsProps","_createElementVNode","_Fragment","_createVNode","_mergeProps","actionsUsed"],"sources":["../../../src/components/VConfirmEdit/VConfirmEdit.tsx"],"sourcesContent":["// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, toRaw, watchEffect } from 'vue'\nimport { deepEqual, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType, Ref, VNode } from 'vue'\nimport type { GenericProps } from '@/util'\n\nexport type VConfirmEditSlots<T> = {\n default: {\n model: Ref<T>\n save: () => void\n cancel: () => void\n isPristine: boolean\n get actions (): (props?: {}) => VNode\n }\n}\n\nexport const makeVConfirmEditProps = propsFactory({\n modelValue: null,\n color: String,\n cancelText: {\n type: String,\n default: '$vuetify.confirmEdit.cancel',\n },\n okText: {\n type: String,\n default: '$vuetify.confirmEdit.ok',\n },\n disabled: {\n type: [Boolean, Array] as PropType<boolean | ('save' | 'cancel')[]>,\n default: undefined,\n },\n hideActions: Boolean,\n}, 'VConfirmEdit')\n\nexport const VConfirmEdit = genericComponent<new <T> (\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n 'onSave'?: (value: T) => void\n },\n slots: VConfirmEditSlots<T>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VConfirmEdit',\n\n props: makeVConfirmEditProps(),\n\n emits: {\n cancel: () => true,\n save: (value: any) => true,\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const internalModel = ref()\n watchEffect(() => {\n internalModel.value = structuredClone(toRaw(model.value))\n })\n\n const { t } = useLocale()\n\n const isPristine = computed(() => {\n return deepEqual(model.value, internalModel.value)\n })\n\n function isActionDisabled (action: 'save' | 'cancel') {\n if (typeof props.disabled === 'boolean') {\n return props.disabled\n }\n\n if (Array.isArray(props.disabled)) {\n return props.disabled.includes(action)\n }\n\n return isPristine.value\n }\n\n const isSaveDisabled = computed(() => isActionDisabled('save'))\n const isCancelDisabled = computed(() => isActionDisabled('cancel'))\n\n function save () {\n model.value = internalModel.value\n emit('save', internalModel.value)\n }\n\n function cancel () {\n internalModel.value = structuredClone(toRaw(model.value))\n emit('cancel')\n }\n\n function actions (actionsProps?: {}) {\n return (\n <>\n <VBtn\n disabled={ isCancelDisabled.value }\n variant=\"text\"\n color={ props.color }\n onClick={ cancel }\n text={ t(props.cancelText) }\n { ...actionsProps }\n />\n\n <VBtn\n disabled={ isSaveDisabled.value }\n variant=\"text\"\n color={ props.color }\n onClick={ save }\n text={ t(props.okText) }\n { ...actionsProps }\n />\n </>\n )\n }\n\n let actionsUsed = false\n useRender(() => {\n return (\n <>\n {\n slots.default?.({\n model: internalModel,\n save,\n cancel,\n isPristine: isPristine.value,\n get actions () {\n actionsUsed = true\n return actions\n },\n })\n }\n\n { !props.hideActions && !actionsUsed && actions() }\n </>\n )\n })\n\n return {\n save,\n cancel,\n isPristine,\n }\n },\n})\n\nexport type VConfirmEdit = InstanceType<typeof VConfirmEdit>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -91,7 +91,8 @@
|
|
|
91
91
|
.v-data-table-column--fixed,
|
|
92
92
|
.v-data-table-column--fixed-end,
|
|
93
93
|
.v-data-table__th--sticky {
|
|
94
|
-
background: rgb(var(--v-theme-surface));
|
|
94
|
+
background-color: rgb(var(--v-theme-surface));
|
|
95
|
+
background-image: inherit;
|
|
95
96
|
position: sticky !important;
|
|
96
97
|
left: 0;
|
|
97
98
|
z-index: 1;
|
|
@@ -98,11 +98,16 @@ function parseFixedColumns(items) {
|
|
|
98
98
|
if (item.fixed === true) {
|
|
99
99
|
item.fixed = 'start';
|
|
100
100
|
}
|
|
101
|
-
const orderedChildren = side === 'start' ? item.children?.toReversed() : item.children;
|
|
102
101
|
if (item.fixed === side) {
|
|
103
|
-
if (
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
if (item.children) {
|
|
103
|
+
if (side === 'start') {
|
|
104
|
+
for (let i = item.children.length - 1; i >= 0; i--) {
|
|
105
|
+
setFixed(item.children[i], side, side);
|
|
106
|
+
}
|
|
107
|
+
} else {
|
|
108
|
+
for (let i = 0; i < item.children.length; i++) {
|
|
109
|
+
setFixed(item.children[i], side, side);
|
|
110
|
+
}
|
|
106
111
|
}
|
|
107
112
|
} else {
|
|
108
113
|
if (!seenFixed && side === 'start') {
|
|
@@ -117,57 +122,63 @@ function parseFixedColumns(items) {
|
|
|
117
122
|
seenFixed = true;
|
|
118
123
|
}
|
|
119
124
|
} else {
|
|
120
|
-
if (
|
|
121
|
-
|
|
122
|
-
|
|
125
|
+
if (item.children) {
|
|
126
|
+
if (side === 'start') {
|
|
127
|
+
for (let i = item.children.length - 1; i >= 0; i--) {
|
|
128
|
+
setFixed(item.children[i], side);
|
|
129
|
+
}
|
|
130
|
+
} else {
|
|
131
|
+
for (let i = 0; i < item.children.length; i++) {
|
|
132
|
+
setFixed(item.children[i], side);
|
|
133
|
+
}
|
|
123
134
|
}
|
|
124
135
|
} else {
|
|
125
136
|
seenFixed = false;
|
|
126
137
|
}
|
|
127
138
|
}
|
|
128
139
|
}
|
|
129
|
-
for (
|
|
130
|
-
setFixed(
|
|
131
|
-
}
|
|
132
|
-
for (const item of items) {
|
|
133
|
-
setFixed(item, 'end');
|
|
140
|
+
for (let i = items.length - 1; i >= 0; i--) {
|
|
141
|
+
setFixed(items[i], 'start');
|
|
134
142
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
if (!item) return offset;
|
|
138
|
-
if (item.children) {
|
|
139
|
-
item.fixedOffset = offset;
|
|
140
|
-
for (const child of item.children) {
|
|
141
|
-
offset = setFixedOffset(child, offset);
|
|
142
|
-
}
|
|
143
|
-
} else if (item.fixed && item.fixed !== 'end') {
|
|
144
|
-
item.fixedOffset = offset;
|
|
145
|
-
offset += parseFloat(item.width || '0') || 0;
|
|
146
|
-
}
|
|
147
|
-
return offset;
|
|
143
|
+
for (let i = 0; i < items.length; i++) {
|
|
144
|
+
setFixed(items[i], 'end');
|
|
148
145
|
}
|
|
149
146
|
let fixedOffset = 0;
|
|
150
|
-
for (
|
|
151
|
-
fixedOffset = setFixedOffset(
|
|
147
|
+
for (let i = 0; i < items.length; i++) {
|
|
148
|
+
fixedOffset = setFixedOffset(items[i], fixedOffset);
|
|
152
149
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
150
|
+
let fixedEndOffset = 0;
|
|
151
|
+
for (let i = items.length - 1; i >= 0; i--) {
|
|
152
|
+
fixedEndOffset = setFixedEndOffset(items[i], fixedEndOffset);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function setFixedOffset(item) {
|
|
156
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
157
|
+
if (!item) return offset;
|
|
158
|
+
if (item.children) {
|
|
159
|
+
item.fixedOffset = offset;
|
|
160
|
+
for (const child of item.children) {
|
|
161
|
+
offset = setFixedOffset(child, offset);
|
|
164
162
|
}
|
|
165
|
-
|
|
163
|
+
} else if (item.fixed && item.fixed !== 'end') {
|
|
164
|
+
item.fixedOffset = offset;
|
|
165
|
+
offset += parseFloat(item.width || '0') || 0;
|
|
166
166
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
167
|
+
return offset;
|
|
168
|
+
}
|
|
169
|
+
function setFixedEndOffset(item) {
|
|
170
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
171
|
+
if (!item) return offset;
|
|
172
|
+
if (item.children) {
|
|
173
|
+
item.fixedEndOffset = offset;
|
|
174
|
+
for (const child of item.children) {
|
|
175
|
+
offset = setFixedEndOffset(child, offset);
|
|
176
|
+
}
|
|
177
|
+
} else if (item.fixed === 'end') {
|
|
178
|
+
item.fixedEndOffset = offset;
|
|
179
|
+
offset += parseFloat(item.width || '0') || 0;
|
|
170
180
|
}
|
|
181
|
+
return offset;
|
|
171
182
|
}
|
|
172
183
|
function parse(items, maxDepth) {
|
|
173
184
|
const headers = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headers.js","names":["capitalize","inject","provide","ref","watchEffect","consoleError","propsFactory","makeDataTableHeaderProps","headers","Array","VDataTableHeadersSymbol","Symbol","for","defaultHeader","title","sortable","defaultActionHeader","width","priorityQueue","arr","arguments","length","undefined","queue","map","element","priority","enqueue","added","i","item","splice","push","size","count","whole","Math","floor","dequeue","shift","extractLeaves","columns","children","child","extractKeys","keys","Set","key","add","getDefaultItem","includes","getDepth","depth","max","parseFixedColumns","items","seenFixed","setFixed","side","parentFixedSide","fixed","orderedChildren","toReversed","lastFixed","firstFixedEnd","isNaN","Number","minWidth","setFixedOffset","offset","fixedOffset","parseFloat","setFixedEndOffset","fixedEndOffset","parse","maxDepth","currentDepth","rowSize","row","fraction","diff","rowspan","colspan","sort","pow","flat","convertToInternalHeaders","internalHeaders","defaultItem","value","internalItem","createHeaders","props","options","sortFunctions","sortRawFunctions","filterFunctions","_headers","Object","slice","groupBy","has","unshift","showSelect","showExpand","parsed","flatHeaders","header","sortRaw","filter","data","useHeaders","Error"],"sources":["../../../../src/components/VDataTable/composables/headers.ts"],"sourcesContent":["// Utilities\nimport { capitalize, inject, provide, ref, watchEffect } from 'vue'\nimport { consoleError, propsFactory } from '@/util'\n\n// Types\nimport type { DeepReadonly, InjectionKey, PropType, Ref } from 'vue'\nimport type { SortItem } from './sort'\nimport type { DataTableCompareFunction, DataTableHeader, InternalDataTableHeader } from '../types'\nimport type { FilterKeyFunctions } from '@/composables/filter'\n\nexport const makeDataTableHeaderProps = propsFactory({\n headers: Array as PropType<DeepReadonly<DataTableHeader[]>>,\n}, 'DataTable-header')\n\nexport const VDataTableHeadersSymbol: InjectionKey<{\n headers: Ref<InternalDataTableHeader[][]>\n columns: Ref<InternalDataTableHeader[]>\n}> = Symbol.for('vuetify:data-table-headers')\n\ntype HeaderProps = {\n headers: DeepReadonly<DataTableHeader[]> | undefined\n items: any[]\n}\n\nconst defaultHeader = { title: '', sortable: false }\nconst defaultActionHeader = { ...defaultHeader, width: 48 }\n\nfunction priorityQueue <T> (arr: T[] = []) {\n const queue: { element: T, priority: number }[] = arr.map(element => ({ element, priority: 0 }))\n\n return {\n enqueue: (element: T, priority: number) => {\n let added = false\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i]\n if (item.priority > priority) {\n queue.splice(i, 0, { element, priority })\n added = true\n break\n }\n }\n\n if (!added) queue.push({ element, priority })\n },\n size: () => queue.length,\n count: () => {\n let count = 0\n\n if (!queue.length) return 0\n\n const whole = Math.floor(queue[0].priority)\n for (let i = 0; i < queue.length; i++) {\n if (Math.floor(queue[i].priority) === whole) count += 1\n }\n\n return count\n },\n dequeue: () => {\n return queue.shift()\n },\n }\n}\n\nfunction extractLeaves (item: InternalDataTableHeader, columns: InternalDataTableHeader[] = []) {\n if (!item.children) {\n columns.push(item)\n } else {\n for (const child of item.children) {\n extractLeaves(child, columns)\n }\n }\n\n return columns\n}\n\nfunction extractKeys (headers: DeepReadonly<DataTableHeader[]>, keys = new Set<string>()) {\n for (const item of headers) {\n if (item.key) keys.add(item.key)\n\n if (item.children) {\n extractKeys(item.children, keys)\n }\n }\n\n return keys\n}\n\nfunction getDefaultItem (item: DeepReadonly<DataTableHeader>) {\n if (!item.key) return undefined\n if (item.key === 'data-table-group') return defaultHeader\n if (['data-table-expand', 'data-table-select'].includes(item.key)) return defaultActionHeader\n return undefined\n}\n\nfunction getDepth (item: InternalDataTableHeader, depth = 0): number {\n if (!item.children) return depth\n\n return Math.max(depth, ...item.children.map(child => getDepth(child, depth + 1)))\n}\n\nfunction parseFixedColumns (items: InternalDataTableHeader[]) {\n let seenFixed = false\n\n function setFixed (\n item: InternalDataTableHeader,\n side: 'start' | 'end',\n parentFixedSide: 'start' | 'end' | 'none' = 'none'\n ) {\n if (!item) return\n\n if (parentFixedSide !== 'none') {\n item.fixed = parentFixedSide\n }\n\n // normalize to simplify logic below\n if (item.fixed === true) {\n item.fixed = 'start'\n }\n\n const orderedChildren = side === 'start'\n ? item.children?.toReversed()\n : item.children\n\n if (item.fixed === side) {\n if (orderedChildren) {\n for (const child of orderedChildren) {\n setFixed(child, side, side)\n }\n } else {\n if (!seenFixed && side === 'start') {\n item.lastFixed = true\n } else if (!seenFixed && side === 'end') {\n item.firstFixedEnd = true\n } else if (isNaN(Number(item.width))) {\n consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`)\n } else {\n item.minWidth = Math.max(Number(item.width) || 0, Number(item.minWidth) || 0)\n }\n seenFixed = true\n }\n } else {\n if (orderedChildren) {\n for (const child of orderedChildren) {\n setFixed(child, side)\n }\n } else {\n seenFixed = false\n }\n }\n }\n\n for (const item of items.toReversed()) {\n setFixed(item, 'start')\n }\n\n for (const item of items) {\n setFixed(item, 'end')\n }\n\n function setFixedOffset (item: InternalDataTableHeader, offset = 0) {\n if (!item) return offset\n\n if (item.children) {\n item.fixedOffset = offset\n for (const child of item.children) {\n offset = setFixedOffset(child, offset)\n }\n } else if (item.fixed && item.fixed !== 'end') {\n item.fixedOffset = offset\n offset += parseFloat(item.width || '0') || 0\n }\n\n return offset\n }\n\n let fixedOffset = 0\n for (const item of items) {\n fixedOffset = setFixedOffset(item, fixedOffset)\n }\n\n function setFixedEndOffset (item: InternalDataTableHeader, offset = 0) {\n if (!item) return offset\n\n if (item.children) {\n item.fixedEndOffset = offset\n for (const child of item.children) {\n offset = setFixedEndOffset(child, offset)\n }\n } else if (item.fixed === 'end') {\n item.fixedEndOffset = offset\n offset += parseFloat(item.width || '0') || 0\n }\n\n return offset\n }\n\n let fixedEndOffset = 0\n for (const item of items.toReversed()) {\n fixedEndOffset = setFixedEndOffset(item, fixedEndOffset)\n }\n}\n\nfunction parse (items: InternalDataTableHeader[], maxDepth: number) {\n const headers: InternalDataTableHeader[][] = []\n let currentDepth = 0\n const queue = priorityQueue(items)\n\n while (queue.size() > 0) {\n let rowSize = queue.count()\n const row: InternalDataTableHeader[] = []\n let fraction = 1\n while (rowSize > 0) {\n const { element: item, priority } = queue.dequeue()!\n const diff = maxDepth - currentDepth - getDepth(item)\n\n row.push({\n ...item,\n rowspan: diff ?? 1,\n colspan: item.children ? extractLeaves(item).length : 1,\n })\n\n if (item.children) {\n for (const child of item.children) {\n // This internally sorts items that are on the same priority \"row\"\n const sort = priority % 1 + (fraction / Math.pow(10, currentDepth + 2))\n queue.enqueue(child, currentDepth + diff + sort)\n }\n }\n\n fraction += 1\n rowSize -= 1\n }\n currentDepth += 1\n headers.push(row)\n }\n\n const columns = items.map(item => extractLeaves(item)).flat()\n\n return { columns, headers }\n}\n\nfunction convertToInternalHeaders (items: DeepReadonly<DataTableHeader[]>) {\n const internalHeaders: InternalDataTableHeader[] = []\n for (const item of items) {\n const defaultItem = { ...getDefaultItem(item), ...item }\n const key = defaultItem.key ?? (typeof defaultItem.value === 'string' ? defaultItem.value : null)\n const value = defaultItem.value ?? key ?? null\n const internalItem: InternalDataTableHeader = {\n ...defaultItem,\n key,\n value,\n sortable: defaultItem.sortable ?? (defaultItem.key != null || !!defaultItem.sort),\n children: defaultItem.children ? convertToInternalHeaders(defaultItem.children) : undefined,\n }\n\n internalHeaders.push(internalItem)\n }\n\n return internalHeaders\n}\n\nexport function createHeaders (\n props: HeaderProps,\n options?: {\n groupBy?: Ref<readonly SortItem[]>\n showSelect?: Ref<boolean>\n showExpand?: Ref<boolean>\n }\n) {\n const headers = ref<InternalDataTableHeader[][]>([])\n const columns = ref<InternalDataTableHeader[]>([])\n const sortFunctions = ref<Record<string, DataTableCompareFunction>>({})\n const sortRawFunctions = ref<Record<string, DataTableCompareFunction>>({})\n const filterFunctions = ref<FilterKeyFunctions>({})\n\n watchEffect(() => {\n const _headers = props.headers ||\n Object.keys(props.items[0] ?? {}).map(key => ({ key, title: capitalize(key) })) as never\n\n const items = _headers.slice()\n const keys = extractKeys(items)\n\n if (options?.groupBy?.value.length && !keys.has('data-table-group')) {\n items.unshift({ key: 'data-table-group', title: 'Group' })\n }\n\n if (options?.showSelect?.value && !keys.has('data-table-select')) {\n items.unshift({ key: 'data-table-select' })\n }\n\n if (options?.showExpand?.value && !keys.has('data-table-expand')) {\n items.push({ key: 'data-table-expand' })\n }\n\n const internalHeaders = convertToInternalHeaders(items)\n\n parseFixedColumns(internalHeaders)\n\n const maxDepth = Math.max(...internalHeaders.map(item => getDepth(item))) + 1\n const parsed = parse(internalHeaders, maxDepth)\n\n headers.value = parsed.headers\n columns.value = parsed.columns\n\n const flatHeaders = parsed.headers.flat(1)\n\n for (const header of flatHeaders) {\n if (!header.key) continue\n\n if (header.sortable) {\n if (header.sort) {\n sortFunctions.value[header.key] = header.sort\n }\n\n if (header.sortRaw) {\n sortRawFunctions.value[header.key] = header.sortRaw\n }\n }\n\n if (header.filter) {\n filterFunctions.value[header.key] = header.filter\n }\n }\n })\n\n const data = { headers, columns, sortFunctions, sortRawFunctions, filterFunctions }\n\n provide(VDataTableHeadersSymbol, data)\n\n return data\n}\n\nexport function useHeaders () {\n const data = inject(VDataTableHeadersSymbol)\n\n if (!data) throw new Error('Missing headers!')\n\n return data\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"headers.js","names":["capitalize","inject","provide","ref","watchEffect","consoleError","propsFactory","makeDataTableHeaderProps","headers","Array","VDataTableHeadersSymbol","Symbol","for","defaultHeader","title","sortable","defaultActionHeader","width","priorityQueue","arr","arguments","length","undefined","queue","map","element","priority","enqueue","added","i","item","splice","push","size","count","whole","Math","floor","dequeue","shift","extractLeaves","columns","children","child","extractKeys","keys","Set","key","add","getDefaultItem","includes","getDepth","depth","max","parseFixedColumns","items","seenFixed","setFixed","side","parentFixedSide","fixed","lastFixed","firstFixedEnd","isNaN","Number","minWidth","fixedOffset","setFixedOffset","fixedEndOffset","setFixedEndOffset","offset","parseFloat","parse","maxDepth","currentDepth","rowSize","row","fraction","diff","rowspan","colspan","sort","pow","flat","convertToInternalHeaders","internalHeaders","defaultItem","value","internalItem","createHeaders","props","options","sortFunctions","sortRawFunctions","filterFunctions","_headers","Object","slice","groupBy","has","unshift","showSelect","showExpand","parsed","flatHeaders","header","sortRaw","filter","data","useHeaders","Error"],"sources":["../../../../src/components/VDataTable/composables/headers.ts"],"sourcesContent":["// Utilities\nimport { capitalize, inject, provide, ref, watchEffect } from 'vue'\nimport { consoleError, propsFactory } from '@/util'\n\n// Types\nimport type { DeepReadonly, InjectionKey, PropType, Ref } from 'vue'\nimport type { SortItem } from './sort'\nimport type { DataTableCompareFunction, DataTableHeader, InternalDataTableHeader } from '../types'\nimport type { FilterKeyFunctions } from '@/composables/filter'\n\nexport const makeDataTableHeaderProps = propsFactory({\n headers: Array as PropType<DeepReadonly<DataTableHeader[]>>,\n}, 'DataTable-header')\n\nexport const VDataTableHeadersSymbol: InjectionKey<{\n headers: Ref<InternalDataTableHeader[][]>\n columns: Ref<InternalDataTableHeader[]>\n}> = Symbol.for('vuetify:data-table-headers')\n\ntype HeaderProps = {\n headers: DeepReadonly<DataTableHeader[]> | undefined\n items: any[]\n}\n\nconst defaultHeader = { title: '', sortable: false }\nconst defaultActionHeader = { ...defaultHeader, width: 48 }\n\nfunction priorityQueue <T> (arr: T[] = []) {\n const queue: { element: T, priority: number }[] = arr.map(element => ({ element, priority: 0 }))\n\n return {\n enqueue: (element: T, priority: number) => {\n let added = false\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i]\n if (item.priority > priority) {\n queue.splice(i, 0, { element, priority })\n added = true\n break\n }\n }\n\n if (!added) queue.push({ element, priority })\n },\n size: () => queue.length,\n count: () => {\n let count = 0\n\n if (!queue.length) return 0\n\n const whole = Math.floor(queue[0].priority)\n for (let i = 0; i < queue.length; i++) {\n if (Math.floor(queue[i].priority) === whole) count += 1\n }\n\n return count\n },\n dequeue: () => {\n return queue.shift()\n },\n }\n}\n\nfunction extractLeaves (item: InternalDataTableHeader, columns: InternalDataTableHeader[] = []) {\n if (!item.children) {\n columns.push(item)\n } else {\n for (const child of item.children) {\n extractLeaves(child, columns)\n }\n }\n\n return columns\n}\n\nfunction extractKeys (headers: DeepReadonly<DataTableHeader[]>, keys = new Set<string>()) {\n for (const item of headers) {\n if (item.key) keys.add(item.key)\n\n if (item.children) {\n extractKeys(item.children, keys)\n }\n }\n\n return keys\n}\n\nfunction getDefaultItem (item: DeepReadonly<DataTableHeader>) {\n if (!item.key) return undefined\n if (item.key === 'data-table-group') return defaultHeader\n if (['data-table-expand', 'data-table-select'].includes(item.key)) return defaultActionHeader\n return undefined\n}\n\nfunction getDepth (item: InternalDataTableHeader, depth = 0): number {\n if (!item.children) return depth\n\n return Math.max(depth, ...item.children.map(child => getDepth(child, depth + 1)))\n}\n\nfunction parseFixedColumns (items: InternalDataTableHeader[]) {\n let seenFixed = false\n\n function setFixed (\n item: InternalDataTableHeader,\n side: 'start' | 'end',\n parentFixedSide: 'start' | 'end' | 'none' = 'none'\n ) {\n if (!item) return\n\n if (parentFixedSide !== 'none') {\n item.fixed = parentFixedSide\n }\n\n // normalize to simplify logic below\n if (item.fixed === true) {\n item.fixed = 'start'\n }\n\n if (item.fixed === side) {\n if (item.children) {\n if (side === 'start') {\n for (let i = item.children.length - 1; i >= 0; i--) {\n setFixed(item.children[i], side, side)\n }\n } else {\n for (let i = 0; i < item.children.length; i++) {\n setFixed(item.children[i], side, side)\n }\n }\n } else {\n if (!seenFixed && side === 'start') {\n item.lastFixed = true\n } else if (!seenFixed && side === 'end') {\n item.firstFixedEnd = true\n } else if (isNaN(Number(item.width))) {\n consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`)\n } else {\n item.minWidth = Math.max(Number(item.width) || 0, Number(item.minWidth) || 0)\n }\n seenFixed = true\n }\n } else {\n if (item.children) {\n if (side === 'start') {\n for (let i = item.children.length - 1; i >= 0; i--) {\n setFixed(item.children[i], side)\n }\n } else {\n for (let i = 0; i < item.children.length; i++) {\n setFixed(item.children[i], side)\n }\n }\n } else {\n seenFixed = false\n }\n }\n }\n\n for (let i = items.length - 1; i >= 0; i--) {\n setFixed(items[i], 'start')\n }\n\n for (let i = 0; i < items.length; i++) {\n setFixed(items[i], 'end')\n }\n\n let fixedOffset = 0\n for (let i = 0; i < items.length; i++) {\n fixedOffset = setFixedOffset(items[i], fixedOffset)\n }\n\n let fixedEndOffset = 0\n for (let i = items.length - 1; i >= 0; i--) {\n fixedEndOffset = setFixedEndOffset(items[i], fixedEndOffset)\n }\n}\n\nfunction setFixedOffset (item: InternalDataTableHeader, offset = 0) {\n if (!item) return offset\n\n if (item.children) {\n item.fixedOffset = offset\n for (const child of item.children) {\n offset = setFixedOffset(child, offset)\n }\n } else if (item.fixed && item.fixed !== 'end') {\n item.fixedOffset = offset\n offset += parseFloat(item.width || '0') || 0\n }\n\n return offset\n}\n\nfunction setFixedEndOffset (item: InternalDataTableHeader, offset = 0) {\n if (!item) return offset\n\n if (item.children) {\n item.fixedEndOffset = offset\n for (const child of item.children) {\n offset = setFixedEndOffset(child, offset)\n }\n } else if (item.fixed === 'end') {\n item.fixedEndOffset = offset\n offset += parseFloat(item.width || '0') || 0\n }\n\n return offset\n}\n\nfunction parse (items: InternalDataTableHeader[], maxDepth: number) {\n const headers: InternalDataTableHeader[][] = []\n let currentDepth = 0\n const queue = priorityQueue(items)\n\n while (queue.size() > 0) {\n let rowSize = queue.count()\n const row: InternalDataTableHeader[] = []\n let fraction = 1\n while (rowSize > 0) {\n const { element: item, priority } = queue.dequeue()!\n const diff = maxDepth - currentDepth - getDepth(item)\n\n row.push({\n ...item,\n rowspan: diff ?? 1,\n colspan: item.children ? extractLeaves(item).length : 1,\n })\n\n if (item.children) {\n for (const child of item.children) {\n // This internally sorts items that are on the same priority \"row\"\n const sort = priority % 1 + (fraction / Math.pow(10, currentDepth + 2))\n queue.enqueue(child, currentDepth + diff + sort)\n }\n }\n\n fraction += 1\n rowSize -= 1\n }\n currentDepth += 1\n headers.push(row)\n }\n\n const columns = items.map(item => extractLeaves(item)).flat()\n\n return { columns, headers }\n}\n\nfunction convertToInternalHeaders (items: DeepReadonly<DataTableHeader[]>) {\n const internalHeaders: InternalDataTableHeader[] = []\n for (const item of items) {\n const defaultItem = { ...getDefaultItem(item), ...item }\n const key = defaultItem.key ?? (typeof defaultItem.value === 'string' ? defaultItem.value : null)\n const value = defaultItem.value ?? key ?? null\n const internalItem: InternalDataTableHeader = {\n ...defaultItem,\n key,\n value,\n sortable: defaultItem.sortable ?? (defaultItem.key != null || !!defaultItem.sort),\n children: defaultItem.children ? convertToInternalHeaders(defaultItem.children) : undefined,\n }\n\n internalHeaders.push(internalItem)\n }\n\n return internalHeaders\n}\n\nexport function createHeaders (\n props: HeaderProps,\n options?: {\n groupBy?: Ref<readonly SortItem[]>\n showSelect?: Ref<boolean>\n showExpand?: Ref<boolean>\n }\n) {\n const headers = ref<InternalDataTableHeader[][]>([])\n const columns = ref<InternalDataTableHeader[]>([])\n const sortFunctions = ref<Record<string, DataTableCompareFunction>>({})\n const sortRawFunctions = ref<Record<string, DataTableCompareFunction>>({})\n const filterFunctions = ref<FilterKeyFunctions>({})\n\n watchEffect(() => {\n const _headers = props.headers ||\n Object.keys(props.items[0] ?? {}).map(key => ({ key, title: capitalize(key) })) as never\n\n const items = _headers.slice()\n const keys = extractKeys(items)\n\n if (options?.groupBy?.value.length && !keys.has('data-table-group')) {\n items.unshift({ key: 'data-table-group', title: 'Group' })\n }\n\n if (options?.showSelect?.value && !keys.has('data-table-select')) {\n items.unshift({ key: 'data-table-select' })\n }\n\n if (options?.showExpand?.value && !keys.has('data-table-expand')) {\n items.push({ key: 'data-table-expand' })\n }\n\n const internalHeaders = convertToInternalHeaders(items)\n\n parseFixedColumns(internalHeaders)\n\n const maxDepth = Math.max(...internalHeaders.map(item => getDepth(item))) + 1\n const parsed = parse(internalHeaders, maxDepth)\n\n headers.value = parsed.headers\n columns.value = parsed.columns\n\n const flatHeaders = parsed.headers.flat(1)\n\n for (const header of flatHeaders) {\n if (!header.key) continue\n\n if (header.sortable) {\n if (header.sort) {\n sortFunctions.value[header.key] = header.sort\n }\n\n if (header.sortRaw) {\n sortRawFunctions.value[header.key] = header.sortRaw\n }\n }\n\n if (header.filter) {\n filterFunctions.value[header.key] = header.filter\n }\n }\n })\n\n const data = { headers, columns, sortFunctions, sortRawFunctions, filterFunctions }\n\n provide(VDataTableHeadersSymbol, data)\n\n return data\n}\n\nexport function useHeaders () {\n const data = inject(VDataTableHeadersSymbol)\n\n if (!data) throw new Error('Missing headers!')\n\n return data\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Composables
|
|
2
|
-
import { useLocale } from "../../../composables/
|
|
2
|
+
import { useLocale } from "../../../composables/locale.js";
|
|
3
3
|
import { useProxiedModel } from "../../../composables/proxiedModel.js"; // Utilities
|
|
4
4
|
import { computed, inject, provide, toRef } from 'vue';
|
|
5
5
|
import { getObjectValueByPath, isEmpty, propsFactory } from "../../../util/index.js"; // Types
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sort.js","names":["useLocale","useProxiedModel","computed","inject","provide","toRef","getObjectValueByPath","isEmpty","propsFactory","makeDataTableSortProps","sortBy","type","Array","default","customKeySort","Object","multiSort","Boolean","mustSort","VDataTableSortSymbol","Symbol","for","createSort","props","provideSort","options","page","toggleSort","column","key","newSortBy","value","map","x","item","find","push","order","length","filter","isSorted","data","useSort","Error","useSortedItems","items","locale","sortedItems","sortItems","current","transform","sortFunctions","sortRawFunctions","sortByItems","stringCollator","Intl","Collator","sensitivity","usage","transformedItems","sort","a","b","i","hasCustomResult","sortKey","sortOrder","sortA","sortB","sortARaw","raw","sortBRaw","customResult","Date","getTime","s","toString","toLocaleLowerCase","isNaN","Number","compare","_ref"],"sources":["../../../../src/components/VDataTable/composables/sort.ts"],"sourcesContent":["// Composables\nimport { useLocale } from '@/composables'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, toRef } from 'vue'\nimport { getObjectValueByPath, isEmpty, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableCompareFunction, InternalDataTableHeader } from '../types'\nimport type { InternalItem } from '@/composables/filter'\n\nexport const makeDataTableSortProps = propsFactory({\n sortBy: {\n type: Array as PropType<readonly SortItem[]>,\n default: () => ([]),\n },\n customKeySort: Object as PropType<Record<string, DataTableCompareFunction>>,\n multiSort: Boolean,\n mustSort: Boolean,\n}, 'DataTable-sort')\n\nconst VDataTableSortSymbol: InjectionKey<{\n sortBy: Ref<readonly SortItem[]>\n toggleSort: (column: InternalDataTableHeader) => void\n isSorted: (column: InternalDataTableHeader) => boolean\n}> = Symbol.for('vuetify:data-table-sort')\n\nexport type SortItem = { key: string, order?: boolean | 'asc' | 'desc' }\n\ntype SortProps = {\n sortBy: readonly SortItem[]\n 'onUpdate:sortBy': ((value: any) => void) | undefined\n mustSort: boolean\n multiSort: boolean\n}\n\nexport function createSort (props: SortProps) {\n const sortBy = useProxiedModel(props, 'sortBy')\n const mustSort = toRef(() => props.mustSort)\n const multiSort = toRef(() => props.multiSort)\n\n return { sortBy, mustSort, multiSort }\n}\n\nexport function provideSort (options: {\n sortBy: Ref<readonly SortItem[]>\n mustSort: Ref<boolean>\n multiSort: Ref<boolean>\n page?: Ref<number>\n}) {\n const { sortBy, mustSort, multiSort, page } = options\n\n const toggleSort = (column: InternalDataTableHeader) => {\n if (column.key == null) return\n\n let newSortBy = sortBy.value.map(x => ({ ...x })) ?? []\n const item = newSortBy.find(x => x.key === column.key)\n\n if (!item) {\n if (multiSort.value) {\n newSortBy.push({ key: column.key, order: 'asc' })\n } else {\n newSortBy = [{ key: column.key, order: 'asc' }]\n }\n } else if (item.order === 'desc') {\n if (mustSort.value && newSortBy.length === 1) {\n item.order = 'asc'\n } else {\n newSortBy = newSortBy.filter(x => x.key !== column.key)\n }\n } else {\n item.order = 'desc'\n }\n\n sortBy.value = newSortBy\n if (page) page.value = 1\n }\n\n function isSorted (column: InternalDataTableHeader) {\n return !!sortBy.value.find(item => item.key === column.key)\n }\n\n const data = { sortBy, toggleSort, isSorted }\n\n provide(VDataTableSortSymbol, data)\n\n return data\n}\n\nexport function useSort () {\n const data = inject(VDataTableSortSymbol)\n\n if (!data) throw new Error('Missing sort!')\n\n return data\n}\n\n// TODO: abstract into project composable\nexport function useSortedItems<T extends InternalItem> (\n props: {\n customKeySort: Record<string, DataTableCompareFunction> | undefined\n },\n items: Ref<T[]>,\n sortBy: Ref<readonly SortItem[]>,\n options?: {\n transform?: (item: T) => {}\n sortFunctions?: Ref<Record<string, DataTableCompareFunction> | undefined>\n sortRawFunctions?: Ref<Record<string, DataTableCompareFunction> | undefined>\n },\n) {\n const locale = useLocale()\n const sortedItems = computed(() => {\n if (!sortBy.value.length) return items.value\n\n return sortItems(items.value, sortBy.value, locale.current.value, {\n transform: options?.transform,\n sortFunctions: {\n ...props.customKeySort,\n ...options?.sortFunctions?.value,\n },\n sortRawFunctions: options?.sortRawFunctions?.value,\n })\n })\n\n return { sortedItems }\n}\n\nexport function sortItems<T extends InternalItem> (\n items: T[],\n sortByItems: readonly SortItem[],\n locale: string,\n options?: {\n transform?: (item: T) => Record<string, any>\n sortFunctions?: Record<string, DataTableCompareFunction>\n sortRawFunctions?: Record<string, DataTableCompareFunction>\n },\n): T[] {\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n const transformedItems = items.map(item => (\n [item, options?.transform ? options.transform(item) : item as never] as const)\n )\n\n return transformedItems.sort((a, b) => {\n for (let i = 0; i < sortByItems.length; i++) {\n let hasCustomResult = false\n const sortKey = sortByItems[i].key\n const sortOrder = sortByItems[i].order ?? 'asc'\n\n if (sortOrder === false) continue\n\n let sortA = getObjectValueByPath(a[1], sortKey)\n let sortB = getObjectValueByPath(b[1], sortKey)\n let sortARaw = a[0].raw\n let sortBRaw = b[0].raw\n\n if (sortOrder === 'desc') {\n [sortA, sortB] = [sortB, sortA]\n ;[sortARaw, sortBRaw] = [sortBRaw, sortARaw]\n }\n\n if (options?.sortRawFunctions?.[sortKey]) {\n const customResult = options.sortRawFunctions[sortKey](sortARaw, sortBRaw)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (options?.sortFunctions?.[sortKey]) {\n const customResult = options.sortFunctions[sortKey](sortA, sortB)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (hasCustomResult) continue\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n sortA = sortA.getTime()\n sortB = sortB.getTime()\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s)\n\n if (sortA !== sortB) {\n if (isEmpty(sortA) && isEmpty(sortB)) return 0\n if (isEmpty(sortA)) return -1\n if (isEmpty(sortB)) return 1\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n }).map(([item]) => item)\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"sort.js","names":["useLocale","useProxiedModel","computed","inject","provide","toRef","getObjectValueByPath","isEmpty","propsFactory","makeDataTableSortProps","sortBy","type","Array","default","customKeySort","Object","multiSort","Boolean","mustSort","VDataTableSortSymbol","Symbol","for","createSort","props","provideSort","options","page","toggleSort","column","key","newSortBy","value","map","x","item","find","push","order","length","filter","isSorted","data","useSort","Error","useSortedItems","items","locale","sortedItems","sortItems","current","transform","sortFunctions","sortRawFunctions","sortByItems","stringCollator","Intl","Collator","sensitivity","usage","transformedItems","sort","a","b","i","hasCustomResult","sortKey","sortOrder","sortA","sortB","sortARaw","raw","sortBRaw","customResult","Date","getTime","s","toString","toLocaleLowerCase","isNaN","Number","compare","_ref"],"sources":["../../../../src/components/VDataTable/composables/sort.ts"],"sourcesContent":["// Composables\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, toRef } from 'vue'\nimport { getObjectValueByPath, isEmpty, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableCompareFunction, InternalDataTableHeader } from '../types'\nimport type { InternalItem } from '@/composables/filter'\n\nexport const makeDataTableSortProps = propsFactory({\n sortBy: {\n type: Array as PropType<readonly SortItem[]>,\n default: () => ([]),\n },\n customKeySort: Object as PropType<Record<string, DataTableCompareFunction>>,\n multiSort: Boolean,\n mustSort: Boolean,\n}, 'DataTable-sort')\n\nconst VDataTableSortSymbol: InjectionKey<{\n sortBy: Ref<readonly SortItem[]>\n toggleSort: (column: InternalDataTableHeader) => void\n isSorted: (column: InternalDataTableHeader) => boolean\n}> = Symbol.for('vuetify:data-table-sort')\n\nexport type SortItem = { key: string, order?: boolean | 'asc' | 'desc' }\n\ntype SortProps = {\n sortBy: readonly SortItem[]\n 'onUpdate:sortBy': ((value: any) => void) | undefined\n mustSort: boolean\n multiSort: boolean\n}\n\nexport function createSort (props: SortProps) {\n const sortBy = useProxiedModel(props, 'sortBy')\n const mustSort = toRef(() => props.mustSort)\n const multiSort = toRef(() => props.multiSort)\n\n return { sortBy, mustSort, multiSort }\n}\n\nexport function provideSort (options: {\n sortBy: Ref<readonly SortItem[]>\n mustSort: Ref<boolean>\n multiSort: Ref<boolean>\n page?: Ref<number>\n}) {\n const { sortBy, mustSort, multiSort, page } = options\n\n const toggleSort = (column: InternalDataTableHeader) => {\n if (column.key == null) return\n\n let newSortBy = sortBy.value.map(x => ({ ...x })) ?? []\n const item = newSortBy.find(x => x.key === column.key)\n\n if (!item) {\n if (multiSort.value) {\n newSortBy.push({ key: column.key, order: 'asc' })\n } else {\n newSortBy = [{ key: column.key, order: 'asc' }]\n }\n } else if (item.order === 'desc') {\n if (mustSort.value && newSortBy.length === 1) {\n item.order = 'asc'\n } else {\n newSortBy = newSortBy.filter(x => x.key !== column.key)\n }\n } else {\n item.order = 'desc'\n }\n\n sortBy.value = newSortBy\n if (page) page.value = 1\n }\n\n function isSorted (column: InternalDataTableHeader) {\n return !!sortBy.value.find(item => item.key === column.key)\n }\n\n const data = { sortBy, toggleSort, isSorted }\n\n provide(VDataTableSortSymbol, data)\n\n return data\n}\n\nexport function useSort () {\n const data = inject(VDataTableSortSymbol)\n\n if (!data) throw new Error('Missing sort!')\n\n return data\n}\n\n// TODO: abstract into project composable\nexport function useSortedItems<T extends InternalItem> (\n props: {\n customKeySort: Record<string, DataTableCompareFunction> | undefined\n },\n items: Ref<T[]>,\n sortBy: Ref<readonly SortItem[]>,\n options?: {\n transform?: (item: T) => {}\n sortFunctions?: Ref<Record<string, DataTableCompareFunction> | undefined>\n sortRawFunctions?: Ref<Record<string, DataTableCompareFunction> | undefined>\n },\n) {\n const locale = useLocale()\n const sortedItems = computed(() => {\n if (!sortBy.value.length) return items.value\n\n return sortItems(items.value, sortBy.value, locale.current.value, {\n transform: options?.transform,\n sortFunctions: {\n ...props.customKeySort,\n ...options?.sortFunctions?.value,\n },\n sortRawFunctions: options?.sortRawFunctions?.value,\n })\n })\n\n return { sortedItems }\n}\n\nexport function sortItems<T extends InternalItem> (\n items: T[],\n sortByItems: readonly SortItem[],\n locale: string,\n options?: {\n transform?: (item: T) => Record<string, any>\n sortFunctions?: Record<string, DataTableCompareFunction>\n sortRawFunctions?: Record<string, DataTableCompareFunction>\n },\n): T[] {\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n const transformedItems = items.map(item => (\n [item, options?.transform ? options.transform(item) : item as never] as const)\n )\n\n return transformedItems.sort((a, b) => {\n for (let i = 0; i < sortByItems.length; i++) {\n let hasCustomResult = false\n const sortKey = sortByItems[i].key\n const sortOrder = sortByItems[i].order ?? 'asc'\n\n if (sortOrder === false) continue\n\n let sortA = getObjectValueByPath(a[1], sortKey)\n let sortB = getObjectValueByPath(b[1], sortKey)\n let sortARaw = a[0].raw\n let sortBRaw = b[0].raw\n\n if (sortOrder === 'desc') {\n [sortA, sortB] = [sortB, sortA]\n ;[sortARaw, sortBRaw] = [sortBRaw, sortARaw]\n }\n\n if (options?.sortRawFunctions?.[sortKey]) {\n const customResult = options.sortRawFunctions[sortKey](sortARaw, sortBRaw)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (options?.sortFunctions?.[sortKey]) {\n const customResult = options.sortFunctions[sortKey](sortA, sortB)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (hasCustomResult) continue\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n sortA = sortA.getTime()\n sortB = sortB.getTime()\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s)\n\n if (sortA !== sortB) {\n if (isEmpty(sortA) && isEmpty(sortB)) return 0\n if (isEmpty(sortA)) return -1\n if (isEmpty(sortB)) return 1\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n }).map(([item]) => item)\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -213,6 +213,7 @@ export const VNumberInput = genericComponent()({
|
|
|
213
213
|
if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) || e.ctrlKey) return;
|
|
214
214
|
if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
|
|
215
215
|
e.preventDefault();
|
|
216
|
+
e.stopPropagation();
|
|
216
217
|
clampModel();
|
|
217
218
|
// _model is controlled, so need to wait until props['modelValue'] is updated
|
|
218
219
|
await nextTick();
|