@mittwald/flow-remote-vue-components 1.6.0-next.3 → 1.6.0-next.4

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.
@@ -34,11 +34,11 @@ var ActiveFilters = defineComponent({
34
34
  const list = injectListModel();
35
35
  const texts = useListTexts();
36
36
  const tableRevision = watchMobxValue(() => list.listTable.revision);
37
- const iconButton = (label, icon, onPress, { labelled = true } = {}) => h(TooltipTrigger, { isDisabled: props.isDisabled }, () => [h(Tooltip, null, () => texts.value(label)), h(Button, {
37
+ const iconButton = (label, icon, onPress) => h(TooltipTrigger, { isDisabled: props.isDisabled }, () => [h(Tooltip, null, () => texts.value(label)), h(Button, {
38
38
  size: "s",
39
39
  variant: "plain",
40
40
  color: "secondary",
41
- "aria-label": labelled ? texts.value(label) : void 0,
41
+ "aria-label": texts.value(label),
42
42
  onPress
43
43
  }, () => h(icon))]);
44
44
  return () => {
@@ -65,7 +65,7 @@ var ActiveFilters = defineComponent({
65
65
  manualSave: true
66
66
  })) : void 0;
67
67
  const resetButton = hasChanges ? iconButton("filters.reset", IconUndo, () => list.resetFilters()) : void 0;
68
- const clearButton = chips.length > 1 ? iconButton("filters.clear", IconClose, () => list.filters.forEach((filter) => filter.clear()), { labelled: false }) : void 0;
68
+ const clearButton = chips.length > 1 ? iconButton("filters.clear", IconClose, () => list.filters.forEach((filter) => filter.clear())) : void 0;
69
69
  if (chips.length === 0 && !storeButton && !resetButton) return null;
70
70
  return h(Div, { class: listStyles.activeFilters }, () => [
71
71
  ...chips,
@@ -1 +1 @@
1
- {"version":3,"file":"ActiveFilters.mjs","names":[],"sources":["../../../../../src/list/ActiveFilters.ts"],"sourcesContent":["import {\n Badge,\n Button,\n Div,\n Text,\n Tooltip,\n TooltipTrigger,\n} from \"@/auto-generated\";\nimport { IconClose, IconSave, IconUndo } from \"@/icons\";\nimport { watchMobxValue } from \"@/lib/mobxSelector\";\nimport { ListFilter } from \"@mittwald/flow-components-base\";\nimport type { ListDateRange } from \"@mittwald/flow-components-base\";\nimport { defineComponent, h, type VNodeChild } from \"vue\";\nimport { formatDateRange, isDateRangeFilter } from \"./dateRangeFilter\";\nimport { injectListModel } from \"./listContext\";\nimport { useListTexts, type ListTextKey } from \"./locales\";\nimport { listStyles } from \"./styles\";\nimport type { ListRendered } from \"./types\";\nimport { composition } from \"@/lib/composition\";\n\n/** What the chips need of a filter and its values, and nothing more. */\ninterface ChipDateRangeFilter {\n readonly name?: string;\n getValue(): ListDateRange | null;\n clear(): void;\n}\n\ninterface ChipFilter {\n readonly storageKey: string;\n readonly mode: string;\n readonly values: {\n readonly id: string;\n readonly isActive: boolean;\n deactivate(): void;\n render(): ListRendered;\n }[];\n getArrayValue(): { id: string }[];\n isStoringAvailable(): boolean;\n hasChanges(): boolean;\n}\n\n/**\n * The selected filter values, and what can be done with the set of them.\n *\n * Shown beside the filter menus rather than inside them, so a selection made in\n * one menu stays visible while another is open — and can be taken back one\n * value at a time.\n */\nexport const ActiveFilters = defineComponent({\n name: \"ListActiveFilters\",\n\n props: {\n isDisabled: { type: Boolean, default: false },\n },\n\n setup(props) {\n const list = injectListModel();\n const texts = useListTexts();\n\n /* Every read here is of the table's filter state. */\n const tableRevision = watchMobxValue(() => list.listTable.revision);\n\n const iconButton = (\n label: ListTextKey,\n icon: unknown,\n onPress: () => void,\n { labelled = true }: { labelled?: boolean } = {},\n ): VNodeChild =>\n h(TooltipTrigger, { isDisabled: props.isDisabled }, () => [\n h(Tooltip, null, () => texts.value(label)),\n h(\n Button,\n {\n size: \"s\",\n variant: \"plain\",\n color: \"secondary\",\n \"aria-label\": labelled ? texts.value(label) : undefined,\n onPress,\n },\n () => h(icon as never),\n ),\n ]);\n\n return () => {\n void tableRevision.value;\n\n const filters = list.filters as unknown as ChipFilter[];\n\n const chips = filters.flatMap((filter) => {\n /* One chip for the whole range, and closing it clears the range. */\n if (isDateRangeFilter(filter)) {\n const range = (filter as unknown as ChipDateRangeFilter).getValue();\n\n return range\n ? [\n h(\n Badge,\n {\n key: filter.storageKey,\n isDisabled: props.isDisabled,\n onClose: () =>\n (filter as unknown as ChipDateRangeFilter).clear(),\n },\n () => h(Text, null, () => formatDateRange(range)),\n ),\n ]\n : [];\n }\n\n return filter.values\n .filter((value) => value.isActive)\n .map((value) =>\n h(\n Badge,\n {\n key: value.id,\n isDisabled: props.isDisabled,\n onClose: () => value.deactivate(),\n },\n () => h(Text, null, () => value.render()),\n ),\n );\n });\n\n const hasChanges = filters.some((filter) => filter.hasChanges());\n const storingAvailable = filters.some((filter) =>\n filter.isStoringAvailable(),\n );\n\n const storeButton =\n storingAvailable && hasChanges\n ? iconButton(\"filters.store\", IconSave, () =>\n ListFilter.storeFilters(list, filters, {\n autosave: false,\n manualSave: true,\n }),\n )\n : undefined;\n\n const resetButton = hasChanges\n ? iconButton(\"filters.reset\", IconUndo, () => list.resetFilters())\n : undefined;\n\n const clearButton =\n chips.length > 1\n ? iconButton(\n \"filters.clear\",\n IconClose,\n () => list.filters.forEach((filter) => filter.clear()),\n /*\n * Flow's `ActiveFilters` gives this one no `aria-label`, unlike\n * its two siblings — the tooltip is all it has. Kept, so the\n * host builds the same button; the label belongs in Flow first.\n */\n { labelled: false },\n )\n : undefined;\n\n if (chips.length === 0 && !storeButton && !resetButton) {\n return null;\n }\n\n return h(Div, { class: listStyles.activeFilters }, () => [\n ...chips,\n storeButton,\n resetButton,\n clearButton,\n ]);\n };\n },\n});\n\ncomposition(ActiveFilters);\n\nexport default ActiveFilters;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAgDA,IAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CAEN,OAAO,EACL,YAAY;EAAE,MAAM;EAAS,SAAS;CAAM,EAC9C;CAEA,MAAM,OAAO;EACX,MAAM,OAAO,gBAAgB;EAC7B,MAAM,QAAQ,aAAa;EAG3B,MAAM,gBAAgB,qBAAqB,KAAK,UAAU,QAAQ;EAElE,MAAM,cACJ,OACA,MACA,SACA,EAAE,WAAW,SAAiC,CAAC,MAE/C,EAAE,gBAAgB,EAAE,YAAY,MAAM,WAAW,SAAS,CACxD,EAAE,SAAS,YAAY,MAAM,MAAM,KAAK,CAAC,GACzC,EACE,QACA;GACE,MAAM;GACN,SAAS;GACT,OAAO;GACP,cAAc,WAAW,MAAM,MAAM,KAAK,IAAI,KAAA;GAC9C;EACF,SACM,EAAE,IAAa,CACvB,CACF,CAAC;EAEH,aAAa;GACX,cAAmB;GAEnB,MAAM,UAAU,KAAK;GAErB,MAAM,QAAQ,QAAQ,SAAS,WAAW;IAExC,IAAI,kBAAkB,MAAM,GAAG;KAC7B,MAAM,QAAS,OAA0C,SAAS;KAElE,OAAO,QACH,CACE,EACE,OACA;MACE,KAAK,OAAO;MACZ,YAAY,MAAM;MAClB,eACG,OAA0C,MAAM;KACrD,SACM,EAAE,MAAM,YAAY,gBAAgB,KAAK,CAAC,CAClD,CACF,IACA,CAAC;IACP;IAEA,OAAO,OAAO,OACX,QAAQ,UAAU,MAAM,QAAQ,CAAC,CACjC,KAAK,UACJ,EACE,OACA;KACE,KAAK,MAAM;KACX,YAAY,MAAM;KAClB,eAAe,MAAM,WAAW;IAClC,SACM,EAAE,MAAM,YAAY,MAAM,OAAO,CAAC,CAC1C,CACF;GACJ,CAAC;GAED,MAAM,aAAa,QAAQ,MAAM,WAAW,OAAO,WAAW,CAAC;GAK/D,MAAM,cAJmB,QAAQ,MAAM,WACrC,OAAO,mBAAmB,CAI1B,KAAoB,aAChB,WAAW,iBAAiB,gBAC1B,WAAW,aAAa,MAAM,SAAS;IACrC,UAAU;IACV,YAAY;GACd,CAAC,CACH,IACA,KAAA;GAEN,MAAM,cAAc,aAChB,WAAW,iBAAiB,gBAAgB,KAAK,aAAa,CAAC,IAC/D,KAAA;GAEJ,MAAM,cACJ,MAAM,SAAS,IACX,WACE,iBACA,iBACM,KAAK,QAAQ,SAAS,WAAW,OAAO,MAAM,CAAC,GAMrD,EAAE,UAAU,MAAM,CACpB,IACA,KAAA;GAEN,IAAI,MAAM,WAAW,KAAK,CAAC,eAAe,CAAC,aACzC,OAAO;GAGT,OAAO,EAAE,KAAK,EAAE,OAAO,WAAW,cAAc,SAAS;IACvD,GAAG;IACH;IACA;IACA;GACF,CAAC;EACH;CACF;AACF,CAAC;AAED,YAAY,aAAa"}
1
+ {"version":3,"file":"ActiveFilters.mjs","names":[],"sources":["../../../../../src/list/ActiveFilters.ts"],"sourcesContent":["import {\n Badge,\n Button,\n Div,\n Text,\n Tooltip,\n TooltipTrigger,\n} from \"@/auto-generated\";\nimport { IconClose, IconSave, IconUndo } from \"@/icons\";\nimport { watchMobxValue } from \"@/lib/mobxSelector\";\nimport { ListFilter } from \"@mittwald/flow-components-base\";\nimport type { ListDateRange } from \"@mittwald/flow-components-base\";\nimport { defineComponent, h, type VNodeChild } from \"vue\";\nimport { formatDateRange, isDateRangeFilter } from \"./dateRangeFilter\";\nimport { injectListModel } from \"./listContext\";\nimport { useListTexts, type ListTextKey } from \"./locales\";\nimport { listStyles } from \"./styles\";\nimport type { ListRendered } from \"./types\";\nimport { composition } from \"@/lib/composition\";\n\n/** What the chips need of a filter and its values, and nothing more. */\ninterface ChipDateRangeFilter {\n readonly name?: string;\n getValue(): ListDateRange | null;\n clear(): void;\n}\n\ninterface ChipFilter {\n readonly storageKey: string;\n readonly mode: string;\n readonly values: {\n readonly id: string;\n readonly isActive: boolean;\n deactivate(): void;\n render(): ListRendered;\n }[];\n getArrayValue(): { id: string }[];\n isStoringAvailable(): boolean;\n hasChanges(): boolean;\n}\n\n/**\n * The selected filter values, and what can be done with the set of them.\n *\n * Shown beside the filter menus rather than inside them, so a selection made in\n * one menu stays visible while another is open — and can be taken back one\n * value at a time.\n */\nexport const ActiveFilters = defineComponent({\n name: \"ListActiveFilters\",\n\n props: {\n isDisabled: { type: Boolean, default: false },\n },\n\n setup(props) {\n const list = injectListModel();\n const texts = useListTexts();\n\n /* Every read here is of the table's filter state. */\n const tableRevision = watchMobxValue(() => list.listTable.revision);\n\n const iconButton = (\n label: ListTextKey,\n icon: unknown,\n onPress: () => void,\n ): VNodeChild =>\n h(TooltipTrigger, { isDisabled: props.isDisabled }, () => [\n h(Tooltip, null, () => texts.value(label)),\n h(\n Button,\n {\n size: \"s\",\n variant: \"plain\",\n color: \"secondary\",\n \"aria-label\": texts.value(label),\n onPress,\n },\n () => h(icon as never),\n ),\n ]);\n\n return () => {\n void tableRevision.value;\n\n const filters = list.filters as unknown as ChipFilter[];\n\n const chips = filters.flatMap((filter) => {\n /* One chip for the whole range, and closing it clears the range. */\n if (isDateRangeFilter(filter)) {\n const range = (filter as unknown as ChipDateRangeFilter).getValue();\n\n return range\n ? [\n h(\n Badge,\n {\n key: filter.storageKey,\n isDisabled: props.isDisabled,\n onClose: () =>\n (filter as unknown as ChipDateRangeFilter).clear(),\n },\n () => h(Text, null, () => formatDateRange(range)),\n ),\n ]\n : [];\n }\n\n return filter.values\n .filter((value) => value.isActive)\n .map((value) =>\n h(\n Badge,\n {\n key: value.id,\n isDisabled: props.isDisabled,\n onClose: () => value.deactivate(),\n },\n () => h(Text, null, () => value.render()),\n ),\n );\n });\n\n const hasChanges = filters.some((filter) => filter.hasChanges());\n const storingAvailable = filters.some((filter) =>\n filter.isStoringAvailable(),\n );\n\n const storeButton =\n storingAvailable && hasChanges\n ? iconButton(\"filters.store\", IconSave, () =>\n ListFilter.storeFilters(list, filters, {\n autosave: false,\n manualSave: true,\n }),\n )\n : undefined;\n\n const resetButton = hasChanges\n ? iconButton(\"filters.reset\", IconUndo, () => list.resetFilters())\n : undefined;\n\n const clearButton =\n chips.length > 1\n ? iconButton(\"filters.clear\", IconClose, () =>\n list.filters.forEach((filter) => filter.clear()),\n )\n : undefined;\n\n if (chips.length === 0 && !storeButton && !resetButton) {\n return null;\n }\n\n return h(Div, { class: listStyles.activeFilters }, () => [\n ...chips,\n storeButton,\n resetButton,\n clearButton,\n ]);\n };\n },\n});\n\ncomposition(ActiveFilters);\n\nexport default ActiveFilters;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAgDA,IAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CAEN,OAAO,EACL,YAAY;EAAE,MAAM;EAAS,SAAS;CAAM,EAC9C;CAEA,MAAM,OAAO;EACX,MAAM,OAAO,gBAAgB;EAC7B,MAAM,QAAQ,aAAa;EAG3B,MAAM,gBAAgB,qBAAqB,KAAK,UAAU,QAAQ;EAElE,MAAM,cACJ,OACA,MACA,YAEA,EAAE,gBAAgB,EAAE,YAAY,MAAM,WAAW,SAAS,CACxD,EAAE,SAAS,YAAY,MAAM,MAAM,KAAK,CAAC,GACzC,EACE,QACA;GACE,MAAM;GACN,SAAS;GACT,OAAO;GACP,cAAc,MAAM,MAAM,KAAK;GAC/B;EACF,SACM,EAAE,IAAa,CACvB,CACF,CAAC;EAEH,aAAa;GACX,cAAmB;GAEnB,MAAM,UAAU,KAAK;GAErB,MAAM,QAAQ,QAAQ,SAAS,WAAW;IAExC,IAAI,kBAAkB,MAAM,GAAG;KAC7B,MAAM,QAAS,OAA0C,SAAS;KAElE,OAAO,QACH,CACE,EACE,OACA;MACE,KAAK,OAAO;MACZ,YAAY,MAAM;MAClB,eACG,OAA0C,MAAM;KACrD,SACM,EAAE,MAAM,YAAY,gBAAgB,KAAK,CAAC,CAClD,CACF,IACA,CAAC;IACP;IAEA,OAAO,OAAO,OACX,QAAQ,UAAU,MAAM,QAAQ,CAAC,CACjC,KAAK,UACJ,EACE,OACA;KACE,KAAK,MAAM;KACX,YAAY,MAAM;KAClB,eAAe,MAAM,WAAW;IAClC,SACM,EAAE,MAAM,YAAY,MAAM,OAAO,CAAC,CAC1C,CACF;GACJ,CAAC;GAED,MAAM,aAAa,QAAQ,MAAM,WAAW,OAAO,WAAW,CAAC;GAK/D,MAAM,cAJmB,QAAQ,MAAM,WACrC,OAAO,mBAAmB,CAI1B,KAAoB,aAChB,WAAW,iBAAiB,gBAC1B,WAAW,aAAa,MAAM,SAAS;IACrC,UAAU;IACV,YAAY;GACd,CAAC,CACH,IACA,KAAA;GAEN,MAAM,cAAc,aAChB,WAAW,iBAAiB,gBAAgB,KAAK,aAAa,CAAC,IAC/D,KAAA;GAEJ,MAAM,cACJ,MAAM,SAAS,IACX,WAAW,iBAAiB,iBAC1B,KAAK,QAAQ,SAAS,WAAW,OAAO,MAAM,CAAC,CACjD,IACA,KAAA;GAEN,IAAI,MAAM,WAAW,KAAK,CAAC,eAAe,CAAC,aACzC,OAAO;GAGT,OAAO,EAAE,KAAK,EAAE,OAAO,WAAW,cAAc,SAAS;IACvD,GAAG;IACH;IACA;IACA;GACF,CAAC;EACH;CACF;AACF,CAAC;AAED,YAAY,aAAa"}
@@ -1,7 +1,7 @@
1
1
  import { Version } from "@mittwald/flow-remote-core";
2
2
  //#region src/version.ts
3
3
  var communicationVersion = Version.v5;
4
- var packageVersion = "1.6.0-next.3";
4
+ var packageVersion = "1.6.0-next.4";
5
5
  var version = communicationVersion;
6
6
  //#endregion
7
7
  export { communicationVersion, packageVersion, version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mittwald/flow-remote-vue-components",
3
- "version": "1.6.0-next.3",
3
+ "version": "1.6.0-next.4",
4
4
  "type": "module",
5
5
  "description": "Vue components that can be used in a remote environment",
6
6
  "homepage": "https://flow.mittwald.de",
@@ -41,8 +41,8 @@
41
41
  },
42
42
  "dependencies": {
43
43
  "@internationalized/date": "^3.12.3",
44
- "@mittwald/flow-remote-core": "1.6.0-next.3",
45
- "@mittwald/flow-remote-elements": "1.6.0-next.3",
44
+ "@mittwald/flow-remote-core": "1.6.0-next.4",
45
+ "@mittwald/flow-remote-elements": "1.6.0-next.4",
46
46
  "@tanstack/table-core": "^8.21.3",
47
47
  "country-codes-list": "^2.0.0",
48
48
  "dot-prop": "^10.2.0",
@@ -52,14 +52,14 @@
52
52
  "remeda": "^2.43.0"
53
53
  },
54
54
  "devDependencies": {
55
- "@mittwald/ext-bridge": "1.6.0-next.3",
56
- "@mittwald/flow-components-base": "1.6.0-next.3",
57
- "@mittwald/flow-core": "1.6.0-next.3",
58
- "@mittwald/flow-icons-base": "1.6.0-next.3",
59
- "@mittwald/flow-react-components": "1.6.0-next.3",
60
- "@mittwald/flow-remote-react-components": "1.6.0-next.3",
61
- "@mittwald/flow-remote-react-renderer": "1.6.0-next.3",
62
- "@mittwald/typescript-config": "1.6.0-next.3",
55
+ "@mittwald/ext-bridge": "1.6.0-next.4",
56
+ "@mittwald/flow-components-base": "1.6.0-next.4",
57
+ "@mittwald/flow-core": "1.6.0-next.4",
58
+ "@mittwald/flow-icons-base": "1.6.0-next.4",
59
+ "@mittwald/flow-react-components": "1.6.0-next.4",
60
+ "@mittwald/flow-remote-react-components": "1.6.0-next.4",
61
+ "@mittwald/flow-remote-react-renderer": "1.6.0-next.4",
62
+ "@mittwald/typescript-config": "1.6.0-next.4",
63
63
  "@quilted/threads": "^3.3.1",
64
64
  "@types/node": "^25.9.3",
65
65
  "@types/react": "^19.2",
@@ -79,10 +79,10 @@
79
79
  "vue": "~3.5.38"
80
80
  },
81
81
  "peerDependencies": {
82
- "@mittwald/ext-bridge": "1.6.0-next.3",
83
- "@mittwald/flow-react-components": "1.6.0-next.3",
82
+ "@mittwald/ext-bridge": "1.6.0-next.4",
83
+ "@mittwald/flow-react-components": "1.6.0-next.4",
84
84
  "vue": "^3.5.0"
85
85
  },
86
86
  "flowStatus": "beta",
87
- "gitHead": "d89945117ece0dc0a3ba3aca063be43231b9138a"
87
+ "gitHead": "1ad95068b7a0c3bed3bee7409698063c0699c101"
88
88
  }