@mirai/ui 1.0.228 → 1.0.229

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/README.md CHANGED
@@ -240,6 +240,7 @@ const MyComponent = ({ isDesktop }) => (
240
240
  This primitive returns a select element and receives the following props:
241
241
 
242
242
  - `disabled:boolean` applying 'disabled' attribute
243
+ - `disabledOptions:boolean[]` applying 'disabled' for an specific option
243
244
  - `emptyOption:string` label for the empty default value (e.g. 'Select an option')
244
245
  - `options:string[]` select options text and values
245
246
  - `value:string` current value
@@ -260,6 +261,7 @@ const Example = (props) => {
260
261
 
261
262
  return (
262
263
  <Select
264
+ disabledOptions={[, true]}
263
265
  emptyOption="Select one option..."
264
266
  name="Select"
265
267
  options={['foo', 'bar']}
@@ -59,6 +59,7 @@ Story.storyName = 'InputSelect';
59
59
  Story.args = {
60
60
  caption: '%',
61
61
  disabled: false,
62
+ disabledOptions: [false, false, true],
62
63
  emptyOption: 'Select one option...',
63
64
  error: false,
64
65
  hint: 'hint',
@@ -1 +1 @@
1
- {"version":3,"file":"InputSelect.stories.js","names":["title","Story","props","useState","value","setValue","handleChange","next","others","console","log","handleEnter","handleLeave","storyName","args","caption","disabled","emptyOption","error","hint","label","name","required","showRequired","showState","success","warning","options","testId","style","argTypes"],"sources":["../../../src/components/InputSelect/InputSelect.stories.jsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport { InputSelect } from './InputSelect';\n\nexport default { title: 'Components' };\n\nexport const Story = (props) => {\n const [value, setValue] = useState('two');\n\n const handleChange = (next, ...others) => {\n setValue(next);\n console.log('<InputSelect>::onChange', next, ...others);\n };\n\n const handleEnter = (...others) => console.log('<InputSelect>::onEnter', ...others);\n\n const handleLeave = (...others) => console.log('<InputSelect>::onLeave', ...others);\n\n return <InputSelect {...props} value={value} onChange={handleChange} onEnter={handleEnter} onLeave={handleLeave} />;\n};\n\nStory.storyName = 'InputSelect';\n\nStory.args = {\n caption: '%',\n disabled: false,\n emptyOption: 'Select one option...',\n error: false,\n hint: 'hint',\n label: 'label',\n name: 'name',\n required: false,\n showRequired: false,\n showState: true,\n success: false,\n warning: false,\n options: ['one', 'two', 'three', 'four', 'five'],\n // inherited properties\n testId: 'test-story',\n style: {},\n};\n\nStory.argTypes = {};\n"],"mappings":";;;;;;;AAAA;AAEA;AAA4C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAE7B;EAAEA,KAAK,EAAE;AAAa,CAAC;AAAA;AAE/B,IAAMC,KAAK,GAAG,SAARA,KAAK,CAAIC,KAAK,EAAK;EAC9B,gBAA0B,IAAAC,eAAQ,EAAC,KAAK,CAAC;IAAA;IAAlCC,KAAK;IAAEC,QAAQ;EAEtB,IAAMC,YAAY,GAAG,SAAfA,YAAY,CAAIC,IAAI,EAAgB;IAAA;IACxCF,QAAQ,CAACE,IAAI,CAAC;IAAC,kCADcC,MAAM;MAANA,MAAM;IAAA;IAEnC,YAAAC,OAAO,EAACC,GAAG,kBAAC,yBAAyB,EAAEH,IAAI,SAAKC,MAAM,EAAC;EACzD,CAAC;EAED,IAAMG,WAAW,GAAG,SAAdA,WAAW;IAAA;IAAA,mCAAOH,MAAM;MAANA,MAAM;IAAA;IAAA,OAAK,aAAAC,OAAO,EAACC,GAAG,mBAAC,wBAAwB,SAAKF,MAAM,EAAC;EAAA;EAEnF,IAAMI,WAAW,GAAG,SAAdA,WAAW;IAAA;IAAA,mCAAOJ,MAAM;MAANA,MAAM;IAAA;IAAA,OAAK,aAAAC,OAAO,EAACC,GAAG,mBAAC,wBAAwB,SAAKF,MAAM,EAAC;EAAA;EAEnF,oBAAO,6BAAC,wBAAW,eAAKN,KAAK;IAAE,KAAK,EAAEE,KAAM;IAAC,QAAQ,EAAEE,YAAa;IAAC,OAAO,EAAEK,WAAY;IAAC,OAAO,EAAEC;EAAY,GAAG;AACrH,CAAC;AAAC;AAEFX,KAAK,CAACY,SAAS,GAAG,aAAa;AAE/BZ,KAAK,CAACa,IAAI,GAAG;EACXC,OAAO,EAAE,GAAG;EACZC,QAAQ,EAAE,KAAK;EACfC,WAAW,EAAE,sBAAsB;EACnCC,KAAK,EAAE,KAAK;EACZC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE,OAAO;EACdC,IAAI,EAAE,MAAM;EACZC,QAAQ,EAAE,KAAK;EACfC,YAAY,EAAE,KAAK;EACnBC,SAAS,EAAE,IAAI;EACfC,OAAO,EAAE,KAAK;EACdC,OAAO,EAAE,KAAK;EACdC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;EAChD;EACAC,MAAM,EAAE,YAAY;EACpBC,KAAK,EAAE,CAAC;AACV,CAAC;AAED5B,KAAK,CAAC6B,QAAQ,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"InputSelect.stories.js","names":["title","Story","props","useState","value","setValue","handleChange","next","others","console","log","handleEnter","handleLeave","storyName","args","caption","disabled","disabledOptions","emptyOption","error","hint","label","name","required","showRequired","showState","success","warning","options","testId","style","argTypes"],"sources":["../../../src/components/InputSelect/InputSelect.stories.jsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport { InputSelect } from './InputSelect';\n\nexport default { title: 'Components' };\n\nexport const Story = (props) => {\n const [value, setValue] = useState('two');\n\n const handleChange = (next, ...others) => {\n setValue(next);\n console.log('<InputSelect>::onChange', next, ...others);\n };\n\n const handleEnter = (...others) => console.log('<InputSelect>::onEnter', ...others);\n\n const handleLeave = (...others) => console.log('<InputSelect>::onLeave', ...others);\n\n return <InputSelect {...props} value={value} onChange={handleChange} onEnter={handleEnter} onLeave={handleLeave} />;\n};\n\nStory.storyName = 'InputSelect';\n\nStory.args = {\n caption: '%',\n disabled: false,\n disabledOptions: [false, false, true],\n emptyOption: 'Select one option...',\n error: false,\n hint: 'hint',\n label: 'label',\n name: 'name',\n required: false,\n showRequired: false,\n showState: true,\n success: false,\n warning: false,\n options: ['one', 'two', 'three', 'four', 'five'],\n // inherited properties\n testId: 'test-story',\n style: {},\n};\n\nStory.argTypes = {};\n"],"mappings":";;;;;;;AAAA;AAEA;AAA4C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAE7B;EAAEA,KAAK,EAAE;AAAa,CAAC;AAAA;AAE/B,IAAMC,KAAK,GAAG,SAARA,KAAK,CAAIC,KAAK,EAAK;EAC9B,gBAA0B,IAAAC,eAAQ,EAAC,KAAK,CAAC;IAAA;IAAlCC,KAAK;IAAEC,QAAQ;EAEtB,IAAMC,YAAY,GAAG,SAAfA,YAAY,CAAIC,IAAI,EAAgB;IAAA;IACxCF,QAAQ,CAACE,IAAI,CAAC;IAAC,kCADcC,MAAM;MAANA,MAAM;IAAA;IAEnC,YAAAC,OAAO,EAACC,GAAG,kBAAC,yBAAyB,EAAEH,IAAI,SAAKC,MAAM,EAAC;EACzD,CAAC;EAED,IAAMG,WAAW,GAAG,SAAdA,WAAW;IAAA;IAAA,mCAAOH,MAAM;MAANA,MAAM;IAAA;IAAA,OAAK,aAAAC,OAAO,EAACC,GAAG,mBAAC,wBAAwB,SAAKF,MAAM,EAAC;EAAA;EAEnF,IAAMI,WAAW,GAAG,SAAdA,WAAW;IAAA;IAAA,mCAAOJ,MAAM;MAANA,MAAM;IAAA;IAAA,OAAK,aAAAC,OAAO,EAACC,GAAG,mBAAC,wBAAwB,SAAKF,MAAM,EAAC;EAAA;EAEnF,oBAAO,6BAAC,wBAAW,eAAKN,KAAK;IAAE,KAAK,EAAEE,KAAM;IAAC,QAAQ,EAAEE,YAAa;IAAC,OAAO,EAAEK,WAAY;IAAC,OAAO,EAAEC;EAAY,GAAG;AACrH,CAAC;AAAC;AAEFX,KAAK,CAACY,SAAS,GAAG,aAAa;AAE/BZ,KAAK,CAACa,IAAI,GAAG;EACXC,OAAO,EAAE,GAAG;EACZC,QAAQ,EAAE,KAAK;EACfC,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;EACrCC,WAAW,EAAE,sBAAsB;EACnCC,KAAK,EAAE,KAAK;EACZC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE,OAAO;EACdC,IAAI,EAAE,MAAM;EACZC,QAAQ,EAAE,KAAK;EACfC,YAAY,EAAE,KAAK;EACnBC,SAAS,EAAE,IAAI;EACfC,OAAO,EAAE,KAAK;EACdC,OAAO,EAAE,KAAK;EACdC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;EAChD;EACAC,MAAM,EAAE,YAAY;EACpBC,KAAK,EAAE,CAAC;AACV,CAAC;AAED7B,KAAK,CAAC8B,QAAQ,GAAG,CAAC,CAAC"}
@@ -66,6 +66,7 @@ var Modal = function Modal(_ref) {
66
66
  return function () {
67
67
  return document.removeEventListener('keydown', handleKeydown);
68
68
  };
69
+ // eslint-disable-next-line react-hooks/exhaustive-deps
69
70
  }, [visible]);
70
71
  (0, _react.useEffect)(function () {
71
72
  if (visible && !dataset) {
@@ -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 }, [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":"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"}
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":"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"}
@@ -10,7 +10,7 @@ var _react = _interopRequireWildcard(require("react"));
10
10
  var _helpers = require("../../helpers");
11
11
  var _Primitive = require("../Primitive");
12
12
  var _SelectModule = _interopRequireDefault(require("./Select.module.css"));
13
- var _excluded = ["disabled", "emptyOption", "options", "value", "values", "onChange", "onEnter", "onError", "onLeave"];
13
+ var _excluded = ["disabled", "disabledOptions", "emptyOption", "options", "value", "values", "onChange", "onEnter", "onError", "onLeave"];
14
14
  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); }
15
15
  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; }
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -24,6 +24,8 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
24
24
  var EMPTY = '';
25
25
  var Select = function Select(_ref) {
26
26
  var disabled = _ref.disabled,
27
+ _ref$disabledOptions = _ref.disabledOptions,
28
+ disabledOptions = _ref$disabledOptions === void 0 ? [] : _ref$disabledOptions,
27
29
  emptyOption = _ref.emptyOption,
28
30
  _ref$options = _ref.options,
29
31
  options = _ref$options === void 0 ? [] : _ref$options,
@@ -65,6 +67,7 @@ var Select = function Select(_ref) {
65
67
  }, emptyOption), options.map(function (option, index) {
66
68
  return /*#__PURE__*/_react.default.createElement(_Primitive.Primitive, {
67
69
  tag: "option",
70
+ disabled: disabledOptions[index],
68
71
  key: option,
69
72
  value: values[index] || option
70
73
  }, option);
@@ -74,6 +77,7 @@ exports.Select = Select;
74
77
  Select.displayName = 'Primitive:Input';
75
78
  Select.propTypes = {
76
79
  disabled: _propTypes.default.bool,
80
+ disabledOptions: _propTypes.default.arrayOf(_propTypes.default.bool),
77
81
  emptyOption: _propTypes.default.string,
78
82
  name: _propTypes.default.string.isRequired,
79
83
  options: _propTypes.default.arrayOf(_propTypes.default.string),
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","names":["EMPTY","Select","disabled","emptyOption","options","value","values","onChange","onEnter","onError","onLeave","others","useEffect","errors","getInputErrors","handleChange","event","React","createElement","Primitive","role","tag","target","onFocus","onBlur","className","styles","style","select","empty","map","option","index","displayName","propTypes","PropTypes","bool","string","name","isRequired","arrayOf","func"],"sources":["../../../src/primitives/Select/Select.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React, { useEffect } from 'react';\n\nimport { getInputErrors, styles } from '../../helpers';\nimport { Primitive } from '../Primitive';\nimport style from './Select.module.css';\n\nconst EMPTY = '';\n\nconst Select = ({\n disabled,\n emptyOption,\n options = [],\n value,\n values = [],\n onChange,\n onEnter,\n onError,\n onLeave,\n ...others\n}) => {\n useEffect(() => {\n const errors = getInputErrors({ ...others });\n if (errors && onError) onError(errors);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleChange = (value, event) => {\n onError && onError(getInputErrors({ ...others, value }));\n onChange && onChange(value, event);\n };\n\n return React.createElement(\n Primitive,\n {\n ...others,\n disabled,\n role: others.role || 'select',\n tag: 'select',\n value,\n ...(!disabled\n ? {\n onChange: (event) => handleChange(event.target.value, event),\n onFocus: onEnter,\n onBlur: onLeave,\n }\n : {}),\n className: styles(style.select, value === EMPTY && style.empty, others.className),\n },\n <>\n {emptyOption && (\n <Primitive tag=\"option\" value={EMPTY}>\n {emptyOption}\n </Primitive>\n )}\n {options.map((option, index) => (\n <Primitive tag=\"option\" key={option} value={values[index] || option}>\n {option}\n </Primitive>\n ))}\n </>,\n );\n};\n\nSelect.displayName = 'Primitive:Input';\n\nSelect.propTypes = {\n disabled: PropTypes.bool,\n emptyOption: PropTypes.string,\n name: PropTypes.string.isRequired,\n options: PropTypes.arrayOf(PropTypes.string),\n values: PropTypes.arrayOf(PropTypes.string),\n value: PropTypes.string,\n onChange: PropTypes.func,\n onEnter: PropTypes.func,\n onError: PropTypes.func,\n onLeave: PropTypes.func,\n};\n\nexport { Select };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","names":["EMPTY","Select","disabled","disabledOptions","emptyOption","options","value","values","onChange","onEnter","onError","onLeave","others","useEffect","errors","getInputErrors","handleChange","event","React","createElement","Primitive","role","tag","target","onFocus","onBlur","className","styles","style","select","empty","map","option","index","displayName","propTypes","PropTypes","bool","arrayOf","string","name","isRequired","func"],"sources":["../../../src/primitives/Select/Select.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React, { useEffect } from 'react';\n\nimport { getInputErrors, styles } from '../../helpers';\nimport { Primitive } from '../Primitive';\nimport style from './Select.module.css';\n\nconst EMPTY = '';\n\nconst Select = ({\n disabled,\n disabledOptions = [],\n emptyOption,\n options = [],\n value,\n values = [],\n onChange,\n onEnter,\n onError,\n onLeave,\n ...others\n}) => {\n useEffect(() => {\n const errors = getInputErrors({ ...others });\n if (errors && onError) onError(errors);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleChange = (value, event) => {\n onError && onError(getInputErrors({ ...others, value }));\n onChange && onChange(value, event);\n };\n\n return React.createElement(\n Primitive,\n {\n ...others,\n disabled,\n role: others.role || 'select',\n tag: 'select',\n value,\n ...(!disabled\n ? {\n onChange: (event) => handleChange(event.target.value, event),\n onFocus: onEnter,\n onBlur: onLeave,\n }\n : {}),\n className: styles(style.select, value === EMPTY && style.empty, others.className),\n },\n <>\n {emptyOption && (\n <Primitive tag=\"option\" value={EMPTY}>\n {emptyOption}\n </Primitive>\n )}\n {options.map((option, index) => (\n <Primitive tag=\"option\" disabled={disabledOptions[index]} key={option} value={values[index] || option}>\n {option}\n </Primitive>\n ))}\n </>,\n );\n};\n\nSelect.displayName = 'Primitive:Input';\n\nSelect.propTypes = {\n disabled: PropTypes.bool,\n disabledOptions: PropTypes.arrayOf(PropTypes.bool),\n emptyOption: PropTypes.string,\n name: PropTypes.string.isRequired,\n options: PropTypes.arrayOf(PropTypes.string),\n values: PropTypes.arrayOf(PropTypes.string),\n value: PropTypes.string,\n onChange: PropTypes.func,\n onEnter: PropTypes.func,\n onError: PropTypes.func,\n onLeave: PropTypes.func,\n};\n\nexport { Select };\n"],"mappings":"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"}
@@ -42,6 +42,7 @@ exports.Story = Story;
42
42
  Story.storyName = 'Select';
43
43
  Story.args = {
44
44
  disabled: false,
45
+ disabledOptions: [false, false, true],
45
46
  emptyOption: 'Select one option...',
46
47
  name: 'Select',
47
48
  options: ['one', 'two', 'three', 'four', 'five'],
@@ -1 +1 @@
1
- {"version":3,"file":"Select.stories.js","names":["title","Story","props","useState","value","setValue","handleChange","next","others","console","log","storyName","args","disabled","emptyOption","name","options","onEnter","onError","onLeave","testId","style","argTypes"],"sources":["../../../src/primitives/Select/Select.stories.jsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport { Select } from './Select';\n\nexport default { title: 'Primitives' };\n\nexport const Story = (props) => {\n const [value, setValue] = useState('');\n\n const handleChange = (next, ...others) => {\n setValue(next);\n console.log('<Select>::onChange', next, ...others);\n };\n\n return <Select {...props} value={value} onChange={handleChange} />;\n};\n\nStory.storyName = 'Select';\n\nStory.args = {\n disabled: false,\n emptyOption: 'Select one option...',\n name: 'Select',\n options: ['one', 'two', 'three', 'four', 'five'],\n value: '',\n onEnter: (...props) => console.log('<Select>::onEnter', ...props),\n onError: (...props) => console.log('<Select>::onError', ...props),\n onLeave: (...props) => console.log('<Select>::onLeave', ...props),\n // inherited properties\n testId: 'test-story',\n style: {},\n};\n\nStory.argTypes = {};\n"],"mappings":";;;;;;;AAAA;AAEA;AAAkC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAEnB;EAAEA,KAAK,EAAE;AAAa,CAAC;AAAA;AAE/B,IAAMC,KAAK,GAAG,SAARA,KAAK,CAAIC,KAAK,EAAK;EAC9B,gBAA0B,IAAAC,eAAQ,EAAC,EAAE,CAAC;IAAA;IAA/BC,KAAK;IAAEC,QAAQ;EAEtB,IAAMC,YAAY,GAAG,SAAfA,YAAY,CAAIC,IAAI,EAAgB;IAAA;IACxCF,QAAQ,CAACE,IAAI,CAAC;IAAC,kCADcC,MAAM;MAANA,MAAM;IAAA;IAEnC,YAAAC,OAAO,EAACC,GAAG,kBAAC,oBAAoB,EAAEH,IAAI,SAAKC,MAAM,EAAC;EACpD,CAAC;EAED,oBAAO,6BAAC,cAAM,eAAKN,KAAK;IAAE,KAAK,EAAEE,KAAM;IAAC,QAAQ,EAAEE;EAAa,GAAG;AACpE,CAAC;AAAC;AAEFL,KAAK,CAACU,SAAS,GAAG,QAAQ;AAE1BV,KAAK,CAACW,IAAI,GAAG;EACXC,QAAQ,EAAE,KAAK;EACfC,WAAW,EAAE,sBAAsB;EACnCC,IAAI,EAAE,QAAQ;EACdC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;EAChDZ,KAAK,EAAE,EAAE;EACTa,OAAO,EAAE;IAAA;IAAA,mCAAIf,KAAK;MAALA,KAAK;IAAA;IAAA,OAAK,aAAAO,OAAO,EAACC,GAAG,mBAAC,mBAAmB,SAAKR,KAAK,EAAC;EAAA;EACjEgB,OAAO,EAAE;IAAA;IAAA,mCAAIhB,KAAK;MAALA,KAAK;IAAA;IAAA,OAAK,aAAAO,OAAO,EAACC,GAAG,mBAAC,mBAAmB,SAAKR,KAAK,EAAC;EAAA;EACjEiB,OAAO,EAAE;IAAA;IAAA,mCAAIjB,KAAK;MAALA,KAAK;IAAA;IAAA,OAAK,aAAAO,OAAO,EAACC,GAAG,mBAAC,mBAAmB,SAAKR,KAAK,EAAC;EAAA;EACjE;EACAkB,MAAM,EAAE,YAAY;EACpBC,KAAK,EAAE,CAAC;AACV,CAAC;AAEDpB,KAAK,CAACqB,QAAQ,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"Select.stories.js","names":["title","Story","props","useState","value","setValue","handleChange","next","others","console","log","storyName","args","disabled","disabledOptions","emptyOption","name","options","onEnter","onError","onLeave","testId","style","argTypes"],"sources":["../../../src/primitives/Select/Select.stories.jsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport { Select } from './Select';\n\nexport default { title: 'Primitives' };\n\nexport const Story = (props) => {\n const [value, setValue] = useState('');\n\n const handleChange = (next, ...others) => {\n setValue(next);\n console.log('<Select>::onChange', next, ...others);\n };\n\n return <Select {...props} value={value} onChange={handleChange} />;\n};\n\nStory.storyName = 'Select';\n\nStory.args = {\n disabled: false,\n disabledOptions: [false, false, true],\n emptyOption: 'Select one option...',\n name: 'Select',\n options: ['one', 'two', 'three', 'four', 'five'],\n value: '',\n onEnter: (...props) => console.log('<Select>::onEnter', ...props),\n onError: (...props) => console.log('<Select>::onError', ...props),\n onLeave: (...props) => console.log('<Select>::onLeave', ...props),\n // inherited properties\n testId: 'test-story',\n style: {},\n};\n\nStory.argTypes = {};\n"],"mappings":";;;;;;;AAAA;AAEA;AAAkC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAEnB;EAAEA,KAAK,EAAE;AAAa,CAAC;AAAA;AAE/B,IAAMC,KAAK,GAAG,SAARA,KAAK,CAAIC,KAAK,EAAK;EAC9B,gBAA0B,IAAAC,eAAQ,EAAC,EAAE,CAAC;IAAA;IAA/BC,KAAK;IAAEC,QAAQ;EAEtB,IAAMC,YAAY,GAAG,SAAfA,YAAY,CAAIC,IAAI,EAAgB;IAAA;IACxCF,QAAQ,CAACE,IAAI,CAAC;IAAC,kCADcC,MAAM;MAANA,MAAM;IAAA;IAEnC,YAAAC,OAAO,EAACC,GAAG,kBAAC,oBAAoB,EAAEH,IAAI,SAAKC,MAAM,EAAC;EACpD,CAAC;EAED,oBAAO,6BAAC,cAAM,eAAKN,KAAK;IAAE,KAAK,EAAEE,KAAM;IAAC,QAAQ,EAAEE;EAAa,GAAG;AACpE,CAAC;AAAC;AAEFL,KAAK,CAACU,SAAS,GAAG,QAAQ;AAE1BV,KAAK,CAACW,IAAI,GAAG;EACXC,QAAQ,EAAE,KAAK;EACfC,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;EACrCC,WAAW,EAAE,sBAAsB;EACnCC,IAAI,EAAE,QAAQ;EACdC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;EAChDb,KAAK,EAAE,EAAE;EACTc,OAAO,EAAE;IAAA;IAAA,mCAAIhB,KAAK;MAALA,KAAK;IAAA;IAAA,OAAK,aAAAO,OAAO,EAACC,GAAG,mBAAC,mBAAmB,SAAKR,KAAK,EAAC;EAAA;EACjEiB,OAAO,EAAE;IAAA;IAAA,mCAAIjB,KAAK;MAALA,KAAK;IAAA;IAAA,OAAK,aAAAO,OAAO,EAACC,GAAG,mBAAC,mBAAmB,SAAKR,KAAK,EAAC;EAAA;EACjEkB,OAAO,EAAE;IAAA;IAAA,mCAAIlB,KAAK;MAALA,KAAK;IAAA;IAAA,OAAK,aAAAO,OAAO,EAACC,GAAG,mBAAC,mBAAmB,SAAKR,KAAK,EAAC;EAAA;EACjE;EACAmB,MAAM,EAAE,YAAY;EACpBC,KAAK,EAAE,CAAC;AACV,CAAC;AAEDrB,KAAK,CAACsB,QAAQ,GAAG,CAAC,CAAC"}
@@ -71,6 +71,42 @@ exports[`primitive:<Select> prop:disabled 1`] = `
71
71
  </DocumentFragment>
72
72
  `;
73
73
 
74
+ exports[`primitive:<Select> prop:disabledOptions 1`] = `
75
+ <DocumentFragment>
76
+ <select
77
+ class="select"
78
+ name="name"
79
+ >
80
+ <option
81
+ value="one"
82
+ >
83
+ one
84
+ </option>
85
+ <option
86
+ value="two"
87
+ >
88
+ two
89
+ </option>
90
+ <option
91
+ disabled=""
92
+ value="three"
93
+ >
94
+ three
95
+ </option>
96
+ <option
97
+ value="four"
98
+ >
99
+ four
100
+ </option>
101
+ <option
102
+ value="five"
103
+ >
104
+ five
105
+ </option>
106
+ </select>
107
+ </DocumentFragment>
108
+ `;
109
+
74
110
  exports[`primitive:<Select> prop:value 1`] = `
75
111
  <DocumentFragment>
76
112
  <select
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mirai/ui",
3
- "version": "1.0.228",
3
+ "version": "1.0.229",
4
4
  "repository": "git@gitlab.com:miraicorp/dev/frontend/ui.git",
5
5
  "author": "JΛVI <hello@soyjavi.com>",
6
6
  "license": "MIT",