@cloudparker/moldex.js 0.0.68 → 0.0.69

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.
@@ -26,7 +26,7 @@ export declare function openAlertDialog(params?: DialogProps & {
26
26
  export declare function openDeleteConfirmDialog(params?: DialogProps & {
27
27
  msg?: string;
28
28
  }): Promise<unknown>;
29
- export declare function openPickerDialog<R>({ items, value, multiple, hasCheckbox, hasArrow, ...params }: DialogProps & PickerDialogProps): Promise<R>;
29
+ export declare function openPickerDialog<R>({ items, value, multiple, hasCheckbox, hasArrow, maxlength, maxlengthMsg, identityFieldName, titleFieldName, searchFieldName, subtitleFieldName, ...params }: DialogProps & PickerDialogProps): Promise<R>;
30
30
  export declare function openTextFieldDialog({ title, value, label, name, maxlength, fieldClassName, autofocus, required, appearance, size, floatingLabel, ...params }?: DialogProps & InputFieldProps & {
31
31
  fieldClassName?: string;
32
32
  }): Promise<unknown>;
@@ -52,6 +52,7 @@ export declare function openLoadingDialog({ msg, loadingDialogContainerClassName
52
52
  postData: (data: any) => void;
53
53
  setHeaderSnippet: (snippet: import("svelte").Snippet) => void;
54
54
  setFooterSnippet: (snippet: import("svelte").Snippet) => void;
55
+ setDialogTitle: (dialogTitle: string) => void;
55
56
  } & {
56
57
  $set?: any;
57
58
  $on?: any;
@@ -70,7 +70,7 @@ export async function openDeleteConfirmDialog(params = {}) {
70
70
  footerOkButtonClassName: 'bg-red-500 hover:bg-red-700 focus:bg-red-700'
71
71
  });
72
72
  }
73
- export async function openPickerDialog({ items, value, multiple, hasCheckbox = true, hasArrow, ...params }) {
73
+ export async function openPickerDialog({ items, value, multiple, hasCheckbox = true, hasArrow, maxlength, maxlengthMsg, identityFieldName, titleFieldName, searchFieldName, subtitleFieldName, ...params }) {
74
74
  if (hasArrow) {
75
75
  multiple = false;
76
76
  hasCheckbox = false;
@@ -83,13 +83,20 @@ export async function openPickerDialog({ items, value, multiple, hasCheckbox = t
83
83
  multiple,
84
84
  hasCheckbox,
85
85
  hasArrow,
86
+ maxlength,
87
+ maxlengthMsg,
88
+ identityFieldName,
89
+ titleFieldName,
90
+ searchFieldName,
91
+ subtitleFieldName,
86
92
  },
87
93
  hasHeader: true,
94
+ hasTitle: true,
88
95
  hasHeaderBack: isMobileScreen(),
89
96
  hasHeaderClose: !isMobileScreen(),
90
97
  footerOkButtonLable: 'Select',
91
98
  footerClassName: 'border-t',
92
- title: 'Picker',
99
+ title: 'Pick',
93
100
  ...params,
94
101
  hasFooter: multiple,
95
102
  hasFooterOkButton: multiple,
@@ -64,7 +64,8 @@ let dialogExports = {
64
64
  setOnOkClick,
65
65
  setOnData,
66
66
  setHeaderSnippet,
67
- setFooterSnippet
67
+ setFooterSnippet,
68
+ setDialogTitle
68
69
  };
69
70
  let isPlaced = $state(false);
70
71
  let isOpened = $state(false);
@@ -87,6 +88,7 @@ let screenSizeClassNameMap = {
87
88
  xl: xlSizeClassName,
88
89
  full: fullSizeClassName
89
90
  };
91
+ let customTitle = $state("");
90
92
  export function toggleDialog() {
91
93
  if (isOpened) {
92
94
  closeDialog();
@@ -138,6 +140,9 @@ export function setHeaderSnippet(snippet) {
138
140
  export function setFooterSnippet(snippet) {
139
141
  footerSnippet = snippet;
140
142
  }
143
+ export function setDialogTitle(dialogTitle) {
144
+ customTitle = dialogTitle;
145
+ }
141
146
  function handleBackdropClick() {
142
147
  if (cancelable) {
143
148
  closeDialog();
@@ -209,7 +214,7 @@ $effect(() => {
209
214
  <div class="py-2 flex-grow">
210
215
  {#if hasTitle}
211
216
  <div class="text-xl text-base-800 dark:text-base-300 {titleClassName}">
212
- {title || ''}
217
+ {@html customTitle || title || ''}
213
218
  </div>
214
219
  {/if}
215
220
  {#if hasSubtitle}
@@ -63,6 +63,7 @@ export type DialogExports = {
63
63
  setOnData: (listener: (data: any) => void) => void;
64
64
  setHeaderSnippet: (snippet: Snippet) => void;
65
65
  setFooterSnippet: (snippet: Snippet) => void;
66
+ setDialogTitle: (title: string) => void;
66
67
  };
67
68
  import { type Snippet } from 'svelte';
68
69
  import '../../../../../tailwind.css';
@@ -94,6 +95,7 @@ declare const Dialog: $$__sveltets_2_IsomorphicComponent<DialogProps, {
94
95
  postData: (data: any) => void;
95
96
  setHeaderSnippet: (snippet: Snippet) => void;
96
97
  setFooterSnippet: (snippet: Snippet) => void;
98
+ setDialogTitle: (dialogTitle: string) => void;
97
99
  }, "">;
98
100
  type Dialog = InstanceType<typeof Dialog>;
99
101
  export default Dialog;
@@ -1,6 +1,7 @@
1
1
  <script lang="ts" module></script>
2
2
 
3
- <script lang="ts">import ButtonListItem from "../../../button/components/button-list-item/button-list-item.svelte";
3
+ <script lang="ts">import { showToast } from "../../../../../services";
4
+ import ButtonListItem from "../../../button/components/button-list-item/button-list-item.svelte";
4
5
  import ButtonSearch from "../../../button/components/button-search/button-search.svelte";
5
6
  let {
6
7
  value,
@@ -12,10 +13,13 @@ let {
12
13
  searchFieldName = "name",
13
14
  hasCheckbox,
14
15
  hasArrow,
16
+ maxlength = 0,
17
+ maxlengthMsg = "Selection limit reached!",
15
18
  closeDialog,
16
19
  setResult,
17
20
  setOnOkClick,
18
- setHeaderSnippet
21
+ setHeaderSnippet,
22
+ setDialogTitle
19
23
  } = $props();
20
24
  let selected = $state({ items: {} });
21
25
  let searchText = $state("");
@@ -62,7 +66,18 @@ function handleItemClick(ev, item, index) {
62
66
  if (selected.items[itemId]) {
63
67
  delete selected.items[itemId];
64
68
  } else {
65
- selected.items[itemId] = itemId;
69
+ let itemLength2 = Object.keys(selected.items).length;
70
+ if (maxlength > 0 && itemLength2 >= maxlength) {
71
+ showToast({ msg: maxlengthMsg });
72
+ } else {
73
+ selected.items[itemId] = itemId;
74
+ }
75
+ }
76
+ let itemLength = Object.keys(selected.items).length;
77
+ if (itemLength) {
78
+ setDialogTitle(`Selected (${itemLength})`);
79
+ } else {
80
+ setDialogTitle("");
66
81
  }
67
82
  }
68
83
  }
@@ -7,13 +7,9 @@ export type PickerDialogProps = {
7
7
  searchFieldName?: string;
8
8
  subtitleFieldName?: string;
9
9
  hasCheckbox?: boolean;
10
- checkboxCheckIconPath?: string;
11
- checkboxUncheckIconPath?: string;
12
- checkboxCheckIconClassName?: string;
13
- checkboxUncheckIconClassName?: string;
14
10
  hasArrow?: boolean;
15
- arrowIconPath?: string;
16
- arrowIconClassName?: string;
11
+ maxlength?: number;
12
+ maxlengthMsg?: string;
17
13
  };
18
14
  import type { DialogExports } from '../dialog/dialog.svelte';
19
15
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudparker/moldex.js",
3
- "version": "0.0.68",
3
+ "version": "0.0.69",
4
4
  "author": "cloudparker.com",
5
5
  "license": "MIT",
6
6
  "keywords": [