nuxt-ui-tools 1.27.1 → 1.27.3

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/dist/module.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "configKey": "nuxtUiTools",
6
6
  "docs": "https://ui.nuxt.com/docs/getting-started/installation/nuxt",
7
7
  "name": "nuxt-ui-tools",
8
- "version": "1.27.1",
8
+ "version": "1.27.3",
9
9
  "builder": {
10
10
  "@nuxt/module-builder": "1.0.3",
11
11
  "unbuild": "unknown"
@@ -9,6 +9,7 @@ const { dashboard, ui } = defineProps({
9
9
  });
10
10
  defineSlots();
11
11
  const EDGE = 16;
12
+ const LABEL = "inline-flex flex-col items-center after:invisible after:block after:h-0 after:overflow-hidden after:font-bold after:content-[attr(data-label)]";
12
13
  const { t } = useUiToolsLocale();
13
14
  const appUi = useDashboardUi();
14
15
  const strip = useTemplateRef("strip");
@@ -60,7 +61,7 @@ watch(
60
61
  @click="dashboard.view.current = item.value"
61
62
  >
62
63
  <slot name="tab" :item :active="dashboard.view.current === item.value">
63
- {{ item.label }}
64
+ <span :class="LABEL" :data-label="item.label">{{ item.label }}{{ " " }}</span>
64
65
  <span v-if="item.badge !== void 0" :class="classes.badge" data-dashboard-view-badge>
65
66
  {{ item.badge }}
66
67
  </span>
@@ -126,6 +126,9 @@ function valueClass(line) {
126
126
  <div :class="classes.total">
127
127
  <span v-reveal-truncated :class="classes.totalLabel">
128
128
  <DisplayRender :content="total?.label ?? title" />
129
+ <span v-if="!isDisplayContentEmpty(total?.detail)" :class="classes.detail"
130
+ ><DisplayRender :content="total?.detail"
131
+ /></span>
129
132
  <DisplayChip v-if="total?.chip" :chip="total.chip" />
130
133
  </span>
131
134
  <button type="button" :class="classes.toggle" :aria-expanded="open" @click="open = !open">
@@ -172,6 +175,9 @@ function valueClass(line) {
172
175
  <div v-if="total" :class="classes.total">
173
176
  <span v-reveal-truncated :class="classes.totalLabel">
174
177
  <DisplayRender :content="total.label" />
178
+ <span v-if="!isDisplayContentEmpty(total.detail)" :class="classes.detail"
179
+ ><DisplayRender :content="total.detail"
180
+ /></span>
175
181
  <DisplayChip v-if="total.chip" :chip="total.chip" />
176
182
  </span>
177
183
  <span :class="classes.totalValue"><DisplayRender :content="total.value" /></span>
@@ -1 +1 @@
1
- @layer theme, base, components, utilities;@layer base{:root{--nut-scrollbar-size:11px;--nut-scrollbar-gap:3px;--nut-table-scrollbar-size:5px;--nut-table-scrollbar-idle-opacity:0;--nut-table-scrollbar-idle-pointer-events:none;--nut-scrollbar-thumb:color-mix(in srgb,var(--ui-text,#1f1d1a) 18%,transparent);--nut-scrollbar-thumb-hover:color-mix(in srgb,var(--ui-text,#1f1d1a) 32%,transparent);--nut-scrollbar-thumb-active:color-mix(in srgb,var(--ui-text,#1f1d1a) 44%,transparent)}@supports (scrollbar-width:thin){*{scrollbar-color:transparent transparent;scrollbar-width:thin;transition:scrollbar-color .2s ease}:hover{scrollbar-color:var(--nut-scrollbar-thumb) transparent}}@supports not (scrollbar-width:thin){::-webkit-scrollbar{background:transparent;height:var(--nut-scrollbar-size);width:var(--nut-scrollbar-size)}::-webkit-scrollbar-corner,::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:transparent;border:var(--nut-scrollbar-gap) solid transparent;border-radius:999px}:hover::-webkit-scrollbar-thumb{background-color:var(--nut-scrollbar-thumb)}::-webkit-scrollbar-thumb:hover{background-color:var(--nut-scrollbar-thumb-hover)}::-webkit-scrollbar-thumb:active{background-color:var(--nut-scrollbar-thumb-active)}}}
1
+ @layer theme, base, components, utilities;@layer base{:root{--nut-scrollbar-size:11px;--nut-scrollbar-gap:3px;--nut-table-scrollbar-size:5px;--nut-table-scrollbar-idle-opacity:0;--nut-table-scrollbar-idle-pointer-events:none;--nut-scrollbar-thumb:color-mix(in srgb,var(--ui-text,#1f1d1a) 18%,transparent);--nut-scrollbar-thumb-hover:color-mix(in srgb,var(--ui-text,#1f1d1a) 32%,transparent);--nut-scrollbar-thumb-active:color-mix(in srgb,var(--ui-text,#1f1d1a) 44%,transparent)}@supports (scrollbar-width:thin){*{scrollbar-color:transparent transparent;scrollbar-width:thin}:hover{scrollbar-color:var(--nut-scrollbar-thumb) transparent}}@supports not (scrollbar-width:thin){::-webkit-scrollbar{background:transparent;height:var(--nut-scrollbar-size);width:var(--nut-scrollbar-size)}::-webkit-scrollbar-corner,::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:transparent;border:var(--nut-scrollbar-gap) solid transparent;border-radius:999px}:hover::-webkit-scrollbar-thumb{background-color:var(--nut-scrollbar-thumb)}::-webkit-scrollbar-thumb:hover{background-color:var(--nut-scrollbar-thumb-hover)}::-webkit-scrollbar-thumb:active{background-color:var(--nut-scrollbar-thumb-active)}}}
@@ -61,6 +61,41 @@ export function createTableFilterBuilder() {
61
61
  kind: "text",
62
62
  ...options
63
63
  };
64
+ },
65
+ query: createTableQueryFilterBuilder()
66
+ };
67
+ }
68
+ function createTableQueryFilterBuilder() {
69
+ return {
70
+ boolean(key, options) {
71
+ return {
72
+ key,
73
+ kind: "boolean",
74
+ ...options,
75
+ behavior: { ...options.behavior, applyTo: "query" }
76
+ };
77
+ },
78
+ date(key, options) {
79
+ return { key, kind: "date", ...options, behavior: { ...options.behavior, applyTo: "query" } };
80
+ },
81
+ number(key, options) {
82
+ return {
83
+ key,
84
+ kind: "number",
85
+ ...options,
86
+ behavior: { ...options.behavior, applyTo: "query" }
87
+ };
88
+ },
89
+ option(key, options) {
90
+ return {
91
+ key,
92
+ kind: "option",
93
+ ...options,
94
+ behavior: { ...options.behavior, applyTo: "query" }
95
+ };
96
+ },
97
+ text(key, options) {
98
+ return { key, kind: "text", ...options, behavior: { ...options.behavior, applyTo: "query" } };
64
99
  }
65
100
  };
66
101
  }
@@ -708,33 +708,37 @@ export type TableOptionFilterOptions<TRow extends GenericObject = GenericObject,
708
708
  export type TableBooleanFilterOptions<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TKey extends string = TableKnownFieldPath<TRow>> = Omit<TableBooleanFilterDefinition<TRow, TContext, TKey>, 'key' | 'kind'>;
709
709
  export type TableNumberFilterOptions<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TKey extends string = TableKnownFieldPath<TRow>> = Omit<TableNumberFilterDefinition<TRow, TContext, TKey>, 'key' | 'kind'>;
710
710
  export type TableDateFilterOptions<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TKey extends string = TableKnownFieldPath<TRow>> = Omit<TableDateFilterDefinition<TRow, TContext, TKey>, 'key' | 'kind'>;
711
- /**
712
- * Keys a filter may use. A row field path filters rows; any other key names a query parameter of
713
- * the source and requires `behavior.applyTo: 'query'`.
714
- */
715
- export type TableFilterKey<TRow extends GenericObject = GenericObject> = TableKnownFieldPath<TRow> | (string & {});
716
- /** What a filter key adds to its options: nothing for a row field, `applyTo: 'query'` otherwise. */
717
- export type TableFilterKeyScope<TRow extends GenericObject, TKey extends string> = TKey extends TableKnownFieldPath<TRow> ? unknown : {
711
+ /** What marks a filter as a scope of the source query rather than of the rows. */
712
+ export type TableQueryFilterScope = {
718
713
  behavior: {
719
714
  applyTo: 'query';
720
715
  };
721
716
  };
717
+ /**
718
+ * Builds filters that scope the source query (`behavior.applyTo: 'query'`). Their key names a query
719
+ * parameter, so it does not have to be a row field.
720
+ */
721
+ export interface TableQueryFilterBuilder<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject> {
722
+ text<TKey extends string>(key: TKey, options: TableTextFilterOptions<TRow, TContext, TKey>): TableTextFilterDefinition<TRow, TContext, TKey> & TableQueryFilterScope;
723
+ option<TKey extends string, TValue extends TableFilterPrimitiveValue, TPresentation extends TableOptionFilterPresentation = TableOptionFilterPresentation>(key: TKey, options: TableOptionFilterOptions<TRow, TContext, TKey, TValue, TPresentation>): TableOptionFilterDefinition<TRow, TContext, TKey, TValue, TPresentation> & TableQueryFilterScope;
724
+ boolean<TKey extends string>(key: TKey, options: TableBooleanFilterOptions<TRow, TContext, TKey>): TableBooleanFilterDefinition<TRow, TContext, TKey> & TableQueryFilterScope;
725
+ number<TKey extends string>(key: TKey, options: TableNumberFilterOptions<TRow, TContext, TKey>): TableNumberFilterDefinition<TRow, TContext, TKey> & TableQueryFilterScope;
726
+ date<TKey extends string>(key: TKey, options: TableDateFilterOptions<TRow, TContext, TKey>): TableDateFilterDefinition<TRow, TContext, TKey> & TableQueryFilterScope;
727
+ }
722
728
  export interface TableFilterBuilder<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject> {
723
- text<TKey extends TableFilterKey<TRow>>(key: TKey, options: TableTextFilterOptions<TRow, TContext, TKey> & TableFilterKeyScope<TRow, TKey>): TableTextFilterDefinition<TRow, TContext, TKey> & TableFilterKeyScope<TRow, TKey>;
724
- option<TKey extends TableFilterKey<TRow>, TValue extends TableFilterPrimitiveValue, TPresentation extends TableOptionFilterPresentation = TableOptionFilterPresentation>(key: TKey, options: TableOptionFilterOptions<TRow, TContext, TKey, TValue, TPresentation> & TableFilterKeyScope<TRow, TKey>): TableOptionFilterDefinition<TRow, TContext, TKey, TValue, TPresentation> & TableFilterKeyScope<TRow, TKey>;
725
- boolean<TKey extends TableFilterKey<TRow>>(key: TKey, options: TableBooleanFilterOptions<TRow, TContext, TKey> & TableFilterKeyScope<TRow, TKey>): TableBooleanFilterDefinition<TRow, TContext, TKey> & TableFilterKeyScope<TRow, TKey>;
726
- number<TKey extends TableFilterKey<TRow>>(key: TKey, options: TableNumberFilterOptions<TRow, TContext, TKey> & TableFilterKeyScope<TRow, TKey>): TableNumberFilterDefinition<TRow, TContext, TKey> & TableFilterKeyScope<TRow, TKey>;
727
- date<TKey extends TableFilterKey<TRow>>(key: TKey, options: TableDateFilterOptions<TRow, TContext, TKey> & TableFilterKeyScope<TRow, TKey>): TableDateFilterDefinition<TRow, TContext, TKey> & TableFilterKeyScope<TRow, TKey>;
729
+ text<TKey extends TableKnownFieldPath<TRow>>(key: TKey, options: TableTextFilterOptions<TRow, TContext, TKey>): TableTextFilterDefinition<TRow, TContext, TKey>;
730
+ option<TKey extends TableKnownFieldPath<TRow>, TValue extends TableFilterPrimitiveValue, TPresentation extends TableOptionFilterPresentation = TableOptionFilterPresentation>(key: TKey, options: TableOptionFilterOptions<TRow, TContext, TKey, TValue, TPresentation>): TableOptionFilterDefinition<TRow, TContext, TKey, TValue, TPresentation>;
731
+ boolean<TKey extends TableKnownFieldPath<TRow>>(key: TKey, options: TableBooleanFilterOptions<TRow, TContext, TKey>): TableBooleanFilterDefinition<TRow, TContext, TKey>;
732
+ number<TKey extends TableKnownFieldPath<TRow>>(key: TKey, options: TableNumberFilterOptions<TRow, TContext, TKey>): TableNumberFilterDefinition<TRow, TContext, TKey>;
733
+ date<TKey extends TableKnownFieldPath<TRow>>(key: TKey, options: TableDateFilterOptions<TRow, TContext, TKey>): TableDateFilterDefinition<TRow, TContext, TKey>;
734
+ /** Filters that scope the source query instead of the rows. See `TableQueryFilterBuilder`. */
735
+ query: TableQueryFilterBuilder<TRow, TContext>;
728
736
  }
729
737
  /**
730
- * One filter of a table: a row filter keyed by a row field, or a query filter
731
- * (`behavior.applyTo: 'query'`) keyed by any query parameter.
738
+ * One filter of a table: a row filter keyed by a row field, or a query filter built with
739
+ * `filter.query` and keyed by any query parameter.
732
740
  */
733
- export type TableUiFilterCollectionItem<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TKey extends string = TableKnownFieldPath<TRow>> = TableUiFilterDefinition<TRow, TContext, TKey> | (TableUiFilterDefinition<TRow, TContext, string> & {
734
- behavior: {
735
- applyTo: 'query';
736
- };
737
- });
741
+ export type TableUiFilterCollectionItem<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TKey extends string = TableKnownFieldPath<TRow>> = TableUiFilterDefinition<TRow, TContext, TKey> | (TableUiFilterDefinition<TRow, TContext, string> & TableQueryFilterScope);
738
742
  export type TableUiFilterCollection<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TKey extends string = TableKnownFieldPath<TRow>> = TableUiFilterCollectionItem<TRow, TContext, TKey>[] | ((filter: TableFilterBuilder<TRow, TContext>) => TableUiFilterCollectionItem<TRow, TContext, TKey>[]);
739
743
  export interface TableFiltersSchema<TRow extends GenericObject = GenericObject, TContext extends GenericObject = GenericObject, TKey extends string = TableKnownFieldPath<TRow>> {
740
744
  search?: TableSearchFilter<TRow>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nuxt-ui-tools",
3
- "version": "1.27.1",
3
+ "version": "1.27.3",
4
4
  "description": "Nuxt module and runtime toolkit for UI-heavy Nuxt applications",
5
5
  "homepage": "https://github.com/ChronicStone/nuxt-ui-tools#readme",
6
6
  "bugs": "https://github.com/ChronicStone/nuxt-ui-tools/issues",