primevue-mirror/components/lib/config/PrimeVue.js

239 lines
8.3 KiB
JavaScript
Raw Normal View History

2022-09-14 11:26:01 +00:00
import { FilterMatchMode } from 'primevue/api';
2024-03-05 09:22:33 +00:00
import Theme from 'primevue/themes';
import PrimeOne from 'primevue/themes/primeone';
import Aura from 'primevue/themes/primeone/aura';
2024-03-05 09:22:33 +00:00
import { inject, reactive, watch } from 'vue';
2020-12-09 12:24:11 +00:00
export const defaultOptions = {
2020-12-09 12:24:11 +00:00
ripple: false,
inputStyle: null,
2020-12-09 12:24:11 +00:00
locale: {
startsWith: 'Starts with',
contains: 'Contains',
notContains: 'Not contains',
endsWith: 'Ends with',
equals: 'Equals',
notEquals: 'Not equals',
noFilter: 'No Filter',
lt: 'Less than',
lte: 'Less than or equal to',
gt: 'Greater than',
gte: 'Greater than or equal to',
2021-02-08 12:35:16 +00:00
dateIs: 'Date is',
dateIsNot: 'Date is not',
dateBefore: 'Date is before',
dateAfter: 'Date is after',
clear: 'Clear',
apply: 'Apply',
matchAll: 'Match All',
matchAny: 'Match Any',
addRule: 'Add Rule',
removeRule: 'Remove Rule',
2020-12-09 12:24:11 +00:00
accept: 'Yes',
reject: 'No',
choose: 'Choose',
upload: 'Upload',
cancel: 'Cancel',
2022-12-08 11:04:25 +00:00
completed: 'Completed',
pending: 'Pending',
fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
2022-09-14 11:26:01 +00:00
dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
2022-07-19 13:04:04 +00:00
chooseYear: 'Choose Year',
chooseMonth: 'Choose Month',
chooseDate: 'Choose Date',
prevDecade: 'Previous Decade',
nextDecade: 'Next Decade',
prevYear: 'Previous Year',
nextYear: 'Next Year',
prevMonth: 'Previous Month',
nextMonth: 'Next Month',
prevHour: 'Previous Hour',
nextHour: 'Next Hour',
prevMinute: 'Previous Minute',
nextMinute: 'Next Minute',
prevSecond: 'Previous Second',
nextSecond: 'Next Second',
am: 'am',
pm: 'pm',
2020-12-09 12:24:11 +00:00
today: 'Today',
weekHeader: 'Wk',
firstDayOfWeek: 0,
showMonthAfterYear: false,
2020-12-09 12:24:11 +00:00
dateFormat: 'mm/dd/yy',
weak: 'Weak',
medium: 'Medium',
strong: 'Strong',
2021-02-15 08:50:11 +00:00
passwordPrompt: 'Enter a password',
emptyFilterMessage: 'No results found', // @deprecated Use 'emptySearchMessage' option instead.
searchMessage: '{0} results are available',
selectionMessage: '{0} items selected',
emptySelectionMessage: 'No selected item',
emptySearchMessage: 'No results found',
2022-07-18 10:36:43 +00:00
emptyMessage: 'No available options',
aria: {
trueLabel: 'True',
falseLabel: 'False',
2022-07-22 13:30:42 +00:00
nullLabel: 'Not Selected',
2022-07-29 13:52:08 +00:00
star: '1 star',
stars: '{star} stars',
2022-07-29 04:21:24 +00:00
selectAll: 'All items selected',
unselectAll: 'All items unselected',
2022-09-14 11:26:01 +00:00
close: 'Close',
previous: 'Previous',
2022-12-08 11:04:25 +00:00
next: 'Next',
navigation: 'Navigation',
scrollTop: 'Scroll Top',
moveTop: 'Move Top',
moveUp: 'Move Up',
moveDown: 'Move Down',
moveBottom: 'Move Bottom',
moveToTarget: 'Move to Target',
moveToSource: 'Move to Source',
moveAllToTarget: 'Move All to Target',
moveAllToSource: 'Move All to Source',
2023-11-30 20:06:40 +00:00
pageLabel: 'Page {page}',
2022-12-08 11:04:25 +00:00
firstPageLabel: 'First Page',
lastPageLabel: 'Last Page',
nextPageLabel: 'Next Page',
prevPageLabel: 'Previous Page',
rowsPerPageLabel: 'Rows per page',
jumpToPageDropdownLabel: 'Jump to Page Dropdown',
jumpToPageInputLabel: 'Jump to Page Input',
selectRow: 'Row Selected',
unselectRow: 'Row Unselected',
expandRow: 'Row Expanded',
collapseRow: 'Row Collapsed',
showFilterMenu: 'Show Filter Menu',
hideFilterMenu: 'Hide Filter Menu',
filterOperator: 'Filter Operator',
filterConstraint: 'Filter Constraint',
editRow: 'Row Edit',
saveEdit: 'Save Edit',
cancelEdit: 'Cancel Edit',
listView: 'List View',
gridView: 'Grid View',
slide: 'Slide',
slideNumber: '{slideNumber}',
zoomImage: 'Zoom Image',
zoomIn: 'Zoom In',
zoomOut: 'Zoom Out',
rotateRight: 'Rotate Right',
rotateLeft: 'Rotate Left'
2022-07-18 10:36:43 +00:00
}
},
filterMatchModeOptions: {
2022-09-14 11:26:01 +00:00
text: [FilterMatchMode.STARTS_WITH, FilterMatchMode.CONTAINS, FilterMatchMode.NOT_CONTAINS, FilterMatchMode.ENDS_WITH, FilterMatchMode.EQUALS, FilterMatchMode.NOT_EQUALS],
numeric: [FilterMatchMode.EQUALS, FilterMatchMode.NOT_EQUALS, FilterMatchMode.LESS_THAN, FilterMatchMode.LESS_THAN_OR_EQUAL_TO, FilterMatchMode.GREATER_THAN, FilterMatchMode.GREATER_THAN_OR_EQUAL_TO],
date: [FilterMatchMode.DATE_IS, FilterMatchMode.DATE_IS_NOT, FilterMatchMode.DATE_BEFORE, FilterMatchMode.DATE_AFTER]
},
zIndex: {
modal: 1100,
overlay: 1000,
menu: 1000,
tooltip: 1100
},
2024-01-02 10:18:28 +00:00
theme: {
base: PrimeOne,
2024-02-05 21:20:00 +00:00
preset: Aura,
2024-03-05 09:22:33 +00:00
options: {
prefix: 'p',
colorScheme: {
dark: {
class: 'p-dark',
rule: `.p-dark { [CSS] }`
//default: false
}
},
layer: false
/*colorScheme: {
// mode: 'light' | 'dark' | 'auto' | object // default: auto
light: {
class: '',
rule: `:root { [CSS] }`
//default: true
},
dark: {
class: 'p-dark',
rule: `.p-dark { [CSS] }`
//default: false
}
},
layer: {
// layer: true | false | undefined | object // default: undefined
name: '', // (component_name, type=variable|style) => layer_names // default: primevue
order: '' // (layer_names) => layer_order // default: @layer primevue
}*/
2024-03-06 10:38:51 +00:00
},
extend: {}
2024-01-02 10:18:28 +00:00
},
pt: undefined,
ptOptions: {
mergeSections: true,
mergeProps: false
},
unstyled: false,
csp: {
nonce: undefined
}
2020-12-09 12:24:11 +00:00
};
const PrimeVueSymbol = Symbol();
export function usePrimeVue() {
const PrimeVue = inject(PrimeVueSymbol);
2022-09-14 11:26:01 +00:00
if (!PrimeVue) {
throw new Error('PrimeVue is not installed!');
}
return PrimeVue;
}
function switchTheme(currentTheme, newTheme, linkElementId, callback) {
2023-10-17 22:00:08 +00:00
if (currentTheme !== newTheme) {
const linkElement = document.getElementById(linkElementId);
2023-10-17 22:02:28 +00:00
2024-01-02 10:18:28 +00:00
if (linkElement) {
const cloneLinkElement = linkElement.cloneNode(true);
const newThemeUrl = linkElement.getAttribute('href').replace(currentTheme, newTheme);
cloneLinkElement.setAttribute('id', linkElementId + '-clone');
cloneLinkElement.setAttribute('href', newThemeUrl);
cloneLinkElement.addEventListener('load', () => {
linkElement.remove();
cloneLinkElement.setAttribute('id', linkElementId);
2023-10-17 22:02:28 +00:00
2024-01-02 10:18:28 +00:00
if (callback) {
callback();
}
});
linkElement.parentNode && linkElement.parentNode.insertBefore(cloneLinkElement, linkElement.nextSibling);
}
2023-10-17 22:00:08 +00:00
}
}
2020-12-09 12:24:11 +00:00
export default {
install: (app, options) => {
2022-09-14 11:26:01 +00:00
let configOptions = options ? { ...defaultOptions, ...options } : { ...defaultOptions };
2020-12-09 12:24:11 +00:00
const PrimeVue = {
config: reactive(configOptions),
changeTheme: switchTheme
2020-12-09 12:24:11 +00:00
};
2022-09-14 11:26:01 +00:00
2024-03-05 09:22:33 +00:00
watch(
PrimeVue.config,
(newValue) => {
Theme.setPConfig(newValue);
},
{ immediate: true }
);
2020-12-09 12:24:11 +00:00
app.config.globalProperties.$primevue = PrimeVue;
app.provide(PrimeVueSymbol, PrimeVue);
}
};