funda-ui 1.0.540 → 1.0.546

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.
@@ -1,10 +1,14 @@
1
1
  /* ======================================================
2
2
  <!-- Color Picker -->
3
3
  /* ====================================================== */
4
- .custom-form-control-color {
4
+ .custom-colorpicker__wrapper {
5
+ position: relative;
5
6
  --color-control-border-radius: 0.375rem;
6
7
  --color-control-size: 30px;
7
8
  --color-control-border-color: rgba(0,0,0,.1);
9
+ /* placeholder */
10
+ }
11
+ .custom-colorpicker__wrapper .custom-colorpicker-control {
8
12
  -webkit-appearance: none;
9
13
  -moz-appearance: none;
10
14
  appearance: none;
@@ -15,24 +19,40 @@
15
19
  border: none;
16
20
  cursor: pointer;
17
21
  }
18
- .custom-form-control-color::-webkit-color-swatch {
22
+ .custom-colorpicker__wrapper .custom-colorpicker-control::-webkit-color-swatch {
19
23
  border: 2px solid var(--color-control-border-color);
20
24
  }
21
- .custom-form-control-color::-moz-color-swatch {
25
+ .custom-colorpicker__wrapper .custom-colorpicker-control::-moz-color-swatch {
22
26
  border: 2px solid var(--color-control-border-color);
23
27
  }
24
- .custom-form-control-color:disabled {
28
+ .custom-colorpicker__wrapper .custom-colorpicker-control:disabled {
25
29
  cursor: not-allowed;
26
30
  }
27
- .custom-form-control-color.custom-form-control-color--rounded::-webkit-color-swatch {
31
+ .custom-colorpicker__wrapper .custom-colorpicker__transparent-placeholder {
32
+ position: absolute;
33
+ width: var(--color-control-size);
34
+ height: var(--color-control-size);
35
+ left: 0;
36
+ top: 0;
37
+ z-index: 1;
38
+ pointer-events: none;
39
+ background: #fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==) repeat;
40
+ }
41
+ .custom-colorpicker__wrapper.custom-colorpicker--rounded .custom-colorpicker-control::-webkit-color-swatch {
42
+ border-radius: var(--color-control-border-radius);
43
+ }
44
+ .custom-colorpicker__wrapper.custom-colorpicker--rounded .custom-colorpicker-control::-moz-color-swatch {
28
45
  border-radius: var(--color-control-border-radius);
29
46
  }
30
- .custom-form-control-color.custom-form-control-color--rounded::-moz-color-swatch {
47
+ .custom-colorpicker__wrapper.custom-colorpicker--rounded .custom-colorpicker__transparent-placeholder {
31
48
  border-radius: var(--color-control-border-radius);
32
49
  }
33
- .custom-form-control-color.custom-form-control-color--circle::-webkit-color-swatch {
50
+ .custom-colorpicker__wrapper.custom-colorpicker--circle .custom-colorpicker-control::-webkit-color-swatch {
51
+ border-radius: 50%;
52
+ }
53
+ .custom-colorpicker__wrapper.custom-colorpicker--circle .custom-colorpicker-control::-moz-color-swatch {
34
54
  border-radius: 50%;
35
55
  }
36
- .custom-form-control-color.custom-form-control-color--circle::-moz-color-swatch {
56
+ .custom-colorpicker__wrapper.custom-colorpicker--circle .custom-colorpicker__transparent-placeholder {
37
57
  border-radius: 50%;
38
58
  }
@@ -7,6 +7,8 @@ declare module 'react' {
7
7
  interface ColorPickerProps extends React.ComponentPropsWithoutRef<"input"> {
8
8
  wrapperClassName?: string;
9
9
  controlClassName?: string;
10
+ clearBtnClassName?: string;
11
+ clearBtnLabel?: string;
10
12
  value?: string;
11
13
  label?: React.ReactNode | string;
12
14
  name?: string;
@@ -96,7 +96,7 @@ __webpack_require__.r(__webpack_exports__);
96
96
  /* harmony export */ });
97
97
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(787);
98
98
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
99
- var _excluded = ["wrapperClassName", "controlClassName", "disabled", "required", "readOnly", "value", "label", "name", "shape", "id", "style", "tabIndex", "onChange", "onBlur", "onFocus"];
99
+ var _excluded = ["wrapperClassName", "controlClassName", "clearBtnClassName", "clearBtnLabel", "disabled", "required", "readOnly", "value", "label", "name", "shape", "id", "style", "tabIndex", "onChange", "onBlur", "onFocus"];
100
100
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
101
101
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
102
102
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -111,6 +111,8 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
111
111
  var ColorPicker = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function (props, _ref) {
112
112
  var wrapperClassName = props.wrapperClassName,
113
113
  controlClassName = props.controlClassName,
114
+ clearBtnClassName = props.clearBtnClassName,
115
+ clearBtnLabel = props.clearBtnLabel,
114
116
  disabled = props.disabled,
115
117
  required = props.required,
116
118
  readOnly = props.readOnly,
@@ -137,10 +139,10 @@ var ColorPicker = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)
137
139
  if (shape && typeof shape === 'string') {
138
140
  switch (shape) {
139
141
  case 'rounded':
140
- shapeClassName = 'custom-form-control-color--rounded';
142
+ shapeClassName = 'custom-colorpicker--rounded';
141
143
  break;
142
144
  case 'circle':
143
- shapeClassName = 'custom-form-control-color--circle';
145
+ shapeClassName = 'custom-colorpicker--circle';
144
146
  break;
145
147
  }
146
148
  }
@@ -182,7 +184,7 @@ var ColorPicker = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)
182
184
  setChangedVal(value || '');
183
185
  }, [value]);
184
186
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
185
- className: wrapperClassName || wrapperClassName === '' ? wrapperClassName : "mb-3 position-relative",
187
+ className: wrapperClassName || wrapperClassName === '' ? "custom-colorpicker__wrapper ".concat(shapeClassName, " ").concat(wrapperClassName) : "custom-colorpicker__wrapper mb-3 position-relative ".concat(shapeClassName),
186
188
  ref: rootRef
187
189
  }, label ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", {
188
190
  htmlFor: idRes,
@@ -203,7 +205,7 @@ var ColorPicker = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)
203
205
  },
204
206
  tabIndex: tabIndex || 0,
205
207
  type: "color",
206
- className: "".concat(controlClassName || controlClassName === '' ? controlClassName : "form-control custom-form-control-color flex-grow-0", " ").concat(shapeClassName),
208
+ className: "".concat(controlClassName || controlClassName === '' ? controlClassName : "form-control custom-colorpicker-control flex-grow-0"),
207
209
  id: idRes,
208
210
  name: name,
209
211
  value: changedVal,
@@ -214,11 +216,20 @@ var ColorPicker = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)
214
216
  required: required || null,
215
217
  readOnly: readOnly || null,
216
218
  style: style
217
- }, attributes))), required ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
219
+ }, attributes)), changedVal !== '' ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", {
220
+ tabIndex: -1,
221
+ type: "button",
222
+ className: clearBtnClassName || 'btn btn-link btn-sm',
223
+ onClick: function onClick() {
224
+ setChangedVal('');
225
+ }
226
+ }, clearBtnLabel || 'clear')) : null), required ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
218
227
  className: "position-absolute end-0 top-0 my-2 mx-2"
219
228
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
220
229
  className: "text-danger"
221
- }, "*"))) : ''));
230
+ }, "*"))) : '', changedVal === '' ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
231
+ className: "custom-colorpicker__transparent-placeholder"
232
+ })) : null));
222
233
  });
223
234
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ColorPicker);
224
235
  })();
package/Tree/index.js CHANGED
@@ -916,22 +916,6 @@ function TreeList(props) {
916
916
  });
917
917
  activeClass(hyperlink, 'add', 'selected');
918
918
  }
919
-
920
- // Note: that component re-rendering (such as routing changes) will cause collapsing problems
921
- // with `onSelect()`, please use `useMemo()` to wrap `<Tree />`, like this:
922
- /*
923
- function TreeMemo(props: any) {
924
- const {t, callback, data} = props;
925
- const dependencies = props.data !== null && props.data.length === 0 ? props.data : '';
926
- return useMemo(() => {
927
- return <Tree
928
- data={data}
929
- showLine={true}
930
- onSelect={callback}
931
- />
932
- }, [dependencies]);
933
- }
934
- */
935
919
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(e, {
936
920
  key: hyperlink.dataset.key,
937
921
  slug: hyperlink.dataset.slug,
@@ -7,6 +7,8 @@ declare module 'react' {
7
7
  interface ColorPickerProps extends React.ComponentPropsWithoutRef<"input"> {
8
8
  wrapperClassName?: string;
9
9
  controlClassName?: string;
10
+ clearBtnClassName?: string;
11
+ clearBtnLabel?: string;
10
12
  value?: string;
11
13
  label?: React.ReactNode | string;
12
14
  name?: string;
@@ -96,7 +96,7 @@ __webpack_require__.r(__webpack_exports__);
96
96
  /* harmony export */ });
97
97
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(787);
98
98
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
99
- var _excluded = ["wrapperClassName", "controlClassName", "disabled", "required", "readOnly", "value", "label", "name", "shape", "id", "style", "tabIndex", "onChange", "onBlur", "onFocus"];
99
+ var _excluded = ["wrapperClassName", "controlClassName", "clearBtnClassName", "clearBtnLabel", "disabled", "required", "readOnly", "value", "label", "name", "shape", "id", "style", "tabIndex", "onChange", "onBlur", "onFocus"];
100
100
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
101
101
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
102
102
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -111,6 +111,8 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
111
111
  var ColorPicker = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function (props, _ref) {
112
112
  var wrapperClassName = props.wrapperClassName,
113
113
  controlClassName = props.controlClassName,
114
+ clearBtnClassName = props.clearBtnClassName,
115
+ clearBtnLabel = props.clearBtnLabel,
114
116
  disabled = props.disabled,
115
117
  required = props.required,
116
118
  readOnly = props.readOnly,
@@ -137,10 +139,10 @@ var ColorPicker = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)
137
139
  if (shape && typeof shape === 'string') {
138
140
  switch (shape) {
139
141
  case 'rounded':
140
- shapeClassName = 'custom-form-control-color--rounded';
142
+ shapeClassName = 'custom-colorpicker--rounded';
141
143
  break;
142
144
  case 'circle':
143
- shapeClassName = 'custom-form-control-color--circle';
145
+ shapeClassName = 'custom-colorpicker--circle';
144
146
  break;
145
147
  }
146
148
  }
@@ -182,7 +184,7 @@ var ColorPicker = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)
182
184
  setChangedVal(value || '');
183
185
  }, [value]);
184
186
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
185
- className: wrapperClassName || wrapperClassName === '' ? wrapperClassName : "mb-3 position-relative",
187
+ className: wrapperClassName || wrapperClassName === '' ? "custom-colorpicker__wrapper ".concat(shapeClassName, " ").concat(wrapperClassName) : "custom-colorpicker__wrapper mb-3 position-relative ".concat(shapeClassName),
186
188
  ref: rootRef
187
189
  }, label ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", {
188
190
  htmlFor: idRes,
@@ -203,7 +205,7 @@ var ColorPicker = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)
203
205
  },
204
206
  tabIndex: tabIndex || 0,
205
207
  type: "color",
206
- className: "".concat(controlClassName || controlClassName === '' ? controlClassName : "form-control custom-form-control-color flex-grow-0", " ").concat(shapeClassName),
208
+ className: "".concat(controlClassName || controlClassName === '' ? controlClassName : "form-control custom-colorpicker-control flex-grow-0"),
207
209
  id: idRes,
208
210
  name: name,
209
211
  value: changedVal,
@@ -214,11 +216,20 @@ var ColorPicker = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)
214
216
  required: required || null,
215
217
  readOnly: readOnly || null,
216
218
  style: style
217
- }, attributes))), required ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
219
+ }, attributes)), changedVal !== '' ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", {
220
+ tabIndex: -1,
221
+ type: "button",
222
+ className: clearBtnClassName || 'btn btn-link btn-sm',
223
+ onClick: function onClick() {
224
+ setChangedVal('');
225
+ }
226
+ }, clearBtnLabel || 'clear')) : null), required ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
218
227
  className: "position-absolute end-0 top-0 my-2 mx-2"
219
228
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
220
229
  className: "text-danger"
221
- }, "*"))) : ''));
230
+ }, "*"))) : '', changedVal === '' ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
231
+ className: "custom-colorpicker__transparent-placeholder"
232
+ })) : null));
222
233
  });
223
234
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ColorPicker);
224
235
  })();
@@ -916,22 +916,6 @@ function TreeList(props) {
916
916
  });
917
917
  activeClass(hyperlink, 'add', 'selected');
918
918
  }
919
-
920
- // Note: that component re-rendering (such as routing changes) will cause collapsing problems
921
- // with `onSelect()`, please use `useMemo()` to wrap `<Tree />`, like this:
922
- /*
923
- function TreeMemo(props: any) {
924
- const {t, callback, data} = props;
925
- const dependencies = props.data !== null && props.data.length === 0 ? props.data : '';
926
- return useMemo(() => {
927
- return <Tree
928
- data={data}
929
- showLine={true}
930
- onSelect={callback}
931
- />
932
- }, [dependencies]);
933
- }
934
- */
935
919
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(e, {
936
920
  key: hyperlink.dataset.key,
937
921
  slug: hyperlink.dataset.slug,
@@ -1,10 +1,14 @@
1
1
  /* ======================================================
2
2
  <!-- Color Picker -->
3
3
  /* ====================================================== */
4
- .custom-form-control-color {
4
+ .custom-colorpicker__wrapper {
5
+ position: relative;
5
6
  --color-control-border-radius: 0.375rem;
6
7
  --color-control-size: 30px;
7
8
  --color-control-border-color: rgba(0,0,0,.1);
9
+ /* placeholder */
10
+ }
11
+ .custom-colorpicker__wrapper .custom-colorpicker-control {
8
12
  -webkit-appearance: none;
9
13
  -moz-appearance: none;
10
14
  appearance: none;
@@ -15,24 +19,40 @@
15
19
  border: none;
16
20
  cursor: pointer;
17
21
  }
18
- .custom-form-control-color::-webkit-color-swatch {
22
+ .custom-colorpicker__wrapper .custom-colorpicker-control::-webkit-color-swatch {
19
23
  border: 2px solid var(--color-control-border-color);
20
24
  }
21
- .custom-form-control-color::-moz-color-swatch {
25
+ .custom-colorpicker__wrapper .custom-colorpicker-control::-moz-color-swatch {
22
26
  border: 2px solid var(--color-control-border-color);
23
27
  }
24
- .custom-form-control-color:disabled {
28
+ .custom-colorpicker__wrapper .custom-colorpicker-control:disabled {
25
29
  cursor: not-allowed;
26
30
  }
27
- .custom-form-control-color.custom-form-control-color--rounded::-webkit-color-swatch {
31
+ .custom-colorpicker__wrapper .custom-colorpicker__transparent-placeholder {
32
+ position: absolute;
33
+ width: var(--color-control-size);
34
+ height: var(--color-control-size);
35
+ left: 0;
36
+ top: 0;
37
+ z-index: 1;
38
+ pointer-events: none;
39
+ background: #fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==) repeat;
40
+ }
41
+ .custom-colorpicker__wrapper.custom-colorpicker--rounded .custom-colorpicker-control::-webkit-color-swatch {
42
+ border-radius: var(--color-control-border-radius);
43
+ }
44
+ .custom-colorpicker__wrapper.custom-colorpicker--rounded .custom-colorpicker-control::-moz-color-swatch {
28
45
  border-radius: var(--color-control-border-radius);
29
46
  }
30
- .custom-form-control-color.custom-form-control-color--rounded::-moz-color-swatch {
47
+ .custom-colorpicker__wrapper.custom-colorpicker--rounded .custom-colorpicker__transparent-placeholder {
31
48
  border-radius: var(--color-control-border-radius);
32
49
  }
33
- .custom-form-control-color.custom-form-control-color--circle::-webkit-color-swatch {
50
+ .custom-colorpicker__wrapper.custom-colorpicker--circle .custom-colorpicker-control::-webkit-color-swatch {
51
+ border-radius: 50%;
52
+ }
53
+ .custom-colorpicker__wrapper.custom-colorpicker--circle .custom-colorpicker-control::-moz-color-swatch {
34
54
  border-radius: 50%;
35
55
  }
36
- .custom-form-control-color.custom-form-control-color--circle::-moz-color-swatch {
56
+ .custom-colorpicker__wrapper.custom-colorpicker--circle .custom-colorpicker__transparent-placeholder {
37
57
  border-radius: 50%;
38
58
  }
@@ -2,47 +2,90 @@
2
2
  <!-- Color Picker -->
3
3
  /* ====================================================== */
4
4
 
5
- .custom-form-control-color {
6
-
5
+ .custom-colorpicker__wrapper {
6
+ position: relative;
7
7
  --color-control-border-radius: 0.375rem;
8
8
  --color-control-size: 30px;
9
9
  --color-control-border-color: rgba(0,0,0,.1);
10
10
 
11
11
 
12
- -webkit-appearance: none;
13
- -moz-appearance: none;
14
- appearance: none;
15
- background-color: transparent;
16
- padding: 0 !important;
17
- width: var(--color-control-size) !important;
18
- height: var(--color-control-size) !important;
19
- border: none;
20
- cursor: pointer;
21
-
22
- &::-webkit-color-swatch {
23
- border: 2px solid var(--color-control-border-color);
24
- }
25
- &::-moz-color-swatch {
26
- border: 2px solid var(--color-control-border-color);
27
- }
12
+ .custom-colorpicker-control {
13
+
14
+ -webkit-appearance: none;
15
+ -moz-appearance: none;
16
+ appearance: none;
17
+ background-color: transparent;
18
+ padding: 0 !important;
19
+ width: var(--color-control-size) !important;
20
+ height: var(--color-control-size) !important;
21
+ border: none;
22
+ cursor: pointer;
23
+
24
+ &::-webkit-color-swatch {
25
+ border: 2px solid var(--color-control-border-color);
26
+ }
27
+ &::-moz-color-swatch {
28
+ border: 2px solid var(--color-control-border-color);
29
+ }
30
+
31
+ &:disabled {
32
+ cursor: not-allowed;
33
+ }
28
34
 
29
- &:disabled {
30
- cursor: not-allowed;
31
- }
32
35
 
33
- &.custom-form-control-color--rounded::-webkit-color-swatch {
34
- border-radius: var(--color-control-border-radius);
35
36
  }
36
- &.custom-form-control-color--rounded::-moz-color-swatch {
37
- border-radius: var(--color-control-border-radius);
37
+
38
+
39
+
40
+ /* placeholder */
41
+ .custom-colorpicker__transparent-placeholder {
42
+ position: absolute;
43
+ width: var(--color-control-size);
44
+ height: var(--color-control-size);
45
+ left: 0;
46
+ top: 0;
47
+ z-index: 1;
48
+ pointer-events: none;
49
+ background: #fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==) repeat;
38
50
  }
51
+
52
+
53
+ &.custom-colorpicker--rounded {
54
+ .custom-colorpicker-control {
55
+ &::-webkit-color-swatch {
56
+ border-radius: var(--color-control-border-radius);
57
+ }
39
58
 
59
+ &::-moz-color-swatch {
60
+ border-radius: var(--color-control-border-radius);
61
+ }
62
+ }
63
+
64
+ .custom-colorpicker__transparent-placeholder {
65
+ border-radius: var(--color-control-border-radius);
66
+ }
67
+
40
68
 
41
- &.custom-form-control-color--circle::-webkit-color-swatch {
42
- border-radius: 50%;
43
69
  }
44
- &.custom-form-control-color--circle::-moz-color-swatch {
45
- border-radius: 50%;
70
+
71
+ &.custom-colorpicker--circle {
72
+
73
+ .custom-colorpicker-control {
74
+ &::-webkit-color-swatch {
75
+ border-radius: 50%;
76
+ }
77
+
78
+ &::-moz-color-swatch {
79
+ border-radius: 50%;
80
+ }
81
+ }
82
+
83
+ .custom-colorpicker__transparent-placeholder {
84
+ border-radius: 50%;
85
+ }
86
+
46
87
  }
47
-
88
+
89
+
90
+
48
91
  }
@@ -9,6 +9,8 @@ declare module 'react' {
9
9
  interface ColorPickerProps extends React.ComponentPropsWithoutRef<"input"> {
10
10
  wrapperClassName?: string;
11
11
  controlClassName?: string;
12
+ clearBtnClassName?: string;
13
+ clearBtnLabel?: string;
12
14
  value?: string;
13
15
  label?: React.ReactNode | string;
14
16
  name?: string;
@@ -32,6 +34,8 @@ const ColorPicker = forwardRef((props: ColorPickerProps, ref: any) => {
32
34
  const {
33
35
  wrapperClassName,
34
36
  controlClassName,
37
+ clearBtnClassName,
38
+ clearBtnLabel,
35
39
  disabled,
36
40
  required,
37
41
  readOnly,
@@ -59,11 +63,11 @@ const ColorPicker = forwardRef((props: ColorPickerProps, ref: any) => {
59
63
  if (shape && typeof shape === 'string') {
60
64
  switch (shape) {
61
65
  case 'rounded':
62
- shapeClassName = 'custom-form-control-color--rounded';
63
- break;
66
+ shapeClassName = 'custom-colorpicker--rounded';
67
+ break;
64
68
  case 'circle':
65
- shapeClassName = 'custom-form-control-color--circle';
66
- break;
69
+ shapeClassName = 'custom-colorpicker--circle';
70
+ break;
67
71
  }
68
72
  }
69
73
 
@@ -73,7 +77,7 @@ const ColorPicker = forwardRef((props: ColorPickerProps, ref: any) => {
73
77
  rootRef.current.classList.add('focus');
74
78
 
75
79
  //
76
- onFocus?.(event);
80
+ onFocus?.(event);
77
81
  }
78
82
 
79
83
  function handleChange(event: ChangeEvent<HTMLInputElement>) {
@@ -111,19 +115,19 @@ const ColorPicker = forwardRef((props: ColorPickerProps, ref: any) => {
111
115
 
112
116
  useEffect(() => {
113
117
 
118
+
114
119
  // update default value
115
120
  //--------------
116
121
  setChangedVal(value || '');
117
122
 
118
-
119
123
  }, [value]);
120
124
 
121
125
 
122
126
  return (
123
127
  <>
124
128
 
125
- <div className={wrapperClassName || wrapperClassName === '' ? wrapperClassName : "mb-3 position-relative"} ref={rootRef}>
126
- {label ? <><label htmlFor={idRes} className="form-label" dangerouslySetInnerHTML={{__html: `${label}`}}></label></> : null}
129
+ <div className={wrapperClassName || wrapperClassName === '' ? `custom-colorpicker__wrapper ${shapeClassName} ${wrapperClassName}` : `custom-colorpicker__wrapper mb-3 position-relative ${shapeClassName}`} ref={rootRef}>
130
+ {label ? <><label htmlFor={idRes} className="form-label" dangerouslySetInnerHTML={{ __html: `${label}` }}></label></> : null}
127
131
 
128
132
  <div className="input-group">
129
133
  <input
@@ -135,11 +139,11 @@ const ColorPicker = forwardRef((props: ColorPickerProps, ref: any) => {
135
139
  ref.current = node;
136
140
  }
137
141
  }}
138
-
139
-
142
+
143
+
140
144
  tabIndex={tabIndex || 0}
141
145
  type='color'
142
- className={`${controlClassName || controlClassName === '' ? controlClassName : "form-control custom-form-control-color flex-grow-0"} ${shapeClassName}`}
146
+ className={`${controlClassName || controlClassName === '' ? controlClassName : "form-control custom-colorpicker-control flex-grow-0"}`}
143
147
  id={idRes}
144
148
  name={name}
145
149
  value={changedVal}
@@ -153,9 +157,17 @@ const ColorPicker = forwardRef((props: ColorPickerProps, ref: any) => {
153
157
  {...attributes}
154
158
  />
155
159
 
160
+ {changedVal !== '' ? <><button tabIndex={-1} type="button" className={clearBtnClassName || 'btn btn-link btn-sm'} onClick={() => {
161
+ setChangedVal('');
162
+ }}>{clearBtnLabel || 'clear'}
163
+ </button></> : null}
164
+
165
+
156
166
  </div>
157
167
  {required ? <><span className="position-absolute end-0 top-0 my-2 mx-2"><span className="text-danger">*</span></span></> : ''}
158
168
 
169
+ {changedVal === '' ? <><div className="custom-colorpicker__transparent-placeholder"></div></> : null}
170
+
159
171
  </div>
160
172
 
161
173
 
@@ -269,21 +269,6 @@ export default function TreeList(props: TreeListProps) {
269
269
  }
270
270
 
271
271
 
272
- // Note: that component re-rendering (such as routing changes) will cause collapsing problems
273
- // with `onSelect()`, please use `useMemo()` to wrap `<Tree />`, like this:
274
- /*
275
- function TreeMemo(props: any) {
276
- const {t, callback, data} = props;
277
- const dependencies = props.data !== null && props.data.length === 0 ? props.data : '';
278
- return useMemo(() => {
279
- return <Tree
280
- data={data}
281
- showLine={true}
282
- onSelect={callback}
283
- />
284
- }, [dependencies]);
285
- }
286
- */
287
272
  onSelect?.(e, {
288
273
  key: hyperlink.dataset.key,
289
274
  slug: hyperlink.dataset.slug,
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "author": "UIUX Lab",
3
3
  "email": "uiuxlab@gmail.com",
4
4
  "name": "funda-ui",
5
- "version": "1.0.540",
5
+ "version": "1.0.546",
6
6
  "description": "React components using pure Bootstrap 5+ which does not contain any external style and script libraries.",
7
7
  "repository": {
8
8
  "type": "git",