quasar-ui-danx 0.4.33 → 0.4.36
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/danx.es.js +1039 -997
- package/dist/danx.es.js.map +1 -1
- package/dist/danx.umd.js +32 -32
- package/dist/danx.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/components/ActionTable/Form/Fields/SelectField.vue +1 -1
- package/src/components/ActionTable/controls.ts +1 -1
- package/src/helpers/formats.ts +83 -34
- package/src/helpers/routes.ts +4 -8
- package/src/types/controls.d.ts +7 -4
package/package.json
CHANGED
@@ -154,7 +154,7 @@ const selectedValue = computed(() => {
|
|
154
154
|
} else {
|
155
155
|
if (props.modelValue === null) return "__null__";
|
156
156
|
|
157
|
-
if (props.selectByObject) return props.modelValue
|
157
|
+
if (props.selectByObject) return props.modelValue?.value || props.modelValue?.id;
|
158
158
|
|
159
159
|
return props.modelValue;
|
160
160
|
}
|
@@ -73,7 +73,7 @@ export function useControls(name: string, options: ListControlsOptions): ListCon
|
|
73
73
|
|
74
74
|
async function loadList() {
|
75
75
|
if (!isInitialized || options.isListEnabled === false) return;
|
76
|
-
|
76
|
+
isLoadingList.value = true;
|
77
77
|
try {
|
78
78
|
setPagedItems(await options.routes.list(pager.value));
|
79
79
|
} catch (e) {
|
package/src/helpers/formats.ts
CHANGED
@@ -29,40 +29,6 @@ export function remoteDateTime(dateTimeString: string) {
|
|
29
29
|
return DateTime.fromSQL(dateTimeString, { zone: "local" }).setZone(SERVER_TZ);
|
30
30
|
}
|
31
31
|
|
32
|
-
/**
|
33
|
-
* Parses a date string into a Luxon DateTime object
|
34
|
-
*/
|
35
|
-
export function parseDateTime(dateTime: string | DateTime | null): DateTime<boolean> | null {
|
36
|
-
if (typeof dateTime === "string") {
|
37
|
-
return parseSqlDateTime(dateTime) || parseQDate(dateTime) || parseQDateTime(dateTime);
|
38
|
-
}
|
39
|
-
return dateTime || DateTime.fromSQL("0000-00-00 00:00:00");
|
40
|
-
}
|
41
|
-
|
42
|
-
/**
|
43
|
-
* Parses a SQL formatted date string into a Luxon DateTime object
|
44
|
-
*/
|
45
|
-
export function parseSqlDateTime(dateTime: string) {
|
46
|
-
const parsed = DateTime.fromSQL(dateTime.replace("T", " ").replace(/\//g, "-"));
|
47
|
-
return parsed.isValid ? parsed : null;
|
48
|
-
}
|
49
|
-
|
50
|
-
/**
|
51
|
-
* Parses a Quasar formatted date string into a Luxon DateTime object
|
52
|
-
*/
|
53
|
-
export function parseQDate(date: string, format = "yyyy/MM/dd"): DateTime<boolean> | null {
|
54
|
-
const parsed = DateTime.fromFormat(date, format);
|
55
|
-
return parsed.isValid ? parsed : null;
|
56
|
-
}
|
57
|
-
|
58
|
-
/**
|
59
|
-
* Parses a Quasar formatted date/time string into a Luxon DateTime object
|
60
|
-
*/
|
61
|
-
export function parseQDateTime(date: string, format = "yyyy/MM/dd HH:mm:ss"): DateTime<boolean> | null {
|
62
|
-
const parsed = DateTime.fromFormat(date, format);
|
63
|
-
return parsed.isValid ? parsed : null;
|
64
|
-
}
|
65
|
-
|
66
32
|
/**
|
67
33
|
* Formats a Luxon DateTime object into a Quasar formatted date string
|
68
34
|
* @param date
|
@@ -119,6 +85,89 @@ export function fDate(dateTime: string | DateTime | null, { empty = "--", format
|
|
119
85
|
return formatted || empty;
|
120
86
|
}
|
121
87
|
|
88
|
+
|
89
|
+
/**
|
90
|
+
* Parses a date string into a Luxon DateTime object
|
91
|
+
*/
|
92
|
+
export function parseDateTime(dateTime: string | DateTime | null): DateTime<boolean> | null {
|
93
|
+
if (typeof dateTime === "string") {
|
94
|
+
return parseGenericDateTime(dateTime);
|
95
|
+
}
|
96
|
+
return dateTime || DateTime.fromSQL("0000-00-00 00:00:00");
|
97
|
+
}
|
98
|
+
|
99
|
+
/**
|
100
|
+
* Parses a SQL formatted date string into a Luxon DateTime object
|
101
|
+
*/
|
102
|
+
export function parseSqlDateTime(dateTime: string) {
|
103
|
+
const parsed = DateTime.fromSQL(dateTime.replace("T", " ").replace(/\//g, "-"));
|
104
|
+
return parsed.isValid ? parsed : null;
|
105
|
+
}
|
106
|
+
|
107
|
+
/**
|
108
|
+
* Parses a Quasar formatted date string into a Luxon DateTime object
|
109
|
+
*/
|
110
|
+
export function parseQDate(date: string, format = "yyyy/MM/dd"): DateTime<boolean> | null {
|
111
|
+
const parsed = DateTime.fromFormat(date, format);
|
112
|
+
return parsed.isValid ? parsed : null;
|
113
|
+
}
|
114
|
+
|
115
|
+
/**
|
116
|
+
* Parses a Quasar formatted date/time string into a Luxon DateTime object
|
117
|
+
*/
|
118
|
+
export function parseQDateTime(date: string, format = "yyyy/MM/dd HH:mm:ss"): DateTime<boolean> | null {
|
119
|
+
const parsed = DateTime.fromFormat(date, format);
|
120
|
+
return parsed.isValid ? parsed : null;
|
121
|
+
}
|
122
|
+
|
123
|
+
/**
|
124
|
+
* Parses a date string in various formats into a Luxon DateTime object.
|
125
|
+
* Tries a list of common formats until one works.
|
126
|
+
*
|
127
|
+
* @param {string} dateTimeString - The date string to parse.
|
128
|
+
* @param {string} [defaultZone="local"] - The default time zone to use if not specified.
|
129
|
+
* @returns {DateTime | null} - A Luxon DateTime object if parsing succeeds, otherwise null.
|
130
|
+
*/
|
131
|
+
export function parseGenericDateTime(dateTimeString: string, defaultZone = "local"): DateTime | null {
|
132
|
+
if (!dateTimeString) return null;
|
133
|
+
|
134
|
+
const formats = [
|
135
|
+
"yyyy-MM-dd", // ISO date
|
136
|
+
"yyyy-MM-dd HH:mm:ss", // ISO date with time
|
137
|
+
"MM/dd/yyyy", // US-style date
|
138
|
+
"dd/MM/yyyy", // European-style date
|
139
|
+
"MM/dd/yy", // US short date
|
140
|
+
"dd/MM/yy", // European short date
|
141
|
+
"yyyy/MM/dd", // Alternative ISO
|
142
|
+
"MM-dd-yyyy", // US with dashes
|
143
|
+
"dd-MM-yyyy", // European with dashes
|
144
|
+
"M/d/yyyy", // US date without leading zeros
|
145
|
+
"d/M/yyyy", // European date without leading zeros
|
146
|
+
"yyyyMMdd" // Compact ISO
|
147
|
+
];
|
148
|
+
|
149
|
+
for (const format of formats) {
|
150
|
+
const parsed = DateTime.fromFormat(dateTimeString, format, { zone: defaultZone });
|
151
|
+
if (parsed.isValid) {
|
152
|
+
return parsed;
|
153
|
+
}
|
154
|
+
}
|
155
|
+
|
156
|
+
// Fallback to ISO parsing for strings like "2022-11-18T10:10:10Z"
|
157
|
+
const isoParsed = DateTime.fromISO(dateTimeString, { zone: defaultZone });
|
158
|
+
if (isoParsed.isValid) {
|
159
|
+
return isoParsed;
|
160
|
+
}
|
161
|
+
|
162
|
+
// Fallback to SQL parsing for strings like "2022-11-18 10:10:10"
|
163
|
+
const sqlParsed = DateTime.fromSQL(dateTimeString, { zone: defaultZone });
|
164
|
+
if (sqlParsed.isValid) {
|
165
|
+
return sqlParsed;
|
166
|
+
}
|
167
|
+
|
168
|
+
return null;
|
169
|
+
}
|
170
|
+
|
122
171
|
/**
|
123
172
|
* Formats a number of seconds into Hours / Minutes / Seconds or just Minutes and Seconds
|
124
173
|
*
|
package/src/helpers/routes.ts
CHANGED
@@ -11,15 +11,11 @@ export function useActionRoutes(baseUrl: string, extend?: object): ListControlsR
|
|
11
11
|
summary(filter) {
|
12
12
|
return request.post(`${baseUrl}/summary`, { filter });
|
13
13
|
},
|
14
|
-
details(target) {
|
15
|
-
return request.get(`${baseUrl}/${target.id}/details
|
14
|
+
details(target, fields) {
|
15
|
+
return request.get(`${baseUrl}/${target.id}/details`, { params: { fields } });
|
16
16
|
},
|
17
|
-
async detailsAndStore(target) {
|
18
|
-
const item = await request.get(`${baseUrl}/${target.id}/details
|
19
|
-
return storeObject(item);
|
20
|
-
},
|
21
|
-
async relation(target, relation) {
|
22
|
-
const item = await request.get(`${baseUrl}/${target.id}/relation/${relation}`);
|
17
|
+
async detailsAndStore(target, fields) {
|
18
|
+
const item = await request.get(`${baseUrl}/${target.id}/details`, { params: { fields } });
|
23
19
|
return storeObject(item);
|
24
20
|
},
|
25
21
|
fieldOptions() {
|
package/src/types/controls.d.ts
CHANGED
@@ -24,11 +24,9 @@ export interface ListControlsRoutes<T = ActionTargetItem> {
|
|
24
24
|
|
25
25
|
summary?(filter?: ListControlsFilter): Promise<AnyObject>;
|
26
26
|
|
27
|
-
details?(target: T): Promise<T>;
|
27
|
+
details?(target: T, fields: ControlsFieldsList): Promise<T>;
|
28
28
|
|
29
|
-
detailsAndStore?(target: T): Promise<T>;
|
30
|
-
|
31
|
-
relation?(target: T, relation: string): Promise<T>;
|
29
|
+
detailsAndStore?(target: T, fields: ControlsFieldsList): Promise<T>;
|
32
30
|
|
33
31
|
more?(pager: ListControlsPagination): Promise<T[]>;
|
34
32
|
|
@@ -62,6 +60,11 @@ export interface ListControlsPagination {
|
|
62
60
|
rowsPerPage?: number;
|
63
61
|
perPage?: number;
|
64
62
|
filter?: ListControlsFilter;
|
63
|
+
fields?: ControlsFieldsList;
|
64
|
+
}
|
65
|
+
|
66
|
+
export interface ControlsFieldsList {
|
67
|
+
[key: string]: boolean | ControlsFieldsList;
|
65
68
|
}
|
66
69
|
|
67
70
|
export interface PagedItems<T = ActionTargetItem> {
|