@tcn/ui-transfer 1.0.0

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.
Files changed (122) hide show
  1. package/AI_USAGE.md +16 -0
  2. package/README.md +3 -0
  3. package/dist/components/available_list/available_list.d.ts +11 -0
  4. package/dist/components/available_list/available_list.d.ts.map +1 -0
  5. package/dist/components/available_list/available_list.js +22 -0
  6. package/dist/components/available_list/available_list.js.map +1 -0
  7. package/dist/components/available_list/index.d.ts +2 -0
  8. package/dist/components/available_list/index.d.ts.map +1 -0
  9. package/dist/components/available_list/index.js +5 -0
  10. package/dist/components/available_list/index.js.map +1 -0
  11. package/dist/components/index.d.ts +4 -0
  12. package/dist/components/index.d.ts.map +1 -0
  13. package/dist/components/index.js +13 -0
  14. package/dist/components/index.js.map +1 -0
  15. package/dist/components/manage_list_item/addable_item.d.ts +5 -0
  16. package/dist/components/manage_list_item/addable_item.d.ts.map +1 -0
  17. package/dist/components/manage_list_item/addable_item.js +19 -0
  18. package/dist/components/manage_list_item/addable_item.js.map +1 -0
  19. package/dist/components/manage_list_item/index.d.ts +4 -0
  20. package/dist/components/manage_list_item/index.d.ts.map +1 -0
  21. package/dist/components/manage_list_item/index.js +9 -0
  22. package/dist/components/manage_list_item/index.js.map +1 -0
  23. package/dist/components/manage_list_item/manage_list_item.d.ts +11 -0
  24. package/dist/components/manage_list_item/manage_list_item.d.ts.map +1 -0
  25. package/dist/components/manage_list_item/manage_list_item.js +33 -0
  26. package/dist/components/manage_list_item/manage_list_item.js.map +1 -0
  27. package/dist/components/manage_list_item/removable_item.d.ts +5 -0
  28. package/dist/components/manage_list_item/removable_item.d.ts.map +1 -0
  29. package/dist/components/manage_list_item/removable_item.js +22 -0
  30. package/dist/components/manage_list_item/removable_item.js.map +1 -0
  31. package/dist/components/selected_list/index.d.ts +2 -0
  32. package/dist/components/selected_list/index.d.ts.map +1 -0
  33. package/dist/components/selected_list/index.js +5 -0
  34. package/dist/components/selected_list/index.js.map +1 -0
  35. package/dist/components/selected_list/selected_list.d.ts +13 -0
  36. package/dist/components/selected_list/selected_list.d.ts.map +1 -0
  37. package/dist/components/selected_list/selected_list.js +28 -0
  38. package/dist/components/selected_list/selected_list.js.map +1 -0
  39. package/dist/index.d.ts +4 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +19 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/removable_item.css +1 -0
  44. package/dist/transfer_list/index.d.ts +2 -0
  45. package/dist/transfer_list/index.d.ts.map +1 -0
  46. package/dist/transfer_list/index.js +5 -0
  47. package/dist/transfer_list/index.js.map +1 -0
  48. package/dist/transfer_list/transfer_list.d.ts +6 -0
  49. package/dist/transfer_list/transfer_list.d.ts.map +1 -0
  50. package/dist/transfer_list/transfer_list.js +12 -0
  51. package/dist/transfer_list/transfer_list.js.map +1 -0
  52. package/dist/transfer_table/components/available_table.d.ts +17 -0
  53. package/dist/transfer_table/components/available_table.d.ts.map +1 -0
  54. package/dist/transfer_table/components/available_table.js +68 -0
  55. package/dist/transfer_table/components/available_table.js.map +1 -0
  56. package/dist/transfer_table/components/available_table_filter_panel.d.ts +13 -0
  57. package/dist/transfer_table/components/available_table_filter_panel.d.ts.map +1 -0
  58. package/dist/transfer_table/components/available_table_filter_panel.js +39 -0
  59. package/dist/transfer_table/components/available_table_filter_panel.js.map +1 -0
  60. package/dist/transfer_table/components/available_table_header.d.ts +13 -0
  61. package/dist/transfer_table/components/available_table_header.d.ts.map +1 -0
  62. package/dist/transfer_table/components/available_table_header.js +43 -0
  63. package/dist/transfer_table/components/available_table_header.js.map +1 -0
  64. package/dist/transfer_table/components/selected_column.d.ts +15 -0
  65. package/dist/transfer_table/components/selected_column.d.ts.map +1 -0
  66. package/dist/transfer_table/components/selected_column.js +93 -0
  67. package/dist/transfer_table/components/selected_column.js.map +1 -0
  68. package/dist/transfer_table/components/selected_item.d.ts +8 -0
  69. package/dist/transfer_table/components/selected_item.d.ts.map +1 -0
  70. package/dist/transfer_table/components/selected_item.js +39 -0
  71. package/dist/transfer_table/components/selected_item.js.map +1 -0
  72. package/dist/transfer_table/index.d.ts +4 -0
  73. package/dist/transfer_table/index.d.ts.map +1 -0
  74. package/dist/transfer_table/index.js +7 -0
  75. package/dist/transfer_table/index.js.map +1 -0
  76. package/dist/transfer_table/transfer_table.d.ts +4 -0
  77. package/dist/transfer_table/transfer_table.d.ts.map +1 -0
  78. package/dist/transfer_table/transfer_table.js +82 -0
  79. package/dist/transfer_table/transfer_table.js.map +1 -0
  80. package/dist/transfer_table/transfer_table_presenter.d.ts +46 -0
  81. package/dist/transfer_table/transfer_table_presenter.d.ts.map +1 -0
  82. package/dist/transfer_table/transfer_table_presenter.js +98 -0
  83. package/dist/transfer_table/transfer_table_presenter.js.map +1 -0
  84. package/dist/transfer_table/types.d.ts +30 -0
  85. package/dist/transfer_table/types.d.ts.map +1 -0
  86. package/dist/transfer_table/types.js +2 -0
  87. package/dist/transfer_table/types.js.map +1 -0
  88. package/dist/transfer_table.css +1 -0
  89. package/dist/transfer_table.module-CI4PvlY3.js +5 -0
  90. package/dist/transfer_table.module-CI4PvlY3.js.map +1 -0
  91. package/package.json +81 -0
  92. package/src/__stories__/available_list.stories.tsx +41 -0
  93. package/src/__stories__/sample_data.ts +101 -0
  94. package/src/__stories__/selected_list.stories.tsx +41 -0
  95. package/src/__stories__/transfer_list.stories.tsx +13 -0
  96. package/src/__stories__/transfer_table.stories.tsx +128 -0
  97. package/src/__tests__/sanity.test.ts +7 -0
  98. package/src/components/available_list/available_list.tsx +39 -0
  99. package/src/components/available_list/index.ts +5 -0
  100. package/src/components/index.ts +19 -0
  101. package/src/components/manage_list_item/addable_item.tsx +22 -0
  102. package/src/components/manage_list_item/index.ts +7 -0
  103. package/src/components/manage_list_item/manage_list_item.tsx +43 -0
  104. package/src/components/manage_list_item/removable_item.module.css +3 -0
  105. package/src/components/manage_list_item/removable_item.tsx +25 -0
  106. package/src/components/selected_list/index.ts +5 -0
  107. package/src/components/selected_list/selected_list.tsx +50 -0
  108. package/src/index.ts +22 -0
  109. package/src/transfer_list/index.ts +1 -0
  110. package/src/transfer_list/transfer_list.tsx +14 -0
  111. package/src/transfer_table/components/available_table.tsx +80 -0
  112. package/src/transfer_table/components/available_table_filter_panel.tsx +62 -0
  113. package/src/transfer_table/components/available_table_header.tsx +60 -0
  114. package/src/transfer_table/components/selected_column.tsx +120 -0
  115. package/src/transfer_table/components/selected_item.tsx +58 -0
  116. package/src/transfer_table/index.ts +6 -0
  117. package/src/transfer_table/transfer_table.module.css +41 -0
  118. package/src/transfer_table/transfer_table.tsx +77 -0
  119. package/src/transfer_table/transfer_table_presenter.ts +164 -0
  120. package/src/transfer_table/types.ts +35 -0
  121. package/tsconfig.json +7 -0
  122. package/types/file_types.d.ts +106 -0
package/AI_USAGE.md ADDED
@@ -0,0 +1,16 @@
1
+ # @tcn/ui-transfer — AI Usage Guide
2
+
3
+ **Load this file when:** the project uses `@tcn/ui-transfer` and you are building transfer list or transfer table UIs.
4
+
5
+ > For source files referenced in linked docs, prefix paths with `node_modules/@tcn/ui-transfer/` in app projects.
6
+
7
+ ---
8
+
9
+ ## Overview
10
+
11
+ `@tcn/ui-transfer` provides transfer UI components for moving items between lists or tables.
12
+
13
+ | Component | Summary |
14
+ |---|---|
15
+ | **TransferList** | TODO — transfer list component for moving items between two lists |
16
+ | **TransferTable** | TODO — transfer table component for moving items between two tables |
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # @tcn/ui-transfer
2
+
3
+ React transfer list and transfer table components for TCN applications.
@@ -0,0 +1,11 @@
1
+ import { ListProps } from '@tcn/ui/layouts';
2
+ import { default as React } from 'react';
3
+ export interface AvailableListOwnProps<T> {
4
+ items: T[];
5
+ getItemKey: (item: T) => string | number;
6
+ renderItem: (item: T) => React.ReactNode;
7
+ onClickItem: (item: T) => void;
8
+ }
9
+ export type AvailableListProps<T> = AvailableListOwnProps<T> & ListProps;
10
+ export declare const AvailableList: <T>(props: AvailableListProps<T> & React.RefAttributes<HTMLDivElement>) => React.ReactElement | null;
11
+ //# sourceMappingURL=available_list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"available_list.d.ts","sourceRoot":"","sources":["../../../src/components/available_list/available_list.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC;IACzC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IACzC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;CAChC;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAwBzE,eAAO,MAAM,aAAa,EAA2C,CAAC,CAAC,EACrE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,KAC/D,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import { List as p } from "@tcn/ui/layouts";
3
+ import { clsx as s } from "clsx";
4
+ import c from "react";
5
+ import "../manage_list_item/manage_list_item.js";
6
+ import "../manage_list_item/removable_item.js";
7
+ import { AddableItem as f } from "../manage_list_item/addable_item.js";
8
+ function d({
9
+ items: t,
10
+ getItemKey: i,
11
+ renderItem: a,
12
+ onClickItem: m,
13
+ className: l,
14
+ ...e
15
+ }, n) {
16
+ return /* @__PURE__ */ o(p, { ref: n, className: s("tcn-available-list", l), ...e, children: t.map((r) => /* @__PURE__ */ o(f, { item: r, onClickItem: m, children: a(r) }, i(r))) });
17
+ }
18
+ const I = c.forwardRef(d);
19
+ export {
20
+ I as AvailableList
21
+ };
22
+ //# sourceMappingURL=available_list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"available_list.js","sources":["../../../src/components/available_list/available_list.tsx"],"sourcesContent":["import { List, type ListProps } from '@tcn/ui/layouts';\nimport { clsx } from 'clsx';\nimport React from 'react';\nimport { AddableItem } from '../manage_list_item/index.js';\n\nexport interface AvailableListOwnProps<T> {\n items: T[];\n getItemKey: (item: T) => string | number;\n renderItem: (item: T) => React.ReactNode;\n onClickItem: (item: T) => void;\n}\n\nexport type AvailableListProps<T> = AvailableListOwnProps<T> & ListProps;\n\nfunction AvailableListInner<T>(\n {\n items,\n getItemKey,\n renderItem,\n onClickItem,\n className,\n ...props\n }: AvailableListProps<T>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n return (\n <List ref={ref} className={clsx('tcn-available-list', className)} {...props}>\n {items.map(item => (\n <AddableItem key={getItemKey(item)} item={item} onClickItem={onClickItem}>\n {renderItem(item)}\n </AddableItem>\n ))}\n </List>\n );\n}\n\nexport const AvailableList = React.forwardRef(AvailableListInner) as <T>(\n props: AvailableListProps<T> & React.RefAttributes<HTMLDivElement>\n) => React.ReactElement | null;\n"],"names":["AvailableListInner","items","getItemKey","renderItem","onClickItem","className","props","ref","jsx","List","clsx","AddableItem","item","AvailableList","React"],"mappings":";;;;;;;AAcA,SAASA,EACP;AAAA,EACE,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AACA,SACE,gBAAAC,EAACC,GAAA,EAAK,KAAAF,GAAU,WAAWG,EAAK,sBAAsBL,CAAS,GAAI,GAAGC,GACnE,UAAAL,EAAM,IAAI,OACT,gBAAAO,EAACG,GAAA,EAAmC,MAAAC,GAAY,aAAAR,GAC7C,UAAAD,EAAWS,CAAI,KADAV,EAAWU,CAAI,CAEjC,CACD,EAAA,CACH;AAEJ;AAEO,MAAMC,IAAgBC,EAAM,WAAWd,CAAkB;"}
@@ -0,0 +1,2 @@
1
+ export { AvailableList, type AvailableListOwnProps, type AvailableListProps, } from './available_list.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/available_list/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { AvailableList as i } from "./available_list.js";
2
+ export {
3
+ i as AvailableList
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,4 @@
1
+ export { ManageListItem, type ManageListItemOwnProps, type ManageListItemProps, RemovableItem, type RemovableItemProps, AddableItem, type AddableItemProps, } from './manage_list_item/index.js';
2
+ export { SelectedList, type SelectedListOwnProps, type SelectedListProps, } from './selected_list/index.js';
3
+ export { AvailableList, type AvailableListOwnProps, type AvailableListProps, } from './available_list/index.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,aAAa,EACb,KAAK,kBAAkB,EACvB,WAAW,EACX,KAAK,gBAAgB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,YAAY,EACZ,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,aAAa,EACb,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,GACxB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { ManageListItem as o } from "./manage_list_item/manage_list_item.js";
2
+ import { RemovableItem as m } from "./manage_list_item/removable_item.js";
3
+ import { AddableItem as f } from "./manage_list_item/addable_item.js";
4
+ import { SelectedList as p } from "./selected_list/selected_list.js";
5
+ import { AvailableList as i } from "./available_list/available_list.js";
6
+ export {
7
+ f as AddableItem,
8
+ i as AvailableList,
9
+ o as ManageListItem,
10
+ m as RemovableItem,
11
+ p as SelectedList
12
+ };
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ import { ManageListItemProps } from './manage_list_item.js';
3
+ export type AddableItemProps<T> = ManageListItemProps<T>;
4
+ export declare const AddableItem: <T>(props: AddableItemProps<T> & React.RefAttributes<HTMLDivElement>) => React.ReactElement | null;
5
+ //# sourceMappingURL=addable_item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addable_item.d.ts","sourceRoot":"","sources":["../../../src/components/manage_list_item/addable_item.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjF,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAezD,eAAO,MAAM,WAAW,EAAyC,CAAC,CAAC,EACjE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,KAC7D,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import { ArrowRightIcon as m } from "@tcn/icons/arrow_right_icon.js";
3
+ import n from "react";
4
+ import { ManageListItem as d } from "./manage_list_item.js";
5
+ function f({ endAdornment: o, ...t }, e) {
6
+ return /* @__PURE__ */ r(
7
+ d,
8
+ {
9
+ ref: e,
10
+ endAdornment: o ?? /* @__PURE__ */ r(m, {}),
11
+ ...t
12
+ }
13
+ );
14
+ }
15
+ const c = n.forwardRef(f);
16
+ export {
17
+ c as AddableItem
18
+ };
19
+ //# sourceMappingURL=addable_item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addable_item.js","sources":["../../../src/components/manage_list_item/addable_item.tsx"],"sourcesContent":["import { ArrowRightIcon } from '@tcn/icons/arrow_right_icon.js';\nimport React from 'react';\nimport { ManageListItem, type ManageListItemProps } from './manage_list_item.js';\n\nexport type AddableItemProps<T> = ManageListItemProps<T>;\n\nfunction AddableItemInner<T>(\n { endAdornment, ...props }: AddableItemProps<T>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n return (\n <ManageListItem\n ref={ref}\n endAdornment={endAdornment ?? <ArrowRightIcon />}\n {...props}\n />\n );\n}\n\nexport const AddableItem = React.forwardRef(AddableItemInner) as <T>(\n props: AddableItemProps<T> & React.RefAttributes<HTMLDivElement>\n) => React.ReactElement | null;\n"],"names":["AddableItemInner","endAdornment","props","ref","jsx","ManageListItem","ArrowRightIcon","AddableItem","React"],"mappings":";;;;AAMA,SAASA,EACP,EAAE,cAAAC,GAAc,GAAGC,EAAA,GACnBC,GACA;AACA,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,KAAAF;AAAA,MACA,cAAcF,KAAgB,gBAAAG,EAACE,GAAA,CAAA,CAAe;AAAA,MAC7C,GAAGJ;AAAA,IAAA;AAAA,EAAA;AAGV;AAEO,MAAMK,IAAcC,EAAM,WAAWR,CAAgB;"}
@@ -0,0 +1,4 @@
1
+ export { ManageListItem, type ManageListItemOwnProps, type ManageListItemProps, } from './manage_list_item.js';
2
+ export { RemovableItem, type RemovableItemProps } from './removable_item.js';
3
+ export { AddableItem, type AddableItemProps } from './addable_item.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/manage_list_item/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { ManageListItem as o } from "./manage_list_item.js";
2
+ import { RemovableItem as r } from "./removable_item.js";
3
+ import { AddableItem as f } from "./addable_item.js";
4
+ export {
5
+ f as AddableItem,
6
+ o as ManageListItem,
7
+ r as RemovableItem
8
+ };
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -0,0 +1,11 @@
1
+ import { ItemProps } from '@tcn/ui/layouts';
2
+ import { default as React } from 'react';
3
+ export interface ManageListItemOwnProps<T> {
4
+ item: T;
5
+ children: React.ReactNode;
6
+ onClickItem: (item: T) => void;
7
+ endAdornment?: React.ReactNode;
8
+ }
9
+ export type ManageListItemProps<T> = ManageListItemOwnProps<T> & Omit<ItemProps, 'children'>;
10
+ export declare const ManageListItem: <T>(props: ManageListItemProps<T> & React.RefAttributes<HTMLDivElement>) => React.ReactElement | null;
11
+ //# sourceMappingURL=manage_list_item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manage_list_item.d.ts","sourceRoot":"","sources":["../../../src/components/manage_list_item/manage_list_item.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGvD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,sBAAsB,CAAC,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC/B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAChC;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,sBAAsB,CAAC,CAAC,CAAC,GAC5D,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AA2B9B,eAAO,MAAM,cAAc,EAA4C,CAAC,CAAC,EACvE,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,KAChE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { jsxs as a, jsx as s } from "react/jsx-runtime";
2
+ import { Item as c } from "@tcn/ui/layouts";
3
+ import { Spacer as f } from "@tcn/ui/stacks";
4
+ import { clsx as p } from "clsx";
5
+ import l from "react";
6
+ function x({
7
+ item: r,
8
+ children: t,
9
+ onClickItem: m,
10
+ endAdornment: e,
11
+ className: o,
12
+ ...i
13
+ }, n) {
14
+ return /* @__PURE__ */ a(
15
+ c,
16
+ {
17
+ ref: n,
18
+ className: p("tcn-manage-list-item", o),
19
+ onClick: () => m(r),
20
+ ...i,
21
+ children: [
22
+ t,
23
+ /* @__PURE__ */ s(f, {}),
24
+ e
25
+ ]
26
+ }
27
+ );
28
+ }
29
+ const L = l.forwardRef(x);
30
+ export {
31
+ L as ManageListItem
32
+ };
33
+ //# sourceMappingURL=manage_list_item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manage_list_item.js","sources":["../../../src/components/manage_list_item/manage_list_item.tsx"],"sourcesContent":["import { Item, type ItemProps } from '@tcn/ui/layouts';\nimport { Spacer } from '@tcn/ui/stacks';\nimport { clsx } from 'clsx';\nimport React from 'react';\n\nexport interface ManageListItemOwnProps<T> {\n item: T;\n children: React.ReactNode;\n onClickItem: (item: T) => void;\n endAdornment?: React.ReactNode;\n}\n\nexport type ManageListItemProps<T> = ManageListItemOwnProps<T> &\n Omit<ItemProps, 'children'>;\n\nfunction ManageListItemInner<T>(\n {\n item,\n children,\n onClickItem,\n endAdornment,\n className,\n ...props\n }: ManageListItemProps<T>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n return (\n <Item\n ref={ref}\n className={clsx('tcn-manage-list-item', className)}\n onClick={() => onClickItem(item)}\n {...props}\n >\n {children}\n <Spacer />\n {endAdornment}\n </Item>\n );\n}\n\nexport const ManageListItem = React.forwardRef(ManageListItemInner) as <T>(\n props: ManageListItemProps<T> & React.RefAttributes<HTMLDivElement>\n) => React.ReactElement | null;\n"],"names":["ManageListItemInner","item","children","onClickItem","endAdornment","className","props","ref","jsxs","Item","clsx","Spacer","ManageListItem","React"],"mappings":";;;;;AAeA,SAASA,EACP;AAAA,EACE,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AACA,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,KAAAF;AAAA,MACA,WAAWG,EAAK,wBAAwBL,CAAS;AAAA,MACjD,SAAS,MAAMF,EAAYF,CAAI;AAAA,MAC9B,GAAGK;AAAA,MAEH,UAAA;AAAA,QAAAJ;AAAA,0BACAS,GAAA,EAAO;AAAA,QACPP;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;AAEO,MAAMQ,IAAiBC,EAAM,WAAWb,CAAmB;"}
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ import { ManageListItemProps } from './manage_list_item.js';
3
+ export type RemovableItemProps<T> = ManageListItemProps<T>;
4
+ export declare const RemovableItem: <T>(props: RemovableItemProps<T> & React.RefAttributes<HTMLDivElement>) => React.ReactElement | null;
5
+ //# sourceMappingURL=removable_item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removable_item.d.ts","sourceRoot":"","sources":["../../../src/components/manage_list_item/removable_item.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGjF,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAgB3D,eAAO,MAAM,aAAa,EAA2C,CAAC,CAAC,EACrE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,KAC/D,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import { CrossCircleIcon as a } from "@tcn/icons/cross_circle_icon.js";
3
+ import { clsx as n } from "clsx";
4
+ import s from "react";
5
+ import { ManageListItem as i } from "./manage_list_item.js";
6
+ import '../../removable_item.css';const l = "_removable-item_47294a9", c = { "removable-item": l };
7
+ function f({ endAdornment: m, className: o, ...r }, t) {
8
+ return /* @__PURE__ */ e(
9
+ i,
10
+ {
11
+ ref: t,
12
+ className: n(c["removable-item"], o),
13
+ endAdornment: m ?? /* @__PURE__ */ e(a, {}),
14
+ ...r
15
+ }
16
+ );
17
+ }
18
+ const d = s.forwardRef(f);
19
+ export {
20
+ d as RemovableItem
21
+ };
22
+ //# sourceMappingURL=removable_item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removable_item.js","sources":["../../../src/components/manage_list_item/removable_item.tsx"],"sourcesContent":["import { CrossCircleIcon } from '@tcn/icons/cross_circle_icon.js';\nimport { clsx } from 'clsx';\nimport React from 'react';\nimport { ManageListItem, type ManageListItemProps } from './manage_list_item.js';\nimport styles from './removable_item.module.css';\n\nexport type RemovableItemProps<T> = ManageListItemProps<T>;\n\nfunction RemovableItemInner<T>(\n { endAdornment, className, ...props }: RemovableItemProps<T>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n return (\n <ManageListItem\n ref={ref}\n className={clsx(styles['removable-item'], className)}\n endAdornment={endAdornment ?? <CrossCircleIcon />}\n {...props}\n />\n );\n}\n\nexport const RemovableItem = React.forwardRef(RemovableItemInner) as <T>(\n props: RemovableItemProps<T> & React.RefAttributes<HTMLDivElement>\n) => React.ReactElement | null;\n"],"names":["RemovableItemInner","endAdornment","className","props","ref","jsx","ManageListItem","clsx","styles","CrossCircleIcon","RemovableItem","React"],"mappings":";;;;;;AAQA,SAASA,EACP,EAAE,cAAAC,GAAc,WAAAC,GAAW,GAAGC,EAAA,GAC9BC,GACA;AACA,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,KAAAF;AAAA,MACA,WAAWG,EAAKC,EAAO,gBAAgB,GAAGN,CAAS;AAAA,MACnD,cAAcD,KAAgB,gBAAAI,EAACI,GAAA,CAAA,CAAgB;AAAA,MAC9C,GAAGN;AAAA,IAAA;AAAA,EAAA;AAGV;AAEO,MAAMO,IAAgBC,EAAM,WAAWX,CAAkB;"}
@@ -0,0 +1,2 @@
1
+ export { SelectedList, type SelectedListOwnProps, type SelectedListProps, } from './selected_list.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/selected_list/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { SelectedList as o } from "./selected_list.js";
2
+ export {
3
+ o as SelectedList
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,13 @@
1
+ import { ListProps } from '@tcn/ui/layouts';
2
+ import { default as React } from 'react';
3
+ export interface SelectedListOwnProps<T> {
4
+ items: T[];
5
+ getItemKey: (item: T) => string | number;
6
+ renderItem: (item: T) => React.ReactNode;
7
+ onClickItem: (item: T) => void;
8
+ /** Override the default RemovableItem rendering per item. Receives the item and its rendered content. */
9
+ renderListItem?: (item: T, content: React.ReactNode) => React.ReactElement;
10
+ }
11
+ export type SelectedListProps<T> = SelectedListOwnProps<T> & ListProps;
12
+ export declare const SelectedList: <T>(props: SelectedListProps<T> & React.RefAttributes<HTMLDivElement>) => React.ReactElement | null;
13
+ //# sourceMappingURL=selected_list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selected_list.d.ts","sourceRoot":"","sources":["../../../src/components/selected_list/selected_list.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC;IACzC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IACzC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC/B,yGAAyG;IACzG,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,YAAY,CAAC;CAC5E;AAED,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAiCvE,eAAO,MAAM,YAAY,EAA0C,CAAC,CAAC,EACnE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,KAC9D,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { jsx as n } from "react/jsx-runtime";
2
+ import { List as a } from "@tcn/ui/layouts";
3
+ import { clsx as d } from "clsx";
4
+ import c from "react";
5
+ import "../manage_list_item/manage_list_item.js";
6
+ import { RemovableItem as u } from "../manage_list_item/removable_item.js";
7
+ import "../manage_list_item/addable_item.js";
8
+ function x({
9
+ items: l,
10
+ getItemKey: o,
11
+ renderItem: m,
12
+ onClickItem: i,
13
+ renderListItem: t,
14
+ className: s,
15
+ ...f
16
+ }, p) {
17
+ return /* @__PURE__ */ n(a, { ref: p, className: d("tcn-selected-list", s), ...f, children: l.map((r) => {
18
+ const e = m(r);
19
+ return t ? c.cloneElement(t(r, e), {
20
+ key: o(r)
21
+ }) : /* @__PURE__ */ n(u, { item: r, onClickItem: i, children: e }, o(r));
22
+ }) });
23
+ }
24
+ const v = c.forwardRef(x);
25
+ export {
26
+ v as SelectedList
27
+ };
28
+ //# sourceMappingURL=selected_list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selected_list.js","sources":["../../../src/components/selected_list/selected_list.tsx"],"sourcesContent":["import { List, type ListProps } from '@tcn/ui/layouts';\nimport { clsx } from 'clsx';\nimport React from 'react';\nimport { RemovableItem } from '../manage_list_item/index.js';\n\nexport interface SelectedListOwnProps<T> {\n items: T[];\n getItemKey: (item: T) => string | number;\n renderItem: (item: T) => React.ReactNode;\n onClickItem: (item: T) => void;\n /** Override the default RemovableItem rendering per item. Receives the item and its rendered content. */\n renderListItem?: (item: T, content: React.ReactNode) => React.ReactElement;\n}\n\nexport type SelectedListProps<T> = SelectedListOwnProps<T> & ListProps;\n\nfunction SelectedListInner<T>(\n {\n items,\n getItemKey,\n renderItem,\n onClickItem,\n renderListItem,\n className,\n ...props\n }: SelectedListProps<T>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n return (\n <List ref={ref} className={clsx('tcn-selected-list', className)} {...props}>\n {items.map(item => {\n const content = renderItem(item);\n if (renderListItem) {\n return React.cloneElement(renderListItem(item, content), {\n key: getItemKey(item),\n });\n }\n return (\n <RemovableItem key={getItemKey(item)} item={item} onClickItem={onClickItem}>\n {content}\n </RemovableItem>\n );\n })}\n </List>\n );\n}\n\nexport const SelectedList = React.forwardRef(SelectedListInner) as <T>(\n props: SelectedListProps<T> & React.RefAttributes<HTMLDivElement>\n) => React.ReactElement | null;\n"],"names":["SelectedListInner","items","getItemKey","renderItem","onClickItem","renderListItem","className","props","ref","jsx","List","clsx","item","content","React","RemovableItem","SelectedList"],"mappings":";;;;;;;AAgBA,SAASA,EACP;AAAA,EACE,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AACA,SACE,gBAAAC,EAACC,GAAA,EAAK,KAAAF,GAAU,WAAWG,EAAK,qBAAqBL,CAAS,GAAI,GAAGC,GAClE,UAAAN,EAAM,IAAI,CAAAW,MAAQ;AACjB,UAAMC,IAAUV,EAAWS,CAAI;AAC/B,WAAIP,IACKS,EAAM,aAAaT,EAAeO,GAAMC,CAAO,GAAG;AAAA,MACvD,KAAKX,EAAWU,CAAI;AAAA,IAAA,CACrB,sBAGAG,GAAA,EAAqC,MAAAH,GAAY,aAAAR,GAC/C,UAAAS,EAAA,GADiBX,EAAWU,CAAI,CAEnC;AAAA,EAEJ,CAAC,EAAA,CACH;AAEJ;AAEO,MAAMI,IAAeF,EAAM,WAAWd,CAAiB;"}
@@ -0,0 +1,4 @@
1
+ export { ManageListItem, type ManageListItemOwnProps, type ManageListItemProps, RemovableItem, type RemovableItemProps, AddableItem, type AddableItemProps, SelectedList, type SelectedListOwnProps, type SelectedListProps, AvailableList, type AvailableListOwnProps, type AvailableListProps, } from './components/index.js';
2
+ export { TransferList, type TransferListProps } from './transfer_list/index.js';
3
+ export { TransferTable, TransferTablePresenter, type SelectedItemsUpdate, type TransferTableProps, } from './transfer_table/index.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,aAAa,EACb,KAAK,kBAAkB,EACvB,WAAW,EACX,KAAK,gBAAgB,EACrB,YAAY,EACZ,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,aAAa,EACb,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,2BAA2B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,19 @@
1
+ import { ManageListItem as o } from "./components/manage_list_item/manage_list_item.js";
2
+ import { RemovableItem as m } from "./components/manage_list_item/removable_item.js";
3
+ import { AddableItem as f } from "./components/manage_list_item/addable_item.js";
4
+ import { SelectedList as s } from "./components/selected_list/selected_list.js";
5
+ import { AvailableList as l } from "./components/available_list/available_list.js";
6
+ import { TransferList as i } from "./transfer_list/transfer_list.js";
7
+ import { TransferTable as T } from "./transfer_table/transfer_table.js";
8
+ import { TransferTablePresenter as d } from "./transfer_table/transfer_table_presenter.js";
9
+ export {
10
+ f as AddableItem,
11
+ l as AvailableList,
12
+ o as ManageListItem,
13
+ m as RemovableItem,
14
+ s as SelectedList,
15
+ i as TransferList,
16
+ T as TransferTable,
17
+ d as TransferTablePresenter
18
+ };
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -0,0 +1 @@
1
+ ._removable-item_47294a9 .tcn-icon:last-child{color:var(--status-color-error)}
@@ -0,0 +1,2 @@
1
+ export { TransferList, type TransferListProps } from './transfer_list.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transfer_list/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { TransferList as f } from "./transfer_list.js";
2
+ export {
3
+ f as TransferList
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,6 @@
1
+ import { default as React } from 'react';
2
+ import { ScaffoldProps } from '@tcn/ui/layouts';
3
+ export interface TransferListProps extends ScaffoldProps {
4
+ }
5
+ export declare const TransferList: React.ForwardRefExoticComponent<TransferListProps & React.RefAttributes<HTMLElement>>;
6
+ //# sourceMappingURL=transfer_list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer_list.d.ts","sourceRoot":"","sources":["../../src/transfer_list/transfer_list.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE/D,MAAM,WAAW,iBAAkB,SAAQ,aAAa;CAAG;AAE3D,eAAO,MAAM,YAAY,uFAQxB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import e from "react";
3
+ import { Scaffold as i } from "@tcn/ui/layouts";
4
+ const c = e.forwardRef(
5
+ function({ children: r, ...o }, f) {
6
+ return /* @__PURE__ */ t(i, { ref: f, ...o, children: r });
7
+ }
8
+ );
9
+ export {
10
+ c as TransferList
11
+ };
12
+ //# sourceMappingURL=transfer_list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer_list.js","sources":["../../src/transfer_list/transfer_list.tsx"],"sourcesContent":["import React from 'react';\nimport { Scaffold, type ScaffoldProps } from '@tcn/ui/layouts';\n\nexport interface TransferListProps extends ScaffoldProps {}\n\nexport const TransferList = React.forwardRef<HTMLElement, TransferListProps>(\n function TransferList({ children, ...props }: TransferListProps, ref) {\n return (\n <Scaffold ref={ref} {...props}>\n {children}\n </Scaffold>\n );\n }\n);\n"],"names":["TransferList","React","children","props","ref","jsx","Scaffold"],"mappings":";;;AAKO,MAAMA,IAAeC,EAAM;AAAA,EAChC,SAAsB,EAAE,UAAAC,GAAU,GAAGC,EAAA,GAA4BC,GAAK;AACpE,WACE,gBAAAC,EAACC,GAAA,EAAS,KAAAF,GAAW,GAAGD,GACrB,UAAAD,GACH;AAAA,EAEJ;AACF;"}
@@ -0,0 +1,17 @@
1
+ import { DataSource } from '@tcn/resource-store';
2
+ import { IBroadcast } from '@tcn/state';
3
+ import { FieldFilterProps, TableColumnProps } from '@tcn/ui-table';
4
+ import { ScaffoldProps } from '@tcn/ui/layouts';
5
+ import { ReactElement } from 'react';
6
+ export interface AvailableTableOwnProps<T> {
7
+ dataSource: DataSource<T>;
8
+ columns: TableColumnProps<T>[];
9
+ filterPanelIsOpenBroadcast: IBroadcast<boolean>;
10
+ filterChildren?: ReactElement<FieldFilterProps> | ReactElement<FieldFilterProps>[];
11
+ onClickMove: (item: T) => void;
12
+ onClickFilterPanelToggle: () => void;
13
+ onClickMoveAll: () => void;
14
+ }
15
+ export type AvailableTableProps<T> = AvailableTableOwnProps<T> & ScaffoldProps;
16
+ export declare const AvailableTable: <T>({ dataSource, columns, filterPanelIsOpenBroadcast, filterChildren, onClickMove, onClickFilterPanelToggle, onClickMoveAll, className, ...props }: AvailableTableProps<T>) => import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=available_table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"available_table.d.ts","sourceRoot":"","sources":["../../../src/transfer_table/components/available_table.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAsB,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEvF,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAc,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAK5C,MAAM,WAAW,sBAAsB,CAAC,CAAC;IACvC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1B,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,0BAA0B,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAChD,cAAc,CAAC,EAAE,YAAY,CAAC,gBAAgB,CAAC,GAAG,YAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC;IACnF,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC/B,wBAAwB,EAAE,MAAM,IAAI,CAAC;IACrC,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,sBAAsB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC;AAE/E,eAAO,MAAM,cAAc,GAAI,CAAC,EAAG,iJAUhC,mBAAmB,CAAC,CAAC,CAAC,4CA6CxB,CAAC"}
@@ -0,0 +1,68 @@
1
+ import { jsxs as m, jsx as a } from "react/jsx-runtime";
2
+ import { clsx as h } from "clsx";
3
+ import { ArrowRightIcon as y } from "@tcn/icons/arrow_right_icon.js";
4
+ import { Table as v, TableColumn as o } from "@tcn/ui-table";
5
+ import { Button as A } from "@tcn/ui/actions";
6
+ import { Scaffold as x, Rail as T } from "@tcn/ui/layouts";
7
+ import { s as b } from "../../transfer_table.module-CI4PvlY3.js";
8
+ import { AvailableTableFilterPanel as N } from "./available_table_filter_panel.js";
9
+ import { AvailableTableHeader as j } from "./available_table_header.js";
10
+ const q = ({
11
+ dataSource: l,
12
+ columns: r,
13
+ filterPanelIsOpenBroadcast: n,
14
+ filterChildren: t,
15
+ onClickMove: s,
16
+ onClickFilterPanelToggle: i,
17
+ onClickMoveAll: c,
18
+ className: f,
19
+ ...p
20
+ }) => /* @__PURE__ */ m(
21
+ x,
22
+ {
23
+ className: h(
24
+ b["tcn-table-available-table"],
25
+ "tcn-table-available-table",
26
+ f
27
+ ),
28
+ ...p,
29
+ children: [
30
+ /* @__PURE__ */ a(
31
+ j,
32
+ {
33
+ dataSource: l,
34
+ filterChildren: t,
35
+ onClickFilterPanelToggle: i,
36
+ onClickMoveAll: c
37
+ }
38
+ ),
39
+ /* @__PURE__ */ m(T, { children: [
40
+ /* @__PURE__ */ a(
41
+ N,
42
+ {
43
+ dataSource: l,
44
+ filterPanelIsOpenBroadcast: n,
45
+ filterChildren: t,
46
+ onClickFilterPanelToggle: i
47
+ }
48
+ ),
49
+ r?.length > 0 ? /* @__PURE__ */ a(v, { minWidth: 200, dataSource: l, className: b["table-body"], children: [
50
+ ...r.map((e, d) => /* @__PURE__ */ a(o, { ...e }, e.fieldName ?? d)),
51
+ /* @__PURE__ */ a(
52
+ o,
53
+ {
54
+ heading: "Actions",
55
+ sticky: "end",
56
+ render: (e) => /* @__PURE__ */ a(A, { utility: !0, hierarchy: "tertiary", onClick: () => s(e), children: /* @__PURE__ */ a(y, {}) })
57
+ },
58
+ "actions"
59
+ )
60
+ ] }) : null
61
+ ] })
62
+ ]
63
+ }
64
+ );
65
+ export {
66
+ q as AvailableTable
67
+ };
68
+ //# sourceMappingURL=available_table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"available_table.js","sources":["../../../src/transfer_table/components/available_table.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { ArrowRightIcon } from '@tcn/icons/arrow_right_icon.js';\nimport { DataSource } from '@tcn/resource-store';\nimport { IBroadcast } from '@tcn/state';\nimport { FieldFilterProps, Table, TableColumn, TableColumnProps } from '@tcn/ui-table';\nimport { Button } from '@tcn/ui/actions';\nimport { Rail, Scaffold, type ScaffoldProps } from '@tcn/ui/layouts';\nimport React, { ReactElement } from 'react';\nimport styles from '../transfer_table.module.css';\nimport { AvailableTableFilterPanel } from './available_table_filter_panel.js';\nimport { AvailableTableHeader } from './available_table_header.js';\n\nexport interface AvailableTableOwnProps<T> {\n dataSource: DataSource<T>;\n columns: TableColumnProps<T>[];\n filterPanelIsOpenBroadcast: IBroadcast<boolean>;\n filterChildren?: ReactElement<FieldFilterProps> | ReactElement<FieldFilterProps>[];\n onClickMove: (item: T) => void;\n onClickFilterPanelToggle: () => void;\n onClickMoveAll: () => void;\n}\n\nexport type AvailableTableProps<T> = AvailableTableOwnProps<T> & ScaffoldProps;\n\nexport const AvailableTable = <T,>({\n dataSource,\n columns,\n filterPanelIsOpenBroadcast,\n filterChildren,\n onClickMove,\n onClickFilterPanelToggle,\n onClickMoveAll,\n className,\n ...props\n}: AvailableTableProps<T>) => {\n return (\n <Scaffold\n className={clsx(\n styles['tcn-table-available-table'],\n 'tcn-table-available-table',\n className\n )}\n {...props}\n >\n <AvailableTableHeader\n dataSource={dataSource}\n filterChildren={filterChildren}\n onClickFilterPanelToggle={onClickFilterPanelToggle}\n onClickMoveAll={onClickMoveAll}\n />\n <Rail>\n <AvailableTableFilterPanel\n dataSource={dataSource}\n filterPanelIsOpenBroadcast={filterPanelIsOpenBroadcast}\n filterChildren={filterChildren}\n onClickFilterPanelToggle={onClickFilterPanelToggle}\n />\n {columns?.length > 0 ? (\n <Table minWidth={200} dataSource={dataSource} className={styles['table-body']}>\n {[\n ...columns.map((columnProps, index) => (\n <TableColumn key={columnProps.fieldName ?? index} {...columnProps} />\n )),\n <TableColumn\n key=\"actions\"\n heading=\"Actions\"\n sticky=\"end\"\n render={(item: T) => (\n <Button utility hierarchy=\"tertiary\" onClick={() => onClickMove(item)}>\n <ArrowRightIcon />\n </Button>\n )}\n />,\n ]}\n </Table>\n ) : null}\n </Rail>\n </Scaffold>\n );\n};\n"],"names":["AvailableTable","dataSource","columns","filterPanelIsOpenBroadcast","filterChildren","onClickMove","onClickFilterPanelToggle","onClickMoveAll","className","props","jsxs","Scaffold","clsx","styles","jsx","AvailableTableHeader","Rail","AvailableTableFilterPanel","Table","columnProps","index","TableColumn","item","Button","ArrowRightIcon"],"mappings":";;;;;;;;;AAwBO,MAAMA,IAAiB,CAAK;AAAA,EACjC,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,4BAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,0BAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,MAEI,gBAAAC;AAAA,EAACC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACTC,EAAO,2BAA2B;AAAA,MAClC;AAAA,MACAL;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAK;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,YAAAd;AAAA,UACA,gBAAAG;AAAA,UACA,0BAAAE;AAAA,UACA,gBAAAC;AAAA,QAAA;AAAA,MAAA;AAAA,wBAEDS,GAAA,EACC,UAAA;AAAA,QAAA,gBAAAF;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,YAAAhB;AAAA,YACA,4BAAAE;AAAA,YACA,gBAAAC;AAAA,YACA,0BAAAE;AAAA,UAAA;AAAA,QAAA;AAAA,QAEDJ,GAAS,SAAS,IACjB,gBAAAY,EAACI,GAAA,EAAM,UAAU,KAAK,YAAAjB,GAAwB,WAAWY,EAAO,YAAY,GACzE,UAAA;AAAA,UACC,GAAGX,EAAQ,IAAI,CAACiB,GAAaC,MAC3B,gBAAAN,EAACO,GAAA,EAAkD,GAAGF,EAAA,GAApCA,EAAY,aAAaC,CAAwB,CACpE;AAAA,UACD,gBAAAN;AAAA,YAACO;AAAA,YAAA;AAAA,cAEC,SAAQ;AAAA,cACR,QAAO;AAAA,cACP,QAAQ,CAACC,MACP,gBAAAR,EAACS,GAAA,EAAO,SAAO,IAAC,WAAU,YAAW,SAAS,MAAMlB,EAAYiB,CAAI,GAClE,UAAA,gBAAAR,EAACU,KAAe,EAAA,CAClB;AAAA,YAAA;AAAA,YANE;AAAA,UAAA;AAAA,QAQN,GAEJ,IACE;AAAA,MAAA,EAAA,CACN;AAAA,IAAA;AAAA,EAAA;AAAA;"}
@@ -0,0 +1,13 @@
1
+ import { DataSource } from '@tcn/resource-store';
2
+ import { IBroadcast } from '@tcn/state';
3
+ import { FieldFilterProps, TableFilterPanelProps } from '@tcn/ui-table';
4
+ import { default as React, ReactElement } from 'react';
5
+ export interface AvailableTableFilterPanelOwnProps<T> {
6
+ dataSource: DataSource<T>;
7
+ filterPanelIsOpenBroadcast: IBroadcast<boolean>;
8
+ filterChildren?: ReactElement<FieldFilterProps> | ReactElement<FieldFilterProps>[];
9
+ onClickFilterPanelToggle: () => void;
10
+ }
11
+ export type AvailableTableFilterPanelProps<T> = AvailableTableFilterPanelOwnProps<T> & Omit<TableFilterPanelProps, 'children' | 'dataSource' | 'onClose'>;
12
+ export declare const AvailableTableFilterPanel: <T>(props: AvailableTableFilterPanelProps<T> & React.RefAttributes<HTMLElement>) => React.ReactElement | null;
13
+ //# sourceMappingURL=available_table_filter_panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"available_table_filter_panel.d.ts","sourceRoot":"","sources":["../../../src/transfer_table/components/available_table_filter_panel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAkB,MAAM,YAAY,CAAC;AACxD,OAAO,EACL,gBAAgB,EAEhB,KAAK,qBAAqB,EAC3B,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,WAAW,iCAAiC,CAAC,CAAC;IAClD,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1B,0BAA0B,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAChD,cAAc,CAAC,EAAE,YAAY,CAAC,gBAAgB,CAAC,GAAG,YAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC;IACnF,wBAAwB,EAAE,MAAM,IAAI,CAAC;CACtC;AAED,MAAM,MAAM,8BAA8B,CAAC,CAAC,IAAI,iCAAiC,CAAC,CAAC,CAAC,GAClF,IAAI,CAAC,qBAAqB,EAAE,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC,CAAC;AAuCrE,eAAO,MAAM,yBAAyB,EAEjC,CAAC,CAAC,EACL,KAAK,EAAE,8BAA8B,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,KACxE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { jsxs as f, jsx as l } from "react/jsx-runtime";
2
+ import { useSignalValue as m } from "@tcn/state";
3
+ import { TableFilterPanel as b } from "@tcn/ui-table";
4
+ import { Resizable as c, ResizeHandle as u } from "@tcn/ui/utils";
5
+ import x from "react";
6
+ function P({
7
+ dataSource: r,
8
+ filterPanelIsOpenBroadcast: n,
9
+ filterChildren: e,
10
+ onClickFilterPanelToggle: i,
11
+ minWidth: o = "200px",
12
+ maxWidth: a = "400px",
13
+ width: t = "296px",
14
+ ...p
15
+ }, s) {
16
+ return !m(n) || !e ? null : /* @__PURE__ */ f(c, { children: [
17
+ /* @__PURE__ */ l(
18
+ b,
19
+ {
20
+ ref: s,
21
+ dataSource: r,
22
+ onClose: i,
23
+ minWidth: o,
24
+ maxWidth: a,
25
+ width: t,
26
+ ...p,
27
+ children: e
28
+ }
29
+ ),
30
+ /* @__PURE__ */ l(u, { position: "end" })
31
+ ] });
32
+ }
33
+ const v = x.forwardRef(
34
+ P
35
+ );
36
+ export {
37
+ v as AvailableTableFilterPanel
38
+ };
39
+ //# sourceMappingURL=available_table_filter_panel.js.map