quasar-ui-danx 0.4.14 → 0.4.16

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar-ui-danx",
3
- "version": "0.4.14",
3
+ "version": "0.4.16",
4
4
  "author": "Dan <dan@flytedesk.com>",
5
5
  "description": "DanX Vue / Quasar component library",
6
6
  "license": "MIT",
@@ -14,6 +14,25 @@ export const activeActionVnode: Ref = shallowRef(null);
14
14
  export function useActions(actions: ActionOptions[], globalOptions: Partial<ActionOptions> | null = null) {
15
15
  const namespace = uid();
16
16
 
17
+ /**
18
+ * Extend an action so the base action can be modified without affecting other places the action is used.
19
+ * This isolates the action to the provided id, so it is still re-usable across the system, but does not affect behavior elsewhere.
20
+ *
21
+ * For example, when you have a list of items and you want to perform a callback on the action on a single item, you can extend the action
22
+ * with the id of the item you want to perform the action on, allowing you to perform behavior on a single item, instead of all instances
23
+ * in the list receiving the same callback.
24
+ */
25
+ function extendAction(actionName: string, extendedId: string | number, actionOptions: Partial<ActionOptions>): ResourceAction {
26
+ const action = getAction(actionName);
27
+ const extendedAction = { ...action, ...actionOptions, id: extendedId };
28
+ if (extendedAction.debounce) {
29
+ extendedAction.trigger = useDebounceFn((target, input) => performAction(extendedAction, target, input), extendedAction.debounce);
30
+ } else {
31
+ extendedAction.trigger = (target, input) => performAction(extendedAction, target, input);
32
+ }
33
+ return storeObject(extendedAction);
34
+ }
35
+
17
36
  /**
18
37
  * Resolve the action object based on the provided name (or return the object if the name is already an object)
19
38
  */
@@ -140,7 +159,8 @@ export function useActions(actions: ActionOptions[], globalOptions: Partial<Acti
140
159
 
141
160
  return {
142
161
  getAction,
143
- getActions
162
+ getActions,
163
+ extendAction
144
164
  };
145
165
  }
146
166
 
@@ -375,7 +375,7 @@ export function fMarkdownCode(type: string, string: string | object): string {
375
375
  if (typeof string === "object" || isJSON(string)) {
376
376
  switch (type) {
377
377
  case "yaml":
378
- string = stringifyYAML(string);
378
+ string = stringifyYAML(typeof string === "string" ? JSON.parse(string) : string);
379
379
  break;
380
380
  case "ts":
381
381
  string = "";
@@ -9,8 +9,8 @@ const store = new Map<string, any>();
9
9
  * Returns the stored object that should be used instead of the passed object as the returned object is shared across the system
10
10
  */
11
11
  export function storeObject<T extends TypedObject>(newObject: T): ShallowReactive<T> {
12
- const id = newObject.id || newObject.name;
13
- const type = newObject.__type;
12
+ const id = newObject?.id || newObject?.name;
13
+ const type = newObject?.__type;
14
14
  if (!id || !type) return shallowReactive(newObject);
15
15
 
16
16
  if (!newObject.__id) {
@@ -34,9 +34,11 @@ export function storeObject<T extends TypedObject>(newObject: T): ShallowReactiv
34
34
  // Recursively store all the children of the object as well
35
35
  for (const key of Object.keys(newObject)) {
36
36
  const value = newObject[key];
37
- if (Array.isArray(value) && value.length > 0 && typeof value[0] === "object") {
37
+ if (Array.isArray(value) && value.length > 0) {
38
38
  for (const index in value) {
39
- newObject[key][index] = storeObject(value[index]);
39
+ if (value[index] && typeof value[index] === "object") {
40
+ newObject[key][index] = storeObject(value[index]);
41
+ }
40
42
  }
41
43
  } else if (value?.__type) {
42
44
  // @ts-expect-error newObject[key] is guaranteed to be a TypedObject