@vuu-ui/vuu-ui-controls 0.8.97 → 0.8.98
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/cjs/index.js +2 -8
- package/cjs/index.js.map +1 -1
- package/cjs/{instrument-search → table-search}/SearchCell.js +0 -4
- package/cjs/table-search/SearchCell.js.map +1 -0
- package/cjs/table-search/TableSearch.css.js +6 -0
- package/cjs/table-search/TableSearch.css.js.map +1 -0
- package/cjs/{instrument-search/InstrumentSearch.js → table-search/TableSearch.js} +13 -13
- package/cjs/table-search/TableSearch.js.map +1 -0
- package/cjs/{instrument-search/useInstrumentSearch.js → table-search/useTableSearch.js} +4 -4
- package/cjs/table-search/useTableSearch.js.map +1 -0
- package/esm/index.js +1 -4
- package/esm/index.js.map +1 -1
- package/esm/{instrument-search → table-search}/SearchCell.js +0 -4
- package/esm/table-search/SearchCell.js.map +1 -0
- package/esm/table-search/TableSearch.css.js +4 -0
- package/esm/table-search/TableSearch.css.js.map +1 -0
- package/esm/{instrument-search/InstrumentSearch.js → table-search/TableSearch.js} +12 -12
- package/esm/table-search/TableSearch.js.map +1 -0
- package/esm/{instrument-search/useInstrumentSearch.js → table-search/useTableSearch.js} +4 -4
- package/esm/table-search/useTableSearch.js.map +1 -0
- package/package.json +7 -7
- package/types/index.d.ts +1 -3
- package/types/table-search/TableSearch.d.ts +11 -0
- package/types/table-search/index.d.ts +1 -0
- package/types/table-search/useTableSearch.d.ts +13 -0
- package/types/utils/deprecated-types.d.ts +2 -0
- package/types/utils/index.d.ts +1 -0
- package/cjs/date-popup/DatePopup.js +0 -88
- package/cjs/date-popup/DatePopup.js.map +0 -1
- package/cjs/date-popup/useDatePopup.js +0 -77
- package/cjs/date-popup/useDatePopup.js.map +0 -1
- package/cjs/dropdown-base/DropdownBase.css.js +0 -6
- package/cjs/dropdown-base/DropdownBase.css.js.map +0 -1
- package/cjs/dropdown-base/DropdownBase.js +0 -121
- package/cjs/dropdown-base/DropdownBase.js.map +0 -1
- package/cjs/dropdown-base/useClickAway.js +0 -66
- package/cjs/dropdown-base/useClickAway.js.map +0 -1
- package/cjs/dropdown-base/useDropdownBase.js +0 -168
- package/cjs/dropdown-base/useDropdownBase.js.map +0 -1
- package/cjs/instrument-search/InstrumentSearch.css.js +0 -6
- package/cjs/instrument-search/InstrumentSearch.css.js.map +0 -1
- package/cjs/instrument-search/InstrumentSearch.js.map +0 -1
- package/cjs/instrument-search/SearchCell.js.map +0 -1
- package/cjs/instrument-search/useInstrumentSearch.js.map +0 -1
- package/esm/date-popup/DatePopup.js +0 -86
- package/esm/date-popup/DatePopup.js.map +0 -1
- package/esm/date-popup/useDatePopup.js +0 -75
- package/esm/date-popup/useDatePopup.js.map +0 -1
- package/esm/dropdown-base/DropdownBase.css.js +0 -4
- package/esm/dropdown-base/DropdownBase.css.js.map +0 -1
- package/esm/dropdown-base/DropdownBase.js +0 -119
- package/esm/dropdown-base/DropdownBase.js.map +0 -1
- package/esm/dropdown-base/useClickAway.js +0 -63
- package/esm/dropdown-base/useClickAway.js.map +0 -1
- package/esm/dropdown-base/useDropdownBase.js +0 -166
- package/esm/dropdown-base/useDropdownBase.js.map +0 -1
- package/esm/instrument-search/InstrumentSearch.css.js +0 -4
- package/esm/instrument-search/InstrumentSearch.css.js.map +0 -1
- package/esm/instrument-search/InstrumentSearch.js.map +0 -1
- package/esm/instrument-search/SearchCell.js.map +0 -1
- package/esm/instrument-search/useInstrumentSearch.js.map +0 -1
- package/types/date-popup/DatePopup.d.ts +0 -12
- package/types/date-popup/index.d.ts +0 -1
- package/types/date-popup/useDatePopup.d.ts +0 -20
- package/types/dropdown-base/DropdownBase.d.ts +0 -9
- package/types/dropdown-base/dropdownTypes.d.ts +0 -51
- package/types/dropdown-base/index.d.ts +0 -3
- package/types/dropdown-base/useClickAway.d.ts +0 -10
- package/types/dropdown-base/useDropdownBase.d.ts +0 -2
- package/types/instrument-search/InstrumentSearch.d.ts +0 -11
- package/types/instrument-search/index.d.ts +0 -1
- package/types/instrument-search/useDataSource.d.ts +0 -6
- package/types/instrument-search/useInstrumentSearch.d.ts +0 -13
- /package/cjs/{instrument-search → table-search}/SearchCell.css.js +0 -0
- /package/cjs/{instrument-search → table-search}/SearchCell.css.js.map +0 -0
- /package/esm/{instrument-search → table-search}/SearchCell.css.js +0 -0
- /package/esm/{instrument-search → table-search}/SearchCell.css.js.map +0 -0
- /package/types/{instrument-search → table-search}/SearchCell.d.ts +0 -0
- /package/types/{instrument-search → table-search}/moving-window.d.ts +0 -0
package/cjs/index.js
CHANGED
|
@@ -22,16 +22,13 @@ var DragDropState = require('./drag-drop/DragDropState.js');
|
|
|
22
22
|
var useDragDrop = require('./drag-drop/useDragDrop.js');
|
|
23
23
|
var dropTargetUtils = require('./drag-drop/drop-target-utils.js');
|
|
24
24
|
var useGlobalDragDrop = require('./drag-drop/useGlobalDragDrop.js');
|
|
25
|
-
var DatePopup = require('./date-popup/DatePopup.js');
|
|
26
|
-
var DropdownBase = require('./dropdown-base/DropdownBase.js');
|
|
27
|
-
var useDropdownBase = require('./dropdown-base/useDropdownBase.js');
|
|
28
25
|
var useEditableText = require('./editable/useEditableText.js');
|
|
29
26
|
var EditableLabel = require('./editable-label/EditableLabel.js');
|
|
30
27
|
var ExpandoInput = require('./expando-input/ExpandoInput.js');
|
|
31
28
|
var Icon = require('./icon-button/Icon.js');
|
|
32
29
|
var IconButton = require('./icon-button/IconButton.js');
|
|
33
30
|
var TablePicker = require('./instrument-picker/TablePicker.js');
|
|
34
|
-
var
|
|
31
|
+
var TableSearch = require('./table-search/TableSearch.js');
|
|
35
32
|
var keyUtils = require('./list/common-hooks/keyUtils.js');
|
|
36
33
|
var useCollapsibleGroups = require('./list/common-hooks/useCollapsibleGroups.js');
|
|
37
34
|
var listDomUtils = require('./list/common-hooks/list-dom-utils.js');
|
|
@@ -126,9 +123,6 @@ exports.measureElementSizeAndPosition = dropTargetUtils.measureElementSizeAndPos
|
|
|
126
123
|
exports.mutateDropTargetsSwitchDropTargetPosition = dropTargetUtils.mutateDropTargetsSwitchDropTargetPosition;
|
|
127
124
|
exports.removeDraggedItem = dropTargetUtils.removeDraggedItem;
|
|
128
125
|
exports.useGlobalDragDrop = useGlobalDragDrop.useGlobalDragDrop;
|
|
129
|
-
exports.DatePopup = DatePopup.DatePopup;
|
|
130
|
-
exports.DropdownBase = DropdownBase.DropdownBase;
|
|
131
|
-
exports.useDropdownBase = useDropdownBase.useDropdownBase;
|
|
132
126
|
exports.WarnCommit = useEditableText.WarnCommit;
|
|
133
127
|
exports.useEditableText = useEditableText.useEditableText;
|
|
134
128
|
exports.EditableLabel = EditableLabel.EditableLabel;
|
|
@@ -137,7 +131,7 @@ exports.ExpandoInput = ExpandoInput.ExpandoInput;
|
|
|
137
131
|
exports.Icon = Icon.Icon;
|
|
138
132
|
exports.IconButton = IconButton.IconButton;
|
|
139
133
|
exports.TablePicker = TablePicker.TablePicker;
|
|
140
|
-
exports.
|
|
134
|
+
exports.TableSearch = TableSearch.TableSearch;
|
|
141
135
|
exports.ArrowDown = keyUtils.ArrowDown;
|
|
142
136
|
exports.ArrowLeft = keyUtils.ArrowLeft;
|
|
143
137
|
exports.ArrowRight = keyUtils.ArrowRight;
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var styles = require('@salt-ds/styles');
|
|
5
5
|
var window = require('@salt-ds/window');
|
|
6
|
-
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
7
6
|
var SearchCell$1 = require('./SearchCell.css.js');
|
|
8
7
|
|
|
9
8
|
const classBase = "vuuSearchCell";
|
|
@@ -25,9 +24,6 @@ const SearchCell = ({
|
|
|
25
24
|
value
|
|
26
25
|
] });
|
|
27
26
|
};
|
|
28
|
-
vuuUtils.registerComponent("search-cell", SearchCell, "cell-renderer", {
|
|
29
|
-
serverDataType: "private"
|
|
30
|
-
});
|
|
31
27
|
|
|
32
28
|
exports.SearchCell = SearchCell;
|
|
33
29
|
//# sourceMappingURL=SearchCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchCell.js","sources":["../../src/table-search/SearchCell.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { TableCellRendererProps } from \"@vuu-ui/vuu-table-types\";\n\nimport searchCellCss from \"./SearchCell.css\";\n\nconst classBase = \"vuuSearchCell\";\n\n// export to avoid tree shaking, component is not consumed directly\nexport const SearchCell = ({\n column,\n columnMap,\n row,\n}: TableCellRendererProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-search-cell\",\n css: searchCellCss,\n window: targetWindow,\n });\n\n //TODO what about click handling\n\n const key = columnMap[column.name];\n const value = row[key];\n\n return (\n <div className={classBase} tabIndex={-1}>\n <span data-icon=\"draggable\" />\n {value}\n </div>\n );\n};\n"],"names":["useWindow","useComponentCssInjection","searchCellCss","jsxs","jsx"],"mappings":";;;;;;;AAMA,MAAM,SAAY,GAAA,eAAA,CAAA;AAGX,MAAM,aAAa,CAAC;AAAA,EACzB,MAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AACF,CAA8B,KAAA;AAC5B,EAAA,MAAM,eAAeA,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,iBAAA;AAAA,IACR,GAAK,EAAAC,YAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAID,EAAM,MAAA,GAAA,GAAM,SAAU,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AACjC,EAAM,MAAA,KAAA,GAAQ,IAAI,GAAG,CAAA,CAAA;AAErB,EAAA,uBACGC,eAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,SAAA,EAAW,UAAU,CACnC,CAAA,EAAA,QAAA,EAAA;AAAA,oBAACC,cAAA,CAAA,MAAA,EAAA,EAAK,aAAU,WAAY,EAAA,CAAA;AAAA,IAC3B,KAAA;AAAA,GACH,EAAA,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var instrumentSearchCss = ".vuuTableSearch {\n height: 100%;\n padding: var(--vuuTableSearch-padding, 12px);\n display: flex;\n flex-direction: column;\n}\n\n.vuuTableSearch-inputField {\n --vuu-icon-size: 16px;\n flex: 0 0 40px;\n padding: 0 12px;\n}\n.vuuTableSearch-list {\n --vuuMeasuredContainer-flex: 1 1 1px;\n background-color: var(--salt-container-primary-background);\n flex: 1 1 auto;\n}\n\n.vuuTableSearch .vuuTableCell {\n padding: 0;\n}\n";
|
|
4
|
+
|
|
5
|
+
module.exports = instrumentSearchCss;
|
|
6
|
+
//# sourceMappingURL=TableSearch.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableSearch.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -9,13 +9,10 @@ var window = require('@salt-ds/window');
|
|
|
9
9
|
var cx = require('clsx');
|
|
10
10
|
var React = require('react');
|
|
11
11
|
var SearchCell = require('./SearchCell.js');
|
|
12
|
-
var
|
|
13
|
-
var
|
|
12
|
+
var useTableSearch = require('./useTableSearch.js');
|
|
13
|
+
var TableSearch$1 = require('./TableSearch.css.js');
|
|
14
14
|
|
|
15
|
-
const classBase = "
|
|
16
|
-
if (typeof SearchCell.SearchCell !== "function") {
|
|
17
|
-
console.warn("Instrument Search: SearchCell module not loaded ");
|
|
18
|
-
}
|
|
15
|
+
const classBase = "vuuTableSearch";
|
|
19
16
|
const defaultTableConfig = {
|
|
20
17
|
columns: [
|
|
21
18
|
{ name: "bbg", hidden: true },
|
|
@@ -33,7 +30,7 @@ const defaultTableConfig = {
|
|
|
33
30
|
rowSeparators: true
|
|
34
31
|
};
|
|
35
32
|
const searchIcon = /* @__PURE__ */ jsxRuntime.jsx("span", { "data-icon": "search" });
|
|
36
|
-
const
|
|
33
|
+
const TableSearch = ({
|
|
37
34
|
TableProps: TableProps2,
|
|
38
35
|
autoFocus = false,
|
|
39
36
|
className,
|
|
@@ -44,11 +41,11 @@ const InstrumentSearch = ({
|
|
|
44
41
|
}) => {
|
|
45
42
|
const targetWindow = window.useWindow();
|
|
46
43
|
styles.useComponentCssInjection({
|
|
47
|
-
testId: "vuu-
|
|
48
|
-
css:
|
|
44
|
+
testId: "vuu-table-search",
|
|
45
|
+
css: TableSearch$1,
|
|
49
46
|
window: targetWindow
|
|
50
47
|
});
|
|
51
|
-
const { dataSource, onChange, searchState } =
|
|
48
|
+
const { dataSource, onChange, searchState } = useTableSearch.useTableSearch({
|
|
52
49
|
dataSource: dataSourceProp,
|
|
53
50
|
searchColumns
|
|
54
51
|
});
|
|
@@ -90,7 +87,10 @@ const InstrumentSearch = ({
|
|
|
90
87
|
) : null
|
|
91
88
|
] });
|
|
92
89
|
};
|
|
93
|
-
vuuUtils.registerComponent
|
|
90
|
+
vuuUtils.registerComponent("search-cell", SearchCell.SearchCell, "cell-renderer", {
|
|
91
|
+
serverDataType: "private"
|
|
92
|
+
});
|
|
93
|
+
vuuUtils.registerComponent?.("TableSearch", TableSearch, "view");
|
|
94
94
|
|
|
95
|
-
exports.
|
|
96
|
-
//# sourceMappingURL=
|
|
95
|
+
exports.TableSearch = TableSearch;
|
|
96
|
+
//# sourceMappingURL=TableSearch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableSearch.js","sources":["../../src/table-search/TableSearch.tsx"],"sourcesContent":["import { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport {\n Table,\n TableProps,\n useControlledTableNavigation,\n} from \"@vuu-ui/vuu-table\";\nimport { TableConfig } from \"@vuu-ui/vuu-table-types\";\nimport { registerComponent } from \"@vuu-ui/vuu-utils\";\nimport { Input } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport cx from \"clsx\";\nimport { HTMLAttributes, RefCallback, useCallback } from \"react\";\nimport { SearchCell } from \"./SearchCell\";\nimport { useTableSearch } from \"./useTableSearch\";\n\nimport instrumentSearchCss from \"./TableSearch.css\";\n\nconst classBase = \"vuuTableSearch\";\n\nconst defaultTableConfig: TableConfig = {\n columns: [\n { name: \"bbg\", hidden: true },\n {\n name: \"description\",\n width: 200,\n type: {\n name: \"string\",\n renderer: {\n name: \"search-cell\",\n },\n },\n },\n ],\n rowSeparators: true,\n};\n\nexport interface TableSearchProps extends HTMLAttributes<HTMLDivElement> {\n TableProps?: Partial<TableProps>;\n autoFocus?: boolean;\n dataSource: DataSource;\n placeHolder?: string;\n searchColumns: string[];\n}\n\nconst searchIcon = <span data-icon=\"search\" />;\n\nexport const TableSearch = ({\n TableProps,\n autoFocus = false,\n className,\n dataSource: dataSourceProp,\n placeHolder,\n searchColumns,\n ...htmlAttributes\n}: TableSearchProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-table-search\",\n css: instrumentSearchCss,\n window: targetWindow,\n });\n\n const { dataSource, onChange, searchState } = useTableSearch({\n dataSource: dataSourceProp,\n searchColumns,\n });\n\n const { highlightedIndexRef, onHighlight, onKeyDown, tableRef } =\n useControlledTableNavigation(-1, dataSource?.size ?? 0);\n\n const searchCallbackRef = useCallback<RefCallback<HTMLElement>>((el) => {\n setTimeout(() => {\n el?.querySelector(\"input\")?.focus();\n }, 100);\n }, []);\n\n return (\n <div {...htmlAttributes} className={cx(classBase, className)}>\n <div className={`${classBase}-inputField`}>\n <Input\n inputProps={{ onKeyDown }}\n endAdornment={searchIcon}\n placeholder={placeHolder}\n ref={autoFocus ? searchCallbackRef : null}\n value={searchState.searchText}\n onChange={onChange}\n />\n </div>\n\n {dataSource ? (\n <Table\n disableFocus\n id=\"instrument-search\"\n rowHeight={25}\n config={defaultTableConfig}\n highlightedIndex={highlightedIndexRef.current}\n renderBufferSize={100}\n {...TableProps}\n className={`${classBase}-list`}\n dataSource={dataSource}\n navigationStyle=\"row\"\n onHighlight={onHighlight}\n ref={tableRef}\n showColumnHeaders={false}\n />\n ) : null}\n </div>\n );\n};\n\nregisterComponent(\"search-cell\", SearchCell, \"cell-renderer\", {\n serverDataType: \"private\",\n});\n\nregisterComponent?.(\"TableSearch\", TableSearch, \"view\");\n"],"names":["jsx","TableProps","useWindow","useComponentCssInjection","instrumentSearchCss","useTableSearch","useControlledTableNavigation","useCallback","jsxs","Input","Table","registerComponent","SearchCell"],"mappings":"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"}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
|
|
5
|
-
const
|
|
5
|
+
const useTableSearch = ({
|
|
6
6
|
dataSource,
|
|
7
|
-
searchColumns
|
|
7
|
+
searchColumns
|
|
8
8
|
}) => {
|
|
9
9
|
const [searchState, setSearchState] = React.useState({ searchText: "", filter: "" });
|
|
10
10
|
const baseFilterPattern = React.useMemo(
|
|
@@ -35,5 +35,5 @@ const useInstrumentSearch = ({
|
|
|
35
35
|
};
|
|
36
36
|
};
|
|
37
37
|
|
|
38
|
-
exports.
|
|
39
|
-
//# sourceMappingURL=
|
|
38
|
+
exports.useTableSearch = useTableSearch;
|
|
39
|
+
//# sourceMappingURL=useTableSearch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableSearch.js","sources":["../../src/table-search/useTableSearch.ts"],"sourcesContent":["import { FormEventHandler, useCallback, useMemo, useState } from \"react\";\nimport { TableSearchProps } from \"./TableSearch\";\n\nexport interface TableSearchHookProps\n extends Pick<TableSearchProps, \"dataSource\" | \"searchColumns\"> {\n label?: string;\n}\n\nexport const useTableSearch = ({\n dataSource,\n searchColumns,\n}: TableSearchHookProps) => {\n const [searchState, setSearchState] = useState<{\n searchText: string;\n filter: string;\n }>({ searchText: \"\", filter: \"\" });\n\n const baseFilterPattern = useMemo(\n // TODO make this contains once server supports it\n () => searchColumns.map((col) => `${col} starts \"__VALUE__\"`).join(\" or \"),\n [searchColumns],\n );\n\n const handleChange = useCallback<FormEventHandler>(\n (evt) => {\n const { value } = evt.target as HTMLInputElement;\n const filter = baseFilterPattern.replaceAll(\"__VALUE__\", value);\n setSearchState({\n searchText: value,\n filter,\n });\n if (dataSource) {\n dataSource.filter = {\n filter,\n };\n }\n },\n [baseFilterPattern, dataSource],\n );\n\n return {\n dataSource,\n onChange: handleChange,\n searchState,\n };\n};\n"],"names":["useState","useMemo","useCallback"],"mappings":";;;;AAQO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,UAAA;AAAA,EACA,aAAA;AACF,CAA4B,KAAA;AAC1B,EAAM,MAAA,CAAC,WAAa,EAAA,cAAc,CAAI,GAAAA,cAAA,CAGnC,EAAE,UAAY,EAAA,EAAA,EAAI,MAAQ,EAAA,EAAA,EAAI,CAAA,CAAA;AAEjC,EAAA,MAAM,iBAAoB,GAAAC,aAAA;AAAA;AAAA,IAExB,MAAM,aAAc,CAAA,GAAA,CAAI,CAAC,GAAA,KAAQ,GAAG,GAAG,CAAA,mBAAA,CAAqB,CAAE,CAAA,IAAA,CAAK,MAAM,CAAA;AAAA,IACzE,CAAC,aAAa,CAAA;AAAA,GAChB,CAAA;AAEA,EAAA,MAAM,YAAe,GAAAC,iBAAA;AAAA,IACnB,CAAC,GAAQ,KAAA;AACP,MAAM,MAAA,EAAE,KAAM,EAAA,GAAI,GAAI,CAAA,MAAA,CAAA;AACtB,MAAA,MAAM,MAAS,GAAA,iBAAA,CAAkB,UAAW,CAAA,WAAA,EAAa,KAAK,CAAA,CAAA;AAC9D,MAAe,cAAA,CAAA;AAAA,QACb,UAAY,EAAA,KAAA;AAAA,QACZ,MAAA;AAAA,OACD,CAAA,CAAA;AACD,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,UAAA,CAAW,MAAS,GAAA;AAAA,UAClB,MAAA;AAAA,SACF,CAAA;AAAA,OACF;AAAA,KACF;AAAA,IACA,CAAC,mBAAmB,UAAU,CAAA;AAAA,GAChC,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,IACA,QAAU,EAAA,YAAA;AAAA,IACV,WAAA;AAAA,GACF,CAAA;AACF;;;;"}
|
package/esm/index.js
CHANGED
|
@@ -20,16 +20,13 @@ export { DragDropState } from './drag-drop/DragDropState.js';
|
|
|
20
20
|
export { useDragDrop } from './drag-drop/useDragDrop.js';
|
|
21
21
|
export { NOT_HIDDEN, NOT_OVERFLOWED, cloneElement, constrainRect, dimensions, dropTargetsDebugString, getIndexOfDraggedItem, getItemById, getItemParentContainer, getNextDropTarget, getScrollableContainer, isContainerScrollable, measureDropTargets, measureElementSizeAndPosition, mutateDropTargetsSwitchDropTargetPosition, removeDraggedItem } from './drag-drop/drop-target-utils.js';
|
|
22
22
|
export { useGlobalDragDrop } from './drag-drop/useGlobalDragDrop.js';
|
|
23
|
-
export { DatePopup } from './date-popup/DatePopup.js';
|
|
24
|
-
export { DropdownBase } from './dropdown-base/DropdownBase.js';
|
|
25
|
-
export { useDropdownBase } from './dropdown-base/useDropdownBase.js';
|
|
26
23
|
export { WarnCommit, useEditableText } from './editable/useEditableText.js';
|
|
27
24
|
export { EditableLabel, NullEditAPI } from './editable-label/EditableLabel.js';
|
|
28
25
|
export { ExpandoInput } from './expando-input/ExpandoInput.js';
|
|
29
26
|
export { Icon } from './icon-button/Icon.js';
|
|
30
27
|
export { IconButton } from './icon-button/IconButton.js';
|
|
31
28
|
export { TablePicker } from './instrument-picker/TablePicker.js';
|
|
32
|
-
export {
|
|
29
|
+
export { TableSearch } from './table-search/TableSearch.js';
|
|
33
30
|
export { ArrowDown, ArrowLeft, ArrowRight, ArrowUp, End, Enter, Escape, Home, PageDown, PageUp, Space, isCharacterKey, isNavigationKey } from './list/common-hooks/keyUtils.js';
|
|
34
31
|
export { useCollapsibleGroups } from './list/common-hooks/useCollapsibleGroups.js';
|
|
35
32
|
export { closestListItemId, closestListItemIndex, listItemElement, listItemId, listItemIndex } from './list/common-hooks/list-dom-utils.js';
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useComponentCssInjection } from '@salt-ds/styles';
|
|
3
3
|
import { useWindow } from '@salt-ds/window';
|
|
4
|
-
import { registerComponent } from '@vuu-ui/vuu-utils';
|
|
5
4
|
import searchCellCss from './SearchCell.css.js';
|
|
6
5
|
|
|
7
6
|
const classBase = "vuuSearchCell";
|
|
@@ -23,9 +22,6 @@ const SearchCell = ({
|
|
|
23
22
|
value
|
|
24
23
|
] });
|
|
25
24
|
};
|
|
26
|
-
registerComponent("search-cell", SearchCell, "cell-renderer", {
|
|
27
|
-
serverDataType: "private"
|
|
28
|
-
});
|
|
29
25
|
|
|
30
26
|
export { SearchCell };
|
|
31
27
|
//# sourceMappingURL=SearchCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchCell.js","sources":["../../src/table-search/SearchCell.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { TableCellRendererProps } from \"@vuu-ui/vuu-table-types\";\n\nimport searchCellCss from \"./SearchCell.css\";\n\nconst classBase = \"vuuSearchCell\";\n\n// export to avoid tree shaking, component is not consumed directly\nexport const SearchCell = ({\n column,\n columnMap,\n row,\n}: TableCellRendererProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-search-cell\",\n css: searchCellCss,\n window: targetWindow,\n });\n\n //TODO what about click handling\n\n const key = columnMap[column.name];\n const value = row[key];\n\n return (\n <div className={classBase} tabIndex={-1}>\n <span data-icon=\"draggable\" />\n {value}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;AAMA,MAAM,SAAY,GAAA,eAAA,CAAA;AAGX,MAAM,aAAa,CAAC;AAAA,EACzB,MAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AACF,CAA8B,KAAA;AAC5B,EAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,iBAAA;AAAA,IACR,GAAK,EAAA,aAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAID,EAAM,MAAA,GAAA,GAAM,SAAU,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AACjC,EAAM,MAAA,KAAA,GAAQ,IAAI,GAAG,CAAA,CAAA;AAErB,EAAA,uBACG,IAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,SAAA,EAAW,UAAU,CACnC,CAAA,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,MAAA,EAAA,EAAK,aAAU,WAAY,EAAA,CAAA;AAAA,IAC3B,KAAA;AAAA,GACH,EAAA,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var instrumentSearchCss = ".vuuTableSearch {\n height: 100%;\n padding: var(--vuuTableSearch-padding, 12px);\n display: flex;\n flex-direction: column;\n}\n\n.vuuTableSearch-inputField {\n --vuu-icon-size: 16px;\n flex: 0 0 40px;\n padding: 0 12px;\n}\n.vuuTableSearch-list {\n --vuuMeasuredContainer-flex: 1 1 1px;\n background-color: var(--salt-container-primary-background);\n flex: 1 1 auto;\n}\n\n.vuuTableSearch .vuuTableCell {\n padding: 0;\n}\n";
|
|
2
|
+
|
|
3
|
+
export { instrumentSearchCss as default };
|
|
4
|
+
//# sourceMappingURL=TableSearch.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableSearch.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -7,13 +7,10 @@ import { useWindow } from '@salt-ds/window';
|
|
|
7
7
|
import cx from 'clsx';
|
|
8
8
|
import { useCallback } from 'react';
|
|
9
9
|
import { SearchCell } from './SearchCell.js';
|
|
10
|
-
import {
|
|
11
|
-
import instrumentSearchCss from './
|
|
10
|
+
import { useTableSearch } from './useTableSearch.js';
|
|
11
|
+
import instrumentSearchCss from './TableSearch.css.js';
|
|
12
12
|
|
|
13
|
-
const classBase = "
|
|
14
|
-
if (typeof SearchCell !== "function") {
|
|
15
|
-
console.warn("Instrument Search: SearchCell module not loaded ");
|
|
16
|
-
}
|
|
13
|
+
const classBase = "vuuTableSearch";
|
|
17
14
|
const defaultTableConfig = {
|
|
18
15
|
columns: [
|
|
19
16
|
{ name: "bbg", hidden: true },
|
|
@@ -31,7 +28,7 @@ const defaultTableConfig = {
|
|
|
31
28
|
rowSeparators: true
|
|
32
29
|
};
|
|
33
30
|
const searchIcon = /* @__PURE__ */ jsx("span", { "data-icon": "search" });
|
|
34
|
-
const
|
|
31
|
+
const TableSearch = ({
|
|
35
32
|
TableProps: TableProps2,
|
|
36
33
|
autoFocus = false,
|
|
37
34
|
className,
|
|
@@ -42,11 +39,11 @@ const InstrumentSearch = ({
|
|
|
42
39
|
}) => {
|
|
43
40
|
const targetWindow = useWindow();
|
|
44
41
|
useComponentCssInjection({
|
|
45
|
-
testId: "vuu-
|
|
42
|
+
testId: "vuu-table-search",
|
|
46
43
|
css: instrumentSearchCss,
|
|
47
44
|
window: targetWindow
|
|
48
45
|
});
|
|
49
|
-
const { dataSource, onChange, searchState } =
|
|
46
|
+
const { dataSource, onChange, searchState } = useTableSearch({
|
|
50
47
|
dataSource: dataSourceProp,
|
|
51
48
|
searchColumns
|
|
52
49
|
});
|
|
@@ -88,7 +85,10 @@ const InstrumentSearch = ({
|
|
|
88
85
|
) : null
|
|
89
86
|
] });
|
|
90
87
|
};
|
|
91
|
-
registerComponent
|
|
88
|
+
registerComponent("search-cell", SearchCell, "cell-renderer", {
|
|
89
|
+
serverDataType: "private"
|
|
90
|
+
});
|
|
91
|
+
registerComponent?.("TableSearch", TableSearch, "view");
|
|
92
92
|
|
|
93
|
-
export {
|
|
94
|
-
//# sourceMappingURL=
|
|
93
|
+
export { TableSearch };
|
|
94
|
+
//# sourceMappingURL=TableSearch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableSearch.js","sources":["../../src/table-search/TableSearch.tsx"],"sourcesContent":["import { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport {\n Table,\n TableProps,\n useControlledTableNavigation,\n} from \"@vuu-ui/vuu-table\";\nimport { TableConfig } from \"@vuu-ui/vuu-table-types\";\nimport { registerComponent } from \"@vuu-ui/vuu-utils\";\nimport { Input } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport cx from \"clsx\";\nimport { HTMLAttributes, RefCallback, useCallback } from \"react\";\nimport { SearchCell } from \"./SearchCell\";\nimport { useTableSearch } from \"./useTableSearch\";\n\nimport instrumentSearchCss from \"./TableSearch.css\";\n\nconst classBase = \"vuuTableSearch\";\n\nconst defaultTableConfig: TableConfig = {\n columns: [\n { name: \"bbg\", hidden: true },\n {\n name: \"description\",\n width: 200,\n type: {\n name: \"string\",\n renderer: {\n name: \"search-cell\",\n },\n },\n },\n ],\n rowSeparators: true,\n};\n\nexport interface TableSearchProps extends HTMLAttributes<HTMLDivElement> {\n TableProps?: Partial<TableProps>;\n autoFocus?: boolean;\n dataSource: DataSource;\n placeHolder?: string;\n searchColumns: string[];\n}\n\nconst searchIcon = <span data-icon=\"search\" />;\n\nexport const TableSearch = ({\n TableProps,\n autoFocus = false,\n className,\n dataSource: dataSourceProp,\n placeHolder,\n searchColumns,\n ...htmlAttributes\n}: TableSearchProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-table-search\",\n css: instrumentSearchCss,\n window: targetWindow,\n });\n\n const { dataSource, onChange, searchState } = useTableSearch({\n dataSource: dataSourceProp,\n searchColumns,\n });\n\n const { highlightedIndexRef, onHighlight, onKeyDown, tableRef } =\n useControlledTableNavigation(-1, dataSource?.size ?? 0);\n\n const searchCallbackRef = useCallback<RefCallback<HTMLElement>>((el) => {\n setTimeout(() => {\n el?.querySelector(\"input\")?.focus();\n }, 100);\n }, []);\n\n return (\n <div {...htmlAttributes} className={cx(classBase, className)}>\n <div className={`${classBase}-inputField`}>\n <Input\n inputProps={{ onKeyDown }}\n endAdornment={searchIcon}\n placeholder={placeHolder}\n ref={autoFocus ? searchCallbackRef : null}\n value={searchState.searchText}\n onChange={onChange}\n />\n </div>\n\n {dataSource ? (\n <Table\n disableFocus\n id=\"instrument-search\"\n rowHeight={25}\n config={defaultTableConfig}\n highlightedIndex={highlightedIndexRef.current}\n renderBufferSize={100}\n {...TableProps}\n className={`${classBase}-list`}\n dataSource={dataSource}\n navigationStyle=\"row\"\n onHighlight={onHighlight}\n ref={tableRef}\n showColumnHeaders={false}\n />\n ) : null}\n </div>\n );\n};\n\nregisterComponent(\"search-cell\", SearchCell, \"cell-renderer\", {\n serverDataType: \"private\",\n});\n\nregisterComponent?.(\"TableSearch\", TableSearch, \"view\");\n"],"names":["TableProps"],"mappings":";;;;;;;;;;;;AAkBA,MAAM,SAAY,GAAA,gBAAA,CAAA;AAElB,MAAM,kBAAkC,GAAA;AAAA,EACtC,OAAS,EAAA;AAAA,IACP,EAAE,IAAA,EAAM,KAAO,EAAA,MAAA,EAAQ,IAAK,EAAA;AAAA,IAC5B;AAAA,MACE,IAAM,EAAA,aAAA;AAAA,MACN,KAAO,EAAA,GAAA;AAAA,MACP,IAAM,EAAA;AAAA,QACJ,IAAM,EAAA,QAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACR,IAAM,EAAA,aAAA;AAAA,SACR;AAAA,OACF;AAAA,KACF;AAAA,GACF;AAAA,EACA,aAAe,EAAA,IAAA;AACjB,CAAA,CAAA;AAUA,MAAM,UAAa,mBAAA,GAAA,CAAC,MAAK,EAAA,EAAA,WAAA,EAAU,QAAS,EAAA,CAAA,CAAA;AAErC,MAAM,cAAc,CAAC;AAAA,EAC1B,UAAAA,EAAAA,WAAAA;AAAA,EACA,SAAY,GAAA,KAAA;AAAA,EACZ,SAAA;AAAA,EACA,UAAY,EAAA,cAAA;AAAA,EACZ,WAAA;AAAA,EACA,aAAA;AAAA,EACA,GAAG,cAAA;AACL,CAAwB,KAAA;AACtB,EAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,kBAAA;AAAA,IACR,GAAK,EAAA,mBAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,MAAM,EAAE,UAAA,EAAY,QAAU,EAAA,WAAA,KAAgB,cAAe,CAAA;AAAA,IAC3D,UAAY,EAAA,cAAA;AAAA,IACZ,aAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,EAAE,mBAAqB,EAAA,WAAA,EAAa,SAAW,EAAA,QAAA,KACnD,4BAA6B,CAAA,CAAA,CAAA,EAAI,UAAY,EAAA,IAAA,IAAQ,CAAC,CAAA,CAAA;AAExD,EAAM,MAAA,iBAAA,GAAoB,WAAsC,CAAA,CAAC,EAAO,KAAA;AACtE,IAAA,UAAA,CAAW,MAAM;AACf,MAAI,EAAA,EAAA,aAAA,CAAc,OAAO,CAAA,EAAG,KAAM,EAAA,CAAA;AAAA,OACjC,GAAG,CAAA,CAAA;AAAA,GACR,EAAG,EAAE,CAAA,CAAA;AAEL,EACE,uBAAA,IAAA,CAAC,SAAK,GAAG,cAAA,EAAgB,WAAW,EAAG,CAAA,SAAA,EAAW,SAAS,CACzD,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,CAC1B,WAAA,CAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAY,EAAE,SAAU,EAAA;AAAA,QACxB,YAAc,EAAA,UAAA;AAAA,QACd,WAAa,EAAA,WAAA;AAAA,QACb,GAAA,EAAK,YAAY,iBAAoB,GAAA,IAAA;AAAA,QACrC,OAAO,WAAY,CAAA,UAAA;AAAA,QACnB,QAAA;AAAA,OAAA;AAAA,KAEJ,EAAA,CAAA;AAAA,IAEC,UACC,mBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,YAAY,EAAA,IAAA;AAAA,QACZ,EAAG,EAAA,mBAAA;AAAA,QACH,SAAW,EAAA,EAAA;AAAA,QACX,MAAQ,EAAA,kBAAA;AAAA,QACR,kBAAkB,mBAAoB,CAAA,OAAA;AAAA,QACtC,gBAAkB,EAAA,GAAA;AAAA,QACjB,GAAGA,WAAAA;AAAA,QACJ,SAAA,EAAW,GAAG,SAAS,CAAA,KAAA,CAAA;AAAA,QACvB,UAAA;AAAA,QACA,eAAgB,EAAA,KAAA;AAAA,QAChB,WAAA;AAAA,QACA,GAAK,EAAA,QAAA;AAAA,QACL,iBAAmB,EAAA,KAAA;AAAA,OAAA;AAAA,KAEnB,GAAA,IAAA;AAAA,GACN,EAAA,CAAA,CAAA;AAEJ,EAAA;AAEA,iBAAkB,CAAA,aAAA,EAAe,YAAY,eAAiB,EAAA;AAAA,EAC5D,cAAgB,EAAA,SAAA;AAClB,CAAC,CAAA,CAAA;AAED,iBAAoB,GAAA,aAAA,EAAe,aAAa,MAAM,CAAA;;;;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useState, useMemo, useCallback } from 'react';
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const useTableSearch = ({
|
|
4
4
|
dataSource,
|
|
5
|
-
searchColumns
|
|
5
|
+
searchColumns
|
|
6
6
|
}) => {
|
|
7
7
|
const [searchState, setSearchState] = useState({ searchText: "", filter: "" });
|
|
8
8
|
const baseFilterPattern = useMemo(
|
|
@@ -33,5 +33,5 @@ const useInstrumentSearch = ({
|
|
|
33
33
|
};
|
|
34
34
|
};
|
|
35
35
|
|
|
36
|
-
export {
|
|
37
|
-
//# sourceMappingURL=
|
|
36
|
+
export { useTableSearch };
|
|
37
|
+
//# sourceMappingURL=useTableSearch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableSearch.js","sources":["../../src/table-search/useTableSearch.ts"],"sourcesContent":["import { FormEventHandler, useCallback, useMemo, useState } from \"react\";\nimport { TableSearchProps } from \"./TableSearch\";\n\nexport interface TableSearchHookProps\n extends Pick<TableSearchProps, \"dataSource\" | \"searchColumns\"> {\n label?: string;\n}\n\nexport const useTableSearch = ({\n dataSource,\n searchColumns,\n}: TableSearchHookProps) => {\n const [searchState, setSearchState] = useState<{\n searchText: string;\n filter: string;\n }>({ searchText: \"\", filter: \"\" });\n\n const baseFilterPattern = useMemo(\n // TODO make this contains once server supports it\n () => searchColumns.map((col) => `${col} starts \"__VALUE__\"`).join(\" or \"),\n [searchColumns],\n );\n\n const handleChange = useCallback<FormEventHandler>(\n (evt) => {\n const { value } = evt.target as HTMLInputElement;\n const filter = baseFilterPattern.replaceAll(\"__VALUE__\", value);\n setSearchState({\n searchText: value,\n filter,\n });\n if (dataSource) {\n dataSource.filter = {\n filter,\n };\n }\n },\n [baseFilterPattern, dataSource],\n );\n\n return {\n dataSource,\n onChange: handleChange,\n searchState,\n };\n};\n"],"names":[],"mappings":";;AAQO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,UAAA;AAAA,EACA,aAAA;AACF,CAA4B,KAAA;AAC1B,EAAM,MAAA,CAAC,WAAa,EAAA,cAAc,CAAI,GAAA,QAAA,CAGnC,EAAE,UAAY,EAAA,EAAA,EAAI,MAAQ,EAAA,EAAA,EAAI,CAAA,CAAA;AAEjC,EAAA,MAAM,iBAAoB,GAAA,OAAA;AAAA;AAAA,IAExB,MAAM,aAAc,CAAA,GAAA,CAAI,CAAC,GAAA,KAAQ,GAAG,GAAG,CAAA,mBAAA,CAAqB,CAAE,CAAA,IAAA,CAAK,MAAM,CAAA;AAAA,IACzE,CAAC,aAAa,CAAA;AAAA,GAChB,CAAA;AAEA,EAAA,MAAM,YAAe,GAAA,WAAA;AAAA,IACnB,CAAC,GAAQ,KAAA;AACP,MAAM,MAAA,EAAE,KAAM,EAAA,GAAI,GAAI,CAAA,MAAA,CAAA;AACtB,MAAA,MAAM,MAAS,GAAA,iBAAA,CAAkB,UAAW,CAAA,WAAA,EAAa,KAAK,CAAA,CAAA;AAC9D,MAAe,cAAA,CAAA;AAAA,QACb,UAAY,EAAA,KAAA;AAAA,QACZ,MAAA;AAAA,OACD,CAAA,CAAA;AACD,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,UAAA,CAAW,MAAS,GAAA;AAAA,UAClB,MAAA;AAAA,SACF,CAAA;AAAA,OACF;AAAA,KACF;AAAA,IACA,CAAC,mBAAmB,UAAU,CAAA;AAAA,GAChC,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,IACA,QAAU,EAAA,YAAA;AAAA,IACV,WAAA;AAAA,GACF,CAAA;AACF;;;;"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.8.
|
|
2
|
+
"version": "0.8.98",
|
|
3
3
|
"description": "VUU UI Controls",
|
|
4
4
|
"author": "heswell",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"devDependencies": {
|
|
7
|
-
"@vuu-ui/vuu-data-types": "0.8.
|
|
8
|
-
"@vuu-ui/vuu-table-types": "0.8.
|
|
7
|
+
"@vuu-ui/vuu-data-types": "0.8.98",
|
|
8
|
+
"@vuu-ui/vuu-table-types": "0.8.98"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@vuu-ui/vuu-layout": "0.8.
|
|
12
|
-
"@vuu-ui/vuu-popups": "0.8.
|
|
13
|
-
"@vuu-ui/vuu-table": "0.8.
|
|
14
|
-
"@vuu-ui/vuu-utils": "0.8.
|
|
11
|
+
"@vuu-ui/vuu-layout": "0.8.98",
|
|
12
|
+
"@vuu-ui/vuu-popups": "0.8.98",
|
|
13
|
+
"@vuu-ui/vuu-table": "0.8.98",
|
|
14
|
+
"@vuu-ui/vuu-utils": "0.8.98",
|
|
15
15
|
"@floating-ui/react": "^0.26.5",
|
|
16
16
|
"@salt-ds/core": "1.34.0",
|
|
17
17
|
"@salt-ds/icons": "1.12.1",
|
package/types/index.d.ts
CHANGED
|
@@ -5,15 +5,13 @@ export * from "./cycle-state-button";
|
|
|
5
5
|
export * from "./date-input";
|
|
6
6
|
export * from "./date-picker";
|
|
7
7
|
export * from "./drag-drop";
|
|
8
|
-
export * from "./date-popup";
|
|
9
8
|
export * from "./drag-drop";
|
|
10
|
-
export * from "./dropdown-base";
|
|
11
9
|
export * from "./editable";
|
|
12
10
|
export * from "./editable-label";
|
|
13
11
|
export * from "./expando-input";
|
|
14
12
|
export * from "./icon-button";
|
|
15
13
|
export * from "./instrument-picker";
|
|
16
|
-
export * from "./
|
|
14
|
+
export * from "./table-search";
|
|
17
15
|
export * from "./list";
|
|
18
16
|
export * from "./measured-container";
|
|
19
17
|
export * from "./overflow-container";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DataSource } from "@vuu-ui/vuu-data-types";
|
|
2
|
+
import { TableProps } from "@vuu-ui/vuu-table";
|
|
3
|
+
import { HTMLAttributes } from "react";
|
|
4
|
+
export interface TableSearchProps extends HTMLAttributes<HTMLDivElement> {
|
|
5
|
+
TableProps?: Partial<TableProps>;
|
|
6
|
+
autoFocus?: boolean;
|
|
7
|
+
dataSource: DataSource;
|
|
8
|
+
placeHolder?: string;
|
|
9
|
+
searchColumns: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare const TableSearch: ({ TableProps, autoFocus, className, dataSource: dataSourceProp, placeHolder, searchColumns, ...htmlAttributes }: TableSearchProps) => JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./TableSearch";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FormEventHandler } from "react";
|
|
2
|
+
import { TableSearchProps } from "./TableSearch";
|
|
3
|
+
export interface TableSearchHookProps extends Pick<TableSearchProps, "dataSource" | "searchColumns"> {
|
|
4
|
+
label?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const useTableSearch: ({ dataSource, searchColumns, }: TableSearchHookProps) => {
|
|
7
|
+
dataSource: import("@vuu-ui/vuu-data-types").DataSource;
|
|
8
|
+
onChange: FormEventHandler;
|
|
9
|
+
searchState: {
|
|
10
|
+
searchText: string;
|
|
11
|
+
filter: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
package/types/utils/index.d.ts
CHANGED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var date = require('@internationalized/date');
|
|
5
|
-
var core = require('@salt-ds/core');
|
|
6
|
-
var cx = require('clsx');
|
|
7
|
-
var React = require('react');
|
|
8
|
-
var Calendar = require('../calendar/Calendar.js');
|
|
9
|
-
require('../calendar/internal/CalendarContext.js');
|
|
10
|
-
require('../calendar/internal/utils.js');
|
|
11
|
-
require('../calendar/useSelection.js');
|
|
12
|
-
var DropdownBase = require('../dropdown-base/DropdownBase.js');
|
|
13
|
-
require('../common-hooks/collectionProvider.js');
|
|
14
|
-
require('../common-hooks/use-resize-observer.js');
|
|
15
|
-
require('@vuu-ui/vuu-utils');
|
|
16
|
-
require('@salt-ds/styles');
|
|
17
|
-
require('@salt-ds/window');
|
|
18
|
-
var IconButton = require('../icon-button/IconButton.js');
|
|
19
|
-
var useDatePopup = require('./useDatePopup.js');
|
|
20
|
-
|
|
21
|
-
const classBase = "vuuDatePopup";
|
|
22
|
-
const tz = date.getLocalTimeZone();
|
|
23
|
-
const today = date.today(tz);
|
|
24
|
-
const DatePopup = React.forwardRef(
|
|
25
|
-
function DatePopup2({
|
|
26
|
-
selectedDate,
|
|
27
|
-
onChange,
|
|
28
|
-
onPopupClose,
|
|
29
|
-
onPopupOpen,
|
|
30
|
-
selectionVariant,
|
|
31
|
-
"data-embedded": dataEmbedded,
|
|
32
|
-
...htmlAttributes
|
|
33
|
-
}, forwardedRef) {
|
|
34
|
-
const {
|
|
35
|
-
calendarRef,
|
|
36
|
-
date,
|
|
37
|
-
isOpen,
|
|
38
|
-
onSelectedDateChange,
|
|
39
|
-
onVisibleMonthChange,
|
|
40
|
-
handleOpenChange,
|
|
41
|
-
triggererRef,
|
|
42
|
-
visibleMonth
|
|
43
|
-
} = useDatePopup.useDatePopup({
|
|
44
|
-
onChange,
|
|
45
|
-
onPopupClose,
|
|
46
|
-
onPopupOpen,
|
|
47
|
-
selectedDate: selectedDate || today,
|
|
48
|
-
selectionVariant
|
|
49
|
-
});
|
|
50
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
51
|
-
DropdownBase.DropdownBase,
|
|
52
|
-
{
|
|
53
|
-
...htmlAttributes,
|
|
54
|
-
className: classBase,
|
|
55
|
-
isOpen,
|
|
56
|
-
placement: "below",
|
|
57
|
-
onOpenChange: handleOpenChange,
|
|
58
|
-
children: [
|
|
59
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
60
|
-
IconButton.IconButton,
|
|
61
|
-
{
|
|
62
|
-
"data-embedded": dataEmbedded,
|
|
63
|
-
icon: "date",
|
|
64
|
-
ref: core.useForkRef(forwardedRef, triggererRef),
|
|
65
|
-
variant: "secondary",
|
|
66
|
-
className: cx({ "saltButton-active": isOpen })
|
|
67
|
-
}
|
|
68
|
-
),
|
|
69
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
70
|
-
Calendar.Calendar,
|
|
71
|
-
{
|
|
72
|
-
visibleMonth,
|
|
73
|
-
ref: calendarRef,
|
|
74
|
-
selectedDate: date,
|
|
75
|
-
selectionVariant: "default",
|
|
76
|
-
onSelectedDateChange,
|
|
77
|
-
onVisibleMonthChange,
|
|
78
|
-
className: `${classBase}-calendar`
|
|
79
|
-
}
|
|
80
|
-
)
|
|
81
|
-
]
|
|
82
|
-
}
|
|
83
|
-
);
|
|
84
|
-
}
|
|
85
|
-
);
|
|
86
|
-
|
|
87
|
-
exports.DatePopup = DatePopup;
|
|
88
|
-
//# sourceMappingURL=DatePopup.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DatePopup.js","sources":["../../src/date-popup/DatePopup.tsx"],"sourcesContent":["import {\n DateValue,\n getLocalTimeZone,\n today as getTodayDate,\n} from \"@internationalized/date\";\nimport { useForkRef } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport { forwardRef, HTMLAttributes } from \"react\";\nimport { Calendar, CalendarProps } from \"../calendar\";\nimport { DropdownBase, DropdownCloseHandler } from \"../dropdown-base\";\nimport { IconButton } from \"../icon-button\";\nimport { useDatePopup } from \"./useDatePopup\";\n\nconst classBase = \"vuuDatePopup\";\n\nexport interface DatePopupProps\n extends Pick<CalendarProps, \"selectionVariant\">,\n Omit<HTMLAttributes<HTMLDivElement>, \"onChange\" | \"onKeyDown\"> {\n \"data-embedded\"?: boolean;\n selectedDate?: DateValue;\n onPopupClose?: DropdownCloseHandler;\n onPopupOpen?: () => void;\n onChange: (date: DateValue) => void;\n}\n\nconst tz = getLocalTimeZone();\nconst today = getTodayDate(tz);\n\nexport const DatePopup = forwardRef<HTMLButtonElement, DatePopupProps>(\n function DatePopup(\n {\n selectedDate,\n onChange,\n onPopupClose,\n onPopupOpen,\n selectionVariant,\n \"data-embedded\": dataEmbedded,\n ...htmlAttributes\n },\n forwardedRef\n ) {\n const {\n calendarRef,\n date,\n isOpen,\n onSelectedDateChange,\n onVisibleMonthChange,\n handleOpenChange,\n triggererRef,\n visibleMonth,\n } = useDatePopup({\n onChange,\n onPopupClose,\n onPopupOpen,\n selectedDate: selectedDate || today,\n selectionVariant,\n });\n\n return (\n <DropdownBase\n {...htmlAttributes}\n className={classBase}\n isOpen={isOpen}\n placement=\"below\"\n onOpenChange={handleOpenChange}\n >\n <IconButton\n data-embedded={dataEmbedded}\n icon=\"date\"\n ref={useForkRef(forwardedRef, triggererRef)}\n variant=\"secondary\"\n className={cx({ \"saltButton-active\": isOpen })}\n />\n <Calendar\n visibleMonth={visibleMonth}\n ref={calendarRef}\n selectedDate={date}\n selectionVariant=\"default\"\n onSelectedDateChange={onSelectedDateChange}\n onVisibleMonthChange={onVisibleMonthChange}\n className={`${classBase}-calendar`}\n />\n </DropdownBase>\n );\n }\n);\n"],"names":["getLocalTimeZone","getTodayDate","forwardRef","DatePopup","useDatePopup","jsxs","DropdownBase","jsx","IconButton","useForkRef","Calendar"],"mappings":";;;;;;;;;;;;;;;;;;;;AAaA,MAAM,SAAY,GAAA,cAAA,CAAA;AAYlB,MAAM,KAAKA,qBAAiB,EAAA,CAAA;AAC5B,MAAM,KAAA,GAAQC,WAAa,EAAE,CAAA,CAAA;AAEtB,MAAM,SAAY,GAAAC,gBAAA;AAAA,EACvB,SAASC,UACP,CAAA;AAAA,IACE,YAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,gBAAA;AAAA,IACA,eAAiB,EAAA,YAAA;AAAA,IACjB,GAAG,cAAA;AAAA,KAEL,YACA,EAAA;AACA,IAAM,MAAA;AAAA,MACJ,WAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,QACEC,yBAAa,CAAA;AAAA,MACf,QAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAc,YAAgB,IAAA,KAAA;AAAA,MAC9B,gBAAA;AAAA,KACD,CAAA,CAAA;AAED,IACE,uBAAAC,eAAA;AAAA,MAACC,yBAAA;AAAA,MAAA;AAAA,QACE,GAAG,cAAA;AAAA,QACJ,SAAW,EAAA,SAAA;AAAA,QACX,MAAA;AAAA,QACA,SAAU,EAAA,OAAA;AAAA,QACV,YAAc,EAAA,gBAAA;AAAA,QAEd,QAAA,EAAA;AAAA,0BAAAC,cAAA;AAAA,YAACC,qBAAA;AAAA,YAAA;AAAA,cACC,eAAe,EAAA,YAAA;AAAA,cACf,IAAK,EAAA,MAAA;AAAA,cACL,GAAA,EAAKC,eAAW,CAAA,YAAA,EAAc,YAAY,CAAA;AAAA,cAC1C,OAAQ,EAAA,WAAA;AAAA,cACR,SAAW,EAAA,EAAA,CAAG,EAAE,mBAAA,EAAqB,QAAQ,CAAA;AAAA,aAAA;AAAA,WAC/C;AAAA,0BACAF,cAAA;AAAA,YAACG,iBAAA;AAAA,YAAA;AAAA,cACC,YAAA;AAAA,cACA,GAAK,EAAA,WAAA;AAAA,cACL,YAAc,EAAA,IAAA;AAAA,cACd,gBAAiB,EAAA,SAAA;AAAA,cACjB,oBAAA;AAAA,cACA,oBAAA;AAAA,cACA,SAAA,EAAW,GAAG,SAAS,CAAA,SAAA,CAAA;AAAA,aAAA;AAAA,WACzB;AAAA,SAAA;AAAA,OAAA;AAAA,KACF,CAAA;AAAA,GAEJ;AACF;;;;"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var React = require('react');
|
|
4
|
-
|
|
5
|
-
const SELECTED_DAY = ".saltCalendarDay-selected:not(.saltCalendarDay-outOfRange)";
|
|
6
|
-
const useDatePopup = ({
|
|
7
|
-
onChange,
|
|
8
|
-
onPopupClose,
|
|
9
|
-
onPopupOpen,
|
|
10
|
-
selectedDate
|
|
11
|
-
}) => {
|
|
12
|
-
const [date, setDate] = React.useState(selectedDate);
|
|
13
|
-
const [, forceUpdate] = React.useState({});
|
|
14
|
-
const [isOpen, setIsOpen] = React.useState(false);
|
|
15
|
-
const triggererRef = React.useRef(null);
|
|
16
|
-
const calendarRef = React.useRef(null);
|
|
17
|
-
const visibleMonthRef = React.useRef(selectedDate);
|
|
18
|
-
const setVisibleMonth = React.useMemo(() => {
|
|
19
|
-
const setValue = (v) => {
|
|
20
|
-
if (v.toString() !== visibleMonthRef.current.toString()) {
|
|
21
|
-
visibleMonthRef.current = v;
|
|
22
|
-
forceUpdate({});
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
setValue(selectedDate);
|
|
26
|
-
return setValue;
|
|
27
|
-
}, [selectedDate]);
|
|
28
|
-
const handleOpenChange = React.useCallback(
|
|
29
|
-
(open, reason) => {
|
|
30
|
-
setIsOpen(open);
|
|
31
|
-
if (open) {
|
|
32
|
-
onPopupOpen?.();
|
|
33
|
-
requestAnimationFrame(() => {
|
|
34
|
-
const el = calendarRef.current?.querySelector(
|
|
35
|
-
SELECTED_DAY
|
|
36
|
-
);
|
|
37
|
-
el?.focus();
|
|
38
|
-
});
|
|
39
|
-
} else {
|
|
40
|
-
if (reason !== "Tab") {
|
|
41
|
-
triggererRef.current?.focus();
|
|
42
|
-
}
|
|
43
|
-
onPopupClose?.(reason);
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
|
-
[onPopupClose, onPopupOpen]
|
|
47
|
-
);
|
|
48
|
-
const handleDateSelection = React.useCallback(
|
|
49
|
-
(e, date2) => {
|
|
50
|
-
setDate(date2);
|
|
51
|
-
console.log(date2.toString());
|
|
52
|
-
visibleMonthRef.current = date2;
|
|
53
|
-
handleOpenChange(false, "select");
|
|
54
|
-
onChange(date2);
|
|
55
|
-
},
|
|
56
|
-
[handleOpenChange, onChange]
|
|
57
|
-
);
|
|
58
|
-
const handleVisibleMonthChange = React.useCallback(
|
|
59
|
-
(e, date2) => {
|
|
60
|
-
setVisibleMonth(date2);
|
|
61
|
-
},
|
|
62
|
-
[setVisibleMonth]
|
|
63
|
-
);
|
|
64
|
-
return {
|
|
65
|
-
calendarRef,
|
|
66
|
-
date,
|
|
67
|
-
handleOpenChange,
|
|
68
|
-
isOpen,
|
|
69
|
-
onSelectedDateChange: handleDateSelection,
|
|
70
|
-
onVisibleMonthChange: handleVisibleMonthChange,
|
|
71
|
-
triggererRef,
|
|
72
|
-
visibleMonth: visibleMonthRef.current
|
|
73
|
-
};
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
exports.useDatePopup = useDatePopup;
|
|
77
|
-
//# sourceMappingURL=useDatePopup.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useDatePopup.js","sources":["../../src/date-popup/useDatePopup.ts"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from \"react\";\nimport { OpenChangeHandler } from \"../dropdown-base\";\nimport { DateValue } from \"@internationalized/date\";\nimport { DatePopupProps } from \"./DatePopup\";\n\nconst SELECTED_DAY =\n \".saltCalendarDay-selected:not(.saltCalendarDay-outOfRange)\";\n\ntype WithRequired<T, K extends keyof T> = T & { [P in K]-?: T[P] };\n\nexport interface DatePopupHookProps\n extends Pick<DatePopupProps, \"onPopupClose\" | \"onPopupOpen\">,\n WithRequired<DatePopupProps, \"onChange\" | \"selectedDate\"> {}\n\nexport const useDatePopup = ({\n onChange,\n onPopupClose,\n onPopupOpen,\n selectedDate,\n}: // selectionVariant,\nDatePopupHookProps) => {\n const [date, setDate] = useState<DateValue>(selectedDate);\n const [, forceUpdate] = useState({});\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const triggererRef = useRef<HTMLButtonElement>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n\n const visibleMonthRef = useRef<DateValue>(selectedDate);\n const setVisibleMonth = useMemo(() => {\n const setValue = (v: DateValue) => {\n if (v.toString() !== visibleMonthRef.current.toString()) {\n visibleMonthRef.current = v;\n forceUpdate({});\n }\n };\n setValue(selectedDate);\n return setValue;\n }, [selectedDate]);\n\n const handleOpenChange = useCallback<OpenChangeHandler>(\n (open, reason) => {\n setIsOpen(open);\n if (open) {\n onPopupOpen?.();\n requestAnimationFrame(() => {\n const el = calendarRef.current?.querySelector(\n SELECTED_DAY\n ) as HTMLElement;\n el?.focus();\n });\n } else {\n if (reason !== \"Tab\") {\n triggererRef.current?.focus();\n }\n onPopupClose?.(reason);\n }\n },\n [onPopupClose, onPopupOpen]\n );\n\n const handleDateSelection = useCallback(\n (e, date) => {\n setDate(date);\n console.log(date.toString());\n visibleMonthRef.current = date;\n handleOpenChange(false, \"select\");\n onChange(date);\n },\n [handleOpenChange, onChange]\n );\n\n const handleVisibleMonthChange = useCallback(\n (e, date) => {\n setVisibleMonth(date);\n },\n [setVisibleMonth]\n );\n\n return {\n calendarRef,\n date,\n handleOpenChange: handleOpenChange,\n isOpen,\n onSelectedDateChange: handleDateSelection,\n onVisibleMonthChange: handleVisibleMonthChange,\n triggererRef,\n visibleMonth: visibleMonthRef.current,\n };\n};\n"],"names":["useState","useRef","useMemo","useCallback","date"],"mappings":"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"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var dropdownBaseCss = ".vuuDropdown {\n --saltIcon-margin: 2px 0 0 8px;\n --saltButton-height: var(--vuuDropdown-height);\n --saltButton-width : var(--vuuDropdown-width);\n\n line-height: 0;\n position: relative;\n\n}\n\n.vuuDropdownButton.saltButton-secondary {\n --saltButton-background: var(--salt-editable-background);\n --saltButton-color: var(--salt-editable-foreground);\n --saltButton-borderStyle: solid;\n --saltButton-borderColor: var(--salt-editable-borderColor);\n --saltButton-borderWidth: 1px;\n}\n\n.vuuDropdown-fullWidth {\n width: 100%;\n}\n\n.vuuDropdown-popup {\n background: var(--salt-container-primary-background);\n z-index: calc(var(--salt-zIndex-flyover) - 1);\n}\n\n.vuuDropdown-popup-component {\n --vuuList-borderStyle: none;\n}\n";
|
|
4
|
-
|
|
5
|
-
module.exports = dropdownBaseCss;
|
|
6
|
-
//# sourceMappingURL=DropdownBase.css.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownBase.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|