@vuu-ui/vuu-ui-controls 0.13.24 → 0.13.26

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 (65) hide show
  1. package/cjs/column-picker/ColumnSearch.js +24 -4
  2. package/cjs/column-picker/ColumnSearch.js.map +1 -1
  3. package/cjs/index.js +15 -9
  4. package/cjs/index.js.map +1 -1
  5. package/cjs/instrument-picker/TablePicker.css.js +1 -1
  6. package/cjs/prompt/Prompt.css.js +6 -0
  7. package/cjs/prompt/Prompt.css.js.map +1 -0
  8. package/cjs/prompt/Prompt.js +136 -0
  9. package/cjs/prompt/Prompt.js.map +1 -0
  10. package/cjs/time-input/MaskedInput.js +387 -0
  11. package/cjs/time-input/MaskedInput.js.map +1 -0
  12. package/cjs/time-input/TimeInput.css.js +6 -0
  13. package/cjs/time-input/TimeInput.css.js.map +1 -0
  14. package/cjs/time-input/TimeInput.js +46 -0
  15. package/cjs/time-input/TimeInput.js.map +1 -0
  16. package/cjs/time-input/useTimeInput.js +92 -0
  17. package/cjs/time-input/useTimeInput.js.map +1 -0
  18. package/cjs/vuu-input/VuuInput.js +6 -3
  19. package/cjs/vuu-input/VuuInput.js.map +1 -1
  20. package/cjs/vuu-time-picker/VuuTimePicker.css.js +6 -0
  21. package/cjs/vuu-time-picker/VuuTimePicker.css.js.map +1 -0
  22. package/cjs/vuu-time-picker/VuuTimePicker.js +33 -0
  23. package/cjs/vuu-time-picker/VuuTimePicker.js.map +1 -0
  24. package/cjs/vuu-typeahead-input/VuuTypeaheadInput.js +4 -2
  25. package/cjs/vuu-typeahead-input/VuuTypeaheadInput.js.map +1 -1
  26. package/cjs/vuu-typeahead-input/useVuuTypeaheadInput.js +10 -2
  27. package/cjs/vuu-typeahead-input/useVuuTypeaheadInput.js.map +1 -1
  28. package/esm/column-picker/ColumnSearch.js +25 -5
  29. package/esm/column-picker/ColumnSearch.js.map +1 -1
  30. package/esm/index.js +6 -3
  31. package/esm/index.js.map +1 -1
  32. package/esm/instrument-picker/TablePicker.css.js +1 -1
  33. package/esm/prompt/Prompt.css.js +4 -0
  34. package/esm/prompt/Prompt.css.js.map +1 -0
  35. package/esm/prompt/Prompt.js +134 -0
  36. package/esm/prompt/Prompt.js.map +1 -0
  37. package/esm/time-input/MaskedInput.js +385 -0
  38. package/esm/time-input/MaskedInput.js.map +1 -0
  39. package/esm/time-input/TimeInput.css.js +4 -0
  40. package/esm/time-input/TimeInput.css.js.map +1 -0
  41. package/esm/time-input/TimeInput.js +44 -0
  42. package/esm/time-input/TimeInput.js.map +1 -0
  43. package/esm/time-input/useTimeInput.js +90 -0
  44. package/esm/time-input/useTimeInput.js.map +1 -0
  45. package/esm/vuu-input/VuuInput.js +6 -3
  46. package/esm/vuu-input/VuuInput.js.map +1 -1
  47. package/esm/vuu-time-picker/VuuTimePicker.css.js +4 -0
  48. package/esm/vuu-time-picker/VuuTimePicker.css.js.map +1 -0
  49. package/esm/vuu-time-picker/VuuTimePicker.js +31 -0
  50. package/esm/vuu-time-picker/VuuTimePicker.js.map +1 -0
  51. package/esm/vuu-typeahead-input/VuuTypeaheadInput.js +4 -2
  52. package/esm/vuu-typeahead-input/VuuTypeaheadInput.js.map +1 -1
  53. package/esm/vuu-typeahead-input/useVuuTypeaheadInput.js +10 -2
  54. package/esm/vuu-typeahead-input/useVuuTypeaheadInput.js.map +1 -1
  55. package/package.json +10 -10
  56. package/types/column-picker/ColumnSearch.d.ts +5 -0
  57. package/types/index.d.ts +6 -5
  58. package/types/prompt/Prompt.d.ts +44 -0
  59. package/types/time-input/MaskedInput.d.ts +36 -0
  60. package/types/time-input/TimeInput.d.ts +5 -0
  61. package/types/time-input/useTimeInput.d.ts +19 -0
  62. package/types/vuu-input/VuuInput.d.ts +1 -0
  63. package/types/vuu-time-picker/TimeRangePicker.d.ts +0 -0
  64. package/types/vuu-time-picker/VuuTimePicker.d.ts +6 -0
  65. package/types/vuu-typeahead-input/VuuTypeaheadInput.d.ts +3 -2
@@ -7,6 +7,7 @@ var window = require('@salt-ds/window');
7
7
  var cx = require('clsx');
8
8
  var React = require('react');
9
9
  var ColumnSearch$1 = require('./ColumnSearch.css.js');
10
+ var vuuUtils = require('@vuu-ui/vuu-utils');
10
11
 
11
12
  const classBase = "vuuColumnSearch";
12
13
  const searchIcon = /* @__PURE__ */ jsxRuntime.jsx("span", { "data-icon": "search" });
@@ -26,14 +27,33 @@ const ColumnSearch = React.forwardRef(
26
27
  css: ColumnSearch$1,
27
28
  window: targetWindow
28
29
  });
30
+ const selectedValues = React.useRef([]);
29
31
  const searchCallbackRef = React.useCallback((el) => {
30
32
  setTimeout(() => {
31
33
  el?.querySelector("input")?.focus();
32
34
  }, 100);
33
35
  }, []);
34
- const handleChange = () => {
35
- console.log(`handle change`);
36
- };
36
+ const handleChange = React.useCallback(
37
+ (e) => {
38
+ const input = e.target;
39
+ const { columnName } = vuuUtils.queryClosest(
40
+ input,
41
+ "[data-column-name]",
42
+ true
43
+ ).dataset;
44
+ if (columnName) {
45
+ if (input.checked) {
46
+ selectedValues.current = selectedValues.current.concat(columnName);
47
+ } else {
48
+ selectedValues.current = selectedValues.current.filter(
49
+ (val) => val !== columnName
50
+ );
51
+ }
52
+ onSelectionChange?.(e, selectedValues.current);
53
+ }
54
+ },
55
+ [onSelectionChange]
56
+ );
37
57
  return /* @__PURE__ */ jsxRuntime.jsxs(
38
58
  "div",
39
59
  {
@@ -48,7 +68,7 @@ const ColumnSearch = React.forwardRef(
48
68
  ref: autoFocus ? searchCallbackRef : null
49
69
  }
50
70
  ) }),
51
- /* @__PURE__ */ jsxRuntime.jsx(core.ListBox, { children: columns.map((column) => /* @__PURE__ */ jsxRuntime.jsxs(core.Option, { value: column, children: [
71
+ /* @__PURE__ */ jsxRuntime.jsx(core.ListBox, { children: columns.map((column) => /* @__PURE__ */ jsxRuntime.jsxs(core.Option, { "data-column-name": column, value: column, children: [
52
72
  /* @__PURE__ */ jsxRuntime.jsx(core.Checkbox, { onChange: handleChange }),
53
73
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: column })
54
74
  ] }, column)) })
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnSearch.js","sources":["../../../../packages/vuu-ui-controls/src/column-picker/ColumnSearch.tsx"],"sourcesContent":["import { Checkbox, Input, ListBoxProps } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport cx from \"clsx\";\nimport { HTMLAttributes, RefCallback, forwardRef, useCallback } from \"react\";\nimport { ListBox, Option } from \"@salt-ds/core\";\n\nimport searchableListCss from \"./ColumnSearch.css\";\n\nconst classBase = \"vuuColumnSearch\";\n\nexport interface ColumnSearchProps\n extends HTMLAttributes<HTMLDivElement>,\n Pick<ListBoxProps, \"onSelectionChange\" | \"selected\"> {\n columns: string[];\n onReorderColumns: (columns: string[]) => void;\n}\n\nconst searchIcon = <span data-icon=\"search\" />;\n\nexport const ColumnSearch = forwardRef<HTMLDivElement, ColumnSearchProps>(\n function ColumnSearch(\n {\n autoFocus = false,\n className,\n columns,\n onChange,\n onSelectionChange,\n selected,\n ...htmlAttributes\n },\n forwardedRef,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-column-picker\",\n css: searchableListCss,\n window: targetWindow,\n });\n\n const searchCallbackRef = useCallback<RefCallback<HTMLElement>>((el) => {\n setTimeout(() => {\n el?.querySelector(\"input\")?.focus();\n }, 100);\n }, []);\n\n const handleChange = () => {\n console.log(`handle change`);\n };\n\n return (\n <div\n {...htmlAttributes}\n className={cx(classBase, className)}\n ref={forwardedRef}\n >\n <div className={`${classBase}-inputField`}>\n <Input\n // inputProps={{ onKeyDown }}\n startAdornment={searchIcon}\n ref={autoFocus ? searchCallbackRef : null}\n // value={searchState.searchText}\n // onChange={onChange}\n />\n </div>\n <ListBox>\n {columns.map((column) => (\n <Option key={column} value={column}>\n <Checkbox onChange={handleChange} />\n <span>{column}</span>\n </Option>\n ))}\n </ListBox>\n </div>\n );\n },\n);\n"],"names":["jsx","forwardRef","ColumnSearch","useWindow","useComponentCssInjection","searchableListCss","useCallback","jsxs","Input","ListBox","Option","Checkbox"],"mappings":";;;;;;;;;;AASA,MAAM,SAAY,GAAA,iBAAA;AASlB,MAAM,UAAa,mBAAAA,cAAA,CAAC,MAAK,EAAA,EAAA,WAAA,EAAU,QAAS,EAAA,CAAA;AAErC,MAAM,YAAe,GAAAC,gBAAA;AAAA,EAC1B,SAASC,aACP,CAAA;AAAA,IACE,SAAY,GAAA,KAAA;AAAA,IACZ,SAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,iBAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,YACA,EAAA;AACA,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,mBAAA;AAAA,MACR,GAAK,EAAAC,cAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAM,MAAA,iBAAA,GAAoBC,iBAAsC,CAAA,CAAC,EAAO,KAAA;AACtE,MAAA,UAAA,CAAW,MAAM;AACf,QAAI,EAAA,EAAA,aAAA,CAAc,OAAO,CAAA,EAAG,KAAM,EAAA;AAAA,SACjC,GAAG,CAAA;AAAA,KACR,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,OAAA,CAAQ,IAAI,CAAe,aAAA,CAAA,CAAA;AAAA,KAC7B;AAEA,IACE,uBAAAC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACE,GAAG,cAAA;AAAA,QACJ,SAAA,EAAW,EAAG,CAAA,SAAA,EAAW,SAAS,CAAA;AAAA,QAClC,GAAK,EAAA,YAAA;AAAA,QAEL,QAAA,EAAA;AAAA,0BAAAP,cAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,CAC1B,WAAA,CAAA,EAAA,QAAA,kBAAAA,cAAA;AAAA,YAACQ,UAAA;AAAA,YAAA;AAAA,cAEC,cAAgB,EAAA,UAAA;AAAA,cAChB,GAAA,EAAK,YAAY,iBAAoB,GAAA;AAAA;AAAA,WAIzC,EAAA,CAAA;AAAA,0BACAR,cAAA,CAACS,gBACE,QAAQ,EAAA,OAAA,CAAA,GAAA,CAAI,CAAC,MACZ,qBAAAF,eAAA,CAACG,WAAoB,EAAA,EAAA,KAAA,EAAO,MAC1B,EAAA,QAAA,EAAA;AAAA,4BAACV,cAAA,CAAAW,aAAA,EAAA,EAAS,UAAU,YAAc,EAAA,CAAA;AAAA,4BAClCX,cAAA,CAAC,UAAM,QAAO,EAAA,MAAA,EAAA;AAAA,WAFH,EAAA,EAAA,MAGb,CACD,CACH,EAAA;AAAA;AAAA;AAAA,KACF;AAAA;AAGN;;;;"}
1
+ {"version":3,"file":"ColumnSearch.js","sources":["../../../../packages/vuu-ui-controls/src/column-picker/ColumnSearch.tsx"],"sourcesContent":["import { Checkbox, Input, ListBoxProps } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport cx from \"clsx\";\nimport {\n FormEventHandler,\n HTMLAttributes,\n RefCallback,\n forwardRef,\n useCallback,\n useRef,\n} from \"react\";\nimport { ListBox, Option } from \"@salt-ds/core\";\n\nimport searchableListCss from \"./ColumnSearch.css\";\nimport { queryClosest } from \"@vuu-ui/vuu-utils\";\n\nconst classBase = \"vuuColumnSearch\";\n\nexport interface ColumnSearchProps\n extends HTMLAttributes<HTMLDivElement>,\n Pick<ListBoxProps, \"onSelectionChange\" | \"selected\"> {\n columns: string[];\n onReorderColumns: (columns: string[]) => void;\n}\n\nconst searchIcon = <span data-icon=\"search\" />;\n\n/**\n * @deprecated\n *\n * use ColumnList instead\n */\nexport const ColumnSearch = forwardRef<HTMLDivElement, ColumnSearchProps>(\n function ColumnSearch(\n {\n autoFocus = false,\n className,\n columns,\n onChange,\n onSelectionChange,\n selected,\n ...htmlAttributes\n },\n forwardedRef,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-column-picker\",\n css: searchableListCss,\n window: targetWindow,\n });\n\n const selectedValues = useRef<string[]>([]);\n\n const searchCallbackRef = useCallback<RefCallback<HTMLElement>>((el) => {\n setTimeout(() => {\n el?.querySelector(\"input\")?.focus();\n }, 100);\n }, []);\n\n const handleChange = useCallback<FormEventHandler<HTMLInputElement>>(\n (e) => {\n const input = e.target as HTMLInputElement;\n const { columnName } = queryClosest(\n input,\n \"[data-column-name]\",\n true,\n ).dataset;\n if (columnName) {\n if (input.checked) {\n selectedValues.current = selectedValues.current.concat(columnName);\n } else {\n selectedValues.current = selectedValues.current.filter(\n (val) => val !== columnName,\n );\n }\n onSelectionChange?.(e, selectedValues.current);\n }\n },\n [onSelectionChange],\n );\n\n return (\n <div\n {...htmlAttributes}\n className={cx(classBase, className)}\n ref={forwardedRef}\n >\n <div className={`${classBase}-inputField`}>\n <Input\n // inputProps={{ onKeyDown }}\n startAdornment={searchIcon}\n ref={autoFocus ? searchCallbackRef : null}\n // value={searchState.searchText}\n // onChange={onChange}\n />\n </div>\n <ListBox>\n {columns.map((column) => (\n <Option data-column-name={column} key={column} value={column}>\n <Checkbox onChange={handleChange} />\n <span>{column}</span>\n </Option>\n ))}\n </ListBox>\n </div>\n );\n },\n);\n"],"names":["jsx","forwardRef","ColumnSearch","useWindow","useComponentCssInjection","searchableListCss","useRef","useCallback","queryClosest","jsxs","Input","ListBox","Option","Checkbox"],"mappings":";;;;;;;;;;;AAiBA,MAAM,SAAY,GAAA,iBAAA;AASlB,MAAM,UAAa,mBAAAA,cAAA,CAAC,MAAK,EAAA,EAAA,WAAA,EAAU,QAAS,EAAA,CAAA;AAOrC,MAAM,YAAe,GAAAC,gBAAA;AAAA,EAC1B,SAASC,aACP,CAAA;AAAA,IACE,SAAY,GAAA,KAAA;AAAA,IACZ,SAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,iBAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,YACA,EAAA;AACA,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,mBAAA;AAAA,MACR,GAAK,EAAAC,cAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAM,MAAA,cAAA,GAAiBC,YAAiB,CAAA,EAAE,CAAA;AAE1C,IAAM,MAAA,iBAAA,GAAoBC,iBAAsC,CAAA,CAAC,EAAO,KAAA;AACtE,MAAA,UAAA,CAAW,MAAM;AACf,QAAI,EAAA,EAAA,aAAA,CAAc,OAAO,CAAA,EAAG,KAAM,EAAA;AAAA,SACjC,GAAG,CAAA;AAAA,KACR,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,YAAe,GAAAA,iBAAA;AAAA,MACnB,CAAC,CAAM,KAAA;AACL,QAAA,MAAM,QAAQ,CAAE,CAAA,MAAA;AAChB,QAAM,MAAA,EAAE,YAAe,GAAAC,qBAAA;AAAA,UACrB,KAAA;AAAA,UACA,oBAAA;AAAA,UACA;AAAA,SACA,CAAA,OAAA;AACF,QAAA,IAAI,UAAY,EAAA;AACd,UAAA,IAAI,MAAM,OAAS,EAAA;AACjB,YAAA,cAAA,CAAe,OAAU,GAAA,cAAA,CAAe,OAAQ,CAAA,MAAA,CAAO,UAAU,CAAA;AAAA,WAC5D,MAAA;AACL,YAAe,cAAA,CAAA,OAAA,GAAU,eAAe,OAAQ,CAAA,MAAA;AAAA,cAC9C,CAAC,QAAQ,GAAQ,KAAA;AAAA,aACnB;AAAA;AAEF,UAAoB,iBAAA,GAAA,CAAA,EAAG,eAAe,OAAO,CAAA;AAAA;AAC/C,OACF;AAAA,MACA,CAAC,iBAAiB;AAAA,KACpB;AAEA,IACE,uBAAAC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACE,GAAG,cAAA;AAAA,QACJ,SAAA,EAAW,EAAG,CAAA,SAAA,EAAW,SAAS,CAAA;AAAA,QAClC,GAAK,EAAA,YAAA;AAAA,QAEL,QAAA,EAAA;AAAA,0BAAAT,cAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,CAC1B,WAAA,CAAA,EAAA,QAAA,kBAAAA,cAAA;AAAA,YAACU,UAAA;AAAA,YAAA;AAAA,cAEC,cAAgB,EAAA,UAAA;AAAA,cAChB,GAAA,EAAK,YAAY,iBAAoB,GAAA;AAAA;AAAA,WAIzC,EAAA,CAAA;AAAA,0BACAV,cAAA,CAACW,YACE,EAAA,EAAA,QAAA,EAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,MACZ,qBAAAF,eAAA,CAACG,WAAO,EAAA,EAAA,kBAAA,EAAkB,MAAqB,EAAA,KAAA,EAAO,MACpD,EAAA,QAAA,EAAA;AAAA,4BAACZ,cAAA,CAAAa,aAAA,EAAA,EAAS,UAAU,YAAc,EAAA,CAAA;AAAA,4BAClCb,cAAA,CAAC,UAAM,QAAO,EAAA,MAAA,EAAA;AAAA,WAFuB,EAAA,EAAA,MAGvC,CACD,CACH,EAAA;AAAA;AAAA;AAAA,KACF;AAAA;AAGN;;;;"}
package/cjs/index.js CHANGED
@@ -9,6 +9,7 @@ var ColumnSearch = require('./column-picker/ColumnSearch.js');
9
9
  var useControlled = require('./common-hooks/useControlled.js');
10
10
  var useResizeObserver = require('./common-hooks/use-resize-observer.js');
11
11
  var selectionTypes = require('./common-hooks/selectionTypes.js');
12
+ var ContextPanelProvider = require('./context-panel-provider/ContextPanelProvider.js');
12
13
  var CycleStateButton = require('./cycle-state-button/CycleStateButton.js');
13
14
  var DateInput = require('./date-input/DateInput.js');
14
15
  var DatePicker = require('./date-picker/DatePicker.js');
@@ -25,14 +26,16 @@ var Icon = require('./icon-button/Icon.js');
25
26
  var IconButton = require('./icon-button/IconButton.js');
26
27
  var ToggleIconButton = require('./icon-button/ToggleIconButton.js');
27
28
  var TablePicker = require('./instrument-picker/TablePicker.js');
28
- var TableSearch = require('./table-search/TableSearch.js');
29
29
  var MeasuredContainer = require('./measured-container/MeasuredContainer.js');
30
30
  var useMeasuredContainer = require('./measured-container/useMeasuredContainer.js');
31
31
  var OverflowContainer = require('./overflow-container/OverflowContainer.js');
32
32
  var overflowUtils = require('./overflow-container/overflow-utils.js');
33
33
  var PriceTicker = require('./price-ticker/PriceTicker.js');
34
+ var Prompt = require('./prompt/Prompt.js');
35
+ var SortableList = require('./sortable-list/SortableList.js');
34
36
  var SplitButton = require('./split-button/SplitButton.js');
35
37
  var SplitStateButton = require('./split-button/SplitStateButton.js');
38
+ var TableSearch = require('./table-search/TableSearch.js');
36
39
  var TabNext = require('./tabs-next/TabNext.js');
37
40
  var TabListNext = require('./tabs-next/TabListNext.js');
38
41
  var TabsNext = require('./tabs-next/TabsNext.js');
@@ -43,6 +46,7 @@ var TabNextAction = require('./tabs-next/TabNextAction.js');
43
46
  var Tabstrip = require('./tabstrip/Tabstrip.js');
44
47
  var Tab = require('./tabstrip/Tab.js');
45
48
  var tabstripDomUtils = require('./tabstrip/tabstrip-dom-utils.js');
49
+ var TimeInput = require('./time-input/TimeInput.js');
46
50
  var Toolbar = require('./toolbar/Toolbar.js');
47
51
  var escapeRegExp = require('./utils/escapeRegExp.js');
48
52
  var isOverflowElement = require('./utils/isOverflowElement.js');
@@ -50,9 +54,8 @@ var isPlainObject = require('./utils/isPlainObject.js');
50
54
  var forwardCallbackProps = require('./utils/forwardCallbackProps.js');
51
55
  var VuuDatePicker = require('./vuu-date-picker/VuuDatePicker.js');
52
56
  var VuuInput = require('./vuu-input/VuuInput.js');
57
+ var VuuTimePicker = require('./vuu-time-picker/VuuTimePicker.js');
53
58
  var VuuTypeaheadInput = require('./vuu-typeahead-input/VuuTypeaheadInput.js');
54
- var ContextPanelProvider = require('./context-panel-provider/ContextPanelProvider.js');
55
- var SortableList = require('./sortable-list/SortableList.js');
56
59
 
57
60
 
58
61
 
@@ -77,6 +80,9 @@ exports.hasSelection = selectionTypes.hasSelection;
77
80
  exports.isMultiSelection = selectionTypes.isMultiSelection;
78
81
  exports.isSingleSelection = selectionTypes.isSingleSelection;
79
82
  exports.selectionIsDisallowed = selectionTypes.selectionIsDisallowed;
83
+ exports.ContextPanelProvider = ContextPanelProvider.ContextPanelProvider;
84
+ exports.useContextPanel = ContextPanelProvider.useContextPanel;
85
+ exports.useHideContextPanel = ContextPanelProvider.useHideContextPanel;
80
86
  exports.CycleStateButton = CycleStateButton.CycleStateButton;
81
87
  exports.DateInput = DateInput.DateInput;
82
88
  exports.DatePicker = DatePicker.DatePicker;
@@ -111,7 +117,6 @@ exports.Icon = Icon.Icon;
111
117
  exports.IconButton = IconButton.IconButton;
112
118
  exports.ToggleIconButton = ToggleIconButton.ToggleIconButton;
113
119
  exports.TablePicker = TablePicker.TablePicker;
114
- exports.TableSearch = TableSearch.TableSearch;
115
120
  exports.MeasuredContainer = MeasuredContainer.MeasuredContainer;
116
121
  exports.reduceSizeHeight = useMeasuredContainer.reduceSizeHeight;
117
122
  exports.useMeasuredContainer = useMeasuredContainer.useMeasuredContainer;
@@ -130,8 +135,12 @@ exports.sortByScreenOrder = overflowUtils.sortByScreenOrder;
130
135
  exports.switchWrappedItemIntoView = overflowUtils.switchWrappedItemIntoView;
131
136
  exports.unmarkItemsWhichAreNoLongerWrapped = overflowUtils.unmarkItemsWhichAreNoLongerWrapped;
132
137
  exports.PriceTicker = PriceTicker.PriceTicker;
138
+ exports.Prompt = Prompt.Prompt;
139
+ exports.SortableList = SortableList.SortableList;
140
+ exports.SortableOption = SortableList.SortableOption;
133
141
  exports.SplitButton = SplitButton.SplitButton;
134
142
  exports.SplitStateButton = SplitStateButton.SplitStateButton;
143
+ exports.TableSearch = TableSearch.TableSearch;
135
144
  exports.TabNext = TabNext.TabNext;
136
145
  exports.TabListNext = TabListNext.TabListNext;
137
146
  exports.TabsNext = TabsNext.TabsNext;
@@ -143,6 +152,7 @@ exports.Tabstrip = Tabstrip.Tabstrip;
143
152
  exports.Tab = Tab.Tab;
144
153
  exports.getIndexOfEditedItem = tabstripDomUtils.getIndexOfEditedItem;
145
154
  exports.getIndexOfSelectedTab = tabstripDomUtils.getIndexOfSelectedTab;
155
+ exports.TimeInput = TimeInput.TimeInput;
146
156
  exports.Toolbar = Toolbar.Toolbar;
147
157
  exports.escapeRegExp = escapeRegExp.escapeRegExp;
148
158
  exports.isOverflowElement = isOverflowElement.isOverflowElement;
@@ -150,10 +160,6 @@ exports.isPlainObject = isPlainObject.isPlainObject;
150
160
  exports.forwardCallbackProps = forwardCallbackProps.forwardCallbackProps;
151
161
  exports.VuuDatePicker = VuuDatePicker.VuuDatePicker;
152
162
  exports.VuuInput = VuuInput.VuuInput;
163
+ exports.VuuTimePicker = VuuTimePicker.VuuTimePicker;
153
164
  exports.VuuTypeaheadInput = VuuTypeaheadInput.VuuTypeaheadInput;
154
- exports.ContextPanelProvider = ContextPanelProvider.ContextPanelProvider;
155
- exports.useContextPanel = ContextPanelProvider.useContextPanel;
156
- exports.useHideContextPanel = ContextPanelProvider.useHideContextPanel;
157
- exports.SortableList = SortableList.SortableList;
158
- exports.SortableOption = SortableList.SortableOption;
159
165
  //# sourceMappingURL=index.js.map
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var tablePickerCss = ".vuuTablePicker {\n border-radius: 6px;\n height: var(--salt-size-base);\n padding: 1px;\n box-sizing: content-box;\n}\n\n.vuuTablePicker-floating-table {\n border: solid 1px var(--salt-container-secondary-borderColor);\n border-radius: 4px;\n overflow: auto;\n padding: var(--salt-spacing-100) 0;\n z-index: var(--salt-zIndex-popout);\n}\n";
3
+ var tablePickerCss = ".vuuTablePicker {\n border-radius: 6px;\n height: var(--salt-size-base);\n padding: 1px;\n box-sizing: content-box;\n}\n\n.vuuTablePicker-floating-table {\n border: solid 1px var(--salt-container-secondary-borderColor);\n border-radius: 4px;\n overflow: auto;\n padding: var(--salt-spacing-100) 0;\n z-index: var(--salt-zIndex-popout);\n}\n\n[data-floating-ui-portal] [data-floating-ui-portal] .vuuTablePicker-floating-table {\n z-index: calc(var(--salt-zIndex-modal) + var(--salt-zIndex-popout));\n}\n";
4
4
 
5
5
  module.exports = tablePickerCss;
6
6
  //# sourceMappingURL=TablePicker.css.js.map
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var promptCss = ".vuuPrompt {\n min-height: var(--vuuPrompt-minHeight, 257px);\n min-width: var(--vuuPrompt-minWidth,380px);\n\n .saltDialogHeader {\n .vuuIcon {\n width: 24px;\n --vuu-icon-size: 20px;\n }\n }\n\n .vuuPromptConfirmButton:focus {\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n outline-color: var(--salt-focused-outlineColor);\n outline-offset: var(--salt-focused-outlineOffset);\n }\n}\n\n.vuuPrompt.saltDialog-warning {\n --salt-status-warning-borderColor: var(--vuu-color-yellow-20); \n --variant-color: var(--vuu-color-yellow-20);\n\n border-radius: 4px !important;\n min-height: var(--vuuPrompt-minHeight, 150px);\n min-width: var(--vuuPrompt-minWidth, 280px);\n padding-top:0 !important;\n\n .saltDialogHeader {\n background-color: var(--variant-color);\n padding-left: var(--salt-spacing-100);\n padding-bottom: var(--salt-spacing-100);\n padding-right: var(--salt-spacing-100);\n\n .saltDialogHeader-header {\n align-items: end;\n display: flex;\n gap: var(--salt-spacing-100);\n }\n }\n\n .saltDialogContent {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n } \n}\n\n";
4
+
5
+ module.exports = promptCss;
6
+ //# sourceMappingURL=Prompt.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Prompt.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,136 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var core = require('@salt-ds/core');
5
+ var cx = require('clsx');
6
+ var React = require('react');
7
+ var Icon = require('../icon-button/Icon.js');
8
+ var IconButton = require('../icon-button/IconButton.js');
9
+ var styles = require('@salt-ds/styles');
10
+ var window = require('@salt-ds/window');
11
+ var Prompt$1 = require('./Prompt.css.js');
12
+
13
+ const classBase = "vuuPrompt";
14
+ const Prompt = ({
15
+ children,
16
+ className,
17
+ cancelButtonLabel = "Cancel",
18
+ cancelButtonProps,
19
+ confirmButtonLabel = "Confirm",
20
+ confirmButtonProps,
21
+ disableAccent,
22
+ icon,
23
+ initialFocusedItem,
24
+ onCancel,
25
+ onClose,
26
+ onConfirm,
27
+ onOpenChange,
28
+ open,
29
+ showCancelButton = true,
30
+ showCloseButton = true,
31
+ showConfirmButton = true,
32
+ status,
33
+ title,
34
+ ...htmlAttributes
35
+ }) => {
36
+ const targetWindow = window.useWindow();
37
+ styles.useComponentCssInjection({
38
+ testId: "vuu-prompt-next",
39
+ css: Prompt$1,
40
+ window: targetWindow
41
+ });
42
+ const close = React.useCallback(() => {
43
+ onClose?.();
44
+ onOpenChange?.(false);
45
+ }, [onClose, onOpenChange]);
46
+ const callbackRef = React.useCallback(
47
+ (el) => {
48
+ if (el) {
49
+ let target = null;
50
+ if (initialFocusedItem === "confirm" && showConfirmButton) {
51
+ target = el.querySelector(".vuuPromptConfirmButton");
52
+ } else if (initialFocusedItem === "cancel" && showCancelButton) {
53
+ target = el.querySelector(".vuuPromptCancelButton");
54
+ } else if (initialFocusedItem === "close" && showCloseButton) {
55
+ target = el.querySelector(".vuuPromptCloseButton");
56
+ }
57
+ if (target) {
58
+ setTimeout(() => {
59
+ target.focus();
60
+ }, 200);
61
+ }
62
+ }
63
+ },
64
+ [initialFocusedItem, showCancelButton, showCloseButton, showConfirmButton]
65
+ );
66
+ const handleCancel = React.useCallback(() => {
67
+ onCancel?.();
68
+ close();
69
+ }, [close, onCancel]);
70
+ const handleConfirm = React.useCallback(() => {
71
+ onConfirm?.();
72
+ close();
73
+ }, [close, onConfirm]);
74
+ const actions = showCloseButton ? /* @__PURE__ */ jsxRuntime.jsx(
75
+ IconButton.IconButton,
76
+ {
77
+ appearance: "transparent",
78
+ className: "vuuPromptCloseButton",
79
+ "data-embedded": true,
80
+ icon: "close",
81
+ onClick: close
82
+ }
83
+ ) : null;
84
+ const header = icon ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
85
+ /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { name: icon }),
86
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: title })
87
+ ] }) : title;
88
+ return /* @__PURE__ */ jsxRuntime.jsxs(
89
+ core.Dialog,
90
+ {
91
+ ...htmlAttributes,
92
+ className: cx(classBase, className),
93
+ onOpenChange,
94
+ open,
95
+ ref: callbackRef,
96
+ status,
97
+ children: [
98
+ /* @__PURE__ */ jsxRuntime.jsx(
99
+ core.DialogHeader,
100
+ {
101
+ disableAccent,
102
+ header,
103
+ actions
104
+ }
105
+ ),
106
+ /* @__PURE__ */ jsxRuntime.jsx(core.DialogContent, { children }),
107
+ /* @__PURE__ */ jsxRuntime.jsxs(core.DialogActions, { children: [
108
+ showCancelButton ? /* @__PURE__ */ jsxRuntime.jsx(
109
+ core.Button,
110
+ {
111
+ className: "vuuPromptCancelButton",
112
+ disabled: cancelButtonProps?.disabled,
113
+ onClick: handleCancel,
114
+ ref: cancelButtonProps?.ref,
115
+ children: cancelButtonProps?.label ?? cancelButtonLabel
116
+ }
117
+ ) : null,
118
+ showConfirmButton ? /* @__PURE__ */ jsxRuntime.jsx(
119
+ core.Button,
120
+ {
121
+ className: "vuuPromptConfirmButton",
122
+ disabled: confirmButtonProps?.disabled,
123
+ sentiment: "accented",
124
+ onClick: handleConfirm,
125
+ ref: confirmButtonProps?.ref,
126
+ children: confirmButtonProps?.label ?? confirmButtonLabel
127
+ }
128
+ ) : null
129
+ ] })
130
+ ]
131
+ }
132
+ );
133
+ };
134
+
135
+ exports.Prompt = Prompt;
136
+ //# sourceMappingURL=Prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Prompt.js","sources":["../../../../packages/vuu-ui-controls/src/prompt/Prompt.tsx"],"sourcesContent":["import {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogHeader,\n DialogHeaderProps,\n DialogProps,\n} from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport {\n HTMLAttributes,\n MouseEventHandler,\n RefCallback,\n RefObject,\n useCallback,\n} from \"react\";\nimport { Icon, IconButton } from \"../icon-button\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport promptCss from \"./Prompt.css\";\n\nconst classBase = \"vuuPrompt\";\n\n/**\n * Allow fine grained configuration of Prompt buttons\n * The ref is provided to facilitate programmatic focus.\n */\nexport interface PromptButtonProps {\n disabled?: boolean;\n label?: string;\n ref?: RefObject<HTMLButtonElement | null>;\n}\n\nexport interface PromptProps\n extends Pick<DialogProps, \"onOpenChange\" | \"open\" | \"status\">,\n Pick<DialogHeaderProps, \"disableAccent\">,\n Omit<HTMLAttributes<HTMLDivElement>, \"content\" | \"title\"> {\n /**\n * For simple configuration, where just a cancel button label is required.\n */\n cancelButtonLabel?: string;\n /**\n * Allow fine grained configuration of cancel button\n */\n cancelButtonProps?: PromptButtonProps;\n /**\n * For simple configuration, where just a confirm button label is required.\n */\n confirmButtonLabel?: string;\n /**\n * Allow fine grained configuration of confirm button\n */\n confirmButtonProps?: PromptButtonProps;\n icon?: string;\n /**\n * Set this prop if one of the three built-in buttons should receive initial focus.\n * Allows user to quickly dismiss/confirm prompt from keyboard. If the prompt content\n * contains focusable item(s), focus should be controlled by caller.\n */\n initialFocusedItem?: \"confirm\" | \"cancel\" | \"close\";\n onCancel?: () => void;\n onConfirm?: () => void;\n onClose?: () => void;\n showCancelButton?: boolean;\n showCloseButton?: boolean;\n showConfirmButton?: boolean;\n title: string;\n}\n\nexport const Prompt = ({\n children,\n className,\n cancelButtonLabel = \"Cancel\",\n cancelButtonProps,\n confirmButtonLabel = \"Confirm\",\n confirmButtonProps,\n disableAccent,\n icon,\n initialFocusedItem,\n onCancel,\n onClose,\n onConfirm,\n onOpenChange,\n open,\n showCancelButton = true,\n showCloseButton = true,\n showConfirmButton = true,\n status,\n title,\n\n ...htmlAttributes\n}: PromptProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-prompt-next\",\n css: promptCss,\n window: targetWindow,\n });\n\n const close = useCallback(() => {\n onClose?.();\n onOpenChange?.(false);\n }, [onClose, onOpenChange]);\n\n const callbackRef = useCallback<RefCallback<HTMLDivElement>>(\n (el) => {\n if (el) {\n let target: HTMLButtonElement | null = null;\n if (initialFocusedItem === \"confirm\" && showConfirmButton) {\n target = el.querySelector(\".vuuPromptConfirmButton\");\n } else if (initialFocusedItem === \"cancel\" && showCancelButton) {\n target = el.querySelector(\".vuuPromptCancelButton\");\n } else if (initialFocusedItem === \"close\" && showCloseButton) {\n target = el.querySelector(\".vuuPromptCloseButton\");\n }\n\n if (target) {\n setTimeout(() => {\n target.focus();\n }, 200);\n }\n }\n },\n [initialFocusedItem, showCancelButton, showCloseButton, showConfirmButton],\n );\n\n const handleCancel = useCallback<MouseEventHandler<HTMLButtonElement>>(() => {\n onCancel?.();\n close();\n }, [close, onCancel]);\n\n const handleConfirm = useCallback<\n MouseEventHandler<HTMLButtonElement>\n >(() => {\n onConfirm?.();\n close();\n }, [close, onConfirm]);\n\n const actions = showCloseButton ? (\n <IconButton\n appearance=\"transparent\"\n className=\"vuuPromptCloseButton\"\n data-embedded\n icon=\"close\"\n onClick={close}\n />\n ) : null;\n\n const header = icon ? (\n <>\n <Icon name={icon} />\n <span>{title}</span>\n </>\n ) : (\n title\n );\n\n return (\n <Dialog\n {...htmlAttributes}\n className={cx(classBase, className)}\n onOpenChange={onOpenChange}\n open={open}\n ref={callbackRef}\n status={status}\n >\n <DialogHeader\n disableAccent={disableAccent}\n header={header}\n actions={actions}\n />\n <DialogContent>{children}</DialogContent>\n <DialogActions>\n {showCancelButton ? (\n <Button\n className=\"vuuPromptCancelButton\"\n disabled={cancelButtonProps?.disabled}\n onClick={handleCancel}\n ref={cancelButtonProps?.ref}\n >\n {cancelButtonProps?.label ?? cancelButtonLabel}\n </Button>\n ) : null}\n {showConfirmButton ? (\n <Button\n className=\"vuuPromptConfirmButton\"\n disabled={confirmButtonProps?.disabled}\n sentiment=\"accented\"\n onClick={handleConfirm}\n ref={confirmButtonProps?.ref}\n >\n {confirmButtonProps?.label ?? confirmButtonLabel}\n </Button>\n ) : null}\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":["useWindow","useComponentCssInjection","promptCss","useCallback","jsx","IconButton","jsxs","Fragment","Icon","Dialog","DialogHeader","DialogContent","DialogActions","Button"],"mappings":"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"}