Browse Source

Merge pull request #1160 from colinin/use-define-settings

feat(vben5): add user define settings
pull/1162/head
yx lin 12 months ago
committed by GitHub
parent
commit
d9adf1cd90
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 1
      apps/vben5/packages/@abp/settings/src/hooks/index.ts
  2. 73
      apps/vben5/packages/@abp/settings/src/hooks/useDefineSettings.ts
  3. 1
      apps/vben5/packages/@abp/settings/src/index.ts

1
apps/vben5/packages/@abp/settings/src/hooks/index.ts

@ -0,0 +1 @@
export * from './useDefineSettings';

73
apps/vben5/packages/@abp/settings/src/hooks/useDefineSettings.ts

@ -0,0 +1,73 @@
import type { ISettingProvider, SettingValue } from '@abp/core';
import type { SettingGroup } from '../types/settings';
import { ref } from 'vue';
interface UserDefineSettingProvider extends ISettingProvider {
/**
*
* @param groups
*/
initlize(groups: SettingGroup[]): void;
}
/**
* Hooks
* @returns
* @summary initlize
*/
export function useDefineSettings(): UserDefineSettingProvider {
const settings = ref<SettingValue[]>([]);
function initlize(groups: SettingGroup[]) {
const setSettings: SettingValue[] = [];
groups.forEach((group) => {
group.settings.forEach((setting) => {
setting.details.forEach((detail) => {
setSettings.push({
name: detail.name,
value: detail.value ?? detail.defaultValue,
});
});
});
});
settings.value = setSettings;
}
function get(name: string): SettingValue | undefined {
return settings.value.find((setting) => name === setting.name);
}
function getAll(...names: string[]): SettingValue[] {
if (names) {
return settings.value.filter((setting) => names.includes(setting.name));
}
return settings.value;
}
function getOrDefault<T>(name: string, defaultValue: T): string | T {
const setting = get(name);
if (!setting) {
return defaultValue;
}
return setting.value;
}
return {
getAll,
getNumber(name: string, defaultValue: number = 0) {
const value = getOrDefault(name, defaultValue);
const num = Number(value);
return Number.isNaN(num) ? defaultValue : num;
},
getOrEmpty(name: string) {
return getOrDefault(name, '');
},
initlize,
isTrue(name: string) {
const value = getOrDefault(name, 'false');
return value.toLowerCase() === 'true';
},
};
}

1
apps/vben5/packages/@abp/settings/src/index.ts

@ -1,3 +1,4 @@
export * from './api';
export * from './components';
export * from './hooks';
export * from './types';

Loading…
Cancel
Save