@humandialog/forms.svelte 0.5.8 → 0.5.9

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.
@@ -131,7 +131,8 @@ async function editTags(field, propIdx) {
131
131
  getGlobalTags={prop.getAllTags}
132
132
  s="xs"
133
133
  onSelect={prop.onSelect}
134
- onCreate={prop.onCreate}
134
+ onUpdateAllTags={prop.onUpdateAllTags}
135
+ canChangeColor={prop.canChangeColor}
135
136
  bind:this={propElements[idx]}
136
137
  />
137
138
  {/if}
@@ -4,8 +4,9 @@ import { rList_property_tags } from "../list/List";
4
4
  export let name = "";
5
5
  export let a = "";
6
6
  export let getAllTags = void 0;
7
- export let onCreate = void 0;
7
+ export let onUpdateAllTags = void 0;
8
8
  export let onSelect = void 0;
9
+ export let canChangeColor = false;
9
10
  export let top = false;
10
11
  export let middle = true;
11
12
  export let bottom = false;
@@ -22,7 +23,8 @@ if (!a && name) {
22
23
  tagsProperty.name = name;
23
24
  }
24
25
  tagsProperty.onSelect = onSelect;
25
- tagsProperty.onCreate = onCreate;
26
+ tagsProperty.onUpdateAllTags = onUpdateAllTags;
27
+ tagsProperty.canChangeColor = canChangeColor;
26
28
  tagsProperty.getAllTags = getAllTags;
27
29
  if (top)
28
30
  tagsProperty.position = KanbanCardTop;
@@ -4,8 +4,9 @@ declare const __propDef: {
4
4
  name?: string | undefined;
5
5
  a?: string | undefined;
6
6
  getAllTags?: Function | undefined;
7
- onCreate?: Function | undefined;
7
+ onUpdateAllTags?: Function | undefined;
8
8
  onSelect?: Function | undefined;
9
+ canChangeColor?: boolean | undefined;
9
10
  top?: boolean | undefined;
10
11
  middle?: boolean | undefined;
11
12
  bottom?: boolean | undefined;
@@ -22,8 +22,9 @@ export declare class rList_property_combo extends rList_property {
22
22
  }
23
23
  export declare class rList_property_tags extends rList_property {
24
24
  constructor();
25
- onCreate: Function | undefined;
25
+ canChangeColor: boolean;
26
26
  getAllTags: Function | undefined;
27
+ onUpdateAllTags: Function | undefined;
27
28
  }
28
29
  export declare class rList_definition {
29
30
  title: string;
@@ -30,8 +30,9 @@ export class rList_property_tags extends rList_property {
30
30
  constructor() {
31
31
  super(rList_property_type.Tags);
32
32
  }
33
- onCreate = undefined;
33
+ canChangeColor = false;
34
34
  getAllTags = undefined;
35
+ onUpdateAllTags = undefined;
35
36
  }
36
37
  export class rList_definition {
37
38
  title = '';
@@ -1,4 +1,5 @@
1
+ import Floating_container from './Floating_container.svelte';
1
2
  export declare function showMenu(around: DOMRect | DOMPoint, operations: any): void;
2
3
  export declare function hideWholeContextMenu(): void;
3
- export declare function showFloatingToolbar(around: DOMRect | DOMPoint, toolbar: any, props?: {}): void;
4
+ export declare function showFloatingToolbar(around: DOMRect | DOMPoint, toolbar: any, props?: {}): Floating_container | null;
4
5
  export declare function showGridMenu(around: DOMRect | DOMPoint, operations: any): void;
@@ -50,6 +50,7 @@ export function showFloatingToolbar(around, toolbar, props = {}) {
50
50
  }
51
51
  else
52
52
  console.error('what now?');
53
+ return toolbar_component;
53
54
  }
54
55
  export function showGridMenu(around, operations) {
55
56
  showFloatingToolbar(around, Grid, { operations: operations });
@@ -0,0 +1,92 @@
1
+ <script>export let brightntess = "medium";
2
+ export let onSelect;
3
+ $:
4
+ colors = getColors(brightntess);
5
+ function getColors(brightntess2) {
6
+ switch (brightntess2) {
7
+ case "light":
8
+ return [
9
+ "bg-red-300",
10
+ "bg-orange-300",
11
+ "bg-amber-300",
12
+ "bg-yellow-300",
13
+ "bg-lime-300",
14
+ "bg-green-300",
15
+ "bg-indigo-300",
16
+ "bg-blue-300",
17
+ "bg-sky-300",
18
+ "bg-cyan-300",
19
+ "bg-teal-300",
20
+ "bg-emerald-300",
21
+ "bg-violet-300",
22
+ "bg-purple-300",
23
+ "bg-fuchsia-300",
24
+ "bg-pink-300",
25
+ "bg-rose-300",
26
+ "bg-slate-300"
27
+ ];
28
+ case "medium":
29
+ return [
30
+ "bg-red-600",
31
+ "bg-orange-600",
32
+ "bg-amber-600",
33
+ "bg-yellow-600",
34
+ "bg-lime-600",
35
+ "bg-green-600",
36
+ "bg-indigo-600",
37
+ "bg-blue-600",
38
+ "bg-sky-600",
39
+ "bg-cyan-600",
40
+ "bg-teal-600",
41
+ "bg-emerald-600",
42
+ "bg-violet-600",
43
+ "bg-purple-600",
44
+ "bg-fuchsia-600",
45
+ "bg-pink-600",
46
+ "bg-rose-600",
47
+ "bg-slate-600"
48
+ ];
49
+ case "dark":
50
+ return [
51
+ "bg-red-800",
52
+ "bg-orange-800",
53
+ "bg-amber-800",
54
+ "bg-yellow-800",
55
+ "bg-lime-800",
56
+ "bg-green-800",
57
+ "bg-indigo-800",
58
+ "bg-blue-800",
59
+ "bg-sky-800",
60
+ "bg-cyan-800",
61
+ "bg-teal-800",
62
+ "bg-emerald-800",
63
+ "bg-violet-800",
64
+ "bg-purple-800",
65
+ "bg-fuchsia-800",
66
+ "bg-pink-800",
67
+ "bg-rose-800",
68
+ "bg-slate-800"
69
+ ];
70
+ }
71
+ }
72
+ </script>
73
+
74
+ <menu class="grid grid-cols-6">
75
+ {#each colors as color, idx}
76
+ {@const isTL = idx == 0}
77
+ {@const isTR = idx == 5}
78
+ {@const isBL = idx == colors.length-6}
79
+ {@const isBR = idx == colors.length-1}
80
+
81
+ {@const borderTL = isTL ? "rounded-tl-lg": ""}
82
+ {@const borderTR = isTR ? "rounded-tr-lg": ""}
83
+ {@const borderBL = isBL ? "rounded-bl-lg": ""}
84
+ {@const borderBR = isBR ? "rounded-br-lg": ""}
85
+
86
+ <button class="{color} w-10 h-10 {borderTL} {borderTR} {borderBL} {borderBR}"
87
+ on:click={() => onSelect(color)}>
88
+
89
+ </button>
90
+ {/each}
91
+
92
+ </menu>
@@ -0,0 +1,17 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ brightntess?: string | undefined;
5
+ onSelect: Function;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ };
12
+ export type TagProps = typeof __propDef.props;
13
+ export type TagEvents = typeof __propDef.events;
14
+ export type TagSlots = typeof __propDef.slots;
15
+ export default class Tag extends SvelteComponentTyped<TagProps, TagEvents, TagSlots> {
16
+ }
17
+ export {};
@@ -1,8 +1,20 @@
1
1
  <script>import FaTimes from "svelte-icons/fa/FaTimes.svelte";
2
+ import { showFloatingToolbar } from "./menu";
3
+ import TagColors from "./tag.colors.svelte";
4
+ import { onMount } from "svelte";
2
5
  export let name;
3
6
  export let color;
4
7
  export let onRemove = void 0;
8
+ export let onColor = void 0;
5
9
  export let s = "sm";
10
+ onMount(() => {
11
+ if (onColor && rootElement) {
12
+ rootElement.addEventListener("click", showColorPicker);
13
+ rootElement.classList.add("cursor-pointer");
14
+ }
15
+ return () => {
16
+ };
17
+ });
6
18
  let pr = onRemove ? "pr-1" : "pr-2";
7
19
  let font;
8
20
  let x_size;
@@ -20,21 +32,39 @@ switch (s) {
20
32
  x_size = "ml-3 sm:ml-1 mt-0.5 sm:mt-1 w-3 sm:w-2 h-3 sm:h-2";
21
33
  break;
22
34
  }
35
+ let rootElement;
36
+ let colorPicker = null;
37
+ function showColorPicker(e) {
38
+ const rect = rootElement.getBoundingClientRect();
39
+ colorPicker = showFloatingToolbar(rect, TagColors, {
40
+ onSelect: onSelectColor
41
+ });
42
+ }
43
+ function onSelectColor(color2) {
44
+ onColor(name, color2);
45
+ colorPicker?.hide();
46
+ }
23
47
  </script>
24
48
 
25
- <div class="mt-1 pl-2 {pr} rounded text-white flex flex-row" style="background-color:{color}">
26
- <div class="{font}">{name}</div>
27
- {#if onRemove}
28
- <div class="no-print inline-block {x_size} hover:cursor-pointer"
29
- on:click={onRemove}><FaTimes/></div>
30
- {/if}
49
+ <div
50
+ class="mt-1 pl-2 {pr} rounded text-white flex flex-row {color}"
51
+
52
+ bind:this={rootElement}>
53
+ <div class={font}>{name}</div>
54
+ {#if onRemove}
55
+ <div
56
+ class="no-print inline-block {x_size} hover:cursor-pointer"
57
+ on:click|stopPropagation={onRemove}>
58
+ <FaTimes />
59
+ </div>
60
+ {/if}
31
61
  </div>
32
62
 
33
63
  <style>
34
- @media print
35
- {
36
- .no-print, .no-print *{
37
- display: none !important;
38
- }
39
- }
40
- </style>
64
+ @media print {
65
+ .no-print,
66
+ .no-print * {
67
+ display: none !important;
68
+ }
69
+ }
70
+ </style>
@@ -4,6 +4,7 @@ declare const __propDef: {
4
4
  name: string;
5
5
  color: string;
6
6
  onRemove?: any | undefined;
7
+ onColor?: any | undefined;
7
8
  s?: string | undefined;
8
9
  };
9
10
  events: {
@@ -12,7 +12,8 @@ export let a = "";
12
12
  export let context = "";
13
13
  export let typename = "";
14
14
  export let onSelect = void 0;
15
- export let onCreate = void 0;
15
+ export let onUpdateAllTags = void 0;
16
+ export let canChangeColor = false;
16
17
  export let compact = true;
17
18
  export let inContext = "";
18
19
  export let pushChangesImmediately = true;
@@ -110,7 +111,26 @@ function onNewTagCreated(key, name) {
110
111
  globalTagsTable = decomposeTags(globalTags);
111
112
  tagsTable = decomposeTags(tags, globalTagsTable);
112
113
  applyChange();
113
- onCreate(globalTags);
114
+ onUpdateAllTags(globalTags);
115
+ }
116
+ function onColorizeTag(name, color) {
117
+ let globalTags = getGlobalTags();
118
+ globalTagsTable = decomposeTags(globalTags);
119
+ const srcGlobalTag = globalTagsTable.find((i) => i.label == name);
120
+ srcGlobalTag.color = color;
121
+ tagsTable = decomposeTags(tags, globalTagsTable);
122
+ const srcTag = tagsTable.find((i) => i.label == name);
123
+ srcTag.color = color;
124
+ globalTags = "";
125
+ for (let i = 0; i < globalTagsTable.length; i++) {
126
+ const tag = globalTagsTable[i];
127
+ if (tag.color)
128
+ globalTags += `#${tag.label}:${tag.color} `;
129
+ else
130
+ globalTags += `#${tag.label} `;
131
+ }
132
+ applyChange();
133
+ onUpdateAllTags(globalTags);
114
134
  }
115
135
  function decomposeTags(tags2, referenceTable = void 0) {
116
136
  let table = [];
@@ -135,8 +155,10 @@ function decomposeTags(tags2, referenceTable = void 0) {
135
155
  color = referenceItem.color;
136
156
  }
137
157
  if (!color)
138
- color = "DarkGray";
158
+ color = "bg-stone-400";
139
159
  }
160
+ if (!color.startsWith("bg-"))
161
+ color = "bg-stone-400";
140
162
  table.push({
141
163
  label,
142
164
  color
@@ -175,7 +197,8 @@ switch (s) {
175
197
  {#each tagsTable as tag}
176
198
  {#if isEditable}
177
199
  <Tag name={tag.label} color={tag.color} {s}
178
- onRemove={(e) => {onRemoveTag(tag.label)}}/>
200
+ onRemove={(e) => {onRemoveTag(tag.label)}}
201
+ onColor={canChangeColor ? onColorizeTag : null}/>
179
202
  {:else}
180
203
  <Tag name={tag.label} color={tag.color} {s}/>
181
204
  {/if}
@@ -9,7 +9,8 @@ declare const __propDef: {
9
9
  context?: string | undefined;
10
10
  typename?: string | undefined;
11
11
  onSelect?: any | undefined;
12
- onCreate?: any | undefined;
12
+ onUpdateAllTags?: any | undefined;
13
+ canChangeColor?: boolean | undefined;
13
14
  compact?: boolean | undefined;
14
15
  inContext?: string | undefined;
15
16
  pushChangesImmediately?: boolean | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@humandialog/forms.svelte",
3
- "version": "0.5.8",
3
+ "version": "0.5.9",
4
4
  "description": "Basic Svelte UI components for Object Reef applications",
5
5
  "devDependencies": {
6
6
  "@playwright/test": "^1.28.1",
@@ -114,6 +114,7 @@
114
114
  "./components/table/item.svelte": "./components/table/item.svelte",
115
115
  "./components/table/table.svelte": "./components/table/table.svelte",
116
116
  "./components/table/table": "./components/table/table.js",
117
+ "./components/tag.colors.svelte": "./components/tag.colors.svelte",
117
118
  "./components/tag.svelte": "./components/tag.svelte",
118
119
  "./components/tags.svelte": "./components/tags.svelte",
119
120
  "./components/textarea.ltop.svelte": "./components/textarea.ltop.svelte",
package/page.svelte CHANGED
@@ -18,7 +18,7 @@
18
18
  export let focused_only = false;
19
19
  export let inContext = '';
20
20
  export let cl =
21
- 'w-full h-full flex flex-col dark:bg-stone-800 overflow-y-hidden overflow-x-hidden py-1 px-1 border-0'; // border-green-500
21
+ 'w-full flex flex-col bg-white dark:bg-stone-900 overflow-x-hidden py-1 px-1 border-0'; // border-green-500
22
22
  export let c = '';
23
23
 
24
24
  export let toolbarOperations = undefined;