diff --git a/package.json b/package.json index 5a2e77773d..8dbad0c6a6 100644 --- a/package.json +++ b/package.json @@ -24,9 +24,9 @@ "@ai-sdk/svelte": "^1.1.24", "@appwrite.io/console": "https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@fe3277e", "@appwrite.io/pink-icons": "0.25.0", - "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@46f65c7", + "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bbbc850", "@appwrite.io/pink-legacy": "^1.0.3", - "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@46f65c7", + "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@bbbc850", "@faker-js/faker": "^9.9.0", "@popperjs/core": "^2.11.8", "@sentry/sveltekit": "^8.38.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 82b9a6afc8..1afc224fcd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,14 +18,14 @@ importers: specifier: 0.25.0 version: 0.25.0 '@appwrite.io/pink-icons-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@46f65c7 - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@46f65c7(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bbbc850 + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bbbc850(svelte@5.25.3) '@appwrite.io/pink-legacy': specifier: ^1.0.3 version: 1.0.3 '@appwrite.io/pink-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@46f65c7 - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@46f65c7(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@bbbc850 + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@bbbc850(svelte@5.25.3) '@faker-js/faker': specifier: ^9.9.0 version: 9.9.0 @@ -269,8 +269,8 @@ packages: peerDependencies: svelte: ^4.0.0 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@46f65c7': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@46f65c7} + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bbbc850': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bbbc850} version: 2.0.0-RC.1 peerDependencies: svelte: ^4.0.0 @@ -284,8 +284,8 @@ packages: '@appwrite.io/pink-legacy@1.0.3': resolution: {integrity: sha512-GGde5fmPhs+s6/3aFeMPc/kKADG/gTFkYQSy6oBN8pK0y0XNCLrZZgBv+EBbdhwdtqVEWXa0X85Mv9w7jcIlwQ==} - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@46f65c7': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@46f65c7} + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@bbbc850': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@bbbc850} version: 2.0.0-RC.2 peerDependencies: svelte: ^4.0.0 @@ -3709,7 +3709,7 @@ snapshots: dependencies: svelte: 5.25.3 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@46f65c7(svelte@5.25.3)': + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bbbc850(svelte@5.25.3)': dependencies: svelte: 5.25.3 @@ -3722,7 +3722,7 @@ snapshots: '@appwrite.io/pink-icons': 1.0.0 the-new-css-reset: 1.11.3 - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@46f65c7(svelte@5.25.3)': + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@bbbc850(svelte@5.25.3)': dependencies: '@appwrite.io/pink-icons-svelte': 2.0.0-RC.1(svelte@5.25.3) '@floating-ui/dom': 1.6.13 diff --git a/src/lib/components/filters/parsedTagList.svelte b/src/lib/components/filters/parsedTagList.svelte index edbd5161e0..56efe2fb45 100644 --- a/src/lib/components/filters/parsedTagList.svelte +++ b/src/lib/components/filters/parsedTagList.svelte @@ -1,35 +1,285 @@ -{#if $parsedTags?.length} - + + {#if $parsedTags?.length} {#each $parsedTags as tag (tag.tag)} - { - const t = $tags.filter((t) => t.tag.includes(tag.tag.split(' ')[0])); - t.forEach((t) => (t ? queries.removeFilter(t) : null)); - queries.apply(); - parsedTags.update((tags) => tags.filter((t) => t.tag !== tag.tag)); - }}> - {#key tag.tag} - {tag.tag} - {/key} - - + + {@const parts = parseTagParts(tag.tag)} + {@const property = firstBoldText(tag.tag)} + {#each parts as part} + + + + {#if part.operator} + {part.text} + {:else} + {capitalize(part.text)} + {/if} + + + {#if property} + {@const filter = getFilterFor(property)} + {#if filter} + {@const isArray = filter?.array} + {@const selectedArray = Array.isArray(tag.value) + ? tag.value + : []} + {#each filter.options as option (filter.title + option.value + option.label)} + + { + if (isArray) { + const exists = + selectedArray.includes( + option.value + ); + const next = exists + ? selectedArray.filter( + (v) => + v !== option.value + ) + : [ + ...selectedArray, + option.value + ]; + addFilterAndApply( + filter.id, + filter.title, + filter.operator, + null, + next, + $columns, + '' + ); + } else { + addFilterAndApply( + filter.id, + filter.title, + filter.operator, + option.value, + [], + $columns, + '' + ); + } + }}> + + {#if isArray} + + {/if} + {capitalize(option.label)} + + + + {/each} + {/if} + {/if} + + + + {/each} + + { + const t = $tags.filter((t) => + t.tag.includes(tag.tag.split(' ')[0]) + ); + t.forEach((t) => (t ? queries.removeFilter(t) : null)); + queries.apply(); + parsedTags.update((tags) => tags.filter((t) => t.tag !== tag.tag)); + }}> + + + {tag?.value?.toString()} {/each} + {/if} + + + {#key placeholderVersion} + {#if placeholders?.length} + {#each placeholders as filter (filter.title + filter.id)} + + + + + {capitalize(filter.title)} + + { + e.stopPropagation(); + if (!hiddenPlaceholders.includes(filter.title)) { + hiddenPlaceholders.push(filter.title); + } + placeholderVersion++; + }}> + + + + + {#if filter.options} + {#each filter.options as option (filter.title + option.value + option.label)} + + { + addFilterAndApply( + filter.id, + filter.title, + filter.operator, + filter?.array ? null : option.value, + filter?.array ? [option.value] : [], + $columns, + '' + ); + }}> + {capitalize(option.label)} + + + {/each} + {/if} + + + + {/each} + {/if} + {/key} + + {#if filterCols?.length} + + {/if} + + {#if $parsedTags?.length} - -{/if} + {/if} + diff --git a/src/lib/components/filters/quickFilters.svelte b/src/lib/components/filters/quickFilters.svelte index 76bbf90c5f..2e3bb47ef3 100644 --- a/src/lib/components/filters/quickFilters.svelte +++ b/src/lib/components/filters/quickFilters.svelte @@ -22,9 +22,12 @@ - {#each filterCols.filter((f) => f?.options) as filter (filter.title + filter.id)} diff --git a/src/lib/layout/responsiveContainerHeader.svelte b/src/lib/layout/responsiveContainerHeader.svelte index 29eed0f56c..f5fe2d7224 100644 --- a/src/lib/layout/responsiveContainerHeader.svelte +++ b/src/lib/layout/responsiveContainerHeader.svelte @@ -1,7 +1,6 @@