@mirai/ui 1.1.0-f → 1.1.1

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 (186) hide show
  1. package/README.md +109 -60
  2. package/build/components/Action/Action.js +1 -1
  3. package/build/components/Action/Action.js.map +1 -1
  4. package/build/components/Action/Action.module.css +4 -7
  5. package/build/components/Action/Action.stories.js +1 -1
  6. package/build/components/Action/Action.stories.js.map +1 -1
  7. package/build/components/Action/__tests__/__snapshots__/Action.test.js.snap +26 -40
  8. package/build/components/Button/Button.module.css +30 -33
  9. package/build/components/Button/Button.stories.js +9 -0
  10. package/build/components/Button/Button.stories.js.map +1 -1
  11. package/build/components/Button/__tests__/__snapshots__/Button.test.js.snap +21 -30
  12. package/build/components/Calendar/Calendar.Month.js +12 -8
  13. package/build/components/Calendar/Calendar.Month.js.map +1 -1
  14. package/build/components/Calendar/Calendar.Week.js +7 -10
  15. package/build/components/Calendar/Calendar.Week.js.map +1 -1
  16. package/build/components/Calendar/Calendar.js +10 -2
  17. package/build/components/Calendar/Calendar.js.map +1 -1
  18. package/build/components/Calendar/Calendar.module.css +8 -9
  19. package/build/components/Calendar/__tests__/__snapshots__/Calendar.test.jsx.snap +15768 -15800
  20. package/build/components/Form/Form.constants.js +1 -1
  21. package/build/components/Form/Form.constants.js.map +1 -1
  22. package/build/components/Form/Form.js +3 -1
  23. package/build/components/Form/Form.js.map +1 -1
  24. package/build/components/Form/Form.stories.js +6 -1
  25. package/build/components/Form/Form.stories.js.map +1 -1
  26. package/build/components/Form/__tests__/__snapshots__/Form.test.jsx.snap +9 -9
  27. package/build/components/InputDate/__tests__/__snapshots__/InputDate.test.js.snap +42 -42
  28. package/build/components/InputNumber/InputNumber.js +2 -1
  29. package/build/components/InputNumber/InputNumber.js.map +1 -1
  30. package/build/components/InputNumber/__tests__/__snapshots__/InputNumber.test.js.snap +138 -153
  31. package/build/components/InputOption/InputOption.js +8 -1
  32. package/build/components/InputOption/InputOption.js.map +1 -1
  33. package/build/components/InputOption/InputOption.module.css +13 -2
  34. package/build/components/InputOption/InputOption.stories.js +2 -1
  35. package/build/components/InputOption/InputOption.stories.js.map +1 -1
  36. package/build/components/InputOption/__tests__/__snapshots__/InputOption.test.js.snap +96 -90
  37. package/build/components/InputPhone/InputPhone.js +23 -20
  38. package/build/components/InputPhone/InputPhone.js.map +1 -1
  39. package/build/components/InputPhone/InputPhone.module.css +19 -6
  40. package/build/components/InputPhone/InputPhone.stories.js +3 -3
  41. package/build/components/InputPhone/InputPhone.stories.js.map +1 -1
  42. package/build/components/InputPhone/__tests__/__snapshots__/InputPhone.test.js.snap +410 -410
  43. package/build/components/InputPhone/helpers/index.js +11 -0
  44. package/build/components/InputPhone/helpers/index.js.map +1 -1
  45. package/build/components/InputPhone/helpers/sanitizePrefixes.js +24 -0
  46. package/build/components/InputPhone/helpers/sanitizePrefixes.js.map +1 -0
  47. package/build/components/InputSelect/InputSelect.js +3 -5
  48. package/build/components/InputSelect/InputSelect.js.map +1 -1
  49. package/build/components/InputSelect/InputSelect.stories.js +1 -0
  50. package/build/components/InputSelect/InputSelect.stories.js.map +1 -1
  51. package/build/components/InputSelect/__tests__/__snapshots__/InputSelect.test.js.snap +136 -136
  52. package/build/components/InputSelect/partials/InputSelect.Expand.js +23 -0
  53. package/build/components/InputSelect/partials/InputSelect.Expand.js.map +1 -0
  54. package/build/components/InputSelect/partials/index.js +17 -0
  55. package/build/components/InputSelect/partials/index.js.map +1 -0
  56. package/build/components/InputText/InputText.js +6 -4
  57. package/build/components/InputText/InputText.js.map +1 -1
  58. package/build/components/InputText/InputText.module.css +18 -6
  59. package/build/components/InputText/InputText.stories.js +7 -2
  60. package/build/components/InputText/InputText.stories.js.map +1 -1
  61. package/build/components/InputText/__tests__/__snapshots__/InputText.test.js.snap +142 -143
  62. package/build/components/Menu/__tests__/__snapshots__/Menu.test.jsx.snap +72 -70
  63. package/build/components/Modal/Modal.js +15 -8
  64. package/build/components/Modal/Modal.js.map +1 -1
  65. package/build/components/Modal/Modal.module.css +30 -14
  66. package/build/components/Modal/Modal.stories.js +1 -0
  67. package/build/components/Modal/Modal.stories.js.map +1 -1
  68. package/build/components/Modal/__tests__/__snapshots__/Modal.test.js.snap +92 -98
  69. package/build/components/Notification/Notification.js +20 -12
  70. package/build/components/Notification/Notification.js.map +1 -1
  71. package/build/components/Notification/Notification.module.css +44 -58
  72. package/build/components/Notification/Notification.stories.js +15 -2
  73. package/build/components/Notification/Notification.stories.js.map +1 -1
  74. package/build/components/Notification/__tests__/__snapshots__/Notification.test.js.snap +600 -254
  75. package/build/components/Progress/Progress.js +2 -0
  76. package/build/components/Progress/Progress.js.map +1 -1
  77. package/build/components/Progress/__tests__/__snapshots__/Progress.test.jsx.snap +18 -18
  78. package/build/components/Slider/Slider.constants.js +3 -1
  79. package/build/components/Slider/Slider.constants.js.map +1 -1
  80. package/build/components/Slider/Slider.js +67 -66
  81. package/build/components/Slider/Slider.js.map +1 -1
  82. package/build/components/Slider/Slider.module.css +55 -52
  83. package/build/components/Slider/Slider.stories.js +9 -6
  84. package/build/components/Slider/Slider.stories.js.map +1 -1
  85. package/build/components/Slider/__tests__/__snapshots__/Slider.test.js.snap +714 -333
  86. package/build/components/Table/Table.ColumnFilter.js +17 -14
  87. package/build/components/Table/Table.ColumnFilter.js.map +1 -1
  88. package/build/components/Table/Table.Row.js +2 -1
  89. package/build/components/Table/Table.Row.js.map +1 -1
  90. package/build/components/Table/Table.constants.js +3 -1
  91. package/build/components/Table/Table.constants.js.map +1 -1
  92. package/build/components/Table/Table.js +54 -17
  93. package/build/components/Table/Table.js.map +1 -1
  94. package/build/components/Table/Table.module.css +12 -6
  95. package/build/components/Table/Table.stories.js +39 -19
  96. package/build/components/Table/Table.stories.js.map +1 -1
  97. package/build/components/Table/Table.stories.module.css +4 -5
  98. package/build/components/Table/__tests__/__snapshots__/Table.ColumnFilter.test.js.snap +221 -240
  99. package/build/components/Table/__tests__/__snapshots__/Table.test.js.snap +1725 -1085
  100. package/build/components/Table/helpers/exists.js +2 -3
  101. package/build/components/Table/helpers/exists.js.map +1 -1
  102. package/build/components/Table/helpers/select.js +24 -16
  103. package/build/components/Table/helpers/select.js.map +1 -1
  104. package/build/components/Tooltip/Tooltip.js +29 -6
  105. package/build/components/Tooltip/Tooltip.js.map +1 -1
  106. package/build/components/Tooltip/__tests__/__snapshots__/Tooltip.test.jsx.snap +51 -44
  107. package/build/components/index.js +11 -0
  108. package/build/components/index.js.map +1 -1
  109. package/build/helpers/getInputPhoneErrors.js +3 -2
  110. package/build/helpers/getInputPhoneErrors.js.map +1 -1
  111. package/build/hooks/useDevice.js +1 -1
  112. package/build/hooks/useDevice.js.map +1 -1
  113. package/build/primitives/Checkbox/Checkbox.js +4 -3
  114. package/build/primitives/Checkbox/Checkbox.js.map +1 -1
  115. package/build/primitives/Checkbox/Checkbox.module.css +42 -6
  116. package/build/primitives/Checkbox/__tests__/__snapshots__/Checkbox.test.js.snap +47 -16
  117. package/build/primitives/Icon/Icon.constants.js +43 -21
  118. package/build/primitives/Icon/Icon.constants.js.map +1 -1
  119. package/build/primitives/Icon/Icon.js +15 -5
  120. package/build/primitives/Icon/Icon.js.map +1 -1
  121. package/build/primitives/Icon/Icon.module.css +32 -19
  122. package/build/primitives/Icon/Icon.stories.js +5 -0
  123. package/build/primitives/Icon/Icon.stories.js.map +1 -1
  124. package/build/primitives/Icon/__tests__/__snapshots__/Icon.test.js.snap +291 -100
  125. package/build/primitives/Input/Input.js +9 -3
  126. package/build/primitives/Input/Input.js.map +1 -1
  127. package/build/primitives/Input/Input.stories.js +2 -0
  128. package/build/primitives/Input/Input.stories.js.map +1 -1
  129. package/build/primitives/Input/__tests__/__snapshots__/Input.test.js.snap +22 -0
  130. package/build/primitives/Layer/Layer.js +11 -5
  131. package/build/primitives/Layer/Layer.js.map +1 -1
  132. package/build/primitives/Layer/Layer.module.css +4 -0
  133. package/build/primitives/Layer/__tests__/__snapshots__/Layer.test.js.snap +78 -42
  134. package/build/primitives/Layer/helpers/index.js +11 -0
  135. package/build/primitives/Layer/helpers/index.js.map +1 -1
  136. package/build/primitives/Layer/helpers/isComponentFixed.js +32 -0
  137. package/build/primitives/Layer/helpers/isComponentFixed.js.map +1 -0
  138. package/build/primitives/Pressable/Pressable.constants.js +1 -1
  139. package/build/primitives/Pressable/Pressable.constants.js.map +1 -1
  140. package/build/primitives/Pressable/Pressable.js +3 -7
  141. package/build/primitives/Pressable/Pressable.js.map +1 -1
  142. package/build/primitives/Pressable/Pressable.module.css +0 -1
  143. package/build/primitives/Pressable/__tests__/__snapshots__/Pressable.test.js.snap +10 -14
  144. package/build/primitives/Primitive/Primitive.js +2 -2
  145. package/build/primitives/Primitive/Primitive.js.map +1 -1
  146. package/build/primitives/Primitive/__tests__/__snapshots__/Primitive.test.js.snap +7 -7
  147. package/build/primitives/Primitive/helpers/index.js +0 -11
  148. package/build/primitives/Primitive/helpers/index.js.map +1 -1
  149. package/build/primitives/Radio/Radio.js +1 -1
  150. package/build/primitives/Radio/Radio.js.map +1 -1
  151. package/build/primitives/Radio/Radio.module.css +18 -2
  152. package/build/primitives/Radio/__tests__/__snapshots__/Radio.test.js.snap +21 -21
  153. package/build/primitives/ScrollView/ScrollView.js +1 -1
  154. package/build/primitives/ScrollView/ScrollView.js.map +1 -1
  155. package/build/primitives/ScrollView/ScrollView.module.css +1 -0
  156. package/build/primitives/ScrollView/ScrollView.stories.js +5 -6
  157. package/build/primitives/ScrollView/ScrollView.stories.js.map +1 -1
  158. package/build/primitives/ScrollView/__tests__/__snapshots__/ScrollView.test.js.snap +20 -20
  159. package/build/primitives/Select/Select.js +13 -6
  160. package/build/primitives/Select/Select.js.map +1 -1
  161. package/build/primitives/Select/Select.stories.js +1 -0
  162. package/build/primitives/Select/Select.stories.js.map +1 -1
  163. package/build/primitives/Select/__tests__/__snapshots__/Select.test.js.snap +36 -0
  164. package/build/primitives/Switch/Switch.js +5 -3
  165. package/build/primitives/Switch/Switch.js.map +1 -1
  166. package/build/primitives/Switch/Switch.module.css +36 -8
  167. package/build/primitives/Switch/Switch.stories.js +1 -0
  168. package/build/primitives/Switch/Switch.stories.js.map +1 -1
  169. package/build/primitives/Switch/__tests__/__snapshots__/Switch.test.js.snap +88 -25
  170. package/build/primitives/Text/Text.js +12 -5
  171. package/build/primitives/Text/Text.js.map +1 -1
  172. package/build/primitives/Text/Text.module.css +29 -14
  173. package/build/primitives/Text/Text.stories.js +4 -0
  174. package/build/primitives/Text/Text.stories.js.map +1 -1
  175. package/build/primitives/Text/__tests__/__snapshots__/Text.test.js.snap +78 -38
  176. package/build/primitives/View/View.js +1 -1
  177. package/build/primitives/View/View.js.map +1 -1
  178. package/build/primitives/View/__tests__/__snapshots__/View.test.js.snap +10 -10
  179. package/build/theme/default.theme.css +54 -53
  180. package/build/theme/theme.constants.js +3 -1
  181. package/build/theme/theme.constants.js.map +1 -1
  182. package/build/theme/theme.js +34 -11
  183. package/build/theme/theme.js.map +1 -1
  184. package/package.json +4 -5
  185. package/build/primitives/Primitive/helpers/getTag.js +0 -33
  186. package/build/primitives/Primitive/helpers/getTag.js.map +0 -1
@@ -2,76 +2,79 @@
2
2
 
3
3
  exports[`component:<Menu> inherit:className 1`] = `
4
4
  <DocumentFragment>
5
- <ui_layer />
5
+ <span
6
+ class="container"
7
+ />
6
8
  </DocumentFragment>
7
9
  `;
8
10
 
9
11
  exports[`component:<Menu> prop:Template 1`] = `
10
12
  <DocumentFragment>
11
- <ui_layer>
13
+ <span
14
+ class="container"
15
+ >
12
16
  <button
13
17
  class="pressable button"
14
- tabindex="0"
15
18
  >
16
19
  Action
17
20
  </button>
18
- </ui_layer>
21
+ </span>
19
22
  </DocumentFragment>
20
23
  `;
21
24
 
22
25
  exports[`component:<Menu> prop:children 1`] = `
23
26
  <DocumentFragment>
24
- <ui_layer>
27
+ <span
28
+ class="container"
29
+ >
25
30
  <button
26
31
  class="pressable button"
27
- tabindex="0"
28
32
  >
29
33
  Action
30
34
  </button>
31
- </ui_layer>
35
+ </span>
32
36
  </DocumentFragment>
33
37
  `;
34
38
 
35
39
  exports[`component:<Menu> prop:options & visible 1`] = `
36
40
  <DocumentFragment>
37
- <ui_layer>
41
+ <span
42
+ class="container"
43
+ >
38
44
  <button
39
45
  class="pressable button"
40
- tabindex="0"
41
46
  >
42
47
  Action
43
48
  </button>
44
- </ui_layer>
45
- <ui_layer_content
49
+ </span>
50
+ <div
46
51
  class="layer"
47
52
  style="left: 0px; top: 0px;"
48
53
  >
49
54
  <div
50
55
  class="menu visible"
51
56
  >
52
- <ui_pressable
57
+ <div
53
58
  class="pressable option divider"
54
- tabindex="0"
55
59
  >
56
- <ui_view
60
+ <div
57
61
  class="view row wide content"
58
62
  >
59
- <ui_text
63
+ <span
60
64
  class="text paragraph label"
61
65
  >
62
66
  Lorem Ipsum...
63
- </ui_text>
64
- </ui_view>
65
- </ui_pressable>
66
- <ui_pressable
67
+ </span>
68
+ </div>
69
+ </div>
70
+ <div
67
71
  class="pressable option value"
68
- tabindex="0"
69
72
  >
70
- <ui_view
73
+ <div
71
74
  class="view row wide content"
72
75
  >
73
- <ui_icon
74
- class="icon h3 icon"
76
+ <span
77
+ class="icon headline-3 icon"
75
78
  >
76
79
  <svg
77
80
  fill="currentColor"
@@ -90,24 +93,23 @@ exports[`component:<Menu> prop:options & visible 1`] = `
90
93
  d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"
91
94
  />
92
95
  </svg>
93
- </ui_icon>
94
- <ui_text
96
+ </span>
97
+ <span
95
98
  class="text paragraph label"
96
99
  >
97
100
  Item 1
98
- </ui_text>
99
- </ui_view>
100
- </ui_pressable>
101
- <ui_pressable
101
+ </span>
102
+ </div>
103
+ </div>
104
+ <div
102
105
  class="pressable option value disabled"
103
106
  data-testid="two"
104
- tabindex="0"
105
107
  >
106
- <ui_view
108
+ <div
107
109
  class="view row wide content"
108
110
  >
109
- <ui_icon
110
- class="icon h3 icon"
111
+ <span
112
+ class="icon headline-3 icon"
111
113
  >
112
114
  <svg
113
115
  fill="currentColor"
@@ -126,111 +128,111 @@ exports[`component:<Menu> prop:options & visible 1`] = `
126
128
  d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"
127
129
  />
128
130
  </svg>
129
- </ui_icon>
130
- <ui_text
131
+ </span>
132
+ <span
131
133
  class="text paragraph label"
132
134
  >
133
135
  Item 2
134
- </ui_text>
135
- </ui_view>
136
- </ui_pressable>
137
- <ui_pressable
136
+ </span>
137
+ </div>
138
+ </div>
139
+ <div
138
140
  class="pressable option value divider"
139
- tabindex="0"
140
141
  >
141
- <ui_view
142
+ <div
142
143
  class="view row wide content"
143
144
  >
144
- <ui_text
145
+ <span
145
146
  class="text paragraph label"
146
147
  >
147
148
  Item 3
148
- </ui_text>
149
- </ui_view>
150
- </ui_pressable>
151
- <ui_pressable
149
+ </span>
150
+ </div>
151
+ </div>
152
+ <div
152
153
  class="pressable option value"
153
- tabindex="0"
154
154
  >
155
- <ui_view
155
+ <div
156
156
  class="view row wide content"
157
157
  >
158
- <ui_text
158
+ <span
159
159
  class="text paragraph label"
160
160
  >
161
161
  Item 4
162
- </ui_text>
162
+ </span>
163
163
  <button
164
164
  class="pressable button small"
165
- tabindex="0"
166
165
  >
167
166
  Add
168
167
  </button>
169
- </ui_view>
170
- </ui_pressable>
171
- <ui_pressable
168
+ </div>
169
+ </div>
170
+ <div
172
171
  class="pressable option"
173
- tabindex="0"
174
172
  >
175
- <ui_view
173
+ <div
176
174
  class="view row wide content"
177
175
  >
178
176
  <button
179
177
  class="pressable button"
180
- tabindex="0"
181
178
  >
182
179
  Add
183
180
  </button>
184
- </ui_view>
185
- </ui_pressable>
181
+ </div>
182
+ </div>
186
183
  </div>
187
- </ui_layer_content>
184
+ </div>
188
185
  </DocumentFragment>
189
186
  `;
190
187
 
191
188
  exports[`component:<Menu> prop:options 1`] = `
192
189
  <DocumentFragment>
193
- <ui_layer>
190
+ <span
191
+ class="container"
192
+ >
194
193
  <button
195
194
  class="pressable button"
196
- tabindex="0"
197
195
  >
198
196
  Action
199
197
  </button>
200
- </ui_layer>
198
+ </span>
201
199
  </DocumentFragment>
202
200
  `;
203
201
 
204
202
  exports[`component:<Menu> prop:title 1`] = `
205
203
  <DocumentFragment>
206
- <ui_layer>
204
+ <span
205
+ class="container"
206
+ >
207
207
  <button
208
208
  class="pressable button"
209
- tabindex="0"
210
209
  >
211
210
  Action
212
211
  </button>
213
- </ui_layer>
214
- <ui_layer_content
212
+ </span>
213
+ <div
215
214
  class="layer"
216
215
  style="left: 0px; top: 0px;"
217
216
  >
218
217
  <div
219
218
  class="menu visible"
220
219
  />
221
- </ui_layer_content>
220
+ </div>
222
221
  </DocumentFragment>
223
222
  `;
224
223
 
225
224
  exports[`component:<Menu> renders 1`] = `
226
225
  <DocumentFragment>
227
- <ui_layer />
226
+ <span
227
+ class="container"
228
+ />
228
229
  </DocumentFragment>
229
230
  `;
230
231
 
231
232
  exports[`component:<Menu> testId 1`] = `
232
233
  <DocumentFragment>
233
- <ui_layer
234
+ <span
235
+ class="container"
234
236
  data-testid="mirai"
235
237
  />
236
238
  </DocumentFragment>
@@ -12,8 +12,9 @@ var _components = require("../../components");
12
12
  var _helpers = require("../../helpers");
13
13
  var _hooks = require("../../hooks");
14
14
  var _primitives = require("../../primitives");
15
+ var _theme = require("../../theme");
15
16
  var _ModalModule = _interopRequireDefault(require("./Modal.module.css"));
16
- var _excluded = ["blur", "children", "fit", "overflow", "portal", "preventDefault", "title", "visible", "onBack", "onClose", "onOverflow"];
17
+ var _excluded = ["blur", "children", "fit", "mobileBehavior", "overflow", "portal", "preventDefault", "title", "visible", "onBack", "onClose", "onOverflow"];
17
18
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
19
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -37,6 +38,8 @@ var Modal = function Modal(_ref) {
37
38
  children = _ref.children,
38
39
  _ref$fit = _ref.fit,
39
40
  fit = _ref$fit === void 0 ? false : _ref$fit,
41
+ _ref$mobileBehavior = _ref.mobileBehavior,
42
+ mobileBehavior = _ref$mobileBehavior === void 0 ? false : _ref$mobileBehavior,
40
43
  _ref$overflow = _ref.overflow,
41
44
  overflow = _ref$overflow === void 0 ? true : _ref$overflow,
42
45
  _ref$portal = _ref.portal,
@@ -51,6 +54,7 @@ var Modal = function Modal(_ref) {
51
54
  others = _objectWithoutProperties(_ref, _excluded);
52
55
  var _useDevice = (0, _hooks.useDevice)(),
53
56
  isDesktop = _useDevice.isDesktop,
57
+ isMobile = _useDevice.isMobile,
54
58
  height = _useDevice.height;
55
59
  var ref = (0, _react.useRef)();
56
60
  var _useState = (0, _react.useState)(),
@@ -85,6 +89,7 @@ var Modal = function Modal(_ref) {
85
89
  var target = event.target;
86
90
  onOverflow && !((_ref$current = ref.current) !== null && _ref$current !== void 0 && _ref$current.contains(target)) && onOverflow(event);
87
91
  };
92
+ var defaultDirection = _theme.Theme.getDirection() === _theme.DIRECTION_TYPE.LEFT;
88
93
  var renderer = _helpers.IS_JEST || !portal ? function (jsx) {
89
94
  return jsx;
90
95
  } : _reactDom.default.createPortal;
@@ -93,7 +98,7 @@ var Modal = function Modal(_ref) {
93
98
  preventDefault: preventDefault,
94
99
  role: others.role ? "".concat(others.role, "-overflow") : 'modal-overflow',
95
100
  onPress: visible && overflow ? handleOverflow : undefined,
96
- className: (0, _helpers.styles)(_ModalModule.default.container, overflow && _ModalModule.default.overflow, overflow && blur && _ModalModule.default.blur, visible && _ModalModule.default.visible, onOverflow && _ModalModule.default.onOverflow),
101
+ className: (0, _helpers.styles)(_ModalModule.default.container, isDesktop && mobileBehavior && _ModalModule.default.mobileBehavior, overflow && _ModalModule.default.overflow, overflow && blur && _ModalModule.default.blur, visible && _ModalModule.default.visible, onOverflow && _ModalModule.default.onOverflow),
97
102
  style: {
98
103
  height: height
99
104
  },
@@ -104,24 +109,24 @@ var Modal = function Modal(_ref) {
104
109
  role: others.role || 'modal',
105
110
  className: (0, _helpers.styles)(_ModalModule.default.modal, !fit && _ModalModule.default.calcWidth, visible && _ModalModule.default.visible, others.className)
106
111
  }), (title || onBack || onClose) && /*#__PURE__*/_react.default.createElement(_primitives.View, {
107
- forceRow: true,
108
- className: _ModalModule.default.header
112
+ row: true,
113
+ className: (0, _helpers.styles)(_ModalModule.default.header, !defaultDirection && _ModalModule.default.reverse, !onBack && _ModalModule.default.hideBack, !onClose && _ModalModule.default.hideClose)
109
114
  }, onBack && /*#__PURE__*/_react.default.createElement(_components.Button, {
110
- transparent: true,
111
115
  small: true,
112
116
  squared: true,
117
+ transparent: true,
113
118
  onPress: onBack,
114
119
  testId: testId ? "".concat(testId, "-button-back") : undefined
115
120
  }, /*#__PURE__*/_react.default.createElement(_primitives.Icon, {
116
121
  value: _primitives.ICON.LEFT,
117
122
  className: _ModalModule.default.icon
118
123
  })), title && /*#__PURE__*/_react.default.createElement(_primitives.Text, {
119
- headline: true,
120
- className: (0, _helpers.styles)(_ModalModule.default.title, !onBack && _ModalModule.default.left, !onClose && _ModalModule.default.right)
124
+ headline: !isMobile,
125
+ className: _ModalModule.default.title
121
126
  }, title), onClose && /*#__PURE__*/_react.default.createElement(_components.Button, {
122
- transparent: true,
123
127
  small: true,
124
128
  squared: true,
129
+ transparent: true,
125
130
  onPress: onClose,
126
131
  testId: testId ? "".concat(testId, "-button-close") : undefined,
127
132
  className: _ModalModule.default.button
@@ -137,10 +142,12 @@ var Modal = function Modal(_ref) {
137
142
  }))), document.body);
138
143
  };
139
144
  exports.Modal = Modal;
145
+ Modal.displayName = 'Component:Modal';
140
146
  Modal.propTypes = {
141
147
  blur: _propTypes.default.bool,
142
148
  children: _propTypes.default.node,
143
149
  fit: _propTypes.default.bool,
150
+ mobileBehavior: _propTypes.default.bool,
144
151
  overflow: _propTypes.default.bool,
145
152
  portal: _propTypes.default.bool,
146
153
  preventDefault: _propTypes.default.bool,
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","names":["Modal","blur","children","fit","overflow","portal","preventDefault","title","visible","onBack","onClose","onOverflow","others","useDevice","isDesktop","height","ref","useRef","useState","dataset","setDataset","useEffect","handleKeydown","event","key","document","addEventListener","removeEventListener","body","miraiModal","undefined","handleOverflow","target","current","contains","renderer","IS_JEST","jsx","ReactDOM","createPortal","testId","role","styles","style","container","modal","calcWidth","className","header","ICON","LEFT","icon","left","right","button","CLOSE","EXPAND_MORE","React","Children","map","child","index","cloneElement","props","propTypes","PropTypes","bool","node","string","func"],"sources":["../../../src/components/Modal/Modal.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React, { useEffect, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { Button } from '../../components';\nimport { IS_JEST, styles } from '../../helpers';\nimport { useDevice } from '../../hooks';\nimport { Icon, ICON, Pressable, Text, View } from '../../primitives';\nimport style from './Modal.module.css';\n\nconst Modal = ({\n blur = false,\n children,\n fit = false,\n overflow = true,\n portal = false,\n preventDefault = true,\n title,\n visible,\n onBack,\n onClose,\n onOverflow,\n ...others\n}) => {\n const { isDesktop, height } = useDevice();\n const ref = useRef();\n\n const [dataset, setDataset] = useState();\n\n useEffect(() => {\n if (!visible || !onClose) return;\n\n const handleKeydown = (event) => event.key === 'Escape' && onClose();\n\n document.addEventListener('keydown', handleKeydown);\n return () => document.removeEventListener('keydown', handleKeydown);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [visible]);\n\n useEffect(() => {\n if (visible && !dataset) {\n setDataset(true);\n document.body.dataset.miraiModal = true;\n }\n\n return () => {\n if (visible && dataset) {\n setDataset(undefined);\n delete document.body.dataset.miraiModal;\n }\n };\n }, [dataset, visible]);\n\n const handleOverflow = (event) => {\n const { target } = event;\n onOverflow && !ref.current?.contains(target) && onOverflow(event);\n };\n\n const renderer = IS_JEST || !portal ? (jsx) => jsx : ReactDOM.createPortal;\n\n const { testId } = others;\n\n return renderer(\n <Pressable\n preventDefault={preventDefault}\n role={others.role ? `${others.role}-overflow` : 'modal-overflow'}\n onPress={visible && overflow ? handleOverflow : undefined}\n className={styles(\n style.container,\n overflow && style.overflow,\n overflow && blur && style.blur,\n visible && style.visible,\n onOverflow && style.onOverflow,\n )}\n style={{ height }}\n testId={testId ? `${testId}-overflow` : undefined}\n >\n <View\n {...others}\n fit\n ref={ref}\n role={others.role || 'modal'}\n className={styles(style.modal, !fit && style.calcWidth, visible && style.visible, others.className)}\n >\n {(title || onBack || onClose) && (\n <View forceRow className={style.header}>\n {onBack && (\n <Button transparent small squared onPress={onBack} testId={testId ? `${testId}-button-back` : undefined}>\n <Icon value={ICON.LEFT} className={style.icon} />\n </Button>\n )}\n {title && (\n <Text headline className={styles(style.title, !onBack && style.left, !onClose && style.right)}>\n {title}\n </Text>\n )}\n {onClose && (\n <Button\n transparent\n small\n squared\n onPress={onClose}\n testId={testId ? `${testId}-button-close` : undefined}\n className={style.button}\n >\n <Icon value={isDesktop || title !== undefined ? ICON.CLOSE : ICON.EXPAND_MORE} className={style.icon} />\n </Button>\n )}\n </View>\n )}\n\n {React.Children.map(children, (child, index) =>\n !child || child === null\n ? null\n : React.cloneElement(child, { key: child.key || index, ...child.props, role: 'modal-content' }),\n )}\n </View>\n </Pressable>,\n document.body,\n );\n};\n\nModal.propTypes = {\n blur: PropTypes.bool,\n children: PropTypes.node,\n fit: PropTypes.bool,\n overflow: PropTypes.bool,\n portal: PropTypes.bool,\n preventDefault: PropTypes.bool,\n title: PropTypes.string,\n visible: PropTypes.bool,\n onBack: PropTypes.func,\n onClose: PropTypes.func,\n onOverflow: PropTypes.func,\n};\n\nexport { Modal };\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEvC,IAAMA,KAAK,GAAG,SAARA,KAAK,OAaL;EAAA,qBAZJC,IAAI;IAAJA,IAAI,0BAAG,KAAK;IACZC,QAAQ,QAARA,QAAQ;IAAA,gBACRC,GAAG;IAAHA,GAAG,yBAAG,KAAK;IAAA,qBACXC,QAAQ;IAARA,QAAQ,8BAAG,IAAI;IAAA,mBACfC,MAAM;IAANA,MAAM,4BAAG,KAAK;IAAA,2BACdC,cAAc;IAAdA,cAAc,oCAAG,IAAI;IACrBC,KAAK,QAALA,KAAK;IACLC,OAAO,QAAPA,OAAO;IACPC,MAAM,QAANA,MAAM;IACNC,OAAO,QAAPA,OAAO;IACPC,UAAU,QAAVA,UAAU;IACPC,MAAM;EAET,iBAA8B,IAAAC,gBAAS,GAAE;IAAjCC,SAAS,cAATA,SAAS;IAAEC,MAAM,cAANA,MAAM;EACzB,IAAMC,GAAG,GAAG,IAAAC,aAAM,GAAE;EAEpB,gBAA8B,IAAAC,eAAQ,GAAE;IAAA;IAAjCC,OAAO;IAAEC,UAAU;EAE1B,IAAAC,gBAAS,EAAC,YAAM;IACd,IAAI,CAACb,OAAO,IAAI,CAACE,OAAO,EAAE;IAE1B,IAAMY,aAAa,GAAG,SAAhBA,aAAa,CAAIC,KAAK;MAAA,OAAKA,KAAK,CAACC,GAAG,KAAK,QAAQ,IAAId,OAAO,EAAE;IAAA;IAEpEe,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEJ,aAAa,CAAC;IACnD,OAAO;MAAA,OAAMG,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEL,aAAa,CAAC;IAAA;IACnE;EACF,CAAC,EAAE,CAACd,OAAO,CAAC,CAAC;EAEb,IAAAa,gBAAS,EAAC,YAAM;IACd,IAAIb,OAAO,IAAI,CAACW,OAAO,EAAE;MACvBC,UAAU,CAAC,IAAI,CAAC;MAChBK,QAAQ,CAACG,IAAI,CAACT,OAAO,CAACU,UAAU,GAAG,IAAI;IACzC;IAEA,OAAO,YAAM;MACX,IAAIrB,OAAO,IAAIW,OAAO,EAAE;QACtBC,UAAU,CAACU,SAAS,CAAC;QACrB,OAAOL,QAAQ,CAACG,IAAI,CAACT,OAAO,CAACU,UAAU;MACzC;IACF,CAAC;EACH,CAAC,EAAE,CAACV,OAAO,EAAEX,OAAO,CAAC,CAAC;EAEtB,IAAMuB,cAAc,GAAG,SAAjBA,cAAc,CAAIR,KAAK,EAAK;IAAA;IAChC,IAAQS,MAAM,GAAKT,KAAK,CAAhBS,MAAM;IACdrB,UAAU,IAAI,kBAACK,GAAG,CAACiB,OAAO,yCAAX,aAAaC,QAAQ,CAACF,MAAM,CAAC,KAAIrB,UAAU,CAACY,KAAK,CAAC;EACnE,CAAC;EAED,IAAMY,QAAQ,GAAGC,gBAAO,IAAI,CAAC/B,MAAM,GAAG,UAACgC,GAAG;IAAA,OAAKA,GAAG;EAAA,IAAGC,iBAAQ,CAACC,YAAY;EAE1E,IAAQC,MAAM,GAAK5B,MAAM,CAAjB4B,MAAM;EAEd,OAAOL,QAAQ,eACb,6BAAC,qBAAS;IACR,cAAc,EAAE7B,cAAe;IAC/B,IAAI,EAAEM,MAAM,CAAC6B,IAAI,aAAM7B,MAAM,CAAC6B,IAAI,iBAAc,gBAAiB;IACjE,OAAO,EAAEjC,OAAO,IAAIJ,QAAQ,GAAG2B,cAAc,GAAGD,SAAU;IAC1D,SAAS,EAAE,IAAAY,eAAM,EACfC,oBAAK,CAACC,SAAS,EACfxC,QAAQ,IAAIuC,oBAAK,CAACvC,QAAQ,EAC1BA,QAAQ,IAAIH,IAAI,IAAI0C,oBAAK,CAAC1C,IAAI,EAC9BO,OAAO,IAAImC,oBAAK,CAACnC,OAAO,EACxBG,UAAU,IAAIgC,oBAAK,CAAChC,UAAU,CAC9B;IACF,KAAK,EAAE;MAAEI,MAAM,EAANA;IAAO,CAAE;IAClB,MAAM,EAAEyB,MAAM,aAAMA,MAAM,iBAAcV;EAAU,gBAElD,6BAAC,gBAAI,eACClB,MAAM;IACV,GAAG;IACH,GAAG,EAAEI,GAAI;IACT,IAAI,EAAEJ,MAAM,CAAC6B,IAAI,IAAI,OAAQ;IAC7B,SAAS,EAAE,IAAAC,eAAM,EAACC,oBAAK,CAACE,KAAK,EAAE,CAAC1C,GAAG,IAAIwC,oBAAK,CAACG,SAAS,EAAEtC,OAAO,IAAImC,oBAAK,CAACnC,OAAO,EAAEI,MAAM,CAACmC,SAAS;EAAE,IAEnG,CAACxC,KAAK,IAAIE,MAAM,IAAIC,OAAO,kBAC1B,6BAAC,gBAAI;IAAC,QAAQ;IAAC,SAAS,EAAEiC,oBAAK,CAACK;EAAO,GACpCvC,MAAM,iBACL,6BAAC,kBAAM;IAAC,WAAW;IAAC,KAAK;IAAC,OAAO;IAAC,OAAO,EAAEA,MAAO;IAAC,MAAM,EAAE+B,MAAM,aAAMA,MAAM,oBAAiBV;EAAU,gBACtG,6BAAC,gBAAI;IAAC,KAAK,EAAEmB,gBAAI,CAACC,IAAK;IAAC,SAAS,EAAEP,oBAAK,CAACQ;EAAK,EAAG,CAEpD,EACA5C,KAAK,iBACJ,6BAAC,gBAAI;IAAC,QAAQ;IAAC,SAAS,EAAE,IAAAmC,eAAM,EAACC,oBAAK,CAACpC,KAAK,EAAE,CAACE,MAAM,IAAIkC,oBAAK,CAACS,IAAI,EAAE,CAAC1C,OAAO,IAAIiC,oBAAK,CAACU,KAAK;EAAE,GAC3F9C,KAAK,CAET,EACAG,OAAO,iBACN,6BAAC,kBAAM;IACL,WAAW;IACX,KAAK;IACL,OAAO;IACP,OAAO,EAAEA,OAAQ;IACjB,MAAM,EAAE8B,MAAM,aAAMA,MAAM,qBAAkBV,SAAU;IACtD,SAAS,EAAEa,oBAAK,CAACW;EAAO,gBAExB,6BAAC,gBAAI;IAAC,KAAK,EAAExC,SAAS,IAAIP,KAAK,KAAKuB,SAAS,GAAGmB,gBAAI,CAACM,KAAK,GAAGN,gBAAI,CAACO,WAAY;IAAC,SAAS,EAAEb,oBAAK,CAACQ;EAAK,EAAG,CAE3G,CAEJ,EAEAM,cAAK,CAACC,QAAQ,CAACC,GAAG,CAACzD,QAAQ,EAAE,UAAC0D,KAAK,EAAEC,KAAK;IAAA,OACzC,CAACD,KAAK,IAAIA,KAAK,KAAK,IAAI,GACpB,IAAI,gBACJH,cAAK,CAACK,YAAY,CAACF,KAAK;MAAIpC,GAAG,EAAEoC,KAAK,CAACpC,GAAG,IAAIqC;IAAK,GAAKD,KAAK,CAACG,KAAK;MAAEtB,IAAI,EAAE;IAAe,GAAG;EAAA,EAClG,CACI,CACG,EACZhB,QAAQ,CAACG,IAAI,CACd;AACH,CAAC;AAAC;AAEF5B,KAAK,CAACgE,SAAS,GAAG;EAChB/D,IAAI,EAAEgE,kBAAS,CAACC,IAAI;EACpBhE,QAAQ,EAAE+D,kBAAS,CAACE,IAAI;EACxBhE,GAAG,EAAE8D,kBAAS,CAACC,IAAI;EACnB9D,QAAQ,EAAE6D,kBAAS,CAACC,IAAI;EACxB7D,MAAM,EAAE4D,kBAAS,CAACC,IAAI;EACtB5D,cAAc,EAAE2D,kBAAS,CAACC,IAAI;EAC9B3D,KAAK,EAAE0D,kBAAS,CAACG,MAAM;EACvB5D,OAAO,EAAEyD,kBAAS,CAACC,IAAI;EACvBzD,MAAM,EAAEwD,kBAAS,CAACI,IAAI;EACtB3D,OAAO,EAAEuD,kBAAS,CAACI,IAAI;EACvB1D,UAAU,EAAEsD,kBAAS,CAACI;AACxB,CAAC"}
1
+ {"version":3,"file":"Modal.js","names":["Modal","blur","children","fit","mobileBehavior","overflow","portal","preventDefault","title","visible","onBack","onClose","onOverflow","others","useDevice","isDesktop","isMobile","height","ref","useRef","useState","dataset","setDataset","useEffect","handleKeydown","event","key","document","addEventListener","removeEventListener","body","miraiModal","undefined","handleOverflow","target","current","contains","defaultDirection","Theme","getDirection","DIRECTION_TYPE","LEFT","renderer","IS_JEST","jsx","ReactDOM","createPortal","testId","role","styles","style","container","modal","calcWidth","className","header","reverse","hideBack","hideClose","ICON","icon","button","CLOSE","EXPAND_MORE","React","Children","map","child","index","cloneElement","props","displayName","propTypes","PropTypes","bool","node","string","func"],"sources":["../../../src/components/Modal/Modal.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React, { useEffect, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { Button } from '../../components';\nimport { IS_JEST, styles } from '../../helpers';\nimport { useDevice } from '../../hooks';\nimport { Icon, ICON, Pressable, Text, View } from '../../primitives';\nimport { DIRECTION_TYPE, Theme } from '../../theme';\nimport style from './Modal.module.css';\n\nconst Modal = ({\n blur = false,\n children,\n fit = false,\n mobileBehavior = false,\n overflow = true,\n portal = false,\n preventDefault = true,\n title,\n visible,\n onBack,\n onClose,\n onOverflow,\n ...others\n}) => {\n const { isDesktop, isMobile, height } = useDevice();\n const ref = useRef();\n\n const [dataset, setDataset] = useState();\n\n useEffect(() => {\n if (!visible || !onClose) return;\n\n const handleKeydown = (event) => event.key === 'Escape' && onClose();\n\n document.addEventListener('keydown', handleKeydown);\n return () => document.removeEventListener('keydown', handleKeydown);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [visible]);\n\n useEffect(() => {\n if (visible && !dataset) {\n setDataset(true);\n document.body.dataset.miraiModal = true;\n }\n\n return () => {\n if (visible && dataset) {\n setDataset(undefined);\n delete document.body.dataset.miraiModal;\n }\n };\n }, [dataset, visible]);\n\n const handleOverflow = (event) => {\n const { target } = event;\n onOverflow && !ref.current?.contains(target) && onOverflow(event);\n };\n\n const defaultDirection = Theme.getDirection() === DIRECTION_TYPE.LEFT;\n const renderer = IS_JEST || !portal ? (jsx) => jsx : ReactDOM.createPortal;\n const { testId } = others;\n\n return renderer(\n <Pressable\n preventDefault={preventDefault}\n role={others.role ? `${others.role}-overflow` : 'modal-overflow'}\n onPress={visible && overflow ? handleOverflow : undefined}\n className={styles(\n style.container,\n isDesktop && mobileBehavior && style.mobileBehavior,\n overflow && style.overflow,\n overflow && blur && style.blur,\n visible && style.visible,\n onOverflow && style.onOverflow,\n )}\n style={{ height }}\n testId={testId ? `${testId}-overflow` : undefined}\n >\n <View\n {...others}\n fit\n ref={ref}\n role={others.role || 'modal'}\n className={styles(style.modal, !fit && style.calcWidth, visible && style.visible, others.className)}\n >\n {(title || onBack || onClose) && (\n <View\n row\n className={styles(\n style.header,\n !defaultDirection && style.reverse,\n !onBack && style.hideBack,\n !onClose && style.hideClose,\n )}\n >\n {onBack && (\n <Button small squared transparent onPress={onBack} testId={testId ? `${testId}-button-back` : undefined}>\n <Icon value={ICON.LEFT} className={style.icon} />\n </Button>\n )}\n {title && (\n <Text headline={!isMobile} className={style.title}>\n {title}\n </Text>\n )}\n {onClose && (\n <Button\n small\n squared\n transparent\n onPress={onClose}\n testId={testId ? `${testId}-button-close` : undefined}\n className={style.button}\n >\n <Icon value={isDesktop || title !== undefined ? ICON.CLOSE : ICON.EXPAND_MORE} className={style.icon} />\n </Button>\n )}\n </View>\n )}\n\n {React.Children.map(children, (child, index) =>\n !child || child === null\n ? null\n : React.cloneElement(child, { key: child.key || index, ...child.props, role: 'modal-content' }),\n )}\n </View>\n </Pressable>,\n document.body,\n );\n};\n\nModal.displayName = 'Component:Modal';\n\nModal.propTypes = {\n blur: PropTypes.bool,\n children: PropTypes.node,\n fit: PropTypes.bool,\n mobileBehavior: PropTypes.bool,\n overflow: PropTypes.bool,\n portal: PropTypes.bool,\n preventDefault: PropTypes.bool,\n title: PropTypes.string,\n visible: PropTypes.bool,\n onBack: PropTypes.func,\n onClose: PropTypes.func,\n onOverflow: PropTypes.func,\n};\n\nexport { Modal };\n"],"mappings":"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"}
@@ -1,19 +1,24 @@
1
- /* ! WTF */
2
1
  [data-mirai-modal] {
3
2
  overflow: hidden;
4
3
  }
5
4
 
6
5
  .container {
7
6
  display: flex;
8
- height: 100vh;
7
+ height: 100svh;
9
8
  justify-content: center;
10
9
  left: 0;
11
10
  pointer-events: none;
12
11
  position: fixed;
13
- width: 100vw;
12
+ width: 100svw;
14
13
  z-index: var(--mirai-ui-modal-layer);
15
14
  }
16
15
 
16
+ .container.mobileBehavior {
17
+ align-items: flex-end;
18
+ align-content: flex-end;
19
+ bottom: 0;
20
+ }
21
+
17
22
  .container.visible {
18
23
  pointer-events: all;
19
24
  }
@@ -21,22 +26,25 @@
21
26
  .header {
22
27
  align-items: center;
23
28
  border-bottom: solid var(--mirai-ui-border-width) var(--mirai-ui-content-border);
24
- padding: var(--mirai-ui-modal-header-padding);
29
+ gap: var(--mirai-ui-space-XS);
30
+ padding: var(--mirai-ui-modal-header-padding) calc(var(--mirai-ui-modal-header-padding) / 1.5);
25
31
  width: 100%;
26
32
  }
27
33
 
28
- .header .title {
29
- flex: 1;
30
- padding: 0 var(--mirai-ui-modal-header-padding);
31
- text-align: center;
34
+ .header:not(.reverse).hideBack,
35
+ .header.reverse.hideClose {
36
+ padding-left: calc(var(--mirai-ui-modal-icon) + var(--mirai-ui-space-M));
32
37
  }
33
38
 
34
- .header .title.left {
35
- margin-left: var(--mirai-ui-modal-icon);
39
+ .header:not(.reverse).hideClose,
40
+ .header.reverse.hideBack {
41
+ padding-right: calc(var(--mirai-ui-modal-icon) + var(--mirai-ui-space-M));
36
42
  }
37
43
 
38
- .header .title.right {
39
- margin-right: var(--mirai-ui-modal-icon);
44
+ .header .title {
45
+ flex: 1;
46
+ padding: 0 var(--mirai-ui-modal-header-padding);
47
+ text-align: center;
40
48
  }
41
49
 
42
50
  .header .icon {
@@ -55,11 +63,19 @@
55
63
  box-shadow var(--mirai-ui-motion-expand) var(--mirai-ui-motion-easing);
56
64
  }
57
65
 
66
+ .container.mobileBehavior .modal {
67
+ transform: translateY(100%);
68
+ }
69
+
58
70
  .modal.visible {
59
71
  box-shadow: var(--mirai-ui-modal-shadow);
60
72
  pointer-events: all;
61
73
  }
62
74
 
75
+ .container.mobileBehavior .modal.visible {
76
+ transform: translateY(0%);
77
+ }
78
+
63
79
  .overflow {
64
80
  background-color: var(--mirai-ui-modal-overflow);
65
81
  opacity: 0;
@@ -125,7 +141,7 @@
125
141
  justify-content: flex-end;
126
142
  }
127
143
 
128
- .modal {
144
+ .modal:not(.mobileMode) {
129
145
  border-radius: var(--mirai-ui-modal-border-radius);
130
146
  opacity: 0;
131
147
  transform: scale(1.1);
@@ -135,7 +151,7 @@
135
151
  width: calc(var(--mirai-ui-breakpoint-content) / 3);
136
152
  }
137
153
 
138
- .modal.visible {
154
+ .modal.visible:not(.mobileMode) {
139
155
  opacity: 1;
140
156
  transform: scale(1);
141
157
  }
@@ -91,6 +91,7 @@ Story.storyName = 'Modal';
91
91
  Story.args = {
92
92
  blur: false,
93
93
  fit: false,
94
+ mobileBehavior: false,
94
95
  overflow: true,
95
96
  portal: false,
96
97
  title: 'title',
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.stories.js","names":["title","Story","props","useState","visible","setVisible","visibleSecond","setVisibleSecond","handleBack","others","console","log","handleClose","handleOverflow","padding","storyName","args","blur","fit","overflow","portal","testId","style","argTypes"],"sources":["../../../src/components/Modal/Modal.stories.jsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport { Button, Text, View } from '../../';\nimport { Modal } from './Modal';\n\nexport default {\n title: 'Components',\n};\n\nexport const Story = (props) => {\n const [visible, setVisible] = useState(true);\n const [visibleSecond, setVisibleSecond] = useState(false);\n\n const handleBack = (...others) => {\n console.log('<Modal>::onBack', ...others);\n setVisibleSecond(false);\n };\n\n const handleClose = (...others) => {\n console.log('<Modal>::onClose', ...others);\n setVisible(false);\n };\n\n const handleOverflow = (...others) => {\n console.log('<Modal>::onOverflow', ...others);\n handleClose(others);\n };\n\n return (\n <>\n <Text bold headline>\n What is Lorem Ipsum?\n </Text>\n <Text>\n Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's\n standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make\n a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting,\n remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing\n Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions\n of Lorem Ipsum.\n </Text>\n\n <Button onPress={() => setVisible(true)}>Show modal</Button>\n\n <Text bold headline>\n Where does it come from?\n </Text>\n <Text>\n Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin\n literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney\n College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and\n going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum\n comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by\n Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance.\n The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.\n </Text>\n\n <Modal {...props} onClose={handleClose} onOverflow={handleOverflow} visible={visible}>\n <View style={{ padding: 'var(--mirai-ui-space-L)' }}>\n <Text>\n Lorem ipsum dolor sit amet consectetur adipisicing elit. Animi nemo adipisci consequatur et tenetur natus\n dolore, facere facilis placeat nostrum unde cumque. Voluptas enim rerum voluptatum, deserunt fugiat\n aspernatur excepturi.\n </Text>\n <Button onPress={() => setVisibleSecond(true)}>Show another Modal</Button>\n </View>\n </Modal>\n\n <Modal {...props} onBack={handleBack} onOverflow={handleOverflow} visible={visibleSecond}>\n <View style={{ padding: 'var(--mirai-ui-space-L)' }}>\n <Text>\n Lorem ipsum dolor sit amet consectetur adipisicing elit. Animi nemo adipisci consequatur et tenetur natus\n dolore, facere facilis placeat nostrum unde cumque. Voluptas enim rerum voluptatum, deserunt fugiat\n aspernatur excepturi.\n </Text>\n </View>\n </Modal>\n </>\n );\n};\nStory.storyName = 'Modal';\n\nStory.args = {\n blur: false,\n fit: false,\n overflow: true,\n portal: false,\n title: 'title',\n // inherited properties\n testId: 'test-story',\n style: {},\n};\n\nStory.argTypes = {};\n"],"mappings":";;;;;;;AAAA;AAEA;AACA;AAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAEjB;EACbA,KAAK,EAAE;AACT,CAAC;AAAA;AAEM,IAAMC,KAAK,GAAG,SAARA,KAAK,CAAIC,KAAK,EAAK;EAC9B,gBAA8B,IAAAC,eAAQ,EAAC,IAAI,CAAC;IAAA;IAArCC,OAAO;IAAEC,UAAU;EAC1B,iBAA0C,IAAAF,eAAQ,EAAC,KAAK,CAAC;IAAA;IAAlDG,aAAa;IAAEC,gBAAgB;EAEtC,IAAMC,UAAU,GAAG,SAAbA,UAAU,GAAkB;IAAA;IAAA,kCAAXC,MAAM;MAANA,MAAM;IAAA;IAC3B,YAAAC,OAAO,EAACC,GAAG,kBAAC,iBAAiB,SAAKF,MAAM,EAAC;IACzCF,gBAAgB,CAAC,KAAK,CAAC;EACzB,CAAC;EAED,IAAMK,WAAW,GAAG,SAAdA,WAAW,GAAkB;IAAA;IAAA,mCAAXH,MAAM;MAANA,MAAM;IAAA;IAC5B,aAAAC,OAAO,EAACC,GAAG,mBAAC,kBAAkB,SAAKF,MAAM,EAAC;IAC1CJ,UAAU,CAAC,KAAK,CAAC;EACnB,CAAC;EAED,IAAMQ,cAAc,GAAG,SAAjBA,cAAc,GAAkB;IAAA;IAAA,mCAAXJ,MAAM;MAANA,MAAM;IAAA;IAC/B,aAAAC,OAAO,EAACC,GAAG,mBAAC,qBAAqB,SAAKF,MAAM,EAAC;IAC7CG,WAAW,CAACH,MAAM,CAAC;EACrB,CAAC;EAED,oBACE,yEACE,6BAAC,MAAI;IAAC,IAAI;IAAC,QAAQ;EAAA,0BAEZ,eACP,6BAAC,MAAI,ykBAOE,eAEP,6BAAC,QAAM;IAAC,OAAO,EAAE;MAAA,OAAMJ,UAAU,CAAC,IAAI,CAAC;IAAA;EAAC,gBAAoB,eAE5D,6BAAC,MAAI;IAAC,IAAI;IAAC,QAAQ;EAAA,8BAEZ,eACP,6BAAC,MAAI,0wBAQE,eAEP,6BAAC,YAAK,eAAKH,KAAK;IAAE,OAAO,EAAEU,WAAY;IAAC,UAAU,EAAEC,cAAe;IAAC,OAAO,EAAET;EAAQ,iBACnF,6BAAC,MAAI;IAAC,KAAK,EAAE;MAAEU,OAAO,EAAE;IAA0B;EAAE,gBAClD,6BAAC,MAAI,8OAIE,eACP,6BAAC,QAAM;IAAC,OAAO,EAAE;MAAA,OAAMP,gBAAgB,CAAC,IAAI,CAAC;IAAA;EAAC,wBAA4B,CACrE,CACD,eAER,6BAAC,YAAK,eAAKL,KAAK;IAAE,MAAM,EAAEM,UAAW;IAAC,UAAU,EAAEK,cAAe;IAAC,OAAO,EAAEP;EAAc,iBACvF,6BAAC,MAAI;IAAC,KAAK,EAAE;MAAEQ,OAAO,EAAE;IAA0B;EAAE,gBAClD,6BAAC,MAAI,8OAIE,CACF,CACD,CACP;AAEP,CAAC;AAAC;AACFb,KAAK,CAACc,SAAS,GAAG,OAAO;AAEzBd,KAAK,CAACe,IAAI,GAAG;EACXC,IAAI,EAAE,KAAK;EACXC,GAAG,EAAE,KAAK;EACVC,QAAQ,EAAE,IAAI;EACdC,MAAM,EAAE,KAAK;EACbpB,KAAK,EAAE,OAAO;EACd;EACAqB,MAAM,EAAE,YAAY;EACpBC,KAAK,EAAE,CAAC;AACV,CAAC;AAEDrB,KAAK,CAACsB,QAAQ,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"Modal.stories.js","names":["title","Story","props","useState","visible","setVisible","visibleSecond","setVisibleSecond","handleBack","others","console","log","handleClose","handleOverflow","padding","storyName","args","blur","fit","mobileBehavior","overflow","portal","testId","style","argTypes"],"sources":["../../../src/components/Modal/Modal.stories.jsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport { Button, Text, View } from '../../';\nimport { Modal } from './Modal';\n\nexport default {\n title: 'Components',\n};\n\nexport const Story = (props) => {\n const [visible, setVisible] = useState(true);\n const [visibleSecond, setVisibleSecond] = useState(false);\n\n const handleBack = (...others) => {\n console.log('<Modal>::onBack', ...others);\n setVisibleSecond(false);\n };\n\n const handleClose = (...others) => {\n console.log('<Modal>::onClose', ...others);\n setVisible(false);\n };\n\n const handleOverflow = (...others) => {\n console.log('<Modal>::onOverflow', ...others);\n handleClose(others);\n };\n\n return (\n <>\n <Text bold headline>\n What is Lorem Ipsum?\n </Text>\n <Text>\n Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's\n standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make\n a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting,\n remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing\n Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions\n of Lorem Ipsum.\n </Text>\n\n <Button onPress={() => setVisible(true)}>Show modal</Button>\n\n <Text bold headline>\n Where does it come from?\n </Text>\n <Text>\n Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin\n literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney\n College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and\n going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum\n comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by\n Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance.\n The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.\n </Text>\n\n <Modal {...props} onClose={handleClose} onOverflow={handleOverflow} visible={visible}>\n <View style={{ padding: 'var(--mirai-ui-space-L)' }}>\n <Text>\n Lorem ipsum dolor sit amet consectetur adipisicing elit. Animi nemo adipisci consequatur et tenetur natus\n dolore, facere facilis placeat nostrum unde cumque. Voluptas enim rerum voluptatum, deserunt fugiat\n aspernatur excepturi.\n </Text>\n <Button onPress={() => setVisibleSecond(true)}>Show another Modal</Button>\n </View>\n </Modal>\n\n <Modal {...props} onBack={handleBack} onOverflow={handleOverflow} visible={visibleSecond}>\n <View style={{ padding: 'var(--mirai-ui-space-L)' }}>\n <Text>\n Lorem ipsum dolor sit amet consectetur adipisicing elit. Animi nemo adipisci consequatur et tenetur natus\n dolore, facere facilis placeat nostrum unde cumque. Voluptas enim rerum voluptatum, deserunt fugiat\n aspernatur excepturi.\n </Text>\n </View>\n </Modal>\n </>\n );\n};\nStory.storyName = 'Modal';\n\nStory.args = {\n blur: false,\n fit: false,\n mobileBehavior: false,\n overflow: true,\n portal: false,\n title: 'title',\n // inherited properties\n testId: 'test-story',\n style: {},\n};\n\nStory.argTypes = {};\n"],"mappings":";;;;;;;AAAA;AAEA;AACA;AAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAEjB;EACbA,KAAK,EAAE;AACT,CAAC;AAAA;AAEM,IAAMC,KAAK,GAAG,SAARA,KAAK,CAAIC,KAAK,EAAK;EAC9B,gBAA8B,IAAAC,eAAQ,EAAC,IAAI,CAAC;IAAA;IAArCC,OAAO;IAAEC,UAAU;EAC1B,iBAA0C,IAAAF,eAAQ,EAAC,KAAK,CAAC;IAAA;IAAlDG,aAAa;IAAEC,gBAAgB;EAEtC,IAAMC,UAAU,GAAG,SAAbA,UAAU,GAAkB;IAAA;IAAA,kCAAXC,MAAM;MAANA,MAAM;IAAA;IAC3B,YAAAC,OAAO,EAACC,GAAG,kBAAC,iBAAiB,SAAKF,MAAM,EAAC;IACzCF,gBAAgB,CAAC,KAAK,CAAC;EACzB,CAAC;EAED,IAAMK,WAAW,GAAG,SAAdA,WAAW,GAAkB;IAAA;IAAA,mCAAXH,MAAM;MAANA,MAAM;IAAA;IAC5B,aAAAC,OAAO,EAACC,GAAG,mBAAC,kBAAkB,SAAKF,MAAM,EAAC;IAC1CJ,UAAU,CAAC,KAAK,CAAC;EACnB,CAAC;EAED,IAAMQ,cAAc,GAAG,SAAjBA,cAAc,GAAkB;IAAA;IAAA,mCAAXJ,MAAM;MAANA,MAAM;IAAA;IAC/B,aAAAC,OAAO,EAACC,GAAG,mBAAC,qBAAqB,SAAKF,MAAM,EAAC;IAC7CG,WAAW,CAACH,MAAM,CAAC;EACrB,CAAC;EAED,oBACE,yEACE,6BAAC,MAAI;IAAC,IAAI;IAAC,QAAQ;EAAA,0BAEZ,eACP,6BAAC,MAAI,ykBAOE,eAEP,6BAAC,QAAM;IAAC,OAAO,EAAE;MAAA,OAAMJ,UAAU,CAAC,IAAI,CAAC;IAAA;EAAC,gBAAoB,eAE5D,6BAAC,MAAI;IAAC,IAAI;IAAC,QAAQ;EAAA,8BAEZ,eACP,6BAAC,MAAI,0wBAQE,eAEP,6BAAC,YAAK,eAAKH,KAAK;IAAE,OAAO,EAAEU,WAAY;IAAC,UAAU,EAAEC,cAAe;IAAC,OAAO,EAAET;EAAQ,iBACnF,6BAAC,MAAI;IAAC,KAAK,EAAE;MAAEU,OAAO,EAAE;IAA0B;EAAE,gBAClD,6BAAC,MAAI,8OAIE,eACP,6BAAC,QAAM;IAAC,OAAO,EAAE;MAAA,OAAMP,gBAAgB,CAAC,IAAI,CAAC;IAAA;EAAC,wBAA4B,CACrE,CACD,eAER,6BAAC,YAAK,eAAKL,KAAK;IAAE,MAAM,EAAEM,UAAW;IAAC,UAAU,EAAEK,cAAe;IAAC,OAAO,EAAEP;EAAc,iBACvF,6BAAC,MAAI;IAAC,KAAK,EAAE;MAAEQ,OAAO,EAAE;IAA0B;EAAE,gBAClD,6BAAC,MAAI,8OAIE,CACF,CACD,CACP;AAEP,CAAC;AAAC;AACFb,KAAK,CAACc,SAAS,GAAG,OAAO;AAEzBd,KAAK,CAACe,IAAI,GAAG;EACXC,IAAI,EAAE,KAAK;EACXC,GAAG,EAAE,KAAK;EACVC,cAAc,EAAE,KAAK;EACrBC,QAAQ,EAAE,IAAI;EACdC,MAAM,EAAE,KAAK;EACbrB,KAAK,EAAE,OAAO;EACd;EACAsB,MAAM,EAAE,YAAY;EACpBC,KAAK,EAAE,CAAC;AACV,CAAC;AAEDtB,KAAK,CAACuB,QAAQ,GAAG,CAAC,CAAC"}