@activecollab/components 1.0.375 → 1.0.377
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/dist/cjs/components/EditableHours/EditableHours.js +4 -4
- package/dist/cjs/components/EditableHours/EditableHours.js.map +1 -1
- package/dist/cjs/components/Icons/collection/Shield.js +48 -0
- package/dist/cjs/components/Icons/collection/Shield.js.map +1 -0
- package/dist/cjs/components/Icons/collection/index.js +7 -0
- package/dist/cjs/components/Icons/collection/index.js.map +1 -1
- package/dist/cjs/utils/validation.js +6 -2
- package/dist/cjs/utils/validation.js.map +1 -1
- package/dist/cjs/utils/validation.test.js +61 -0
- package/dist/cjs/utils/validation.test.js.map +1 -0
- package/dist/esm/components/EditableHours/EditableHours.js +4 -4
- package/dist/esm/components/EditableHours/EditableHours.js.map +1 -1
- package/dist/esm/components/Icons/collection/Shield.d.ts +23 -0
- package/dist/esm/components/Icons/collection/Shield.d.ts.map +1 -0
- package/dist/esm/components/Icons/collection/Shield.js +41 -0
- package/dist/esm/components/Icons/collection/Shield.js.map +1 -0
- package/dist/esm/components/Icons/collection/index.d.ts +1 -0
- package/dist/esm/components/Icons/collection/index.d.ts.map +1 -1
- package/dist/esm/components/Icons/collection/index.js +1 -0
- package/dist/esm/components/Icons/collection/index.js.map +1 -1
- package/dist/esm/utils/validation.d.ts +1 -1
- package/dist/esm/utils/validation.d.ts.map +1 -1
- package/dist/esm/utils/validation.js +6 -2
- package/dist/esm/utils/validation.js.map +1 -1
- package/dist/esm/utils/validation.test.d.ts +2 -0
- package/dist/esm/utils/validation.test.d.ts.map +1 -0
- package/dist/esm/utils/validation.test.js +59 -0
- package/dist/esm/utils/validation.test.js.map +1 -0
- package/dist/index.js +49 -6
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -133,7 +133,7 @@ var EditableHours = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
|
|
|
133
133
|
var newMinutesString = newMinutes < 10 ? "0".concat(newMinutes) : newMinutes;
|
|
134
134
|
var newHoursString = withLeadingZero && newHours < 10 ? "0".concat(newHours) : newHours;
|
|
135
135
|
var newValue = "".concat(newHoursString, ":").concat(newMinutesString);
|
|
136
|
-
if (validation(newValue)) {
|
|
136
|
+
if (validation(newValue, withLeadingZero)) {
|
|
137
137
|
setCurrentValue(newValue);
|
|
138
138
|
requestAnimationFrame(function () {
|
|
139
139
|
var _inputRef$current;
|
|
@@ -201,18 +201,18 @@ var EditableHours = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
|
|
|
201
201
|
return;
|
|
202
202
|
}
|
|
203
203
|
var newValue = currentValue.substring(0, start) + e.key + currentValue.substring(end);
|
|
204
|
-
if (!validation(newValue)) {
|
|
204
|
+
if (!validation(newValue, withLeadingZero)) {
|
|
205
205
|
e.preventDefault();
|
|
206
206
|
return;
|
|
207
207
|
}
|
|
208
208
|
} else {
|
|
209
209
|
var _newValue = currentValue.substring(0, start) + e.key + currentValue.substring(end);
|
|
210
|
-
if (!validation(_newValue)) {
|
|
210
|
+
if (!validation(_newValue, withLeadingZero)) {
|
|
211
211
|
e.preventDefault();
|
|
212
212
|
return;
|
|
213
213
|
}
|
|
214
214
|
}
|
|
215
|
-
}, [handleIncrementDecrement, onCancel, validation]);
|
|
215
|
+
}, [handleIncrementDecrement, onCancel, validation, withLeadingZero]);
|
|
216
216
|
var handleChange = (0, _react.useCallback)(function (e) {
|
|
217
217
|
setCurrentValue(e.target.value);
|
|
218
218
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableHours.js","names":["EditableHours","React","forwardRef","ref","value","onCancel","onSave","inputProps","allowEmptyValue","withLeadingZero","validation","validateTimeInput","incrementOnlySelected","minuteIncrement","rest","inputRef","useRef","handleRef","useForkRef","useState","undefined","decimalToHours","currentValue","setCurrentValue","prevValue","setPrevValue","escapeRef","useEffect","_value","handleBlur","useCallback","e","current","target","trim","length","handleIncrementDecrement","increment","selectionStart","dotsIndex","indexOf","split","map","Number","hours","minutes","newHours","newMinutes","newMinutesString","newHoursString","newValue","requestAnimationFrame","newDotsIndex","isHoursSelected","newSelectionStart","selectionEnd","setSelectionRange","handleKeyDown","key","blur","input","start","end","shiftKey","isMinutesSelected","preventDefault","substring","handleChange","handleClick","handleDoubleClick","onBlur","onKeyDown","onChange","type","onClick","onDoubleClick","className","classNames","displayName"],"sources":["../../../../src/components/EditableHours/EditableHours.tsx"],"sourcesContent":["import { EditableContent, EditableContentInterface } from \"../EditableContent\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { decimalToHours } from \"../../utils/timeUtils\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport classNames from \"classnames\";\nimport { validateTimeInput } from \"../../utils\";\n\nexport interface EditableHoursProps extends EditableContentInterface {\n value?: number | string;\n onSave?: (e: Event) => void;\n onCancel?: () => void;\n withLeadingZero?: boolean;\n incrementOnlySelected?: boolean;\n validation?: (value: string) => boolean;\n allowEmptyValue?: boolean;\n minuteIncrement?: number;\n}\nexport const EditableHours = React.forwardRef<\n HTMLDivElement,\n EditableHoursProps\n>(\n (\n {\n value = 0,\n onCancel,\n onSave,\n inputProps,\n allowEmptyValue,\n withLeadingZero = true,\n validation = validateTimeInput,\n incrementOnlySelected = false,\n minuteIncrement = 1,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(ref, inputRef);\n const [currentValue, setCurrentValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const [prevValue, setPrevValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const escapeRef = useRef(false);\n\n useEffect(() => {\n let _value;\n if (value !== undefined) {\n _value = decimalToHours(value, withLeadingZero);\n }\n if (currentValue !== _value) {\n setCurrentValue(_value);\n setPrevValue(_value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n escapeRef.current = false;\n } else {\n if (\n e.target.value.trim().length > 0 &&\n prevValue !== e.target.value\n ) {\n const _value = decimalToHours(e.target.value, withLeadingZero);\n setPrevValue(_value);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n !allowEmptyValue\n ? setCurrentValue(prevValue)\n : typeof onSave === \"function\" &&\n prevValue !== e.target.value &&\n onSave(e);\n }\n }\n },\n [allowEmptyValue, onSave, prevValue, withLeadingZero]\n );\n\n const handleIncrementDecrement = useCallback(\n (increment: boolean) => {\n if (inputRef.current) {\n const selectionStart = inputRef.current.selectionStart;\n if (selectionStart !== null) {\n const dotsIndex = currentValue.indexOf(\":\");\n const [hours, minutes] = currentValue.split(\":\").map(Number);\n let newHours = hours;\n let newMinutes = minutes;\n\n if (selectionStart < dotsIndex) {\n if (increment) {\n newHours += 1;\n } else {\n newHours -= 1;\n if (newHours < 0) newHours = 0;\n }\n } else if (selectionStart > dotsIndex) {\n if (increment) {\n newMinutes += minuteIncrement;\n if (newMinutes > 59) {\n newMinutes = 0;\n if (!incrementOnlySelected) newHours += 1;\n }\n } else {\n if (newMinutes >= minuteIncrement || newMinutes === 0) {\n newMinutes -= minuteIncrement;\n if (newMinutes < 0 && newHours > 0) {\n newMinutes = 60 - minuteIncrement;\n if (!incrementOnlySelected) newHours -= 1;\n }\n if (newHours < 0) {\n newHours = 0;\n }\n } else {\n newMinutes = 0;\n }\n }\n }\n\n const newMinutesString =\n newMinutes < 10 ? `0${newMinutes}` : newMinutes;\n const newHoursString =\n withLeadingZero && newHours < 10 ? `0${newHours}` : newHours;\n const newValue = `${newHoursString}:${newMinutesString}`;\n\n if (validation(newValue)) {\n setCurrentValue(newValue);\n\n requestAnimationFrame(() => {\n const newDotsIndex = newValue.indexOf(\":\");\n const isHoursSelected = selectionStart < newDotsIndex;\n const newSelectionStart = isHoursSelected\n ? 0\n : newDotsIndex + 1;\n const selectionEnd = isHoursSelected\n ? newDotsIndex\n : newValue.length;\n inputRef.current?.setSelectionRange(\n newSelectionStart,\n selectionEnd\n );\n });\n }\n }\n }\n },\n [\n currentValue,\n incrementOnlySelected,\n minuteIncrement,\n validation,\n withLeadingZero,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.target.blur();\n }\n if (e.key === \"ArrowLeft\") {\n return;\n }\n if (e.key === \"ArrowRight\") {\n return;\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel();\n }\n if (e.key === \"Backspace\") {\n return;\n }\n const input = e.target;\n const start = input.selectionStart;\n const end = input.selectionEnd;\n const currentValue = input.value;\n if (e.key === \"Tab\") {\n if (start !== end) {\n if (e.shiftKey) {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isMinutesSelected = start > newDotsIndex;\n if (isMinutesSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(0, newDotsIndex);\n }\n } else {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isHoursSelected = start < newDotsIndex;\n if (isHoursSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(\n newDotsIndex + 1,\n currentValue.length\n );\n }\n }\n }\n return;\n }\n\n if (start !== end) {\n if (e.key === \"ArrowUp\") {\n handleIncrementDecrement(true);\n return;\n }\n if (e.key === \"ArrowDown\") {\n handleIncrementDecrement(false);\n return;\n }\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n if (!validation(newValue)) {\n e.preventDefault();\n return;\n }\n } else {\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n\n if (!validation(newValue)) {\n e.preventDefault();\n return;\n }\n }\n },\n [handleIncrementDecrement, onCancel, validation]\n );\n\n const handleChange = useCallback((e) => {\n setCurrentValue(e.target.value);\n }, []);\n\n const handleClick = () => {\n const selectionStart = inputRef.current?.selectionStart;\n if (\n inputRef.current &&\n currentValue &&\n currentValue.length > 0 &&\n typeof selectionStart === \"number\"\n ) {\n const dotsIndex = currentValue.indexOf(\":\");\n if (selectionStart < dotsIndex) {\n inputRef.current?.setSelectionRange(0, dotsIndex);\n } else if (selectionStart >= dotsIndex) {\n inputRef.current?.setSelectionRange(\n dotsIndex + 1,\n currentValue.length\n );\n }\n }\n };\n\n const handleDoubleClick = () => {\n if (inputRef.current) {\n inputRef.current?.setSelectionRange(0, currentValue.length);\n }\n };\n\n return (\n <EditableContent\n ref={handleRef}\n inputProps={{\n ...inputProps,\n value: currentValue,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n type: \"text\",\n onClick: handleClick,\n onDoubleClick: handleDoubleClick,\n className: classNames(\"c-input\", inputProps?.className),\n }}\n {...rest}\n />\n );\n }\n);\n\nEditableHours.displayName = \"EditableHours\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditableHours.js","names":["EditableHours","React","forwardRef","ref","value","onCancel","onSave","inputProps","allowEmptyValue","withLeadingZero","validation","validateTimeInput","incrementOnlySelected","minuteIncrement","rest","inputRef","useRef","handleRef","useForkRef","useState","undefined","decimalToHours","currentValue","setCurrentValue","prevValue","setPrevValue","escapeRef","useEffect","_value","handleBlur","useCallback","e","current","target","trim","length","handleIncrementDecrement","increment","selectionStart","dotsIndex","indexOf","split","map","Number","hours","minutes","newHours","newMinutes","newMinutesString","newHoursString","newValue","requestAnimationFrame","newDotsIndex","isHoursSelected","newSelectionStart","selectionEnd","setSelectionRange","handleKeyDown","key","blur","input","start","end","shiftKey","isMinutesSelected","preventDefault","substring","handleChange","handleClick","handleDoubleClick","onBlur","onKeyDown","onChange","type","onClick","onDoubleClick","className","classNames","displayName"],"sources":["../../../../src/components/EditableHours/EditableHours.tsx"],"sourcesContent":["import { EditableContent, EditableContentInterface } from \"../EditableContent\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { decimalToHours } from \"../../utils/timeUtils\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport classNames from \"classnames\";\nimport { validateTimeInput } from \"../../utils\";\n\nexport interface EditableHoursProps extends EditableContentInterface {\n value?: number | string;\n onSave?: (e: Event) => void;\n onCancel?: () => void;\n withLeadingZero?: boolean;\n incrementOnlySelected?: boolean;\n validation?: (value: string) => boolean;\n allowEmptyValue?: boolean;\n minuteIncrement?: number;\n}\nexport const EditableHours = React.forwardRef<\n HTMLDivElement,\n EditableHoursProps\n>(\n (\n {\n value = 0,\n onCancel,\n onSave,\n inputProps,\n allowEmptyValue,\n withLeadingZero = true,\n validation = validateTimeInput,\n incrementOnlySelected = false,\n minuteIncrement = 1,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(ref, inputRef);\n const [currentValue, setCurrentValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const [prevValue, setPrevValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const escapeRef = useRef(false);\n\n useEffect(() => {\n let _value;\n if (value !== undefined) {\n _value = decimalToHours(value, withLeadingZero);\n }\n if (currentValue !== _value) {\n setCurrentValue(_value);\n setPrevValue(_value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n escapeRef.current = false;\n } else {\n if (\n e.target.value.trim().length > 0 &&\n prevValue !== e.target.value\n ) {\n const _value = decimalToHours(e.target.value, withLeadingZero);\n setPrevValue(_value);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n !allowEmptyValue\n ? setCurrentValue(prevValue)\n : typeof onSave === \"function\" &&\n prevValue !== e.target.value &&\n onSave(e);\n }\n }\n },\n [allowEmptyValue, onSave, prevValue, withLeadingZero]\n );\n\n const handleIncrementDecrement = useCallback(\n (increment: boolean) => {\n if (inputRef.current) {\n const selectionStart = inputRef.current.selectionStart;\n if (selectionStart !== null) {\n const dotsIndex = currentValue.indexOf(\":\");\n const [hours, minutes] = currentValue.split(\":\").map(Number);\n let newHours = hours;\n let newMinutes = minutes;\n\n if (selectionStart < dotsIndex) {\n if (increment) {\n newHours += 1;\n } else {\n newHours -= 1;\n if (newHours < 0) newHours = 0;\n }\n } else if (selectionStart > dotsIndex) {\n if (increment) {\n newMinutes += minuteIncrement;\n if (newMinutes > 59) {\n newMinutes = 0;\n if (!incrementOnlySelected) newHours += 1;\n }\n } else {\n if (newMinutes >= minuteIncrement || newMinutes === 0) {\n newMinutes -= minuteIncrement;\n if (newMinutes < 0 && newHours > 0) {\n newMinutes = 60 - minuteIncrement;\n if (!incrementOnlySelected) newHours -= 1;\n }\n if (newHours < 0) {\n newHours = 0;\n }\n } else {\n newMinutes = 0;\n }\n }\n }\n\n const newMinutesString =\n newMinutes < 10 ? `0${newMinutes}` : newMinutes;\n const newHoursString =\n withLeadingZero && newHours < 10 ? `0${newHours}` : newHours;\n const newValue = `${newHoursString}:${newMinutesString}`;\n\n if (validation(newValue, withLeadingZero)) {\n setCurrentValue(newValue);\n\n requestAnimationFrame(() => {\n const newDotsIndex = newValue.indexOf(\":\");\n const isHoursSelected = selectionStart < newDotsIndex;\n const newSelectionStart = isHoursSelected\n ? 0\n : newDotsIndex + 1;\n const selectionEnd = isHoursSelected\n ? newDotsIndex\n : newValue.length;\n inputRef.current?.setSelectionRange(\n newSelectionStart,\n selectionEnd\n );\n });\n }\n }\n }\n },\n [\n currentValue,\n incrementOnlySelected,\n minuteIncrement,\n validation,\n withLeadingZero,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.target.blur();\n }\n if (e.key === \"ArrowLeft\") {\n return;\n }\n if (e.key === \"ArrowRight\") {\n return;\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel();\n }\n if (e.key === \"Backspace\") {\n return;\n }\n const input = e.target;\n const start = input.selectionStart;\n const end = input.selectionEnd;\n const currentValue = input.value;\n if (e.key === \"Tab\") {\n if (start !== end) {\n if (e.shiftKey) {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isMinutesSelected = start > newDotsIndex;\n if (isMinutesSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(0, newDotsIndex);\n }\n } else {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isHoursSelected = start < newDotsIndex;\n if (isHoursSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(\n newDotsIndex + 1,\n currentValue.length\n );\n }\n }\n }\n return;\n }\n\n if (start !== end) {\n if (e.key === \"ArrowUp\") {\n handleIncrementDecrement(true);\n return;\n }\n if (e.key === \"ArrowDown\") {\n handleIncrementDecrement(false);\n return;\n }\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n if (!validation(newValue, withLeadingZero)) {\n e.preventDefault();\n return;\n }\n } else {\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n\n if (!validation(newValue, withLeadingZero)) {\n e.preventDefault();\n return;\n }\n }\n },\n [handleIncrementDecrement, onCancel, validation, withLeadingZero]\n );\n\n const handleChange = useCallback((e) => {\n setCurrentValue(e.target.value);\n }, []);\n\n const handleClick = () => {\n const selectionStart = inputRef.current?.selectionStart;\n if (\n inputRef.current &&\n currentValue &&\n currentValue.length > 0 &&\n typeof selectionStart === \"number\"\n ) {\n const dotsIndex = currentValue.indexOf(\":\");\n if (selectionStart < dotsIndex) {\n inputRef.current?.setSelectionRange(0, dotsIndex);\n } else if (selectionStart >= dotsIndex) {\n inputRef.current?.setSelectionRange(\n dotsIndex + 1,\n currentValue.length\n );\n }\n }\n };\n\n const handleDoubleClick = () => {\n if (inputRef.current) {\n inputRef.current?.setSelectionRange(0, currentValue.length);\n }\n };\n\n return (\n <EditableContent\n ref={handleRef}\n inputProps={{\n ...inputProps,\n value: currentValue,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n type: \"text\",\n onClick: handleClick,\n onDoubleClick: handleDoubleClick,\n className: classNames(\"c-input\", inputProps?.className),\n }}\n {...rest}\n />\n );\n }\n);\n\nEditableHours.displayName = \"EditableHours\";\n"],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
+
function _extends() { _extends = Object.assign || 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); }
|
|
10
|
+
/**
|
|
11
|
+
* @component ShieldIcon
|
|
12
|
+
* @description
|
|
13
|
+
*
|
|
14
|
+
* The React Icon component is a visual element that displays an icon to represent a concept, object, or action.
|
|
15
|
+
* The Icon component is
|
|
16
|
+
* customizable, allowing for variations in size, color, and style to fit the needs of the application.
|
|
17
|
+
*
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* return (
|
|
21
|
+
* <ShieldIcon className="mr-2" />
|
|
22
|
+
* )
|
|
23
|
+
*
|
|
24
|
+
* @see
|
|
25
|
+
* https://system.activecollab.com/?path=/story/foundation-icons-icons--icons
|
|
26
|
+
* @see
|
|
27
|
+
* https://design.activecollab.com/docs/foundations/icons
|
|
28
|
+
*/
|
|
29
|
+
var ShieldIcon = /*#__PURE__*/_react.default.forwardRef(function (props, svgRef) {
|
|
30
|
+
return /*#__PURE__*/_react.default.createElement("svg", _extends({
|
|
31
|
+
width: 24,
|
|
32
|
+
height: 24,
|
|
33
|
+
viewBox: "0 0 24 24",
|
|
34
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
35
|
+
"data-testid": "ShieldIcon",
|
|
36
|
+
fill: "var(--color-theme-600)",
|
|
37
|
+
focusable: false,
|
|
38
|
+
ref: svgRef
|
|
39
|
+
}, props), /*#__PURE__*/_react.default.createElement("path", {
|
|
40
|
+
fillRule: "evenodd",
|
|
41
|
+
clipRule: "evenodd",
|
|
42
|
+
d: "M11.873 4.063c.084-.01.17-.01.254 0l5.92.741c.563.07.962.584.892 1.147l-1.18 9.442c-.033.272-.175.52-.392.687l-4.741 3.652a1.026 1.026 0 01-1.252 0L6.633 16.08a1.028 1.028 0 01-.393-.687L5.061 5.951a1.027 1.027 0 01.891-1.147l5.92-.74zm.509-2.04a3.076 3.076 0 00-.764 0l-5.92.742a3.082 3.082 0 00-2.674 3.441l1.179 9.442c.102.817.526 1.56 1.178 2.061l4.741 3.652a3.077 3.077 0 003.756 0l4.741-3.652a3.084 3.084 0 001.178-2.061l1.179-9.442a3.082 3.082 0 00-2.674-3.441l-5.92-.741zm3.825 8.684a1 1 0 10-1.414-1.414l-3.71 3.71-1.302-1.628a1 1 0 10-1.562 1.25l1.302 1.627a2 2 0 002.976.165l3.71-3.71z"
|
|
43
|
+
}));
|
|
44
|
+
});
|
|
45
|
+
ShieldIcon.displayName = "ShieldIcon";
|
|
46
|
+
var _default = ShieldIcon;
|
|
47
|
+
exports.default = _default;
|
|
48
|
+
//# sourceMappingURL=Shield.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Shield.js","names":["ShieldIcon","React","forwardRef","props","svgRef","displayName"],"sources":["../../../../../src/components/Icons/collection/Shield.tsx"],"sourcesContent":["import React from \"react\";\n\n/**\n * @component ShieldIcon\n * @description\n *\n * The React Icon component is a visual element that displays an icon to represent a concept, object, or action.\n * The Icon component is\n * customizable, allowing for variations in size, color, and style to fit the needs of the application.\n *\n *\n * @example\n * return (\n * <ShieldIcon className=\"mr-2\" />\n * )\n *\n * @see\n * https://system.activecollab.com/?path=/story/foundation-icons-icons--icons\n * @see\n * https://design.activecollab.com/docs/foundations/icons\n */\nconst ShieldIcon = React.forwardRef(\n (props: React.SVGProps<SVGSVGElement>, svgRef?: React.Ref<SVGSVGElement>) => (\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n data-testid=\"ShieldIcon\"\n fill=\"var(--color-theme-600)\"\n focusable={false}\n ref={svgRef}\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.873 4.063c.084-.01.17-.01.254 0l5.92.741c.563.07.962.584.892 1.147l-1.18 9.442c-.033.272-.175.52-.392.687l-4.741 3.652a1.026 1.026 0 01-1.252 0L6.633 16.08a1.028 1.028 0 01-.393-.687L5.061 5.951a1.027 1.027 0 01.891-1.147l5.92-.74zm.509-2.04a3.076 3.076 0 00-.764 0l-5.92.742a3.082 3.082 0 00-2.674 3.441l1.179 9.442c.102.817.526 1.56 1.178 2.061l4.741 3.652a3.077 3.077 0 003.756 0l4.741-3.652a3.084 3.084 0 001.178-2.061l1.179-9.442a3.082 3.082 0 00-2.674-3.441l-5.92-.741zm3.825 8.684a1 1 0 10-1.414-1.414l-3.71 3.71-1.302-1.628a1 1 0 10-1.562 1.25l1.302 1.627a2 2 0 002.976.165l3.71-3.71z\"\n />\n </svg>\n )\n);\nShieldIcon.displayName = \"ShieldIcon\";\nexport default ShieldIcon;\n"],"mappings":";;;;;;AAAA;AAA0B;AAAA;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMA,UAAU,gBAAGC,cAAK,CAACC,UAAU,CACjC,UAACC,KAAoC,EAAEC,MAAiC;EAAA,oBACtE;IACE,KAAK,EAAE,EAAG;IACV,MAAM,EAAE,EAAG;IACX,OAAO,EAAC,WAAW;IACnB,KAAK,EAAC,4BAA4B;IAClC,eAAY,YAAY;IACxB,IAAI,EAAC,wBAAwB;IAC7B,SAAS,EAAE,KAAM;IACjB,GAAG,EAAEA;EAAO,GACRD,KAAK,gBAET;IACE,QAAQ,EAAC,SAAS;IAClB,QAAQ,EAAC,SAAS;IAClB,CAAC,EAAC;EAAslB,EACxlB,CACE;AAAA,CACP,CACF;AACDH,UAAU,CAACK,WAAW,GAAG,YAAY;AAAC,eACvBL,UAAU;AAAA"}
|
|
@@ -897,6 +897,12 @@ Object.defineProperty(exports, "SettingsIcon", {
|
|
|
897
897
|
return _Settings.default;
|
|
898
898
|
}
|
|
899
899
|
});
|
|
900
|
+
Object.defineProperty(exports, "ShieldIcon", {
|
|
901
|
+
enumerable: true,
|
|
902
|
+
get: function get() {
|
|
903
|
+
return _Shield.default;
|
|
904
|
+
}
|
|
905
|
+
});
|
|
900
906
|
Object.defineProperty(exports, "SortGeneralIcon", {
|
|
901
907
|
enumerable: true,
|
|
902
908
|
get: function get() {
|
|
@@ -1178,6 +1184,7 @@ var _Search = _interopRequireDefault(require("./Search"));
|
|
|
1178
1184
|
var _SendBlank = _interopRequireDefault(require("./SendBlank"));
|
|
1179
1185
|
var _SendFilled = _interopRequireDefault(require("./SendFilled"));
|
|
1180
1186
|
var _Settings = _interopRequireDefault(require("./Settings"));
|
|
1187
|
+
var _Shield = _interopRequireDefault(require("./Shield"));
|
|
1181
1188
|
var _SortGeneral = _interopRequireDefault(require("./SortGeneral"));
|
|
1182
1189
|
var _SortIcon = _interopRequireDefault(require("./SortIcon"));
|
|
1183
1190
|
var _StarOutline = _interopRequireDefault(require("./StarOutline"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/Icons/collection/index.tsx"],"sourcesContent":["export { default as AccessLogIcon } from \"./AccessLog\";\nexport { default as ActivityIcon } from \"./Activity\";\nexport { default as AddCrossTinyIcon } from \"./AddCrossTiny\";\nexport { default as AddCrossIcon } from \"./AddCross\";\nexport { default as ArchiveIcon } from \"./Archive\";\nexport { default as ArrowBackMobileIcon } from \"./ArrowBackMobile\";\nexport { default as ArrowCollapseMultipleIcon } from \"./ArrowCollapseMultiple\";\nexport { default as ArrowDownLongIcon } from \"./ArrowDownLong\";\nexport { default as ArrowDownIcon } from \"./ArrowDown\";\nexport { default as ArrowExpandeMultipleIcon } from \"./ArrowExpandeMultiple\";\nexport { default as ArrowLeftBoxIcon } from \"./ArrowLeftBox\";\nexport { default as ArrowLeftIcon } from \"./ArrowLeft\";\nexport { default as ArrowRefreshIcon } from \"./ArrowRefresh\";\nexport { default as ArrowRightIcon } from \"./ArrowRight\";\nexport { default as ArrowUpLongIcon } from \"./ArrowUpLong\";\nexport { default as ArrowUpIcon } from \"./ArrowUp\";\nexport { default as AssignIcon } from \"./Assign\";\nexport { default as AttachmentIcon } from \"./Attachment\";\nexport { default as BellOffSmallIcon } from \"./BellOffSmall\";\nexport { default as BellOffIcon } from \"./BellOff\";\nexport { default as BillingIcon } from \"./Billing\";\nexport { default as BudgetAlertIcon } from \"./BudgetAlert\";\nexport { default as CalendarAddXIcon } from \"./CalendarAddX\";\nexport { default as CalendarIcon } from \"./Calendar\";\nexport { default as CancelCrossIcon } from \"./CancelCross\";\nexport { default as CaretLeftIcon } from \"./CaretLeft\";\nexport { default as CaretRightIcon } from \"./CaretRight\";\nexport { default as ChatIcon } from \"./Chat\";\nexport { default as CheckIcon } from \"./Check\";\nexport { default as CheckboxBlankTogglerIcon } from \"./CheckboxBlankToggler\";\nexport { default as CheckboxCircleArrowIcon } from \"./CheckboxCircleArrow\";\nexport { default as CheckboxIcon } from \"./Checkbox\";\nexport { default as ChecklistSmallIcon } from \"./ChecklistSmall\";\nexport { default as ChecklistIcon } from \"./Checklist\";\nexport { default as CircleMultipleIcon } from \"./CircleMultiple\";\nexport { default as ClockAddIcon } from \"./ClockAdd\";\nexport { default as ClockSmallIcon } from \"./ClockSmall\";\nexport { default as ClockStopwatchSmallIcon } from \"./ClockStopwatchSmall\";\nexport { default as ClockStopwatchIcon } from \"./ClockStopwatch\";\nexport { default as ClockIcon } from \"./Clock\";\nexport { default as CloseSmallIcon } from \"./CloseSmall\";\nexport { default as CloseIcon } from \"./Close\";\nexport { default as CollapsIcon } from \"./CollapsIcon\";\nexport { default as CollapseAllIcon } from \"./CollapseAll\";\nexport { default as CollapseExpandSingleIcon } from \"./CollapseExpandSingle\";\nexport { default as CompanyIcon } from \"./Company\";\nexport { default as ComputerIcon } from \"./Computer\";\nexport { default as CopyIcon } from \"./Copy\";\nexport { default as CrownBlankIcon } from \"./CrownBlank\";\nexport { default as CrownSelectedIcon } from \"./CrownSelected\";\nexport { default as DependencySmallIcon } from \"./DependencySmall\";\nexport { default as DependencyIcon } from \"./Dependency\";\nexport { default as DiscussionAddIcon } from \"./DiscussionAdd\";\nexport { default as DiscussionIcon } from \"./Discussion\";\nexport { default as DollarCheckmarkSmallIcon } from \"./DollarCheckmarkSmall\";\nexport { default as DollarCheckmarkIcon } from \"./DollarCheckmark\";\nexport { default as DollarClockSmallIcon } from \"./DollarClockSmall\";\nexport { default as DollarClockIcon } from \"./DollarClock\";\nexport { default as DollarDocumentIcon } from \"./DollarDocument\";\nexport { default as DollarOffSmallIcon } from \"./DollarOffSmall\";\nexport { default as DollarOffIcon } from \"./DollarOff\";\nexport { default as DollarSmallIcon } from \"./DollarSmall\";\nexport { default as DollarIcon } from \"./Dollar\";\nexport { default as DownloadIcon } from \"./Download\";\nexport { default as DriveIcon } from \"./Drive\";\nexport { default as DropboxIcon } from \"./Dropbox\";\nexport { default as DuplicateIcon } from \"./Duplicate\";\nexport { default as EditMultipleIcon } from \"./EditMultiple\";\nexport { default as EditIcon } from \"./Edit\";\nexport { default as EmojiIcon } from \"./Emoji\";\nexport { default as EstimatePlusIcon } from \"./EstimatePlus\";\nexport { default as EstimatesIcon } from \"./Estimates\";\nexport { default as ExpandAllIcon } from \"./ExpandAll\";\nexport { default as ExpenseAddIcon } from \"./ExpenseAdd\";\nexport { default as EyeOffSmallIcon } from \"./EyeOffSmall\";\nexport { default as EyeOffIcon } from \"./EyeOff\";\nexport { default as EyeSmallIcon } from \"./EyeSmall\";\nexport { default as EyeIcon } from \"./Eye\";\nexport { default as FilterIcon } from \"./Filter\";\nexport { default as FolderMoveIcon } from \"./FolderMove\";\nexport { default as FolderOutlineIcon } from \"./FolderOutline\";\nexport { default as GiftIcon } from \"./Gift\";\nexport { default as HashtagIcon } from \"./Hashtag\";\nexport { default as HelpIcon } from \"./Help\";\nexport { default as ImageIcon } from \"./Image\";\nexport { default as InfoSmallIcon } from \"./InfoSmall\";\nexport { default as InfoIcon } from \"./Info\";\nexport { default as InsertLinkIcon } from \"./InsertLink\";\nexport { default as IntegrationsIcon } from \"./Integrations\";\nexport { default as InvoicesIcon } from \"./Invoices\";\nexport { default as LabelsIcon } from \"./Labels\";\nexport { default as LockSmallIcon } from \"./LockSmall\";\nexport { default as LockIcon } from \"./Lock\";\nexport { default as MarkerIcon } from \"./Marker\";\nexport { default as MessageAddIcon } from \"./MessageAdd\";\nexport { default as MessageEmptyIcon } from \"./MessageEmpty\";\nexport { default as MessageSmallIcon } from \"./MessageSmall\";\nexport { default as MessageSolidIcon } from \"./MessageSolid\";\nexport { default as MessageIcon } from \"./Message\";\nexport { default as MinusIcon } from \"./Minus\";\nexport { default as MoveTriggerIcon } from \"./MoveTrigger\";\nexport { default as MoveIcon } from \"./Move\";\nexport { default as MyWorkIcon } from \"./MyWork\";\nexport { default as NoteAddIcon } from \"./NoteAdd\";\nexport { default as NoteIcon } from \"./Note\";\nexport { default as NotebookIcon } from \"./Notebook\";\nexport { default as NotificationBellIcon } from \"./NotificationBell\";\nexport { default as OpenExpandedIcon } from \"./OpenExpanded\";\nexport { default as OpenSheetIcon } from \"./OpenSheet\";\nexport { default as OrderFirstIcon } from \"./OrderFirst\";\nexport { default as PaidSmallIcon } from \"./PaidSmall\";\nexport { default as PauseCircleOutlineIcon } from \"./PauseCircleOutline\";\nexport { default as PauseIcon } from \"./PauseIcon\";\nexport { default as PauseSmallIcon } from \"./PauseSmall\";\nexport { default as PencilSmallIcon } from \"./PencilSmall\";\nexport { default as PencilIcon } from \"./Pencil\";\nexport { default as PendingPaymentSmallIcon } from \"./PendingPaymentSmall\";\nexport { default as PeopleIcon } from \"./People\";\nexport { default as PersonCircleOffIcon } from \"./PersonCircleOff\";\nexport { default as PersonCircleIcon } from \"./PersonCircle\";\nexport { default as PersonPlusIcon } from \"./PersonPlus\";\nexport { default as PersonIcon } from \"./Person\";\nexport { default as PinIcon } from \"./Pin\";\nexport { default as PlayCircleOutlineIcon } from \"./PlayCircleOutline\";\nexport { default as PlayIcon } from \"./PlayIcon\";\nexport { default as PlaySmallIcon } from \"./PlaySmall\";\nexport { default as PriorityLowIcon } from \"./PriorityLow\";\nexport { default as ProjectAddIcon } from \"./ProjectAdd\";\nexport { default as ProjectSearchIcon } from \"./ProjectSearch\";\nexport { default as ProjectStarIcon } from \"./ProjectStar\";\nexport { default as ProjectTemplateAddIcon } from \"./ProjectTemplateAdd\";\nexport { default as ProjectTemplateConvertIcon } from \"./ProjectTemplateConvert\";\nexport { default as ProjectTemplateIcon } from \"./ProjectTemplate\";\nexport { default as ProjectsIcon } from \"./Projects\";\nexport { default as RadioBlankIcon } from \"./RadioBlank\";\nexport { default as RadioButtonIcon } from \"./RadioButton\";\nexport { default as RearangeIcon } from \"./Rearange\";\nexport { default as RearrangeSmallIcon } from \"./RearrangeSmall\";\nexport { default as RecurringCheckmarkSmallIcon } from \"./RecurringCheckmarkSmall\";\nexport { default as RecurringCheckmarkIcon } from \"./RecurringCheckmark\";\nexport { default as RecurringSmallIcon } from \"./RecurringSmall\";\nexport { default as ReportTimeIcon } from \"./ReportTime\";\nexport { default as ReportsIcon } from \"./Reports\";\nexport { default as RocketIcon } from \"./Rocket\";\nexport { default as SearchLargeIcon } from \"./SearchLarge\";\nexport { default as SearchIcon } from \"./Search\";\nexport { default as SendBlankIcon } from \"./SendBlank\";\nexport { default as SendFilledIcon } from \"./SendFilled\";\nexport { default as SettingsIcon } from \"./Settings\";\nexport { default as SortGeneralIcon } from \"./SortGeneral\";\nexport { default as SortIcon } from \"./SortIcon\";\nexport { default as StarOutlineIcon } from \"./StarOutline\";\nexport { default as StarIcon } from \"./Star\";\nexport { default as StopwatchIcon } from \"./Stopwatch\";\nexport { default as SystemSettingsIcon } from \"./SystemSettings\";\nexport { default as TaskAddIcon } from \"./TaskAdd\";\nexport { default as TaskListAddIcon } from \"./TaskListAdd\";\nexport { default as TaskListCompleteIcon } from \"./TaskListComplete\";\nexport { default as TaskListIcon } from \"./TaskList\";\nexport { default as ThumbUpOutlineIcon } from \"./ThumbUpOutline\";\nexport { default as TrashIcon } from \"./Trash\";\nexport { default as TreeDotsIcon } from \"./TreeDots\";\nexport { default as UploadIcon } from \"./Upload\";\nexport { default as ViewGridIcon } from \"./ViewGrid\";\nexport { default as ViewListIcon } from \"./ViewList\";\nexport { default as ViewTimelineIcon } from \"./ViewTimeline\";\nexport { default as VolumeHighIcon } from \"./VolumeHigh\";\nexport { default as WarningTriangleSmallIcon } from \"./WarningTriangleSmall\";\nexport { default as WarningTriangleIcon } from \"./WarningTriangle\";\nexport { default as WarningIcon } from \"./Warning\";\nexport { default as WorkloadIcon } from \"./Workload\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAqD"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/Icons/collection/index.tsx"],"sourcesContent":["export { default as AccessLogIcon } from \"./AccessLog\";\nexport { default as ActivityIcon } from \"./Activity\";\nexport { default as AddCrossTinyIcon } from \"./AddCrossTiny\";\nexport { default as AddCrossIcon } from \"./AddCross\";\nexport { default as ArchiveIcon } from \"./Archive\";\nexport { default as ArrowBackMobileIcon } from \"./ArrowBackMobile\";\nexport { default as ArrowCollapseMultipleIcon } from \"./ArrowCollapseMultiple\";\nexport { default as ArrowDownLongIcon } from \"./ArrowDownLong\";\nexport { default as ArrowDownIcon } from \"./ArrowDown\";\nexport { default as ArrowExpandeMultipleIcon } from \"./ArrowExpandeMultiple\";\nexport { default as ArrowLeftBoxIcon } from \"./ArrowLeftBox\";\nexport { default as ArrowLeftIcon } from \"./ArrowLeft\";\nexport { default as ArrowRefreshIcon } from \"./ArrowRefresh\";\nexport { default as ArrowRightIcon } from \"./ArrowRight\";\nexport { default as ArrowUpLongIcon } from \"./ArrowUpLong\";\nexport { default as ArrowUpIcon } from \"./ArrowUp\";\nexport { default as AssignIcon } from \"./Assign\";\nexport { default as AttachmentIcon } from \"./Attachment\";\nexport { default as BellOffSmallIcon } from \"./BellOffSmall\";\nexport { default as BellOffIcon } from \"./BellOff\";\nexport { default as BillingIcon } from \"./Billing\";\nexport { default as BudgetAlertIcon } from \"./BudgetAlert\";\nexport { default as CalendarAddXIcon } from \"./CalendarAddX\";\nexport { default as CalendarIcon } from \"./Calendar\";\nexport { default as CancelCrossIcon } from \"./CancelCross\";\nexport { default as CaretLeftIcon } from \"./CaretLeft\";\nexport { default as CaretRightIcon } from \"./CaretRight\";\nexport { default as ChatIcon } from \"./Chat\";\nexport { default as CheckIcon } from \"./Check\";\nexport { default as CheckboxBlankTogglerIcon } from \"./CheckboxBlankToggler\";\nexport { default as CheckboxCircleArrowIcon } from \"./CheckboxCircleArrow\";\nexport { default as CheckboxIcon } from \"./Checkbox\";\nexport { default as ChecklistSmallIcon } from \"./ChecklistSmall\";\nexport { default as ChecklistIcon } from \"./Checklist\";\nexport { default as CircleMultipleIcon } from \"./CircleMultiple\";\nexport { default as ClockAddIcon } from \"./ClockAdd\";\nexport { default as ClockSmallIcon } from \"./ClockSmall\";\nexport { default as ClockStopwatchSmallIcon } from \"./ClockStopwatchSmall\";\nexport { default as ClockStopwatchIcon } from \"./ClockStopwatch\";\nexport { default as ClockIcon } from \"./Clock\";\nexport { default as CloseSmallIcon } from \"./CloseSmall\";\nexport { default as CloseIcon } from \"./Close\";\nexport { default as CollapsIcon } from \"./CollapsIcon\";\nexport { default as CollapseAllIcon } from \"./CollapseAll\";\nexport { default as CollapseExpandSingleIcon } from \"./CollapseExpandSingle\";\nexport { default as CompanyIcon } from \"./Company\";\nexport { default as ComputerIcon } from \"./Computer\";\nexport { default as CopyIcon } from \"./Copy\";\nexport { default as CrownBlankIcon } from \"./CrownBlank\";\nexport { default as CrownSelectedIcon } from \"./CrownSelected\";\nexport { default as DependencySmallIcon } from \"./DependencySmall\";\nexport { default as DependencyIcon } from \"./Dependency\";\nexport { default as DiscussionAddIcon } from \"./DiscussionAdd\";\nexport { default as DiscussionIcon } from \"./Discussion\";\nexport { default as DollarCheckmarkSmallIcon } from \"./DollarCheckmarkSmall\";\nexport { default as DollarCheckmarkIcon } from \"./DollarCheckmark\";\nexport { default as DollarClockSmallIcon } from \"./DollarClockSmall\";\nexport { default as DollarClockIcon } from \"./DollarClock\";\nexport { default as DollarDocumentIcon } from \"./DollarDocument\";\nexport { default as DollarOffSmallIcon } from \"./DollarOffSmall\";\nexport { default as DollarOffIcon } from \"./DollarOff\";\nexport { default as DollarSmallIcon } from \"./DollarSmall\";\nexport { default as DollarIcon } from \"./Dollar\";\nexport { default as DownloadIcon } from \"./Download\";\nexport { default as DriveIcon } from \"./Drive\";\nexport { default as DropboxIcon } from \"./Dropbox\";\nexport { default as DuplicateIcon } from \"./Duplicate\";\nexport { default as EditMultipleIcon } from \"./EditMultiple\";\nexport { default as EditIcon } from \"./Edit\";\nexport { default as EmojiIcon } from \"./Emoji\";\nexport { default as EstimatePlusIcon } from \"./EstimatePlus\";\nexport { default as EstimatesIcon } from \"./Estimates\";\nexport { default as ExpandAllIcon } from \"./ExpandAll\";\nexport { default as ExpenseAddIcon } from \"./ExpenseAdd\";\nexport { default as EyeOffSmallIcon } from \"./EyeOffSmall\";\nexport { default as EyeOffIcon } from \"./EyeOff\";\nexport { default as EyeSmallIcon } from \"./EyeSmall\";\nexport { default as EyeIcon } from \"./Eye\";\nexport { default as FilterIcon } from \"./Filter\";\nexport { default as FolderMoveIcon } from \"./FolderMove\";\nexport { default as FolderOutlineIcon } from \"./FolderOutline\";\nexport { default as GiftIcon } from \"./Gift\";\nexport { default as HashtagIcon } from \"./Hashtag\";\nexport { default as HelpIcon } from \"./Help\";\nexport { default as ImageIcon } from \"./Image\";\nexport { default as InfoSmallIcon } from \"./InfoSmall\";\nexport { default as InfoIcon } from \"./Info\";\nexport { default as InsertLinkIcon } from \"./InsertLink\";\nexport { default as IntegrationsIcon } from \"./Integrations\";\nexport { default as InvoicesIcon } from \"./Invoices\";\nexport { default as LabelsIcon } from \"./Labels\";\nexport { default as LockSmallIcon } from \"./LockSmall\";\nexport { default as LockIcon } from \"./Lock\";\nexport { default as MarkerIcon } from \"./Marker\";\nexport { default as MessageAddIcon } from \"./MessageAdd\";\nexport { default as MessageEmptyIcon } from \"./MessageEmpty\";\nexport { default as MessageSmallIcon } from \"./MessageSmall\";\nexport { default as MessageSolidIcon } from \"./MessageSolid\";\nexport { default as MessageIcon } from \"./Message\";\nexport { default as MinusIcon } from \"./Minus\";\nexport { default as MoveTriggerIcon } from \"./MoveTrigger\";\nexport { default as MoveIcon } from \"./Move\";\nexport { default as MyWorkIcon } from \"./MyWork\";\nexport { default as NoteAddIcon } from \"./NoteAdd\";\nexport { default as NoteIcon } from \"./Note\";\nexport { default as NotebookIcon } from \"./Notebook\";\nexport { default as NotificationBellIcon } from \"./NotificationBell\";\nexport { default as OpenExpandedIcon } from \"./OpenExpanded\";\nexport { default as OpenSheetIcon } from \"./OpenSheet\";\nexport { default as OrderFirstIcon } from \"./OrderFirst\";\nexport { default as PaidSmallIcon } from \"./PaidSmall\";\nexport { default as PauseCircleOutlineIcon } from \"./PauseCircleOutline\";\nexport { default as PauseIcon } from \"./PauseIcon\";\nexport { default as PauseSmallIcon } from \"./PauseSmall\";\nexport { default as PencilSmallIcon } from \"./PencilSmall\";\nexport { default as PencilIcon } from \"./Pencil\";\nexport { default as PendingPaymentSmallIcon } from \"./PendingPaymentSmall\";\nexport { default as PeopleIcon } from \"./People\";\nexport { default as PersonCircleOffIcon } from \"./PersonCircleOff\";\nexport { default as PersonCircleIcon } from \"./PersonCircle\";\nexport { default as PersonPlusIcon } from \"./PersonPlus\";\nexport { default as PersonIcon } from \"./Person\";\nexport { default as PinIcon } from \"./Pin\";\nexport { default as PlayCircleOutlineIcon } from \"./PlayCircleOutline\";\nexport { default as PlayIcon } from \"./PlayIcon\";\nexport { default as PlaySmallIcon } from \"./PlaySmall\";\nexport { default as PriorityLowIcon } from \"./PriorityLow\";\nexport { default as ProjectAddIcon } from \"./ProjectAdd\";\nexport { default as ProjectSearchIcon } from \"./ProjectSearch\";\nexport { default as ProjectStarIcon } from \"./ProjectStar\";\nexport { default as ProjectTemplateAddIcon } from \"./ProjectTemplateAdd\";\nexport { default as ProjectTemplateConvertIcon } from \"./ProjectTemplateConvert\";\nexport { default as ProjectTemplateIcon } from \"./ProjectTemplate\";\nexport { default as ProjectsIcon } from \"./Projects\";\nexport { default as RadioBlankIcon } from \"./RadioBlank\";\nexport { default as RadioButtonIcon } from \"./RadioButton\";\nexport { default as RearangeIcon } from \"./Rearange\";\nexport { default as RearrangeSmallIcon } from \"./RearrangeSmall\";\nexport { default as RecurringCheckmarkSmallIcon } from \"./RecurringCheckmarkSmall\";\nexport { default as RecurringCheckmarkIcon } from \"./RecurringCheckmark\";\nexport { default as RecurringSmallIcon } from \"./RecurringSmall\";\nexport { default as ReportTimeIcon } from \"./ReportTime\";\nexport { default as ReportsIcon } from \"./Reports\";\nexport { default as RocketIcon } from \"./Rocket\";\nexport { default as SearchLargeIcon } from \"./SearchLarge\";\nexport { default as SearchIcon } from \"./Search\";\nexport { default as SendBlankIcon } from \"./SendBlank\";\nexport { default as SendFilledIcon } from \"./SendFilled\";\nexport { default as SettingsIcon } from \"./Settings\";\nexport { default as ShieldIcon } from \"./Shield\";\nexport { default as SortGeneralIcon } from \"./SortGeneral\";\nexport { default as SortIcon } from \"./SortIcon\";\nexport { default as StarOutlineIcon } from \"./StarOutline\";\nexport { default as StarIcon } from \"./Star\";\nexport { default as StopwatchIcon } from \"./Stopwatch\";\nexport { default as SystemSettingsIcon } from \"./SystemSettings\";\nexport { default as TaskAddIcon } from \"./TaskAdd\";\nexport { default as TaskListAddIcon } from \"./TaskListAdd\";\nexport { default as TaskListCompleteIcon } from \"./TaskListComplete\";\nexport { default as TaskListIcon } from \"./TaskList\";\nexport { default as ThumbUpOutlineIcon } from \"./ThumbUpOutline\";\nexport { default as TrashIcon } from \"./Trash\";\nexport { default as TreeDotsIcon } from \"./TreeDots\";\nexport { default as UploadIcon } from \"./Upload\";\nexport { default as ViewGridIcon } from \"./ViewGrid\";\nexport { default as ViewListIcon } from \"./ViewList\";\nexport { default as ViewTimelineIcon } from \"./ViewTimeline\";\nexport { default as VolumeHighIcon } from \"./VolumeHigh\";\nexport { default as WarningTriangleSmallIcon } from \"./WarningTriangleSmall\";\nexport { default as WarningTriangleIcon } from \"./WarningTriangle\";\nexport { default as WarningIcon } from \"./Warning\";\nexport { default as WorkloadIcon } from \"./Workload\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAqD"}
|
|
@@ -8,8 +8,12 @@ var validateStopwatchTime = function validateStopwatchTime(value) {
|
|
|
8
8
|
return /^([0-9]{0,2})?(((:([0-5][0-9])?)|(:[0-5]?))|(\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(value);
|
|
9
9
|
};
|
|
10
10
|
exports.validateStopwatchTime = validateStopwatchTime;
|
|
11
|
-
var validateTimeInput = function validateTimeInput(value) {
|
|
12
|
-
|
|
11
|
+
var validateTimeInput = function validateTimeInput(value, withLeadingZero) {
|
|
12
|
+
if (withLeadingZero) {
|
|
13
|
+
return /^(([0-9][0-9]?|[1-9][0-9]{2,8})?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\.[0-9]+)|(,[0-9]+))?)$/.test(value);
|
|
14
|
+
} else {
|
|
15
|
+
return /^(([1-9][0-9]*|0)?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\.[0-9]+)|(,[0-9]+))?)$/.test(value);
|
|
16
|
+
}
|
|
13
17
|
};
|
|
14
18
|
exports.validateTimeInput = validateTimeInput;
|
|
15
19
|
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","names":["validateStopwatchTime","value","test","validateTimeInput"],"sources":["../../../src/utils/validation.ts"],"sourcesContent":["export const validateStopwatchTime = (value: string) => {\n return /^([0-9]{0,2})?(((:([0-5][0-9])?)|(:[0-5]?))|(\\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(\n value\n );\n};\n\nexport const validateTimeInput = (value: string) => {\n return /^([0-9]+)?(((
|
|
1
|
+
{"version":3,"file":"validation.js","names":["validateStopwatchTime","value","test","validateTimeInput","withLeadingZero"],"sources":["../../../src/utils/validation.ts"],"sourcesContent":["export const validateStopwatchTime = (value: string) => {\n return /^([0-9]{0,2})?(((:([0-5][0-9])?)|(:[0-5]?))|(\\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(\n value\n );\n};\n\nexport const validateTimeInput = (value: string, withLeadingZero: boolean) => {\n if (withLeadingZero) {\n return /^(([0-9][0-9]?|[1-9][0-9]{2,8})?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\\.[0-9]+)|(,[0-9]+))?)$/.test(\n value\n );\n } else {\n return /^(([1-9][0-9]*|0)?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\\.[0-9]+)|(,[0-9]+))?)$/.test(\n value\n );\n }\n};\n"],"mappings":";;;;;;AAAO,IAAMA,qBAAqB,GAAG,SAAxBA,qBAAqB,CAAIC,KAAa,EAAK;EACtD,OAAO,8EAA8E,CAACC,IAAI,CACxFD,KAAK,CACN;AACH,CAAC;AAAC;AAEK,IAAME,iBAAiB,GAAG,SAApBA,iBAAiB,CAAIF,KAAa,EAAEG,eAAwB,EAAK;EAC5E,IAAIA,eAAe,EAAE;IACnB,OAAO,4FAA4F,CAACF,IAAI,CACtGD,KAAK,CACN;EACH,CAAC,MAAM;IACL,OAAO,8EAA8E,CAACC,IAAI,CACxFD,KAAK,CACN;EACH;AACF,CAAC;AAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _validation = require("./validation");
|
|
4
|
+
describe("validateTimeInput", function () {
|
|
5
|
+
it("should work", function () {
|
|
6
|
+
expect((0, _validation.validateTimeInput)("0000:45", true)).toBeFalsy();
|
|
7
|
+
expect((0, _validation.validateTimeInput)("0000.45", true)).toBeFalsy();
|
|
8
|
+
expect((0, _validation.validateTimeInput)("0000,45", true)).toBeFalsy();
|
|
9
|
+
expect((0, _validation.validateTimeInput)("10000,45", true)).toBeTruthy();
|
|
10
|
+
expect((0, _validation.validateTimeInput)("1000", true)).toBeTruthy();
|
|
11
|
+
expect((0, _validation.validateTimeInput)("00:45", true)).toBeTruthy();
|
|
12
|
+
expect((0, _validation.validateTimeInput)("00,45", true)).toBeTruthy();
|
|
13
|
+
expect((0, _validation.validateTimeInput)("00.45", true)).toBeTruthy();
|
|
14
|
+
expect((0, _validation.validateTimeInput)("00.", true)).toBeTruthy();
|
|
15
|
+
expect((0, _validation.validateTimeInput)("0", true)).toBeTruthy();
|
|
16
|
+
expect((0, _validation.validateTimeInput)(".5", true)).toBeTruthy();
|
|
17
|
+
expect((0, _validation.validateTimeInput)(",55", true)).toBeTruthy();
|
|
18
|
+
expect((0, _validation.validateTimeInput)(",55", false)).toBeTruthy();
|
|
19
|
+
expect((0, _validation.validateTimeInput)(".55", false)).toBeTruthy();
|
|
20
|
+
expect((0, _validation.validateTimeInput)("00:45", false)).toBeFalsy();
|
|
21
|
+
expect((0, _validation.validateTimeInput)("00.45", false)).toBeFalsy();
|
|
22
|
+
expect((0, _validation.validateTimeInput)("00,45", false)).toBeFalsy();
|
|
23
|
+
expect((0, _validation.validateTimeInput)("0:45", false)).toBeTruthy();
|
|
24
|
+
expect((0, _validation.validateTimeInput)("0,45", false)).toBeTruthy();
|
|
25
|
+
expect((0, _validation.validateTimeInput)("0.45", false)).toBeTruthy();
|
|
26
|
+
expect((0, _validation.validateTimeInput)("00.", false)).toBeFalsy();
|
|
27
|
+
expect((0, _validation.validateTimeInput)("00", false)).toBeFalsy();
|
|
28
|
+
expect((0, _validation.validateTimeInput)("0", false)).toBeTruthy();
|
|
29
|
+
expect((0, _validation.validateTimeInput)("1:45", false)).toBeTruthy();
|
|
30
|
+
expect((0, _validation.validateTimeInput)("1:6", false)).toBeFalsy();
|
|
31
|
+
expect((0, _validation.validateTimeInput)("11:6", true)).toBeFalsy();
|
|
32
|
+
expect((0, _validation.validateTimeInput)("11:555", false)).toBeFalsy();
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
describe("validateStopwatchTime", function () {
|
|
36
|
+
it("should work", function () {
|
|
37
|
+
expect((0, _validation.validateStopwatchTime)("0000:45")).toBeFalsy();
|
|
38
|
+
expect((0, _validation.validateStopwatchTime)("0000.45")).toBeFalsy();
|
|
39
|
+
expect((0, _validation.validateStopwatchTime)("0000,45")).toBeFalsy();
|
|
40
|
+
expect((0, _validation.validateStopwatchTime)("10000,45")).toBeFalsy();
|
|
41
|
+
expect((0, _validation.validateStopwatchTime)("1000")).toBeFalsy();
|
|
42
|
+
expect((0, _validation.validateStopwatchTime)("00:45")).toBeTruthy();
|
|
43
|
+
expect((0, _validation.validateStopwatchTime)("00,45")).toBeTruthy();
|
|
44
|
+
expect((0, _validation.validateStopwatchTime)("00.45")).toBeTruthy();
|
|
45
|
+
expect((0, _validation.validateStopwatchTime)("00.")).toBeTruthy();
|
|
46
|
+
expect((0, _validation.validateStopwatchTime)("0")).toBeTruthy();
|
|
47
|
+
expect((0, _validation.validateStopwatchTime)(".5")).toBeTruthy();
|
|
48
|
+
expect((0, _validation.validateStopwatchTime)(",55")).toBeTruthy();
|
|
49
|
+
expect((0, _validation.validateStopwatchTime)(",55")).toBeTruthy();
|
|
50
|
+
expect((0, _validation.validateStopwatchTime)(".55")).toBeTruthy();
|
|
51
|
+
expect((0, _validation.validateStopwatchTime)("0:45")).toBeTruthy();
|
|
52
|
+
expect((0, _validation.validateStopwatchTime)("0,45")).toBeTruthy();
|
|
53
|
+
expect((0, _validation.validateStopwatchTime)("0.45")).toBeTruthy();
|
|
54
|
+
expect((0, _validation.validateStopwatchTime)("0")).toBeTruthy();
|
|
55
|
+
expect((0, _validation.validateStopwatchTime)("1:45")).toBeTruthy();
|
|
56
|
+
expect((0, _validation.validateStopwatchTime)("1:6")).toBeFalsy();
|
|
57
|
+
expect((0, _validation.validateStopwatchTime)("11:6")).toBeFalsy();
|
|
58
|
+
expect((0, _validation.validateStopwatchTime)("11:555")).toBeFalsy();
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=validation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.test.js","names":["describe","it","expect","validateTimeInput","toBeFalsy","toBeTruthy","validateStopwatchTime"],"sources":["../../../src/utils/validation.test.ts"],"sourcesContent":["import { validateStopwatchTime, validateTimeInput } from \"./validation\";\n\ndescribe(\"validateTimeInput\", () => {\n it(\"should work\", () => {\n expect(validateTimeInput(\"0000:45\", true)).toBeFalsy();\n expect(validateTimeInput(\"0000.45\", true)).toBeFalsy();\n expect(validateTimeInput(\"0000,45\", true)).toBeFalsy();\n expect(validateTimeInput(\"10000,45\", true)).toBeTruthy();\n expect(validateTimeInput(\"1000\", true)).toBeTruthy();\n expect(validateTimeInput(\"00:45\", true)).toBeTruthy();\n expect(validateTimeInput(\"00,45\", true)).toBeTruthy();\n expect(validateTimeInput(\"00.45\", true)).toBeTruthy();\n expect(validateTimeInput(\"00.\", true)).toBeTruthy();\n expect(validateTimeInput(\"0\", true)).toBeTruthy();\n expect(validateTimeInput(\".5\", true)).toBeTruthy();\n expect(validateTimeInput(\",55\", true)).toBeTruthy();\n expect(validateTimeInput(\",55\", false)).toBeTruthy();\n expect(validateTimeInput(\".55\", false)).toBeTruthy();\n expect(validateTimeInput(\"00:45\", false)).toBeFalsy();\n expect(validateTimeInput(\"00.45\", false)).toBeFalsy();\n expect(validateTimeInput(\"00,45\", false)).toBeFalsy();\n expect(validateTimeInput(\"0:45\", false)).toBeTruthy();\n expect(validateTimeInput(\"0,45\", false)).toBeTruthy();\n expect(validateTimeInput(\"0.45\", false)).toBeTruthy();\n expect(validateTimeInput(\"00.\", false)).toBeFalsy();\n expect(validateTimeInput(\"00\", false)).toBeFalsy();\n expect(validateTimeInput(\"0\", false)).toBeTruthy();\n expect(validateTimeInput(\"1:45\", false)).toBeTruthy();\n expect(validateTimeInput(\"1:6\", false)).toBeFalsy();\n expect(validateTimeInput(\"11:6\", true)).toBeFalsy();\n expect(validateTimeInput(\"11:555\", false)).toBeFalsy();\n });\n});\n\ndescribe(\"validateStopwatchTime\", () => {\n it(\"should work\", () => {\n expect(validateStopwatchTime(\"0000:45\")).toBeFalsy();\n expect(validateStopwatchTime(\"0000.45\")).toBeFalsy();\n expect(validateStopwatchTime(\"0000,45\")).toBeFalsy();\n expect(validateStopwatchTime(\"10000,45\")).toBeFalsy();\n expect(validateStopwatchTime(\"1000\")).toBeFalsy();\n expect(validateStopwatchTime(\"00:45\")).toBeTruthy();\n expect(validateStopwatchTime(\"00,45\")).toBeTruthy();\n expect(validateStopwatchTime(\"00.45\")).toBeTruthy();\n expect(validateStopwatchTime(\"00.\")).toBeTruthy();\n expect(validateStopwatchTime(\"0\")).toBeTruthy();\n expect(validateStopwatchTime(\".5\")).toBeTruthy();\n expect(validateStopwatchTime(\",55\")).toBeTruthy();\n expect(validateStopwatchTime(\",55\")).toBeTruthy();\n expect(validateStopwatchTime(\".55\")).toBeTruthy();\n expect(validateStopwatchTime(\"0:45\")).toBeTruthy();\n expect(validateStopwatchTime(\"0,45\")).toBeTruthy();\n expect(validateStopwatchTime(\"0.45\")).toBeTruthy();\n expect(validateStopwatchTime(\"0\")).toBeTruthy();\n expect(validateStopwatchTime(\"1:45\")).toBeTruthy();\n expect(validateStopwatchTime(\"1:6\")).toBeFalsy();\n expect(validateStopwatchTime(\"11:6\")).toBeFalsy();\n expect(validateStopwatchTime(\"11:555\")).toBeFalsy();\n });\n});\n"],"mappings":"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"}
|
|
@@ -110,7 +110,7 @@ export var EditableHours = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
110
110
|
var newMinutesString = newMinutes < 10 ? "0" + newMinutes : newMinutes;
|
|
111
111
|
var newHoursString = withLeadingZero && newHours < 10 ? "0" + newHours : newHours;
|
|
112
112
|
var newValue = newHoursString + ":" + newMinutesString;
|
|
113
|
-
if (validation(newValue)) {
|
|
113
|
+
if (validation(newValue, withLeadingZero)) {
|
|
114
114
|
setCurrentValue(newValue);
|
|
115
115
|
requestAnimationFrame(function () {
|
|
116
116
|
var _inputRef$current;
|
|
@@ -178,18 +178,18 @@ export var EditableHours = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
178
178
|
return;
|
|
179
179
|
}
|
|
180
180
|
var newValue = currentValue.substring(0, start) + e.key + currentValue.substring(end);
|
|
181
|
-
if (!validation(newValue)) {
|
|
181
|
+
if (!validation(newValue, withLeadingZero)) {
|
|
182
182
|
e.preventDefault();
|
|
183
183
|
return;
|
|
184
184
|
}
|
|
185
185
|
} else {
|
|
186
186
|
var _newValue = currentValue.substring(0, start) + e.key + currentValue.substring(end);
|
|
187
|
-
if (!validation(_newValue)) {
|
|
187
|
+
if (!validation(_newValue, withLeadingZero)) {
|
|
188
188
|
e.preventDefault();
|
|
189
189
|
return;
|
|
190
190
|
}
|
|
191
191
|
}
|
|
192
|
-
}, [handleIncrementDecrement, onCancel, validation]);
|
|
192
|
+
}, [handleIncrementDecrement, onCancel, validation, withLeadingZero]);
|
|
193
193
|
var handleChange = useCallback(function (e) {
|
|
194
194
|
setCurrentValue(e.target.value);
|
|
195
195
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableHours.js","names":["EditableContent","React","useCallback","useEffect","useRef","useState","decimalToHours","useForkRef","classNames","validateTimeInput","EditableHours","forwardRef","ref","value","onCancel","onSave","inputProps","allowEmptyValue","withLeadingZero","validation","incrementOnlySelected","minuteIncrement","rest","inputRef","handleRef","undefined","currentValue","setCurrentValue","prevValue","setPrevValue","escapeRef","_value","handleBlur","e","current","target","trim","length","handleIncrementDecrement","increment","selectionStart","dotsIndex","indexOf","split","map","Number","hours","minutes","newHours","newMinutes","newMinutesString","newHoursString","newValue","requestAnimationFrame","newDotsIndex","isHoursSelected","newSelectionStart","selectionEnd","setSelectionRange","handleKeyDown","key","blur","input","start","end","shiftKey","isMinutesSelected","preventDefault","substring","handleChange","handleClick","handleDoubleClick","onBlur","onKeyDown","onChange","type","onClick","onDoubleClick","className","displayName"],"sources":["../../../../src/components/EditableHours/EditableHours.tsx"],"sourcesContent":["import { EditableContent, EditableContentInterface } from \"../EditableContent\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { decimalToHours } from \"../../utils/timeUtils\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport classNames from \"classnames\";\nimport { validateTimeInput } from \"../../utils\";\n\nexport interface EditableHoursProps extends EditableContentInterface {\n value?: number | string;\n onSave?: (e: Event) => void;\n onCancel?: () => void;\n withLeadingZero?: boolean;\n incrementOnlySelected?: boolean;\n validation?: (value: string) => boolean;\n allowEmptyValue?: boolean;\n minuteIncrement?: number;\n}\nexport const EditableHours = React.forwardRef<\n HTMLDivElement,\n EditableHoursProps\n>(\n (\n {\n value = 0,\n onCancel,\n onSave,\n inputProps,\n allowEmptyValue,\n withLeadingZero = true,\n validation = validateTimeInput,\n incrementOnlySelected = false,\n minuteIncrement = 1,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(ref, inputRef);\n const [currentValue, setCurrentValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const [prevValue, setPrevValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const escapeRef = useRef(false);\n\n useEffect(() => {\n let _value;\n if (value !== undefined) {\n _value = decimalToHours(value, withLeadingZero);\n }\n if (currentValue !== _value) {\n setCurrentValue(_value);\n setPrevValue(_value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n escapeRef.current = false;\n } else {\n if (\n e.target.value.trim().length > 0 &&\n prevValue !== e.target.value\n ) {\n const _value = decimalToHours(e.target.value, withLeadingZero);\n setPrevValue(_value);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n !allowEmptyValue\n ? setCurrentValue(prevValue)\n : typeof onSave === \"function\" &&\n prevValue !== e.target.value &&\n onSave(e);\n }\n }\n },\n [allowEmptyValue, onSave, prevValue, withLeadingZero]\n );\n\n const handleIncrementDecrement = useCallback(\n (increment: boolean) => {\n if (inputRef.current) {\n const selectionStart = inputRef.current.selectionStart;\n if (selectionStart !== null) {\n const dotsIndex = currentValue.indexOf(\":\");\n const [hours, minutes] = currentValue.split(\":\").map(Number);\n let newHours = hours;\n let newMinutes = minutes;\n\n if (selectionStart < dotsIndex) {\n if (increment) {\n newHours += 1;\n } else {\n newHours -= 1;\n if (newHours < 0) newHours = 0;\n }\n } else if (selectionStart > dotsIndex) {\n if (increment) {\n newMinutes += minuteIncrement;\n if (newMinutes > 59) {\n newMinutes = 0;\n if (!incrementOnlySelected) newHours += 1;\n }\n } else {\n if (newMinutes >= minuteIncrement || newMinutes === 0) {\n newMinutes -= minuteIncrement;\n if (newMinutes < 0 && newHours > 0) {\n newMinutes = 60 - minuteIncrement;\n if (!incrementOnlySelected) newHours -= 1;\n }\n if (newHours < 0) {\n newHours = 0;\n }\n } else {\n newMinutes = 0;\n }\n }\n }\n\n const newMinutesString =\n newMinutes < 10 ? `0${newMinutes}` : newMinutes;\n const newHoursString =\n withLeadingZero && newHours < 10 ? `0${newHours}` : newHours;\n const newValue = `${newHoursString}:${newMinutesString}`;\n\n if (validation(newValue)) {\n setCurrentValue(newValue);\n\n requestAnimationFrame(() => {\n const newDotsIndex = newValue.indexOf(\":\");\n const isHoursSelected = selectionStart < newDotsIndex;\n const newSelectionStart = isHoursSelected\n ? 0\n : newDotsIndex + 1;\n const selectionEnd = isHoursSelected\n ? newDotsIndex\n : newValue.length;\n inputRef.current?.setSelectionRange(\n newSelectionStart,\n selectionEnd\n );\n });\n }\n }\n }\n },\n [\n currentValue,\n incrementOnlySelected,\n minuteIncrement,\n validation,\n withLeadingZero,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.target.blur();\n }\n if (e.key === \"ArrowLeft\") {\n return;\n }\n if (e.key === \"ArrowRight\") {\n return;\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel();\n }\n if (e.key === \"Backspace\") {\n return;\n }\n const input = e.target;\n const start = input.selectionStart;\n const end = input.selectionEnd;\n const currentValue = input.value;\n if (e.key === \"Tab\") {\n if (start !== end) {\n if (e.shiftKey) {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isMinutesSelected = start > newDotsIndex;\n if (isMinutesSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(0, newDotsIndex);\n }\n } else {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isHoursSelected = start < newDotsIndex;\n if (isHoursSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(\n newDotsIndex + 1,\n currentValue.length\n );\n }\n }\n }\n return;\n }\n\n if (start !== end) {\n if (e.key === \"ArrowUp\") {\n handleIncrementDecrement(true);\n return;\n }\n if (e.key === \"ArrowDown\") {\n handleIncrementDecrement(false);\n return;\n }\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n if (!validation(newValue)) {\n e.preventDefault();\n return;\n }\n } else {\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n\n if (!validation(newValue)) {\n e.preventDefault();\n return;\n }\n }\n },\n [handleIncrementDecrement, onCancel, validation]\n );\n\n const handleChange = useCallback((e) => {\n setCurrentValue(e.target.value);\n }, []);\n\n const handleClick = () => {\n const selectionStart = inputRef.current?.selectionStart;\n if (\n inputRef.current &&\n currentValue &&\n currentValue.length > 0 &&\n typeof selectionStart === \"number\"\n ) {\n const dotsIndex = currentValue.indexOf(\":\");\n if (selectionStart < dotsIndex) {\n inputRef.current?.setSelectionRange(0, dotsIndex);\n } else if (selectionStart >= dotsIndex) {\n inputRef.current?.setSelectionRange(\n dotsIndex + 1,\n currentValue.length\n );\n }\n }\n };\n\n const handleDoubleClick = () => {\n if (inputRef.current) {\n inputRef.current?.setSelectionRange(0, currentValue.length);\n }\n };\n\n return (\n <EditableContent\n ref={handleRef}\n inputProps={{\n ...inputProps,\n value: currentValue,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n type: \"text\",\n onClick: handleClick,\n onDoubleClick: handleDoubleClick,\n className: classNames(\"c-input\", inputProps?.className),\n }}\n {...rest}\n />\n );\n }\n);\n\nEditableHours.displayName = \"EditableHours\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditableHours.js","names":["EditableContent","React","useCallback","useEffect","useRef","useState","decimalToHours","useForkRef","classNames","validateTimeInput","EditableHours","forwardRef","ref","value","onCancel","onSave","inputProps","allowEmptyValue","withLeadingZero","validation","incrementOnlySelected","minuteIncrement","rest","inputRef","handleRef","undefined","currentValue","setCurrentValue","prevValue","setPrevValue","escapeRef","_value","handleBlur","e","current","target","trim","length","handleIncrementDecrement","increment","selectionStart","dotsIndex","indexOf","split","map","Number","hours","minutes","newHours","newMinutes","newMinutesString","newHoursString","newValue","requestAnimationFrame","newDotsIndex","isHoursSelected","newSelectionStart","selectionEnd","setSelectionRange","handleKeyDown","key","blur","input","start","end","shiftKey","isMinutesSelected","preventDefault","substring","handleChange","handleClick","handleDoubleClick","onBlur","onKeyDown","onChange","type","onClick","onDoubleClick","className","displayName"],"sources":["../../../../src/components/EditableHours/EditableHours.tsx"],"sourcesContent":["import { EditableContent, EditableContentInterface } from \"../EditableContent\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { decimalToHours } from \"../../utils/timeUtils\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport classNames from \"classnames\";\nimport { validateTimeInput } from \"../../utils\";\n\nexport interface EditableHoursProps extends EditableContentInterface {\n value?: number | string;\n onSave?: (e: Event) => void;\n onCancel?: () => void;\n withLeadingZero?: boolean;\n incrementOnlySelected?: boolean;\n validation?: (value: string) => boolean;\n allowEmptyValue?: boolean;\n minuteIncrement?: number;\n}\nexport const EditableHours = React.forwardRef<\n HTMLDivElement,\n EditableHoursProps\n>(\n (\n {\n value = 0,\n onCancel,\n onSave,\n inputProps,\n allowEmptyValue,\n withLeadingZero = true,\n validation = validateTimeInput,\n incrementOnlySelected = false,\n minuteIncrement = 1,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(ref, inputRef);\n const [currentValue, setCurrentValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const [prevValue, setPrevValue] = useState(() => {\n if (value !== undefined) {\n return decimalToHours(value, withLeadingZero);\n }\n return \"\";\n });\n const escapeRef = useRef(false);\n\n useEffect(() => {\n let _value;\n if (value !== undefined) {\n _value = decimalToHours(value, withLeadingZero);\n }\n if (currentValue !== _value) {\n setCurrentValue(_value);\n setPrevValue(_value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n escapeRef.current = false;\n } else {\n if (\n e.target.value.trim().length > 0 &&\n prevValue !== e.target.value\n ) {\n const _value = decimalToHours(e.target.value, withLeadingZero);\n setPrevValue(_value);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n !allowEmptyValue\n ? setCurrentValue(prevValue)\n : typeof onSave === \"function\" &&\n prevValue !== e.target.value &&\n onSave(e);\n }\n }\n },\n [allowEmptyValue, onSave, prevValue, withLeadingZero]\n );\n\n const handleIncrementDecrement = useCallback(\n (increment: boolean) => {\n if (inputRef.current) {\n const selectionStart = inputRef.current.selectionStart;\n if (selectionStart !== null) {\n const dotsIndex = currentValue.indexOf(\":\");\n const [hours, minutes] = currentValue.split(\":\").map(Number);\n let newHours = hours;\n let newMinutes = minutes;\n\n if (selectionStart < dotsIndex) {\n if (increment) {\n newHours += 1;\n } else {\n newHours -= 1;\n if (newHours < 0) newHours = 0;\n }\n } else if (selectionStart > dotsIndex) {\n if (increment) {\n newMinutes += minuteIncrement;\n if (newMinutes > 59) {\n newMinutes = 0;\n if (!incrementOnlySelected) newHours += 1;\n }\n } else {\n if (newMinutes >= minuteIncrement || newMinutes === 0) {\n newMinutes -= minuteIncrement;\n if (newMinutes < 0 && newHours > 0) {\n newMinutes = 60 - minuteIncrement;\n if (!incrementOnlySelected) newHours -= 1;\n }\n if (newHours < 0) {\n newHours = 0;\n }\n } else {\n newMinutes = 0;\n }\n }\n }\n\n const newMinutesString =\n newMinutes < 10 ? `0${newMinutes}` : newMinutes;\n const newHoursString =\n withLeadingZero && newHours < 10 ? `0${newHours}` : newHours;\n const newValue = `${newHoursString}:${newMinutesString}`;\n\n if (validation(newValue, withLeadingZero)) {\n setCurrentValue(newValue);\n\n requestAnimationFrame(() => {\n const newDotsIndex = newValue.indexOf(\":\");\n const isHoursSelected = selectionStart < newDotsIndex;\n const newSelectionStart = isHoursSelected\n ? 0\n : newDotsIndex + 1;\n const selectionEnd = isHoursSelected\n ? newDotsIndex\n : newValue.length;\n inputRef.current?.setSelectionRange(\n newSelectionStart,\n selectionEnd\n );\n });\n }\n }\n }\n },\n [\n currentValue,\n incrementOnlySelected,\n minuteIncrement,\n validation,\n withLeadingZero,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.target.blur();\n }\n if (e.key === \"ArrowLeft\") {\n return;\n }\n if (e.key === \"ArrowRight\") {\n return;\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel();\n }\n if (e.key === \"Backspace\") {\n return;\n }\n const input = e.target;\n const start = input.selectionStart;\n const end = input.selectionEnd;\n const currentValue = input.value;\n if (e.key === \"Tab\") {\n if (start !== end) {\n if (e.shiftKey) {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isMinutesSelected = start > newDotsIndex;\n if (isMinutesSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(0, newDotsIndex);\n }\n } else {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isHoursSelected = start < newDotsIndex;\n if (isHoursSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(\n newDotsIndex + 1,\n currentValue.length\n );\n }\n }\n }\n return;\n }\n\n if (start !== end) {\n if (e.key === \"ArrowUp\") {\n handleIncrementDecrement(true);\n return;\n }\n if (e.key === \"ArrowDown\") {\n handleIncrementDecrement(false);\n return;\n }\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n if (!validation(newValue, withLeadingZero)) {\n e.preventDefault();\n return;\n }\n } else {\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n\n if (!validation(newValue, withLeadingZero)) {\n e.preventDefault();\n return;\n }\n }\n },\n [handleIncrementDecrement, onCancel, validation, withLeadingZero]\n );\n\n const handleChange = useCallback((e) => {\n setCurrentValue(e.target.value);\n }, []);\n\n const handleClick = () => {\n const selectionStart = inputRef.current?.selectionStart;\n if (\n inputRef.current &&\n currentValue &&\n currentValue.length > 0 &&\n typeof selectionStart === \"number\"\n ) {\n const dotsIndex = currentValue.indexOf(\":\");\n if (selectionStart < dotsIndex) {\n inputRef.current?.setSelectionRange(0, dotsIndex);\n } else if (selectionStart >= dotsIndex) {\n inputRef.current?.setSelectionRange(\n dotsIndex + 1,\n currentValue.length\n );\n }\n }\n };\n\n const handleDoubleClick = () => {\n if (inputRef.current) {\n inputRef.current?.setSelectionRange(0, currentValue.length);\n }\n };\n\n return (\n <EditableContent\n ref={handleRef}\n inputProps={{\n ...inputProps,\n value: currentValue,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n type: \"text\",\n onClick: handleClick,\n onDoubleClick: handleDoubleClick,\n className: classNames(\"c-input\", inputProps?.className),\n }}\n {...rest}\n />\n );\n }\n);\n\nEditableHours.displayName = \"EditableHours\";\n"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* @component ShieldIcon
|
|
4
|
+
* @description
|
|
5
|
+
*
|
|
6
|
+
* The React Icon component is a visual element that displays an icon to represent a concept, object, or action.
|
|
7
|
+
* The Icon component is
|
|
8
|
+
* customizable, allowing for variations in size, color, and style to fit the needs of the application.
|
|
9
|
+
*
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* return (
|
|
13
|
+
* <ShieldIcon className="mr-2" />
|
|
14
|
+
* )
|
|
15
|
+
*
|
|
16
|
+
* @see
|
|
17
|
+
* https://system.activecollab.com/?path=/story/foundation-icons-icons--icons
|
|
18
|
+
* @see
|
|
19
|
+
* https://design.activecollab.com/docs/foundations/icons
|
|
20
|
+
*/
|
|
21
|
+
declare const ShieldIcon: React.ForwardRefExoticComponent<Pick<React.SVGProps<SVGSVGElement>, "string" | "style" | "clipPath" | "filter" | "mask" | "path" | "key" | "css" | "name" | "type" | "className" | "id" | "lang" | "tabIndex" | "role" | "color" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "tw" | "ideographic" | "alphabetic" | "hanging" | "mathematical" | "height" | "max" | "media" | "method" | "min" | "target" | "width" | "crossOrigin" | "accentHeight" | "accumulate" | "additive" | "alignmentBaseline" | "allowReorder" | "amplitude" | "arabicForm" | "ascent" | "attributeName" | "attributeType" | "autoReverse" | "azimuth" | "baseFrequency" | "baselineShift" | "baseProfile" | "bbox" | "begin" | "bias" | "by" | "calcMode" | "capHeight" | "clip" | "clipPathUnits" | "clipRule" | "colorInterpolation" | "colorInterpolationFilters" | "colorProfile" | "colorRendering" | "contentScriptType" | "contentStyleType" | "cursor" | "cx" | "cy" | "d" | "decelerate" | "descent" | "diffuseConstant" | "direction" | "display" | "divisor" | "dominantBaseline" | "dur" | "dx" | "dy" | "edgeMode" | "elevation" | "enableBackground" | "end" | "exponent" | "externalResourcesRequired" | "fill" | "fillOpacity" | "fillRule" | "filterRes" | "filterUnits" | "floodColor" | "floodOpacity" | "focusable" | "fontFamily" | "fontSize" | "fontSizeAdjust" | "fontStretch" | "fontStyle" | "fontVariant" | "fontWeight" | "format" | "from" | "fx" | "fy" | "g1" | "g2" | "glyphName" | "glyphOrientationHorizontal" | "glyphOrientationVertical" | "glyphRef" | "gradientTransform" | "gradientUnits" | "horizAdvX" | "horizOriginX" | "href" | "imageRendering" | "in2" | "in" | "intercept" | "k1" | "k2" | "k3" | "k4" | "k" | "kernelMatrix" | "kernelUnitLength" | "kerning" | "keyPoints" | "keySplines" | "keyTimes" | "lengthAdjust" | "letterSpacing" | "lightingColor" | "limitingConeAngle" | "local" | "markerEnd" | "markerHeight" | "markerMid" | "markerStart" | "markerUnits" | "markerWidth" | "maskContentUnits" | "maskUnits" | "mode" | "numOctaves" | "offset" | "opacity" | "operator" | "order" | "orient" | "orientation" | "origin" | "overflow" | "overlinePosition" | "overlineThickness" | "paintOrder" | "panose1" | "pathLength" | "patternContentUnits" | "patternTransform" | "patternUnits" | "pointerEvents" | "points" | "pointsAtX" | "pointsAtY" | "pointsAtZ" | "preserveAlpha" | "preserveAspectRatio" | "primitiveUnits" | "r" | "radius" | "refX" | "refY" | "renderingIntent" | "repeatCount" | "repeatDur" | "requiredExtensions" | "requiredFeatures" | "restart" | "result" | "rotate" | "rx" | "ry" | "scale" | "seed" | "shapeRendering" | "slope" | "spacing" | "specularConstant" | "specularExponent" | "speed" | "spreadMethod" | "startOffset" | "stdDeviation" | "stemh" | "stemv" | "stitchTiles" | "stopColor" | "stopOpacity" | "strikethroughPosition" | "strikethroughThickness" | "stroke" | "strokeDasharray" | "strokeDashoffset" | "strokeLinecap" | "strokeLinejoin" | "strokeMiterlimit" | "strokeOpacity" | "strokeWidth" | "surfaceScale" | "systemLanguage" | "tableValues" | "targetX" | "targetY" | "textAnchor" | "textDecoration" | "textLength" | "textRendering" | "to" | "transform" | "u1" | "u2" | "underlinePosition" | "underlineThickness" | "unicode" | "unicodeBidi" | "unicodeRange" | "unitsPerEm" | "vAlphabetic" | "values" | "vectorEffect" | "version" | "vertAdvY" | "vertOriginX" | "vertOriginY" | "vHanging" | "vIdeographic" | "viewBox" | "viewTarget" | "visibility" | "vMathematical" | "widths" | "wordSpacing" | "writingMode" | "x1" | "x2" | "x" | "xChannelSelector" | "xHeight" | "xlinkActuate" | "xlinkArcrole" | "xlinkHref" | "xlinkRole" | "xlinkShow" | "xlinkTitle" | "xlinkType" | "xmlBase" | "xmlLang" | "xmlns" | "xmlnsXlink" | "xmlSpace" | "y1" | "y2" | "y" | "yChannelSelector" | "z" | "zoomAndPan"> & React.RefAttributes<SVGSVGElement>>;
|
|
22
|
+
export default ShieldIcon;
|
|
23
|
+
//# sourceMappingURL=Shield.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Shield.d.ts","sourceRoot":"","sources":["../../../../../src/components/Icons/collection/Shield.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;;;;;;;;;;;;;GAkBG;AACH,QAAA,MAAM,UAAU,qlPAoBf,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import React from "react";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @component ShieldIcon
|
|
6
|
+
* @description
|
|
7
|
+
*
|
|
8
|
+
* The React Icon component is a visual element that displays an icon to represent a concept, object, or action.
|
|
9
|
+
* The Icon component is
|
|
10
|
+
* customizable, allowing for variations in size, color, and style to fit the needs of the application.
|
|
11
|
+
*
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* return (
|
|
15
|
+
* <ShieldIcon className="mr-2" />
|
|
16
|
+
* )
|
|
17
|
+
*
|
|
18
|
+
* @see
|
|
19
|
+
* https://system.activecollab.com/?path=/story/foundation-icons-icons--icons
|
|
20
|
+
* @see
|
|
21
|
+
* https://design.activecollab.com/docs/foundations/icons
|
|
22
|
+
*/
|
|
23
|
+
var ShieldIcon = /*#__PURE__*/React.forwardRef(function (props, svgRef) {
|
|
24
|
+
return /*#__PURE__*/React.createElement("svg", _extends({
|
|
25
|
+
width: 24,
|
|
26
|
+
height: 24,
|
|
27
|
+
viewBox: "0 0 24 24",
|
|
28
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
29
|
+
"data-testid": "ShieldIcon",
|
|
30
|
+
fill: "var(--color-theme-600)",
|
|
31
|
+
focusable: false,
|
|
32
|
+
ref: svgRef
|
|
33
|
+
}, props), /*#__PURE__*/React.createElement("path", {
|
|
34
|
+
fillRule: "evenodd",
|
|
35
|
+
clipRule: "evenodd",
|
|
36
|
+
d: "M11.873 4.063c.084-.01.17-.01.254 0l5.92.741c.563.07.962.584.892 1.147l-1.18 9.442c-.033.272-.175.52-.392.687l-4.741 3.652a1.026 1.026 0 01-1.252 0L6.633 16.08a1.028 1.028 0 01-.393-.687L5.061 5.951a1.027 1.027 0 01.891-1.147l5.92-.74zm.509-2.04a3.076 3.076 0 00-.764 0l-5.92.742a3.082 3.082 0 00-2.674 3.441l1.179 9.442c.102.817.526 1.56 1.178 2.061l4.741 3.652a3.077 3.077 0 003.756 0l4.741-3.652a3.084 3.084 0 001.178-2.061l1.179-9.442a3.082 3.082 0 00-2.674-3.441l-5.92-.741zm3.825 8.684a1 1 0 10-1.414-1.414l-3.71 3.71-1.302-1.628a1 1 0 10-1.562 1.25l1.302 1.627a2 2 0 002.976.165l3.71-3.71z"
|
|
37
|
+
}));
|
|
38
|
+
});
|
|
39
|
+
ShieldIcon.displayName = "ShieldIcon";
|
|
40
|
+
export default ShieldIcon;
|
|
41
|
+
//# sourceMappingURL=Shield.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Shield.js","names":["React","ShieldIcon","forwardRef","props","svgRef","displayName"],"sources":["../../../../../src/components/Icons/collection/Shield.tsx"],"sourcesContent":["import React from \"react\";\n\n/**\n * @component ShieldIcon\n * @description\n *\n * The React Icon component is a visual element that displays an icon to represent a concept, object, or action.\n * The Icon component is\n * customizable, allowing for variations in size, color, and style to fit the needs of the application.\n *\n *\n * @example\n * return (\n * <ShieldIcon className=\"mr-2\" />\n * )\n *\n * @see\n * https://system.activecollab.com/?path=/story/foundation-icons-icons--icons\n * @see\n * https://design.activecollab.com/docs/foundations/icons\n */\nconst ShieldIcon = React.forwardRef(\n (props: React.SVGProps<SVGSVGElement>, svgRef?: React.Ref<SVGSVGElement>) => (\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n data-testid=\"ShieldIcon\"\n fill=\"var(--color-theme-600)\"\n focusable={false}\n ref={svgRef}\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.873 4.063c.084-.01.17-.01.254 0l5.92.741c.563.07.962.584.892 1.147l-1.18 9.442c-.033.272-.175.52-.392.687l-4.741 3.652a1.026 1.026 0 01-1.252 0L6.633 16.08a1.028 1.028 0 01-.393-.687L5.061 5.951a1.027 1.027 0 01.891-1.147l5.92-.74zm.509-2.04a3.076 3.076 0 00-.764 0l-5.92.742a3.082 3.082 0 00-2.674 3.441l1.179 9.442c.102.817.526 1.56 1.178 2.061l4.741 3.652a3.077 3.077 0 003.756 0l4.741-3.652a3.084 3.084 0 001.178-2.061l1.179-9.442a3.082 3.082 0 00-2.674-3.441l-5.92-.741zm3.825 8.684a1 1 0 10-1.414-1.414l-3.71 3.71-1.302-1.628a1 1 0 10-1.562 1.25l1.302 1.627a2 2 0 002.976.165l3.71-3.71z\"\n />\n </svg>\n )\n);\nShieldIcon.displayName = \"ShieldIcon\";\nexport default ShieldIcon;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,UAAU,gBAAGD,KAAK,CAACE,UAAU,CACjC,UAACC,KAAoC,EAAEC,MAAiC;EAAA,oBACtE;IACE,KAAK,EAAE,EAAG;IACV,MAAM,EAAE,EAAG;IACX,OAAO,EAAC,WAAW;IACnB,KAAK,EAAC,4BAA4B;IAClC,eAAY,YAAY;IACxB,IAAI,EAAC,wBAAwB;IAC7B,SAAS,EAAE,KAAM;IACjB,GAAG,EAAEA;EAAO,GACRD,KAAK,gBAET;IACE,QAAQ,EAAC,SAAS;IAClB,QAAQ,EAAC,SAAS;IAClB,CAAC,EAAC;EAAslB,EACxlB,CACE;AAAA,CACP,CACF;AACDF,UAAU,CAACI,WAAW,GAAG,YAAY;AACrC,eAAeJ,UAAU"}
|