linear-react-components-ui 1.1.2-beta.8 → 1.1.3-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/.eslintcache +1 -0
  2. package/.gitlab-ci.yml +1 -0
  3. package/.vscode/settings.json +10 -1
  4. package/lib/@types/SizePixels.d.ts +1 -1
  5. package/lib/assets/styles/button.scss +11 -9
  6. package/lib/assets/styles/checkbox.scss +37 -38
  7. package/lib/assets/styles/colors.scss +2 -0
  8. package/lib/assets/styles/commons.scss +1 -0
  9. package/lib/assets/styles/error.scss +9 -0
  10. package/lib/assets/styles/fieldset.scss +3 -0
  11. package/lib/assets/styles/gridlayout.scss +0 -2
  12. package/lib/assets/styles/hint.scss +21 -0
  13. package/lib/assets/styles/input.scss +7 -7
  14. package/lib/assets/styles/table.scss +2 -1
  15. package/lib/buttons/DefaultButton.js +29 -12
  16. package/lib/buttons/types.d.ts +1 -0
  17. package/lib/checkbox/Label.js +13 -4
  18. package/lib/checkbox/index.js +15 -11
  19. package/lib/dialog/Custom.js +4 -2
  20. package/lib/dialog/base/index.js +3 -2
  21. package/lib/dialog/form/index.js +3 -3
  22. package/lib/drawer/Drawer.js +1 -1
  23. package/lib/fieldset/index.js +4 -2
  24. package/lib/fieldset/types.d.ts +2 -0
  25. package/lib/form/Field.d.ts +2 -0
  26. package/lib/form/FieldArray.d.ts +2 -0
  27. package/lib/form/FieldArray.js +12 -26
  28. package/lib/form/FieldNumber.d.ts +2 -0
  29. package/lib/form/FieldPeriod.d.ts +2 -0
  30. package/lib/form/helpers.d.ts +2 -0
  31. package/lib/form/index.d.ts +2 -0
  32. package/lib/form/index.js +6 -7
  33. package/lib/form/types.d.ts +5 -2
  34. package/lib/form/withFieldHOC.d.ts +2 -0
  35. package/lib/form/withFormSecurity.d.ts +2 -0
  36. package/lib/gridlayout/GridRow.js +10 -2
  37. package/lib/gridlayout/types.d.ts +1 -1
  38. package/lib/hint/helpers.d.ts +3 -0
  39. package/lib/hint/helpers.js +21 -0
  40. package/lib/hint/index.d.ts +2 -1
  41. package/lib/hint/index.js +9 -15
  42. package/lib/hint/types.d.ts +3 -0
  43. package/lib/icons/helper.d.ts +4 -0
  44. package/lib/icons/helper.js +4 -0
  45. package/lib/inputs/base/InputTextBase.d.ts +2 -0
  46. package/lib/inputs/base/InputTextBase.js +51 -7
  47. package/lib/inputs/base/Label.d.ts +14 -0
  48. package/lib/inputs/base/Label.js +35 -0
  49. package/lib/inputs/base/helpers.d.ts +3 -2
  50. package/lib/inputs/base/helpers.js +1 -8
  51. package/lib/inputs/base/types.d.ts +14 -2
  52. package/lib/inputs/date/Dialog.d.ts +2 -0
  53. package/lib/inputs/date/Dropdown.d.ts +2 -0
  54. package/lib/inputs/date/helpers.d.ts +2 -0
  55. package/lib/inputs/date/index.d.ts +2 -0
  56. package/lib/inputs/date/index.js +2 -0
  57. package/lib/inputs/date/types.d.ts +3 -0
  58. package/lib/inputs/errorMessage/index.d.ts +17 -0
  59. package/lib/inputs/errorMessage/index.js +26 -0
  60. package/lib/inputs/file/DefaultFile.d.ts +2 -0
  61. package/lib/inputs/file/DefaultFile.js +4 -2
  62. package/lib/inputs/file/DragDropFile.d.ts +2 -0
  63. package/lib/inputs/file/DragDropFile.js +4 -2
  64. package/lib/inputs/file/File.d.ts +2 -0
  65. package/lib/inputs/file/FileButtonSettings.d.ts +2 -0
  66. package/lib/inputs/file/helpers.d.ts +2 -0
  67. package/lib/inputs/file/index.d.ts +2 -0
  68. package/lib/inputs/file/types.d.ts +2 -0
  69. package/lib/inputs/inputHOC.d.ts +3 -1
  70. package/lib/inputs/mask/BaseMask.d.ts +3 -0
  71. package/lib/inputs/mask/Cnpj.d.ts +3 -0
  72. package/lib/inputs/mask/Cpf.d.ts +3 -0
  73. package/lib/inputs/mask/Cpf.js +0 -1
  74. package/lib/inputs/mask/Phone.d.ts +3 -0
  75. package/lib/inputs/mask/ZipCode.d.ts +3 -0
  76. package/lib/inputs/mask/helpers.d.ts +2 -1
  77. package/lib/inputs/mask/imaskHOC.d.ts +3 -1
  78. package/lib/inputs/mask/index.d.ts +3 -0
  79. package/lib/inputs/mask/types.d.ts +5 -1
  80. package/lib/inputs/multiSelect/ActionButtons.d.ts +2 -0
  81. package/lib/inputs/multiSelect/Dropdown.d.ts +2 -0
  82. package/lib/inputs/multiSelect/helper.d.ts +2 -0
  83. package/lib/inputs/multiSelect/index.d.ts +2 -0
  84. package/lib/inputs/multiSelect/index.js +2 -2
  85. package/lib/inputs/multiSelect/types.d.ts +2 -0
  86. package/lib/inputs/number/BaseNumber.d.ts +3 -1
  87. package/lib/inputs/number/Currency.d.ts +3 -1
  88. package/lib/inputs/number/Decimal.d.ts +3 -1
  89. package/lib/inputs/number/index.d.ts +3 -1
  90. package/lib/inputs/number/types.d.ts +3 -1
  91. package/lib/inputs/period/Dialog.d.ts +2 -0
  92. package/lib/inputs/period/Dropdown.d.ts +2 -0
  93. package/lib/inputs/period/PeriodList.d.ts +2 -0
  94. package/lib/inputs/period/helper.d.ts +2 -0
  95. package/lib/inputs/period/index.d.ts +2 -0
  96. package/lib/inputs/period/index.js +4 -1
  97. package/lib/inputs/period/types.d.ts +2 -0
  98. package/lib/inputs/search/index.d.ts +3 -1
  99. package/lib/inputs/select/ActionButtons.d.ts +3 -1
  100. package/lib/inputs/select/Dropdown.d.ts +3 -1
  101. package/lib/inputs/select/helper.d.ts +3 -1
  102. package/lib/inputs/select/index.d.ts +2 -0
  103. package/lib/inputs/select/multiple/Selecteds.d.ts +2 -0
  104. package/lib/inputs/select/multiple/index.d.ts +2 -0
  105. package/lib/inputs/select/multiple/index.js +9 -3
  106. package/lib/inputs/select/simple/index.d.ts +2 -0
  107. package/lib/inputs/select/simple/index.js +9 -3
  108. package/lib/inputs/select/types.d.ts +4 -2
  109. package/lib/inputs/textarea/index.d.ts +2 -0
  110. package/lib/inputs/textarea/types.d.ts +2 -0
  111. package/lib/inputs/types.d.ts +10 -3
  112. package/lib/internals/types.d.ts +5 -2
  113. package/lib/internals/withTooltip.d.ts +3 -2
  114. package/lib/internals/withTooltip.js +25 -10
  115. package/lib/list/Item.js +19 -6
  116. package/lib/menus/sidenav/index.js +3 -3
  117. package/lib/menus/sidenav/popup_menu_search/index.js +1 -1
  118. package/lib/table/RowColumn.js +6 -8
  119. package/lib/toolbar/types.d.ts +1 -0
  120. package/lib/tooltip/index.js +2 -2
  121. package/lib/treeview/Node.js +2 -2
  122. package/lib/uitour/index.d.ts +2 -1
  123. package/lib/uitour/index.js +57 -4
  124. package/lib/uitour/types.d.ts +9 -1
  125. package/package.json +5 -5
  126. package/.tool-versions +0 -1
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
+ var _reactDom = require("react-dom");
8
9
  var _buttons = _interopRequireWildcard(require("../buttons"));
9
10
  require("../assets/styles/uitour.scss");
10
11
  var _helpers = require("./helpers");
@@ -24,7 +25,8 @@ const UiTour = props => {
24
25
  showCloseButton = true,
25
26
  showBackButton = true,
26
27
  visible = true,
27
- onFinish
28
+ onFinish,
29
+ onStepChange
28
30
  } = props;
29
31
  const [currentStep, setCurrentStep] = (0, _react.useState)(undefined);
30
32
  const [hasNextStep, setHasNextStep] = (0, _react.useState)(false);
@@ -35,6 +37,7 @@ const UiTour = props => {
35
37
  const [stepPosition, setStepPosition] = (0, _react.useState)(_helpers.STEP_POSITIONS.left);
36
38
  const stepRef = (0, _react.useRef)(null);
37
39
  const descriptionRef = (0, _react.useRef)(null);
40
+ const activatedEffects = (0, _react.useRef)([]);
38
41
  const handleNextStep = () => {
39
42
  if (hasNextStep) {
40
43
  const currentStepIndex = data.findIndex(item => item.id === (currentStep === null || currentStep === void 0 ? void 0 : currentStep.id));
@@ -88,6 +91,46 @@ const UiTour = props => {
88
91
  setShowTour(visible);
89
92
  setCurrentStep(step);
90
93
  };
94
+ const removePreviousElementsEffects = () => {
95
+ if (activatedEffects.current.length > 0) {
96
+ const effects = activatedEffects.current;
97
+ effects.forEach(ef => {
98
+ const element = document.getElementById(ef.elementId);
99
+ if (element) {
100
+ delete element.dataset.uitour;
101
+ activatedEffects.current = activatedEffects.current.filter(r => r.elementId !== ef.elementId);
102
+ }
103
+ });
104
+ }
105
+ };
106
+ const addElementEffect = (0, _react.useCallback)(elementEffect => {
107
+ const element = document.getElementById(elementEffect.elementId);
108
+ if (element) {
109
+ element.dataset.uitour = elementEffect.effect;
110
+ if (activatedEffects.current) activatedEffects.current.push(elementEffect);
111
+ }
112
+ }, []);
113
+ const showElementsEffects = currentData => {
114
+ if (currentData.effect) {
115
+ const {
116
+ effect,
117
+ targetId
118
+ } = currentData;
119
+ addElementEffect({
120
+ effect,
121
+ elementId: targetId
122
+ });
123
+ }
124
+ if (currentData.elementsEffects) {
125
+ let {
126
+ elementsEffects
127
+ } = currentData;
128
+ if (!Array.isArray(elementsEffects)) elementsEffects = [elementsEffects];
129
+ elementsEffects.forEach(ef => {
130
+ addElementEffect(ef);
131
+ });
132
+ }
133
+ };
91
134
  (0, _react.useEffect)(() => {
92
135
  if (currentStep) {
93
136
  const target = document.getElementById(currentStep.targetId);
@@ -113,6 +156,9 @@ const UiTour = props => {
113
156
  setIsLastStep(false);
114
157
  }
115
158
  getStepPosition(targetRect);
159
+ removePreviousElementsEffects();
160
+ showElementsEffects(data[currentStepIndex]);
161
+ if (onStepChange) onStepChange(target);
116
162
  }
117
163
  if (descriptionRef.current) {
118
164
  descriptionRef.current.innerHTML = currentStep.description;
@@ -151,8 +197,13 @@ const UiTour = props => {
151
197
  mutationObserver = null;
152
198
  };
153
199
  }, [visible, data]);
154
- if (!showTour) return null;
155
- return /*#__PURE__*/_react.default.createElement("div", {
200
+ (0, _react.useEffect)(() => {
201
+ if (!showTour && activatedEffects.current.length > 0) {
202
+ removePreviousElementsEffects();
203
+ }
204
+ if (showTour) document.body.style.overflow = 'hidden';else document.body.style.overflow = 'auto';
205
+ }, [showTour, activatedEffects.current.length]);
206
+ const component = (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement("div", {
156
207
  className: "uitour-component"
157
208
  }, currentStep && /*#__PURE__*/_react.default.createElement("div", {
158
209
  ref: stepRef,
@@ -199,6 +250,8 @@ const UiTour = props => {
199
250
  visible: isLastStep,
200
251
  onClick: onCloseTour,
201
252
  customClass: "finish-button"
202
- }))));
253
+ })))), [currentStep, stepPosition, stepDimensions, showCloseButton, onCloseTour, backButtonLabel, handleBackStep, hasBackStep, showBackButton, nextButtonLabel, handleNextStep, hasNextStep, isLastStep, finishButtonLabel, isLastStep, onCloseTour]);
254
+ if (!showTour) return null;
255
+ return /*#__PURE__*/(0, _reactDom.createPortal)(component, document.body);
203
256
  };
204
257
  var _default = exports.default = UiTour;
@@ -1,11 +1,18 @@
1
1
  import { STEP_POSITIONS } from './helpers.js';
2
2
 
3
+ type Effect = 'hover' | 'focus' | 'blur' | 'active' | 'selected';
4
+ type ElementEffect = {
5
+ elementId: string;
6
+ effect: Effect;
7
+ };
3
8
  type UITourData = {
4
9
  id: string | number;
5
10
  targetId: string;
11
+ effect?: Effect;
6
12
  title: string;
7
13
  description: string;
8
14
  position?: keyof typeof STEP_POSITIONS;
15
+ elementsEffects?: ElementEffect | ElementEffect[];
9
16
  };
10
17
  interface CurrentStep extends UITourData {
11
18
  number: number;
@@ -25,6 +32,7 @@ interface IUITourProps {
25
32
  showBackButton?: boolean;
26
33
  visible?: boolean;
27
34
  onFinish: (value: boolean) => void;
35
+ onStepChange?: (target: HTMLElement) => void;
28
36
  }
29
37
 
30
- export type { CurrentStep, IUITourProps, StepDimensions, UITourData };
38
+ export type { CurrentStep, Effect, ElementEffect, IUITourProps, StepDimensions, UITourData };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linear-react-components-ui",
3
- "version": "1.1.2-beta.8",
3
+ "version": "1.1.3-beta.0",
4
4
  "description": "Linear Sistemas ReactJs Components",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/index.cjs",
@@ -9,7 +9,7 @@
9
9
  "lib:types": "NODE_OPTIONS='--max-old-space-size=16384' tsup --dts-only --dts --external react",
10
10
  "demo": "node scripts/start.js",
11
11
  "demo:prod": "webpack --config ./config/webpack.config.js --mode production",
12
- "check:js": "eslint ./src/** --ext=.jsx,.js,.tsx,.ts",
12
+ "check:js": "eslint ./src/** --ext=.jsx,.js,.tsx,.ts --cache",
13
13
  "deploy:heroku": "npm run demo:prod && cd demo && git commit -am 'Deploy' && git push heroku master",
14
14
  "deploy:vercel": "npm run demo:prod && vercel --prod demo",
15
15
  "publish:npm": "npm run lib && npm publish",
@@ -43,7 +43,7 @@
43
43
  "dependencies": {
44
44
  "@types/react-dom": "18.0.5",
45
45
  "attach-dom-events": "1.0.0",
46
- "browserslist": "4.18.1",
46
+ "browserslist": "4.23.0",
47
47
  "history": "5.0.0",
48
48
  "imask": "6.4.3",
49
49
  "init": "0.1.2",
@@ -54,7 +54,7 @@
54
54
  "react-router-dom": "6.21.3",
55
55
  "react-syntax-highlighter": "15.5.0",
56
56
  "semver": "7.5.4",
57
- "uuid": "3.3.3"
57
+ "uuid": "9.0.1"
58
58
  },
59
59
  "devDependencies": {
60
60
  "@babel/cli": "7.23.9",
@@ -65,7 +65,7 @@
65
65
  "@babel/preset-react": "7.18.6",
66
66
  "@babel/preset-typescript": "7.23.3",
67
67
  "@svgr/webpack": "8.1.0",
68
- "@swc/core": "1.3.29",
68
+ "@swc/core": "1.4.13",
69
69
  "@testing-library/jest-dom": "5.16.5",
70
70
  "@testing-library/react": "14.1.2",
71
71
  "@testing-library/user-event": "14.4.3",
package/.tool-versions DELETED
@@ -1 +0,0 @@
1
- nodejs 10.16.0