Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions apps/demo/eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,9 @@ import vueConfig from "@prefabs.tech/eslint-config/vue.js";

export default [
...vueConfig,
{
rules: {
"unicorn/filename-case": "off"
}
}
];
8 changes: 4 additions & 4 deletions apps/demo/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@
"vue3-toastify": "0.2.9"
},
"devDependencies": {
"@prefabs.tech/eslint-config": "0.7.0",
"@prefabs.tech/stylelint-config": "0.7.0",
"@prefabs.tech/tsconfig": "0.7.0",
"@prefabs.tech/eslint-config": "0.8.7",
"@prefabs.tech/stylelint-config": "0.8.7",
"@prefabs.tech/tsconfig": "0.8.7",
"@types/jsdom": "21.1.7",
"@types/node": "25.6.0",
"@vee-validate/i18n": "4.15.1",
Expand All @@ -49,7 +49,7 @@
"@vitest/coverage-istanbul": "4.1.5",
"@vue/test-utils": "2.4.10",
"@vue/tsconfig": "0.9.1",
"eslint": "9.39.4",
"eslint": "10.6.0",
"jsdom": "27.4.0",
"npm-run-all": "4.1.5",
"prettier": "3.8.3",
Expand Down
6 changes: 1 addition & 5 deletions apps/demo/src/views/Table/TableFilters.vue
Original file line number Diff line number Diff line change
Expand Up @@ -623,11 +623,7 @@ const customEqualStringFilter: FilterFunction<unknown> = (
columnId,
value: string,
) => {
if (value.includes(row.getValue(columnId) as string)) {
return true;
}

return false;
return Boolean(value.includes(row.getValue(columnId) as string));
};

const inDateRangeFilter: FilterFunction<unknown> = (
Expand Down
6 changes: 6 additions & 0 deletions packages/vue-config/eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@ import vueConfig from "@prefabs.tech/eslint-config/vue.js";

export default [
...vueConfig,
{
files: ["**/__test__/**"],
rules: {
"unicorn/filename-case": "off",
},
},
{
files: ["**/__test__/**/*.ts"],
rules: {
Expand Down
8 changes: 4 additions & 4 deletions packages/vue-config/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,14 @@
"@sentry/vue": "10.51.0"
},
"devDependencies": {
"@prefabs.tech/eslint-config": "0.7.0",
"@prefabs.tech/stylelint-config": "0.7.0",
"@prefabs.tech/tsconfig": "0.7.0",
"@prefabs.tech/eslint-config": "0.8.7",
"@prefabs.tech/stylelint-config": "0.8.7",
"@prefabs.tech/tsconfig": "0.8.7",
"@types/node": "25.6.0",
"@vitejs/plugin-vue": "6.0.6",
"@vitejs/plugin-vue-jsx": "5.1.5",
"@vitest/coverage-istanbul": "4.1.5",
"eslint": "9.39.4",
"eslint": "10.6.0",
"prettier": "3.8.3",
"stylelint": "17.10.0",
"stylelint-config-recommended-vue": "1.6.1",
Expand Down
6 changes: 3 additions & 3 deletions packages/vue-config/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import type { AppConfig, AppFeatures } from "./types";
import parse from "./parse";
import sentry from "./sentry";

const feature = (name: keyof AppFeatures): boolean => {
const hasFeature = (name: keyof AppFeatures): boolean => {
const config = useConfig();

if (!config || !config?.features) {
Expand All @@ -23,7 +23,7 @@ const plugin: Plugin = {
app.provide(configKey, options.config);

const featureKey = Symbol.for("dzangolab.vue-config.feature");
app.provide(featureKey, feature);
app.provide(featureKey, hasFeature);
},
};

Expand All @@ -33,7 +33,7 @@ const useConfig = (): AppConfig => {
) as AppConfig;
};

const useFeature = (): typeof feature | undefined => {
const useFeature = (): typeof hasFeature | undefined => {
return inject(Symbol.for("dzangolab.vue-config.feature"));
};

Expand Down
2 changes: 1 addition & 1 deletion packages/vue-config/src/sentry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const plugin: Plugin = {
const { config } = options;
const sentryOptions = config.sentry;

if (sentryOptions?.enabled && sentryOptions?.dsn) {
if (sentryOptions?.enabled && sentryOptions.dsn) {
Sentry.init({
...sentryOptions,
app,
Expand Down
7 changes: 5 additions & 2 deletions packages/vue-config/vite.config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { dirname, resolve } from "node:path";
import path from "node:path";
import { fileURLToPath } from "node:url";
import { defineConfig, loadEnv } from "vite";

Expand All @@ -9,7 +9,10 @@ export default defineConfig(({ mode }) => {
return {
build: {
lib: {
entry: resolve(dirname(fileURLToPath(import.meta.url)), "src/index.ts"),
entry: path.resolve(
path.dirname(fileURLToPath(import.meta.url)),
"src/index.ts",
),
fileName: (format) => `PrefabsTechVue3Config.${format}.js`,
name: "PrefabsTechVue3Config",
},
Expand Down
12 changes: 12 additions & 0 deletions packages/vue-form/eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,22 @@ import vueConfig from "@prefabs.tech/eslint-config/vue.js";

export default [
...vueConfig,
{
files: ["**/__test__/**"],
rules: {
"unicorn/filename-case": "off",
},
},
{
files: ["**/__test__/**/*.ts"],
rules: {
"vue/one-component-per-file": "off",
"unicorn/no-unused-array-method-return": "off",
},
},
{
rules: {
"unicorn/prefer-spread": "off", // Node 20 compat (toArray() unsupported)
}
}
];
8 changes: 4 additions & 4 deletions packages/vue-form/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@
},
"devDependencies": {
"@dzangolab/flag-icon-css": "3.4.5",
"@prefabs.tech/eslint-config": "0.7.0",
"@prefabs.tech/stylelint-config": "0.7.0",
"@prefabs.tech/tsconfig": "0.7.0",
"@prefabs.tech/eslint-config": "0.8.7",
"@prefabs.tech/stylelint-config": "0.8.7",
"@prefabs.tech/tsconfig": "0.8.7",
"@prefabs.tech/vue3-ui": "0.32.0",
"@types/node": "25.6.0",
"@types/validator": "13.15.10",
Expand All @@ -54,7 +54,7 @@
"@vue/test-utils": "2.4.10",
"@vuepic/vue-datepicker": "12.1.0",
"@vueuse/core": "14.3.0",
"eslint": "9.39.4",
"eslint": "10.6.0",
"prettier": "3.8.3",
"stylelint": "17.10.0",
"stylelint-config-recommended-vue": "1.6.1",
Expand Down
4 changes: 2 additions & 2 deletions packages/vue-form/src/components/DatePicker.vue
Original file line number Diff line number Diff line change
Expand Up @@ -148,13 +148,13 @@ const onUpdate = (

onMounted(() => {
if (props.teleport) {
window.addEventListener("scroll", closeOnScroll, true);
window.addEventListener("scroll", closeOnScroll, { capture: true });
}
});

onBeforeUnmount(() => {
if (props.teleport) {
window.removeEventListener("scroll", closeOnScroll, true);
window.removeEventListener("scroll", closeOnScroll, { capture: true });
}
});
</script>
Expand Down
18 changes: 10 additions & 8 deletions packages/vue-form/src/components/EditableContent.vue
Original file line number Diff line number Diff line change
Expand Up @@ -85,16 +85,18 @@ const getTextarea = (): HTMLTextAreaElement | null => {
};

const onEditContent = () => {
if (props.allowEdit) {
editContent.value = true;
if (!props.allowEdit) {
return;
}

nextTick(() => {
const textarea = getTextarea();
editContent.value = true;

textarea?.focus();
resizeContent();
});
}
nextTick(() => {
const textarea = getTextarea();

textarea?.focus();
resizeContent();
});
};

const onInput = (value: string) => {
Expand Down
22 changes: 12 additions & 10 deletions packages/vue-form/src/components/FormActions.vue
Original file line number Diff line number Diff line change
Expand Up @@ -97,19 +97,21 @@ const parsedActions = computed(() => {
}

for (const defaultAction of defaultActions.value) {
if (mappedActions.get(defaultAction.id || defaultAction.label || "")) {
const previousAction = mappedActions.get(
defaultAction.id || defaultAction.label || "",
);

mappedActions.set(defaultAction.id || defaultAction.label || "", {
...defaultAction,
...previousAction,
});
if (!mappedActions.get(defaultAction.id || defaultAction.label || "")) {
continue;
}

const previousAction = mappedActions.get(
defaultAction.id || defaultAction.label || "",
);

mappedActions.set(defaultAction.id || defaultAction.label || "", {
...defaultAction,
...previousAction,
});
}

return [...mappedActions.values()];
return Array.from(mappedActions.values());
});

const onActionClick = (action: Record<string, unknown>) => {
Expand Down
17 changes: 8 additions & 9 deletions packages/vue-form/src/components/Select.vue
Original file line number Diff line number Diff line change
Expand Up @@ -530,9 +530,9 @@ const onArrowDown = (event: KeyboardEvent) => {
const onArrowUp = (event: KeyboardEvent) => {
event.preventDefault();

const reversedIndex = sortedOptions.value
.toReversed()
.findIndex((option) => !option.disabled);
const reversedIndex = sortedOptions.value.findLastIndex(
(option) => !option.disabled,
);
const total = sortedOptions.value.length;
const lastActiveIndex = total - 1 - reversedIndex;

Expand Down Expand Up @@ -630,11 +630,10 @@ const onSelectGroup = (groupLabel: string) => {
(option) => option.groupLabel !== groupLabel,
);
} else {
const newSelections = groupOptions.filter(
(option) =>
!selectedOptions.value.some(
(selectedOption) => selectedOption.value === option.value,
),
const newSelections = groupOptions.filter((option) =>
selectedOptions.value.every(
(selectedOption) => selectedOption.value !== option.value,
),
);

selectedOptions.value = [...selectedOptions.value, ...newSelections];
Expand Down Expand Up @@ -799,7 +798,7 @@ const updateDropdownPosition = () => {
onMounted(() => {
prepareComponent();

window.addEventListener("scroll", updateDropdownPosition, true);
window.addEventListener("scroll", updateDropdownPosition, { capture: true });
window.addEventListener("resize", updateDropdownPosition);
});

Expand Down
3 changes: 2 additions & 1 deletion packages/vue-form/src/components/SelectInput.vue
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,8 @@ const activeOptions = computed(() =>
const fieldSchema = computed(() => {
if (Object.keys(props.schema).length > 0) {
return toTypedSchema(props.schema);
} else if ((props.maxSelection || props.minSelection) && props.multiple) {
}
if ((props.maxSelection || props.minSelection) && props.multiple) {
const currentLength = activeOptions.value.length;
const max = props.maxSelection ?? 0;
const min = props.minSelection ?? 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ describe("DatePicker", () => {
expect(addEventListenerSpy).toHaveBeenCalledWith(
"scroll",
expect.any(Function),
true,
{ capture: true },
);

addEventListenerSpy.mockRestore();
Expand All @@ -46,7 +46,7 @@ describe("DatePicker", () => {
expect(removeEventListenerSpy).toHaveBeenCalledWith(
"scroll",
expect.any(Function),
true,
{ capture: true },
);

removeEventListenerSpy.mockRestore();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ beforeEach(() => {
});

afterEach(() => {
document.body.innerHTML = "";
document.body.replaceChildren();
});

describe("Select", () => {
Expand Down
7 changes: 5 additions & 2 deletions packages/vue-form/vite.config.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import vue from "@vitejs/plugin-vue";
import { dirname, resolve } from "node:path";
import path from "node:path";
import { fileURLToPath } from "node:url";
import { defineConfig, loadEnv } from "vite";

Expand All @@ -13,7 +13,10 @@ export default defineConfig(({ mode }) => {
build: {
cssCodeSplit: true,
lib: {
entry: resolve(dirname(fileURLToPath(import.meta.url)), "src/index.ts"),
entry: path.resolve(
path.dirname(fileURLToPath(import.meta.url)),
"src/index.ts",
),
fileName: (format) => `PrefabsTechVue3Form.${format}.js`,
name: "PrefabsTechVue3Form",
},
Expand Down
6 changes: 6 additions & 0 deletions packages/vue-i18n/eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@ import vueConfig from "@prefabs.tech/eslint-config/vue.js";

export default [
...vueConfig,
{
files: ["**/__test__/**"],
rules: {
"unicorn/filename-case": "off",
},
},
{
files: ["**/__test__/**/*.ts"],
rules: {
Expand Down
8 changes: 4 additions & 4 deletions packages/vue-i18n/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,17 +36,17 @@
"vue-i18n": "9.1.10"
},
"devDependencies": {
"@prefabs.tech/eslint-config": "0.7.0",
"@prefabs.tech/stylelint-config": "0.7.0",
"@prefabs.tech/tsconfig": "0.7.0",
"@prefabs.tech/eslint-config": "0.8.7",
"@prefabs.tech/stylelint-config": "0.8.7",
"@prefabs.tech/tsconfig": "0.8.7",
"@prefabs.tech/vue3-config": "0.32.0",
"@types/node": "25.6.0",
"@vitejs/plugin-vue": "6.0.6",
"@vitejs/plugin-vue-jsx": "5.1.5",
"@vitest/coverage-istanbul": "4.1.5",
"@vue/test-utils": "2.4.10",
"@vueuse/core": "14.3.0",
"eslint": "9.39.4",
"eslint": "10.6.0",
"prettier": "3.8.3",
"jsdom": "27.4.0",
"pinia": "3.0.4",
Expand Down
7 changes: 5 additions & 2 deletions packages/vue-i18n/vite.config.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import vue from "@vitejs/plugin-vue";
import { dirname, resolve } from "node:path";
import path from "node:path";
import { fileURLToPath } from "node:url";
import { defineConfig, loadEnv } from "vite";

Expand All @@ -10,7 +10,10 @@ export default defineConfig(({ mode }) => {
return {
build: {
lib: {
entry: resolve(dirname(fileURLToPath(import.meta.url)), "src/index.ts"),
entry: path.resolve(
path.dirname(fileURLToPath(import.meta.url)),
"src/index.ts",
),
fileName: (format) => `PrefabsTechVue3I18n.${format}.js`,
name: "PrefabsTechVue3I18n",
},
Expand Down
Loading
Loading