@pitcher/canvas-ui 2025.12.12-75200 → 2025.12.15-135132-beta

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/canvas-ui.css CHANGED
@@ -551,13 +551,13 @@ swiper-container::part(pagination) {
551
551
  line-height: 20px;
552
552
  letter-spacing: 0.25px;
553
553
  color: var(--ad430d74);
554
- }[data-v-338ca99c] .ais-SearchBox {
554
+ }[data-v-07e48e19] .ais-SearchBox {
555
555
  margin: 0;
556
556
  }
557
- [data-v-338ca99c] .ais-SearchBox-submit,[data-v-338ca99c] .ais-SearchBox-reset {
557
+ [data-v-07e48e19] .ais-SearchBox-submit,[data-v-07e48e19] .ais-SearchBox-reset {
558
558
  display: none;
559
559
  }
560
- .admin-search[data-v-338ca99c] .ais-SearchBox-reset {
560
+ .admin-search[data-v-07e48e19] .ais-SearchBox-reset {
561
561
  display: block !important;
562
562
  position: absolute !important;
563
563
  right: 12px !important;
@@ -571,17 +571,17 @@ swiper-container::part(pagination) {
571
571
  font-size: 16px !important;
572
572
  z-index: 10 !important;
573
573
  }
574
- .admin-search[data-v-338ca99c] .ais-SearchBox-reset:hover {
574
+ .admin-search[data-v-07e48e19] .ais-SearchBox-reset:hover {
575
575
  color: var(--p-text2) !important;
576
576
  }
577
- .admin-search[data-v-338ca99c] .ais-SearchBox-reset:focus {
577
+ .admin-search[data-v-07e48e19] .ais-SearchBox-reset:focus {
578
578
  outline: none !important;
579
579
  color: var(--p-primary) !important;
580
580
  }
581
- .admin-search[data-v-338ca99c] .ais-SearchBox-input {
581
+ .admin-search[data-v-07e48e19] .ais-SearchBox-input {
582
582
  padding-right: 40px !important;
583
583
  }
584
- [data-v-338ca99c] .ais-SearchBox-input {
584
+ [data-v-07e48e19] .ais-SearchBox-input {
585
585
  width: 100%;
586
586
  padding: 12px 16px 12px 40px;
587
587
  border: 1px solid var(--p-primary4);
@@ -590,39 +590,39 @@ swiper-container::part(pagination) {
590
590
  background-color: var(--p-base);
591
591
  transition: border-color 0.2s ease;
592
592
  }
593
- [data-v-338ca99c] .ais-SearchBox-input:focus {
593
+ [data-v-07e48e19] .ais-SearchBox-input:focus {
594
594
  outline: none;
595
595
  border-color: var(--p-primary);
596
596
  box-shadow: 0 0 0 3px var(--p-primary5);
597
597
  }
598
- [data-v-338ca99c] .ais-SearchBox-input::placeholder {
598
+ [data-v-07e48e19] .ais-SearchBox-input::placeholder {
599
599
  color: var(--p-text3);
600
600
  font-size: 14px;
601
601
  }
602
- .overflow-y-auto[data-v-338ca99c] {
602
+ .overflow-y-auto[data-v-07e48e19] {
603
603
  scrollbar-width: thin;
604
604
  scrollbar-color: var(--p-border2) var(--p-surface2);
605
605
  }
606
- .overflow-y-auto[data-v-338ca99c]::-webkit-scrollbar {
606
+ .overflow-y-auto[data-v-07e48e19]::-webkit-scrollbar {
607
607
  width: 6px;
608
608
  }
609
- .overflow-y-auto[data-v-338ca99c]::-webkit-scrollbar-track {
609
+ .overflow-y-auto[data-v-07e48e19]::-webkit-scrollbar-track {
610
610
  background: var(--p-surface2);
611
611
  }
612
- .overflow-y-auto[data-v-338ca99c]::-webkit-scrollbar-thumb {
612
+ .overflow-y-auto[data-v-07e48e19]::-webkit-scrollbar-thumb {
613
613
  background-color: var(--p-border2);
614
614
  border-radius: 3px;
615
615
  }
616
- .overflow-y-auto[data-v-338ca99c]::-webkit-scrollbar-thumb:hover {
616
+ .overflow-y-auto[data-v-07e48e19]::-webkit-scrollbar-thumb:hover {
617
617
  background-color: var(--p-text3);
618
618
  }
619
- button[data-v-338ca99c]:hover {
619
+ button[data-v-07e48e19]:hover {
620
620
  transition: all 0.2s ease;
621
621
  }
622
- button[data-v-338ca99c]:focus {
622
+ button[data-v-07e48e19]:focus {
623
623
  outline: none;
624
624
  }
625
- [data-v-338ca99c] mark,[data-v-338ca99c] em {
625
+ [data-v-07e48e19] mark,[data-v-07e48e19] em {
626
626
  font-weight: bold;
627
627
  font-style: normal;
628
628
  }
@@ -820,7 +820,7 @@ button[data-v-338ca99c]:focus {
820
820
  .c-virtual-table__footer,
821
821
  .c-virtual-table__content {
822
822
  border-top: 1px solid var(--4cc1f1b0);
823
- }.c-search-filter__popover[data-v-06d0d22c] {
823
+ }.c-search-filter__popover[data-v-14ceb850] {
824
824
  box-shadow: 0px 7px 24px 0px rgba(0, 0, 0, 0.1);
825
825
  }.c-select-filter__popover[data-v-69bc4c9f] {
826
826
  box-shadow: 0px 7px 24px 0px rgba(0, 0, 0, 0.1);
package/canvas-ui.js CHANGED
@@ -80326,7 +80326,8 @@ function useMetadataSearch(options = {}) {
80326
80326
  threshold = void 0,
80327
80327
  // only used for fuzzy search
80328
80328
  fetchAllUnique = false,
80329
- contentType = void 0
80329
+ contentType = void 0,
80330
+ tagsNotIn = void 0
80330
80331
  } = {}) {
80331
80332
  if (!metadataSearch || !searchTerm) {
80332
80333
  return [];
@@ -80346,7 +80347,8 @@ function useMetadataSearch(options = {}) {
80346
80347
  searchMode,
80347
80348
  threshold,
80348
80349
  fetch_all_unique: fetchAllUnique,
80349
- content_type: contentType
80350
+ content_type: contentType,
80351
+ tags_not_in: tagsNotIn?.length ? tagsNotIn.join(",") : void 0
80350
80352
  });
80351
80353
  const autocompleteOptions = [];
80352
80354
  const addedValues = /* @__PURE__ */ new Set();
@@ -80396,7 +80398,8 @@ function useMetadataSearch(options = {}) {
80396
80398
  key = "search_data",
80397
80399
  ownerId = null,
80398
80400
  limit = 100,
80399
- and = []
80401
+ and = [],
80402
+ tagsNotIn = void 0
80400
80403
  } = {}) {
80401
80404
  if (!entity) {
80402
80405
  return { popular: [], all: [] };
@@ -80416,7 +80419,8 @@ function useMetadataSearch(options = {}) {
80416
80419
  include_draft_values: includeDraftValues,
80417
80420
  owner_id: ownerId?.toString(),
80418
80421
  page_size: limit,
80419
- and
80422
+ and,
80423
+ tags__not_in: tagsNotIn?.length ? tagsNotIn.join(",") : void 0
80420
80424
  });
80421
80425
  if (response?.results && Array.isArray(response.results)) {
80422
80426
  return {
@@ -94608,7 +94612,7 @@ const _hoisted_14$h = {
94608
94612
  class: "flex items-center ml-2"
94609
94613
  };
94610
94614
  const _hoisted_15$f = {
94611
- key: 0,
94615
+ key: 2,
94612
94616
  class: "flex items-center ml-2"
94613
94617
  };
94614
94618
  const _hoisted_16$e = { class: "flex flex-col w-full flex-1 min-h-0" };
@@ -94993,7 +94997,7 @@ const _sfc_main$5K = /* @__PURE__ */ defineComponent({
94993
94997
  hasSearchCompleted.value = false;
94994
94998
  searchError.value = null;
94995
94999
  try {
94996
- const ALLOWED_CANVAS_TYPES = ["saved_canvas", "template", "section", "block"];
95000
+ const ALLOWED_CANVAS_TYPES = ["saved_canvas", "template", "product_template", "section", "block"];
94997
95001
  const ALLOWED_FILE_TYPES = [
94998
95002
  "folder",
94999
95003
  "pdf",
@@ -95217,6 +95221,8 @@ const _sfc_main$5K = /* @__PURE__ */ defineComponent({
95217
95221
  return t("canvasUI.CAlgoliaSearch.canvasFilters.saved");
95218
95222
  case "template":
95219
95223
  return t("canvasUI.CAlgoliaSearch.canvasFilters.templates");
95224
+ case "product_template":
95225
+ return t("canvasUI.CAlgoliaSearch.canvasFilters.productTemplates");
95220
95226
  case "section":
95221
95227
  return t("canvasUI.CAlgoliaSearch.canvasFilters.products");
95222
95228
  case "block":
@@ -95438,7 +95444,7 @@ const _sfc_main$5K = /* @__PURE__ */ defineComponent({
95438
95444
  show: "",
95439
95445
  verticalAlignment: "top",
95440
95446
  "z-index": _ctx.zIndex,
95441
- "onUpdate:show": _cache[15] || (_cache[15] = ($event) => emit("toggleSearch", $event))
95447
+ "onUpdate:show": _cache[16] || (_cache[16] = ($event) => emit("toggleSearch", $event))
95442
95448
  }, {
95443
95449
  default: withCtx(() => [
95444
95450
  createElementVNode("div", {
@@ -95447,7 +95453,7 @@ const _sfc_main$5K = /* @__PURE__ */ defineComponent({
95447
95453
  }, [
95448
95454
  createElementVNode("div", _hoisted_1$4w, [
95449
95455
  createElementVNode("div", _hoisted_2$3j, [
95450
- _cache[16] || (_cache[16] = createElementVNode("div", { class: "absolute left-2.5 top-1/2 transform -translate-y-1/2 z-10" }, [
95456
+ _cache[17] || (_cache[17] = createElementVNode("div", { class: "absolute left-2.5 top-1/2 transform -translate-y-1/2 z-10" }, [
95451
95457
  createElementVNode("i", { class: "c-icon far fa-search text-gray-400 text-l" })
95452
95458
  ], -1)),
95453
95459
  withDirectives(createElementVNode("input", {
@@ -95628,14 +95634,15 @@ const _sfc_main$5K = /* @__PURE__ */ defineComponent({
95628
95634
  _: 1
95629
95635
  }, 8, ["show"]),
95630
95636
  hasActiveFilters.value ? (openBlock(), createElementBlock("div", _hoisted_14$h, [
95631
- _cache[17] || (_cache[17] = createElementVNode("div", { class: "h-6 w-px bg-gray-300 mx-2" }, null, -1)),
95637
+ _cache[18] || (_cache[18] = createElementVNode("div", { class: "h-6 w-px bg-gray-300 mx-2" }, null, -1)),
95632
95638
  createElementVNode("span", {
95633
95639
  class: "text-sm text-gray-600 hover:text-gray-800 font-normal cursor-pointer",
95634
95640
  onClick: clearAllFilters
95635
95641
  }, toDisplayString(unref(t)("canvasUI.CAlgoliaSearch.filters.clear")), 1)
95636
95642
  ])) : createCommentVNode("", true)
95637
95643
  ], 64)) : searchType.value === "canvases" ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
95638
- createVNode(unref(NTag), {
95644
+ !_ctx.isAdmin ? (openBlock(), createBlock(unref(NTag), {
95645
+ key: 0,
95639
95646
  class: "select-none cursor-pointer",
95640
95647
  style: normalizeStyle({
95641
95648
  "--n-color": selectedCanvasFilters.value.includes("saved_canvas") ? "var(--p-primary5)" : "var(--p-primary6)",
@@ -95651,7 +95658,7 @@ const _sfc_main$5K = /* @__PURE__ */ defineComponent({
95651
95658
  createElementVNode("span", null, toDisplayString(unref(t)("canvasUI.CAlgoliaSearch.canvasFilters.saved")), 1)
95652
95659
  ]),
95653
95660
  _: 1
95654
- }, 8, ["style"]),
95661
+ }, 8, ["style"])) : createCommentVNode("", true),
95655
95662
  createVNode(unref(NTag), {
95656
95663
  class: "select-none cursor-pointer",
95657
95664
  style: normalizeStyle({
@@ -95669,6 +95676,24 @@ const _sfc_main$5K = /* @__PURE__ */ defineComponent({
95669
95676
  ]),
95670
95677
  _: 1
95671
95678
  }, 8, ["style"]),
95679
+ _ctx.isAdmin ? (openBlock(), createBlock(unref(NTag), {
95680
+ key: 1,
95681
+ class: "select-none cursor-pointer",
95682
+ style: normalizeStyle({
95683
+ "--n-color": selectedCanvasFilters.value.includes("product_template") ? "var(--p-primary5)" : "var(--p-primary6)",
95684
+ "--n-border": "1px solid var(--p-primary5)",
95685
+ "--n-height": "28px"
95686
+ }),
95687
+ themeOverrides: {
95688
+ borderRadius: "4px"
95689
+ },
95690
+ onClick: _cache[11] || (_cache[11] = ($event) => toggleCanvasFilter("product_template"))
95691
+ }, {
95692
+ default: withCtx(() => [
95693
+ createElementVNode("span", null, toDisplayString(unref(t)("canvasUI.CAlgoliaSearch.canvasFilters.productTemplates")), 1)
95694
+ ]),
95695
+ _: 1
95696
+ }, 8, ["style"])) : createCommentVNode("", true),
95672
95697
  createVNode(unref(NTag), {
95673
95698
  class: "select-none cursor-pointer",
95674
95699
  style: normalizeStyle({
@@ -95679,7 +95704,7 @@ const _sfc_main$5K = /* @__PURE__ */ defineComponent({
95679
95704
  themeOverrides: {
95680
95705
  borderRadius: "4px"
95681
95706
  },
95682
- onClick: _cache[11] || (_cache[11] = ($event) => toggleCanvasFilter("section"))
95707
+ onClick: _cache[12] || (_cache[12] = ($event) => toggleCanvasFilter("section"))
95683
95708
  }, {
95684
95709
  default: withCtx(() => [
95685
95710
  createElementVNode("span", null, toDisplayString(unref(t)("canvasUI.CAlgoliaSearch.canvasFilters.products")), 1)
@@ -95696,7 +95721,7 @@ const _sfc_main$5K = /* @__PURE__ */ defineComponent({
95696
95721
  themeOverrides: {
95697
95722
  borderRadius: "4px"
95698
95723
  },
95699
- onClick: _cache[12] || (_cache[12] = ($event) => toggleCanvasFilter("block"))
95724
+ onClick: _cache[13] || (_cache[13] = ($event) => toggleCanvasFilter("block"))
95700
95725
  }, {
95701
95726
  default: withCtx(() => [
95702
95727
  createElementVNode("span", null, toDisplayString(unref(t)("canvasUI.CAlgoliaSearch.canvasFilters.blocks")), 1)
@@ -95704,7 +95729,7 @@ const _sfc_main$5K = /* @__PURE__ */ defineComponent({
95704
95729
  _: 1
95705
95730
  }, 8, ["style"]),
95706
95731
  selectedCanvasFilters.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_15$f, [
95707
- _cache[18] || (_cache[18] = createElementVNode("div", { class: "h-6 w-px bg-gray-300 mx-2" }, null, -1)),
95732
+ _cache[19] || (_cache[19] = createElementVNode("div", { class: "h-6 w-px bg-gray-300 mx-2" }, null, -1)),
95708
95733
  createElementVNode("span", {
95709
95734
  class: "text-sm text-gray-600 hover:text-gray-800 font-normal cursor-pointer",
95710
95735
  onClick: clearCanvasFilters
@@ -95734,7 +95759,7 @@ const _sfc_main$5K = /* @__PURE__ */ defineComponent({
95734
95759
  }), 128))
95735
95760
  ]),
95736
95761
  recentlyOpenedDocs.value.length > 0 ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
95737
- _cache[19] || (_cache[19] = createElementVNode("hr", { class: "border-0 h-px bg-gray-200 mt-2 mb-3 w-full" }, null, -1)),
95762
+ _cache[20] || (_cache[20] = createElementVNode("hr", { class: "border-0 h-px bg-gray-200 mt-2 mb-3 w-full" }, null, -1)),
95738
95763
  createElementVNode("div", _hoisted_21$7, [
95739
95764
  createElementVNode("span", _hoisted_22$5, toDisplayString(unref(t)("canvasUI.components.fileViewer.recentlyOpened")), 1)
95740
95765
  ]),
@@ -95844,7 +95869,7 @@ const _sfc_main$5K = /* @__PURE__ */ defineComponent({
95844
95869
  filteredContentFiles.value.length > 5 ? (openBlock(), createElementBlock("div", _hoisted_43$4, [
95845
95870
  createElementVNode("span", {
95846
95871
  class: "text-sm text-gray-600 hover:text-gray-800 font-bold flex items-center cursor-pointer",
95847
- onClick: _cache[13] || (_cache[13] = ($event) => searchType.value = "content")
95872
+ onClick: _cache[14] || (_cache[14] = ($event) => searchType.value = "content")
95848
95873
  }, [
95849
95874
  createTextVNode(toDisplayString(unref(t)("canvasUI.CAlgoliaSearch.actions.viewAll")) + " ", 1),
95850
95875
  createVNode(CIcon, {
@@ -95896,7 +95921,7 @@ const _sfc_main$5K = /* @__PURE__ */ defineComponent({
95896
95921
  filteredCanvasFiles.value.length > 5 ? (openBlock(), createElementBlock("div", _hoisted_54$2, [
95897
95922
  createElementVNode("span", {
95898
95923
  class: "text-sm text-gray-600 hover:text-gray-800 font-bold flex items-center cursor-pointer",
95899
- onClick: _cache[14] || (_cache[14] = ($event) => searchType.value = "canvases")
95924
+ onClick: _cache[15] || (_cache[15] = ($event) => searchType.value = "canvases")
95900
95925
  }, [
95901
95926
  createTextVNode(toDisplayString(unref(t)("canvasUI.CAlgoliaSearch.actions.viewAll")) + " ", 1),
95902
95927
  createVNode(CIcon, {
@@ -96043,7 +96068,7 @@ const _sfc_main$5K = /* @__PURE__ */ defineComponent({
96043
96068
  }
96044
96069
  });
96045
96070
 
96046
- const CAlgoliaSearch = /* @__PURE__ */ _export_sfc(_sfc_main$5K, [["__scopeId", "data-v-338ca99c"]]);
96071
+ const CAlgoliaSearch = /* @__PURE__ */ _export_sfc(_sfc_main$5K, [["__scopeId", "data-v-07e48e19"]]);
96047
96072
 
96048
96073
  const BulletListExtended = BulletList.extend({
96049
96074
  addOptions() {
@@ -100957,7 +100982,8 @@ function useFilterSuggestions(options = {}) {
100957
100982
  include_draft_values: options.includeDraftValues,
100958
100983
  owner_id: options.ownerId?.toString(),
100959
100984
  page_size: options.limit || 100,
100960
- and: constraints
100985
+ and: constraints,
100986
+ tags__not_in: options.tagsNotIn?.length ? options.tagsNotIn.join(",") : void 0
100961
100987
  });
100962
100988
  const result = {
100963
100989
  suggestions: response.results?.map((item) => ({
@@ -101049,7 +101075,8 @@ const _sfc_main$5j = /* @__PURE__ */ defineComponent({
101049
101075
  limit: { default: 100 },
101050
101076
  externalFilters: { default: () => ({}) },
101051
101077
  isDependentField: { type: Boolean, default: false },
101052
- systemFilteredIds: { default: void 0 }
101078
+ systemFilteredIds: { default: void 0 },
101079
+ tagsNotIn: { default: () => [] }
101053
101080
  },
101054
101081
  emits: ["update:modelValue", "clear"],
101055
101082
  setup(__props, { emit: __emit }) {
@@ -101075,7 +101102,8 @@ const _sfc_main$5j = /* @__PURE__ */ defineComponent({
101075
101102
  isSection: props.isSection,
101076
101103
  isTemplate: props.isTemplate,
101077
101104
  ownerId: props.ownerId,
101078
- limit: props.limit
101105
+ limit: props.limit,
101106
+ tagsNotIn: props.tagsNotIn
101079
101107
  });
101080
101108
  const { isEnabled, debouncedFetch, cleanup, isLoading } = filterSuggestions;
101081
101109
  const { handleFetch } = useMetadataSearch({ includeSearchTermAsOption: true });
@@ -101153,7 +101181,8 @@ const _sfc_main$5j = /* @__PURE__ */ defineComponent({
101153
101181
  isTemplate: props.isTemplate,
101154
101182
  key: props.filterKey,
101155
101183
  ownerId: props.ownerId,
101156
- fetchAllUnique: true
101184
+ fetchAllUnique: true,
101185
+ tagsNotIn: props.tagsNotIn
101157
101186
  });
101158
101187
  return searchResults;
101159
101188
  }
@@ -101389,7 +101418,7 @@ const _sfc_main$5j = /* @__PURE__ */ defineComponent({
101389
101418
  }
101390
101419
  });
101391
101420
 
101392
- const CSearchFilter = /* @__PURE__ */ _export_sfc(_sfc_main$5j, [["__scopeId", "data-v-06d0d22c"]]);
101421
+ const CSearchFilter = /* @__PURE__ */ _export_sfc(_sfc_main$5j, [["__scopeId", "data-v-14ceb850"]]);
101393
101422
 
101394
101423
  const _hoisted_1$4h = ["v-bind"];
101395
101424
  const _hoisted_2$38 = { class: "flex items-center gap-2 px-6 font-size-4" };
@@ -103169,7 +103198,8 @@ const _sfc_main$59 = /* @__PURE__ */ defineComponent({
103169
103198
  customFilterComponents: {},
103170
103199
  enableDependentFilters: { type: Boolean },
103171
103200
  dependentFiltersEntity: { default: "file" },
103172
- contentType: {}
103201
+ contentType: {},
103202
+ tagsNotIn: { default: () => [] }
103173
103203
  },
103174
103204
  emits: ["update:filters", "update:search", "update:searchIn"],
103175
103205
  setup(__props, { expose: __expose, emit: __emit }) {
@@ -103354,7 +103384,8 @@ const _sfc_main$59 = /* @__PURE__ */ defineComponent({
103354
103384
  searchMode: "fuzzy",
103355
103385
  threshold: 0.3,
103356
103386
  fetchAllUnique: true,
103357
- contentType: props.contentType
103387
+ contentType: props.contentType,
103388
+ tagsNotIn: props.tagsNotIn
103358
103389
  });
103359
103390
  }
103360
103391
  function onUpdateModelValue(f, value) {
@@ -103588,8 +103619,9 @@ const _sfc_main$59 = /* @__PURE__ */ defineComponent({
103588
103619
  options: f.type === "checkbox" ? unref(getFilterOptions)(f.type, f.options, f.available_values) : unref(getFilterOptions)(f.type, f.options),
103589
103620
  "owner-id": _ctx.ownerId,
103590
103621
  "system-filtered-ids": systemFilteredIds.value,
103622
+ "tags-not-in": _ctx.tagsNotIn,
103591
103623
  "onUpdate:modelValue": (v) => onUpdateDependentField(f, v)
103592
- }, null, 8, ["allow-custom-date-range", "disabled", "entity", "external-filters", "filter-key", "include-draft-values", "is-dependent-field", "is-section", "is-template", "modelValue", "multiple", "name", "numeric", "options", "owner-id", "system-filtered-ids", "onUpdate:modelValue"]);
103624
+ }, null, 8, ["allow-custom-date-range", "disabled", "entity", "external-filters", "filter-key", "include-draft-values", "is-dependent-field", "is-section", "is-template", "modelValue", "multiple", "name", "numeric", "options", "owner-id", "system-filtered-ids", "tags-not-in", "onUpdate:modelValue"]);
103593
103625
  }), 128)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
103594
103626
  (openBlock(true), createElementBlock(Fragment, null, renderList(computedCustomFilterComponents.value, (cc) => {
103595
103627
  return openBlock(), createBlock(resolveDynamicComponent(componentMap[cc.componentName]), {
@@ -103610,8 +103642,9 @@ const _sfc_main$59 = /* @__PURE__ */ defineComponent({
103610
103642
  options: cc.options ?? unref(getFilterOptions)(cc.type, cc.options),
103611
103643
  "owner-id": _ctx.ownerId,
103612
103644
  "system-filtered-ids": systemFilteredIds.value,
103645
+ "tags-not-in": _ctx.tagsNotIn,
103613
103646
  "onUpdate:modelValue": (v) => onUpdateModelValue(cc, v)
103614
- }, null, 8, ["allow-custom-date-range", "disabled", "entity", "external-filters", "filter-key", "include-draft-values", "is-custom", "is-dependent-field", "is-section", "is-template", "modelValue", "name", "numeric", "options", "owner-id", "system-filtered-ids", "onUpdate:modelValue"]);
103647
+ }, null, 8, ["allow-custom-date-range", "disabled", "entity", "external-filters", "filter-key", "include-draft-values", "is-custom", "is-dependent-field", "is-section", "is-template", "modelValue", "name", "numeric", "options", "owner-id", "system-filtered-ids", "tags-not-in", "onUpdate:modelValue"]);
103615
103648
  }), 128)),
103616
103649
  (openBlock(true), createElementBlock(Fragment, null, renderList(computedFilters.value, (f) => {
103617
103650
  return openBlock(), createBlock(resolveDynamicComponent(componentMap[f.componentName]), {
@@ -103632,8 +103665,9 @@ const _sfc_main$59 = /* @__PURE__ */ defineComponent({
103632
103665
  options: unref(getFilterOptions)(f.type, f.options),
103633
103666
  "owner-id": _ctx.ownerId,
103634
103667
  "system-filtered-ids": systemFilteredIds.value,
103668
+ "tags-not-in": _ctx.tagsNotIn,
103635
103669
  "onUpdate:modelValue": (v) => onUpdateModelValue(f, v)
103636
- }, null, 8, ["allow-custom-date-range", "disabled", "entity", "external-filters", "filter-key", "include-draft-values", "is-dependent-field", "is-section", "is-template", "modelValue", "multiple", "name", "numeric", "options", "owner-id", "system-filtered-ids", "onUpdate:modelValue"]);
103670
+ }, null, 8, ["allow-custom-date-range", "disabled", "entity", "external-filters", "filter-key", "include-draft-values", "is-dependent-field", "is-section", "is-template", "modelValue", "multiple", "name", "numeric", "options", "owner-id", "system-filtered-ids", "tags-not-in", "onUpdate:modelValue"]);
103637
103671
  }), 128))
103638
103672
  ], 64))
103639
103673
  ], 64)) : createCommentVNode("", true),
@@ -103710,8 +103744,9 @@ const _sfc_main$59 = /* @__PURE__ */ defineComponent({
103710
103744
  options: f.type === "checkbox" ? unref(getFilterOptions)(f.type, f.options, f.available_values) : unref(getFilterOptions)(f.type, f.options),
103711
103745
  "owner-id": _ctx.ownerId,
103712
103746
  "system-filtered-ids": systemFilteredIds.value,
103747
+ "tags-not-in": _ctx.tagsNotIn,
103713
103748
  "onUpdate:modelValue": (v) => section.are_fields_dependent ? onUpdateDependentField(f, v) : onUpdateModelValue(f, v)
103714
- }, null, 8, ["allow-custom-date-range", "disabled", "entity", "external-filters", "filter-key", "include-draft-values", "is-dependent-field", "is-section", "is-template", "modelValue", "multiple", "name", "numeric", "options", "owner-id", "system-filtered-ids", "onUpdate:modelValue"]);
103749
+ }, null, 8, ["allow-custom-date-range", "disabled", "entity", "external-filters", "filter-key", "include-draft-values", "is-dependent-field", "is-section", "is-template", "modelValue", "multiple", "name", "numeric", "options", "owner-id", "system-filtered-ids", "tags-not-in", "onUpdate:modelValue"]);
103715
103750
  }), 128))
103716
103751
  ]),
103717
103752
  _: 2
@@ -111928,7 +111963,10 @@ const _sfc_main$4M = /*@__PURE__*/defineComponent({
111928
111963
  order: 'asc'
111929
111964
  })
111930
111965
  },
111931
- viewMode: {}
111966
+ viewMode: {},
111967
+ excludedTags: {
111968
+ default: () => []
111969
+ }
111932
111970
  },
111933
111971
  emits: ["search", "create:template", "create:folder", "convert", "update:filter-values", "breadcrumb:click", "move", "select", "restoreColumns", "sort-changed", "toggle-view-mode"],
111934
111972
  setup(__props, {
@@ -112192,11 +112230,12 @@ const _sfc_main$4M = /*@__PURE__*/defineComponent({
112192
112230
  "initial-search-value": _ctx.search,
112193
112231
  "is-section": _ctx.canvasType === 'section-template',
112194
112232
  "is-template": "",
112195
- placeholder: unref(t)('canvasUI.components.templates.CTemplateManagementToolbar.searchInNameOrTags')
112233
+ placeholder: unref(t)('canvasUI.components.templates.CTemplateManagementToolbar.searchInNameOrTags'),
112234
+ "tags-not-in": _ctx.excludedTags
112196
112235
  }, popularityProps.value, {
112197
112236
  "onUpdate:filters": _cache[4] || (_cache[4] = $event => emit('update:filter-values', $event)),
112198
112237
  "onUpdate:search": _cache[5] || (_cache[5] = $event => emit('search', $event))
112199
- }), null, 16, ["customFilterComponents", "disabled", "filters", "hide-metadata-filters", "include-draft-values", "initial-search-value", "is-section", "placeholder"])]), createElementVNode("div", _hoisted_6$1m, [unref(launchDarkly).enable_template_folders && _ctx.canvasType !== 'section-template' ? withDirectives((openBlock(), createBlock(CButton, {
112238
+ }), null, 16, ["customFilterComponents", "disabled", "filters", "hide-metadata-filters", "include-draft-values", "initial-search-value", "is-section", "placeholder", "tags-not-in"])]), createElementVNode("div", _hoisted_6$1m, [unref(launchDarkly).enable_template_folders && _ctx.canvasType !== 'section-template' ? withDirectives((openBlock(), createBlock(CButton, {
112200
112239
  key: 0,
112201
112240
  circle: "",
112202
112241
  onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('toggle-view-mode'))
@@ -112255,11 +112294,12 @@ const _sfc_main$4M = /*@__PURE__*/defineComponent({
112255
112294
  "initial-search-value": _ctx.search,
112256
112295
  "is-section": _ctx.canvasType === 'section-template',
112257
112296
  "is-template": "",
112258
- placeholder: unref(t)('canvasUI.components.templates.CTemplateManagementToolbar.searchInNameOrTags')
112297
+ placeholder: unref(t)('canvasUI.components.templates.CTemplateManagementToolbar.searchInNameOrTags'),
112298
+ "tags-not-in": _ctx.excludedTags
112259
112299
  }, popularityProps.value, {
112260
112300
  "onUpdate:filters": _cache[12] || (_cache[12] = $event => emit('update:filter-values', $event)),
112261
112301
  "onUpdate:search": _cache[13] || (_cache[13] = $event => emit('search', $event))
112262
- }), null, 16, ["customFilterComponents", "disabled", "filters", "hide-metadata-filters", "include-draft-values", "initial-search-value", "is-section", "placeholder"])]))], 2);
112302
+ }), null, 16, ["customFilterComponents", "disabled", "filters", "hide-metadata-filters", "include-draft-values", "initial-search-value", "is-section", "placeholder", "tags-not-in"])]))], 2);
112263
112303
  };
112264
112304
  }
112265
112305
  });
@@ -114392,6 +114432,7 @@ const _sfc_main$4G = /*@__PURE__*/defineComponent({
114392
114432
  }),
114393
114433
  currentSort: currentSort.value,
114394
114434
  "custom-filter-components": unref(dataFilterComponents),
114435
+ "excluded-tags": _ctx.excludedTags,
114395
114436
  "hide-convert": isImpact.value || _ctx.hideConvert,
114396
114437
  "hide-create": isImpact.value,
114397
114438
  "hide-view": !unref(launchDarkly).allow_canvases_tables_columns_settings,
@@ -114413,7 +114454,7 @@ const _sfc_main$4G = /*@__PURE__*/defineComponent({
114413
114454
  onSortChanged: onSortChanged,
114414
114455
  onToggleViewMode: toggleViewMode,
114415
114456
  "onUpdate:filterValues": _cache[5] || (_cache[5] = $event => onTableChange('filterValuesChanged', $event))
114416
- }, null, 8, ["breadcrumbs", "canvas-type", "class", "currentSort", "custom-filter-components", "hide-convert", "hide-create", "hide-view", "is-loading-items", "is-template-folder-enabled", "metadata-filter-values", "recommended-ids", "search", "tableColumnsSettings", "viewMode", "onMove", "onRestoreColumns", "onSelect"]), [[vShow, !showBulkToolbar.value]]), (isFetchingData.value || isLoadingTable.value) && isTemplateFolderEnabled.value && unref(viewMode) === 'list' ? (openBlock(), createElementBlock("div", {
114457
+ }, null, 8, ["breadcrumbs", "canvas-type", "class", "currentSort", "custom-filter-components", "excluded-tags", "hide-convert", "hide-create", "hide-view", "is-loading-items", "is-template-folder-enabled", "metadata-filter-values", "recommended-ids", "search", "tableColumnsSettings", "viewMode", "onMove", "onRestoreColumns", "onSelect"]), [[vShow, !showBulkToolbar.value]]), (isFetchingData.value || isLoadingTable.value) && isTemplateFolderEnabled.value && unref(viewMode) === 'list' ? (openBlock(), createElementBlock("div", {
114417
114458
  key: 0,
114418
114459
  class: "flex bg-base rounded-2 mr-3",
114419
114460
  style: normalizeStyle({