@pathscale/ui 0.0.67 → 0.0.68

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 (2) hide show
  1. package/dist/index.js +154 -70
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -6796,29 +6796,50 @@ const Details = (props)=>{
6796
6796
  const DropdownDetails = Object.assign(Details, {
6797
6797
  Toggle: DropdownToggle_Summary
6798
6798
  });
6799
- var DropdownItem_tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<li role=menuitem>"), DropdownItem_tmpl$2 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<a>");
6800
- const DropdownItem = (props)=>{
6801
- const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
6799
+ var DropdownItem_tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<li role=menuitem>"), DropdownItem_tmpl$2 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<a>"), DropdownItem_tmpl$3 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<button>");
6800
+ const DropdownItem_DropdownItem = (props)=>{
6801
+ const dropdownContext = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.useContext)(DropdownContext);
6802
+ const defaultProps = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.mergeProps)({
6803
+ closeOnClick: true
6804
+ }, props);
6805
+ const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(defaultProps, [
6802
6806
  "anchor",
6803
6807
  "children",
6804
- "aria-selected"
6808
+ "aria-selected",
6809
+ "closeOnClick"
6805
6810
  ]);
6811
+ const handleClick = (e)=>{
6812
+ e.stopPropagation();
6813
+ const originalOnClick = others.onClick;
6814
+ if ("function" == typeof originalOnClick) originalOnClick(e);
6815
+ if (dropdownContext && local.closeOnClick) dropdownContext.setOpen(false);
6816
+ };
6806
6817
  return (()=>{
6807
6818
  var _el$ = DropdownItem_tmpl$();
6808
6819
  (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$, (()=>{
6809
- var _c$ = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.memo)(()=>!!(local.anchor ?? true));
6820
+ var _c$ = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.memo)(()=>!!local.anchor);
6810
6821
  return ()=>_c$() ? (()=>{
6811
6822
  var _el$2 = DropdownItem_tmpl$2();
6812
- (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$2, others, false, true);
6823
+ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$2, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
6824
+ onClick: handleClick
6825
+ }), false, true);
6813
6826
  (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$2, ()=>local.children);
6814
6827
  return _el$2;
6815
- })() : local.children;
6828
+ })() : (()=>{
6829
+ var _el$3 = DropdownItem_tmpl$3();
6830
+ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$3, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(others, {
6831
+ onClick: handleClick,
6832
+ type: "button"
6833
+ }), false, true);
6834
+ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$3, ()=>local.children);
6835
+ return _el$3;
6836
+ })();
6816
6837
  })());
6817
6838
  (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.effect)(()=>(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.setAttribute)(_el$, "aria-selected", local["aria-selected"]));
6818
6839
  return _el$;
6819
6840
  })();
6820
6841
  };
6821
- const dropdown_DropdownItem = DropdownItem;
6842
+ const DropdownItem = DropdownItem_DropdownItem;
6822
6843
  var DropdownMenu_tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<ul>");
6823
6844
  const DropdownMenu = (props)=>{
6824
6845
  const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
@@ -6855,6 +6876,46 @@ const DropdownMenu = (props)=>{
6855
6876
  })();
6856
6877
  };
6857
6878
  const dropdown_DropdownMenu = DropdownMenu;
6879
+ function useDropdown(trigger, disabled = false) {
6880
+ const [open, setOpenState] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(false);
6881
+ let ref;
6882
+ const toggle = ()=>{
6883
+ if (!disabled && "click" === trigger) setOpen(!open());
6884
+ };
6885
+ const onEnter = ()=>{
6886
+ if (!disabled && "hover" === trigger) setOpen(true);
6887
+ };
6888
+ const onLeave = ()=>{
6889
+ if (!disabled && "hover" === trigger) setOpen(false);
6890
+ };
6891
+ const onClickOutside = (e)=>{
6892
+ if ("click" === trigger && ref && !ref.contains(e.target)) setOpen(false);
6893
+ };
6894
+ const setOpen = (value)=>{
6895
+ if (false === value) {
6896
+ if (ref) {
6897
+ const focusableElements = ref.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
6898
+ focusableElements.forEach((el)=>{
6899
+ el.blur();
6900
+ });
6901
+ ref.blur();
6902
+ }
6903
+ setOpenState(false);
6904
+ } else setOpenState(true);
6905
+ };
6906
+ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.onMount)(()=>{
6907
+ document.addEventListener("click", onClickOutside);
6908
+ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.onCleanup)(()=>document.removeEventListener("click", onClickOutside));
6909
+ });
6910
+ return {
6911
+ setOpen,
6912
+ open,
6913
+ ref: (el)=>ref = el,
6914
+ toggle,
6915
+ onEnter,
6916
+ onLeave
6917
+ };
6918
+ }
6858
6919
  var Dropdown_tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<label tabindex=0>"), Dropdown_tmpl$2 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<ul class=dropdown-content role=listbox>"), Dropdown_tmpl$3 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div>");
6859
6920
  const Dropdown_classesFn = ({ className, horizontal, vertical, end, hover, open })=>twMerge("dropdown", className, clsx({
6860
6921
  "dropdown-left": "left" === horizontal,
@@ -6865,6 +6926,7 @@ const Dropdown_classesFn = ({ className, horizontal, vertical, end, hover, open
6865
6926
  "dropdown-hover": hover,
6866
6927
  "dropdown-open": open
6867
6928
  }));
6929
+ const DropdownContext = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createContext)(void 0);
6868
6930
  const Dropdown = (props)=>{
6869
6931
  const [local, others] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
6870
6932
  "children",
@@ -6884,77 +6946,99 @@ const Dropdown = (props)=>{
6884
6946
  "aria-haspopup",
6885
6947
  "aria-labelledby"
6886
6948
  ]);
6887
- const classes = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>twMerge("dropdown", local.class, local.className, clsx({
6949
+ const dropdownCtx = useDropdown(local.hover ? "hover" : "click");
6950
+ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createEffect)(()=>{
6951
+ console.log("Dropdown open state:", dropdownCtx.open());
6952
+ });
6953
+ const classes = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>{
6954
+ const isOpen = local.open ?? dropdownCtx.open();
6955
+ console.log("Computing dropdown classes, open:", isOpen);
6956
+ return twMerge("dropdown", local.class, local.className, clsx({
6888
6957
  "dropdown-left": "left" === local.horizontal,
6889
6958
  "dropdown-right": "right" === local.horizontal,
6890
6959
  "dropdown-top": "top" === local.vertical,
6891
6960
  "dropdown-bottom": "bottom" === local.vertical,
6892
6961
  "dropdown-end": local.end,
6893
6962
  "dropdown-hover": local.hover,
6894
- "dropdown-open": local.open
6895
- })));
6896
- return (()=>{
6897
- var _el$ = Dropdown_tmpl$3();
6898
- (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)({
6899
- get role () {
6900
- return local.item ? "combobox" : "listbox";
6901
- }
6902
- }, others, {
6903
- get ["data-theme"] () {
6904
- return local.dataTheme;
6905
- },
6906
- get ["class"] () {
6907
- return classes();
6908
- },
6909
- get style () {
6910
- return local.style;
6911
- },
6912
- get ["aria-label"] () {
6913
- return local["aria-label"];
6914
- },
6915
- get ["aria-describedby"] () {
6916
- return local["aria-describedby"];
6917
- },
6918
- get ["aria-expanded"] () {
6919
- return local["aria-expanded"] ?? local.open;
6920
- },
6921
- get ["aria-haspopup"] () {
6922
- return true === local["aria-haspopup"] ? "true" : false === local["aria-haspopup"] ? "false" : local["aria-haspopup"] || (local.item ? "listbox" : "true");
6923
- },
6924
- get ["aria-labelledby"] () {
6925
- return local["aria-labelledby"];
6926
- }
6927
- }), false, true);
6928
- (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.Show, {
6929
- get when () {
6930
- return local.item;
6931
- },
6932
- get fallback () {
6933
- return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.memo)(()=>local.children);
6934
- },
6935
- get children () {
6936
- return [
6937
- (()=>{
6938
- var _el$2 = Dropdown_tmpl$();
6939
- (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$2, ()=>local.children);
6940
- return _el$2;
6941
- })(),
6942
- (()=>{
6943
- var _el$3 = Dropdown_tmpl$2();
6944
- (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$3, ()=>local.item);
6945
- return _el$3;
6946
- })()
6947
- ];
6948
- }
6963
+ "dropdown-open": isOpen
6949
6964
  }));
6950
- return _el$;
6951
- })();
6965
+ });
6966
+ return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(DropdownContext.Provider, {
6967
+ value: dropdownCtx,
6968
+ get children () {
6969
+ var _el$ = Dropdown_tmpl$3();
6970
+ var _ref$ = dropdownCtx.ref;
6971
+ "function" == typeof _ref$ ? (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.use)(_ref$, _el$) : dropdownCtx.ref = _el$;
6972
+ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)({
6973
+ get role () {
6974
+ return local.item ? "combobox" : "listbox";
6975
+ }
6976
+ }, others, {
6977
+ get ["data-theme"] () {
6978
+ return local.dataTheme;
6979
+ },
6980
+ get ["class"] () {
6981
+ return classes();
6982
+ },
6983
+ get style () {
6984
+ return local.style;
6985
+ },
6986
+ get onClick () {
6987
+ return dropdownCtx.toggle;
6988
+ },
6989
+ get onMouseEnter () {
6990
+ return dropdownCtx.onEnter;
6991
+ },
6992
+ get onMouseLeave () {
6993
+ return dropdownCtx.onLeave;
6994
+ },
6995
+ get ["aria-label"] () {
6996
+ return local["aria-label"];
6997
+ },
6998
+ get ["aria-describedby"] () {
6999
+ return local["aria-describedby"];
7000
+ },
7001
+ get ["aria-expanded"] () {
7002
+ return local["aria-expanded"] ?? dropdownCtx.open();
7003
+ },
7004
+ get ["aria-haspopup"] () {
7005
+ return true === local["aria-haspopup"] ? "true" : false === local["aria-haspopup"] ? "false" : local["aria-haspopup"] || (local.item ? "listbox" : "true");
7006
+ },
7007
+ get ["aria-labelledby"] () {
7008
+ return local["aria-labelledby"];
7009
+ }
7010
+ }), false, true);
7011
+ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.Show, {
7012
+ get when () {
7013
+ return local.item;
7014
+ },
7015
+ get fallback () {
7016
+ return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.memo)(()=>local.children);
7017
+ },
7018
+ get children () {
7019
+ return [
7020
+ (()=>{
7021
+ var _el$2 = Dropdown_tmpl$();
7022
+ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$2, ()=>local.children);
7023
+ return _el$2;
7024
+ })(),
7025
+ (()=>{
7026
+ var _el$3 = Dropdown_tmpl$2();
7027
+ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$3, ()=>local.item);
7028
+ return _el$3;
7029
+ })()
7030
+ ];
7031
+ }
7032
+ }));
7033
+ return _el$;
7034
+ }
7035
+ });
6952
7036
  };
6953
7037
  const dropdown_Dropdown = Object.assign(Dropdown, {
6954
7038
  Details: DropdownDetails,
6955
7039
  Toggle: dropdown_DropdownToggle,
6956
7040
  Menu: dropdown_DropdownMenu,
6957
- Item: dropdown_DropdownItem
7041
+ Item: DropdownItem
6958
7042
  });
6959
7043
  const dropdown = dropdown_Dropdown;
6960
7044
  var FileInput_tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<input>");
@@ -10031,7 +10115,7 @@ const TableHeadCell = (props)=>{
10031
10115
  };
10032
10116
  const table_TableHeadCell = TableHeadCell;
10033
10117
  var TableHead_tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<thead><tr>");
10034
- const TableHead = (props)=>{
10118
+ const TableHead_TableHead = (props)=>{
10035
10119
  const [local, rest] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
10036
10120
  "children",
10037
10121
  "noCell",
@@ -10064,7 +10148,7 @@ const TableHead = (props)=>{
10064
10148
  return _el$;
10065
10149
  })();
10066
10150
  };
10067
- const table_TableHead = TableHead;
10151
+ const TableHead = TableHead_TableHead;
10068
10152
  var TableBody_tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<tbody>");
10069
10153
  const TableBody = (props)=>{
10070
10154
  const [local, rest] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
@@ -10371,7 +10455,7 @@ const Table = (props)=>{
10371
10455
  })();
10372
10456
  };
10373
10457
  const table_Table = Object.assign(Table, {
10374
- Head: table_TableHead,
10458
+ Head: TableHead,
10375
10459
  Body: table_TableBody,
10376
10460
  Row: table_TableRow,
10377
10461
  Footer: table_TableFooter,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pathscale/ui",
3
- "version": "0.0.67",
3
+ "version": "0.0.68",
4
4
  "author": "pathscale",
5
5
  "repository": {
6
6
  "type": "git",