@hitachivantara/uikit-react-core 5.15.0 → 5.17.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 (136) hide show
  1. package/dist/cjs/components/ActionBar/ActionBar.cjs +8 -7
  2. package/dist/cjs/components/ActionBar/ActionBar.cjs.map +1 -1
  3. package/dist/cjs/components/ActionBar/ActionBar.styles.cjs +16 -17
  4. package/dist/cjs/components/ActionBar/ActionBar.styles.cjs.map +1 -1
  5. package/dist/cjs/components/Pagination/Pagination.cjs +46 -45
  6. package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
  7. package/dist/cjs/components/Pagination/Pagination.styles.cjs +98 -160
  8. package/dist/cjs/components/Pagination/Pagination.styles.cjs.map +1 -1
  9. package/dist/cjs/components/Pagination/Select.cjs +2 -1
  10. package/dist/cjs/components/Pagination/Select.cjs.map +1 -1
  11. package/dist/cjs/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.cjs +30 -33
  12. package/dist/cjs/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.cjs.map +1 -1
  13. package/dist/cjs/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.styles.cjs +14 -0
  14. package/dist/cjs/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.styles.cjs.map +1 -0
  15. package/dist/cjs/components/QueryBuilder/QueryBuilder.cjs +6 -6
  16. package/dist/cjs/components/QueryBuilder/QueryBuilder.cjs.map +1 -1
  17. package/dist/cjs/components/QueryBuilder/{RuleGroup/RuleGroup.styles.cjs → QueryBuilder.styles.cjs} +48 -29
  18. package/dist/cjs/components/QueryBuilder/QueryBuilder.styles.cjs.map +1 -0
  19. package/dist/cjs/components/QueryBuilder/Rule/Rule.cjs +60 -61
  20. package/dist/cjs/components/QueryBuilder/Rule/Rule.cjs.map +1 -1
  21. package/dist/cjs/components/QueryBuilder/Rule/Rule.styles.cjs +10 -5
  22. package/dist/cjs/components/QueryBuilder/Rule/Rule.styles.cjs.map +1 -1
  23. package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.cjs +253 -0
  24. package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.cjs.map +1 -0
  25. package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.styles.cjs +40 -0
  26. package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.styles.cjs.map +1 -0
  27. package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/utils.cjs +37 -0
  28. package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/utils.cjs.map +1 -0
  29. package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.cjs +10 -6
  30. package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.cjs.map +1 -1
  31. package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.cjs +76 -82
  32. package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.cjs.map +1 -1
  33. package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/TextValue.cjs +33 -37
  34. package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/TextValue.cjs.map +1 -1
  35. package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/TextValue.styles.cjs +8 -3
  36. package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/TextValue.styles.cjs.map +1 -1
  37. package/dist/cjs/components/QueryBuilder/Rule/Value/Value.cjs +8 -5
  38. package/dist/cjs/components/QueryBuilder/Rule/Value/Value.cjs.map +1 -1
  39. package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.cjs +155 -166
  40. package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.cjs.map +1 -1
  41. package/dist/cjs/components/TimePicker/Placeholder.cjs +70 -0
  42. package/dist/cjs/components/TimePicker/Placeholder.cjs.map +1 -0
  43. package/dist/cjs/components/TimePicker/TimePicker.cjs +212 -0
  44. package/dist/cjs/components/TimePicker/TimePicker.cjs.map +1 -0
  45. package/dist/cjs/components/TimePicker/TimePicker.styles.cjs +53 -0
  46. package/dist/cjs/components/TimePicker/TimePicker.styles.cjs.map +1 -0
  47. package/dist/cjs/components/TimePicker/Unit/Unit.cjs +72 -0
  48. package/dist/cjs/components/TimePicker/Unit/Unit.cjs.map +1 -0
  49. package/dist/cjs/components/TimePicker/Unit/Unit.styles.cjs +56 -0
  50. package/dist/cjs/components/TimePicker/Unit/Unit.styles.cjs.map +1 -0
  51. package/dist/cjs/index.cjs +10 -6
  52. package/dist/cjs/index.cjs.map +1 -1
  53. package/dist/cjs/utils/classes.cjs +4 -3
  54. package/dist/cjs/utils/classes.cjs.map +1 -1
  55. package/dist/esm/components/ActionBar/ActionBar.js +11 -9
  56. package/dist/esm/components/ActionBar/ActionBar.js.map +1 -1
  57. package/dist/esm/components/ActionBar/ActionBar.styles.js +16 -15
  58. package/dist/esm/components/ActionBar/ActionBar.styles.js.map +1 -1
  59. package/dist/esm/components/Pagination/Pagination.js +50 -48
  60. package/dist/esm/components/Pagination/Pagination.js.map +1 -1
  61. package/dist/esm/components/Pagination/Pagination.styles.js +98 -158
  62. package/dist/esm/components/Pagination/Pagination.styles.js.map +1 -1
  63. package/dist/esm/components/Pagination/Select.js +2 -1
  64. package/dist/esm/components/Pagination/Select.js.map +1 -1
  65. package/dist/esm/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.js +31 -34
  66. package/dist/esm/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
  67. package/dist/esm/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.styles.js +14 -0
  68. package/dist/esm/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.styles.js.map +1 -0
  69. package/dist/esm/components/QueryBuilder/QueryBuilder.js +6 -6
  70. package/dist/esm/components/QueryBuilder/QueryBuilder.js.map +1 -1
  71. package/dist/esm/components/QueryBuilder/{RuleGroup/RuleGroup.styles.js → QueryBuilder.styles.js} +48 -29
  72. package/dist/esm/components/QueryBuilder/QueryBuilder.styles.js.map +1 -0
  73. package/dist/esm/components/QueryBuilder/Rule/Rule.js +61 -62
  74. package/dist/esm/components/QueryBuilder/Rule/Rule.js.map +1 -1
  75. package/dist/esm/components/QueryBuilder/Rule/Rule.styles.js +10 -5
  76. package/dist/esm/components/QueryBuilder/Rule/Rule.styles.js.map +1 -1
  77. package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.js +250 -0
  78. package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.js.map +1 -0
  79. package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.styles.js +40 -0
  80. package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.styles.js.map +1 -0
  81. package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/utils.js +35 -0
  82. package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/utils.js.map +1 -0
  83. package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.js +10 -6
  84. package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.js.map +1 -1
  85. package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.js +78 -84
  86. package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.js.map +1 -1
  87. package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/TextValue.js +34 -38
  88. package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/TextValue.js.map +1 -1
  89. package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/TextValue.styles.js +8 -3
  90. package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/TextValue.styles.js.map +1 -1
  91. package/dist/esm/components/QueryBuilder/Rule/Value/Value.js +7 -4
  92. package/dist/esm/components/QueryBuilder/Rule/Value/Value.js.map +1 -1
  93. package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.js +157 -168
  94. package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.js.map +1 -1
  95. package/dist/esm/components/TimePicker/Placeholder.js +70 -0
  96. package/dist/esm/components/TimePicker/Placeholder.js.map +1 -0
  97. package/dist/esm/components/TimePicker/TimePicker.js +213 -0
  98. package/dist/esm/components/TimePicker/TimePicker.js.map +1 -0
  99. package/dist/esm/components/TimePicker/TimePicker.styles.js +53 -0
  100. package/dist/esm/components/TimePicker/TimePicker.styles.js.map +1 -0
  101. package/dist/esm/components/TimePicker/Unit/Unit.js +72 -0
  102. package/dist/esm/components/TimePicker/Unit/Unit.js.map +1 -0
  103. package/dist/esm/components/TimePicker/Unit/Unit.styles.js +56 -0
  104. package/dist/esm/components/TimePicker/Unit/Unit.styles.js.map +1 -0
  105. package/dist/esm/index.js +238 -234
  106. package/dist/esm/index.js.map +1 -1
  107. package/dist/esm/utils/classes.js +4 -3
  108. package/dist/esm/utils/classes.js.map +1 -1
  109. package/dist/types/index.d.ts +194 -82
  110. package/package.json +5 -5
  111. package/dist/cjs/components/ActionBar/actionBarClasses.cjs +0 -8
  112. package/dist/cjs/components/ActionBar/actionBarClasses.cjs.map +0 -1
  113. package/dist/cjs/components/Pagination/paginationClasses.cjs +0 -8
  114. package/dist/cjs/components/Pagination/paginationClasses.cjs.map +0 -1
  115. package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/numericValueClasses.cjs +0 -8
  116. package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/numericValueClasses.cjs.map +0 -1
  117. package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/textValueClasses.cjs +0 -8
  118. package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/textValueClasses.cjs.map +0 -1
  119. package/dist/cjs/components/QueryBuilder/Rule/ruleClasses.cjs +0 -8
  120. package/dist/cjs/components/QueryBuilder/Rule/ruleClasses.cjs.map +0 -1
  121. package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.styles.cjs.map +0 -1
  122. package/dist/cjs/components/QueryBuilder/queryBuilderClasses.cjs +0 -8
  123. package/dist/cjs/components/QueryBuilder/queryBuilderClasses.cjs.map +0 -1
  124. package/dist/esm/components/ActionBar/actionBarClasses.js +0 -8
  125. package/dist/esm/components/ActionBar/actionBarClasses.js.map +0 -1
  126. package/dist/esm/components/Pagination/paginationClasses.js +0 -8
  127. package/dist/esm/components/Pagination/paginationClasses.js.map +0 -1
  128. package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/numericValueClasses.js +0 -8
  129. package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/numericValueClasses.js.map +0 -1
  130. package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/textValueClasses.js +0 -8
  131. package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/textValueClasses.js.map +0 -1
  132. package/dist/esm/components/QueryBuilder/Rule/ruleClasses.js +0 -8
  133. package/dist/esm/components/QueryBuilder/Rule/ruleClasses.js.map +0 -1
  134. package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.styles.js.map +0 -1
  135. package/dist/esm/components/QueryBuilder/queryBuilderClasses.js +0 -8
  136. package/dist/esm/components/QueryBuilder/queryBuilderClasses.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RuleGroup.cjs","sources":["../../../../../src/components/QueryBuilder/RuleGroup/RuleGroup.tsx"],"sourcesContent":["import { useCallback, useContext } from \"react\";\nimport { Add, Delete, Info } from \"@hitachivantara/uikit-react-icons\";\nimport {\n HvButton,\n HvEmptyState,\n HvGrid,\n HvMultiButton,\n HvTypography,\n} from \"@core/components\";\nimport { withTooltip } from \"@core/hocs\";\nimport { ClassNames } from \"@emotion/react\";\nimport { Rule } from \"../Rule\";\nimport queryBuilderClasses, {\n HvQueryBuilderClasses,\n} from \"../queryBuilderClasses\";\nimport { QueryBuilderContext } from \"../Context\";\nimport { styles } from \"./RuleGroup.styles\";\n\nexport interface RuleGroupProps {\n /**\n * Override or extend the styles applied to the component.\n * See CSS API tab for more details.\n */\n classes?: HvQueryBuilderClasses;\n id?: number;\n level?: number;\n combinator?: string;\n rules?: any[];\n}\n\nexport const RuleGroup = ({\n level = 0,\n id,\n combinator = \"and\",\n rules = [],\n classes,\n}: RuleGroupProps) => {\n const context = useContext(QueryBuilderContext);\n\n const { dispatchAction, askAction, maxDepth, combinators, labels, readOnly } =\n context;\n const normalizedMaxDepth = maxDepth - 1;\n\n const actionButtons = (\n <ClassNames>\n {({ css, cx }) => (\n <>\n <div\n className={cx(\n queryBuilderClasses.buttonBackground,\n css(styles.buttonBackground),\n classes?.buttonBackground\n )}\n >\n <HvButton\n variant=\"secondarySubtle\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n disabled={readOnly}\n startIcon={<Add />}\n >\n {level === 0 && labels.query?.addRule?.label != null\n ? labels.query?.addRule?.label\n : labels.group.addRule.label}\n </HvButton>\n </div>\n {level <= normalizedMaxDepth && (\n <div\n className={cx(\n queryBuilderClasses.buttonBackground,\n css(styles.buttonBackground),\n classes?.buttonBackground\n )}\n >\n <HvButton\n variant=\"secondarySubtle\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n disabled={readOnly}\n startIcon={<Add />}\n >\n {level === 0 && labels.query?.addGroup?.label != null\n ? labels.query?.addGroup?.label\n : labels.group.addGroup.label}\n </HvButton>\n </div>\n )}\n </>\n )}\n </ClassNames>\n );\n\n const DeleteIcon = withTooltip(\n () => (\n <ClassNames>\n {({ css, cx }) => (\n <Delete\n className={\n readOnly\n ? cx(\n queryBuilderClasses.topRemoveButtonDisabled,\n css(styles.topRemoveButtonDisabled),\n classes?.topRemoveButtonDisabled\n )\n : \"\"\n }\n />\n )}\n </ClassNames>\n ),\n level === 0 && labels.query?.delete?.tooltip\n ? labels.query?.delete?.tooltip\n : labels.group.delete.tooltip,\n \"top\"\n );\n\n const onClickCombinator = useCallback(\n (item) => {\n dispatchAction({\n type: \"set-combinator\",\n id,\n combinator: item.operand,\n });\n },\n [dispatchAction, id]\n );\n\n return (\n <ClassNames>\n {({ css, cx }) => (\n <div\n className={cx(\n queryBuilderClasses.root,\n level === 0\n ? queryBuilderClasses.topGroup\n : queryBuilderClasses.subGroup,\n css(styles.root),\n level === 0 ? css(styles.topGroup) : css(styles.subGroup),\n classes?.root,\n level === 0 ? classes?.topGroup : classes?.subGroup\n )}\n >\n <HvGrid container>\n <HvGrid item>\n <HvMultiButton\n className={cx(\n queryBuilderClasses.combinator,\n queryBuilderClasses.topCombinator,\n css(styles.combinator),\n css(styles.topCombinator),\n classes?.combinator,\n classes?.topCombinator\n )}\n disabled={readOnly}\n >\n {combinators &&\n combinators.map((item) => (\n <HvButton\n key={item.operand}\n className={cx(\n queryBuilderClasses.combinatorButton,\n css(styles.combinatorButton),\n classes?.combinatorButton\n )}\n selected={item.operand === combinator}\n onClick={() => item.operand && onClickCombinator(item)}\n disabled={readOnly}\n size=\"xs\"\n >\n {item.label}\n </HvButton>\n ))}\n </HvMultiButton>\n </HvGrid>\n <HvGrid item>\n <div\n className={cx(\n queryBuilderClasses.buttonBackground,\n queryBuilderClasses.topRemoveButton,\n css(styles.buttonBackground),\n css(styles.topRemoveButton),\n classes?.buttonBackground,\n classes?.topRemoveButton\n )}\n >\n <HvButton\n icon\n className={cx(\n queryBuilderClasses.removeButton,\n css(styles.removeButton),\n classes?.removeButton\n )}\n onClick={() => {\n askAction({\n actions: [{ type: \"remove-node\", id }],\n dialog:\n level === 0 && labels.query?.delete != null\n ? labels.query.delete\n : labels.group.delete,\n });\n }}\n aria-label={\n level === 0 && labels.query?.delete?.ariaLabel\n ? labels.query?.delete?.ariaLabel\n : labels.group.delete.ariaLabel\n }\n disabled={readOnly}\n variant=\"secondaryGhost\"\n >\n <DeleteIcon />\n </HvButton>\n </div>\n </HvGrid>\n </HvGrid>\n {rules?.length > 0 && (\n <div\n className={cx(\n queryBuilderClasses.rulesContainer,\n level > 0 && queryBuilderClasses.subRulesContainer,\n level === 0 && queryBuilderClasses.topRulesContainer,\n css(styles.rulesContainer),\n level > 0 && css(styles.subRulesContainer),\n level === 0 && css(styles.topRulesContainer),\n classes?.rulesContainer,\n level > 0 && classes?.subRulesContainer,\n level === 0 && classes?.topRulesContainer\n )}\n >\n {rules.map((rule, index) => {\n if (\"combinator\" in rule) {\n return (\n <RuleGroup\n key={rule.id ?? index}\n level={level + 1}\n {...rule}\n id={rule.id}\n classes={classes}\n />\n );\n }\n\n const isInvalid =\n combinator === \"and\" &&\n rules.some((r, i) => {\n if (\"attribute\" in r) {\n if (\n r.attribute === rule.attribute &&\n r.id !== rule.id &&\n i < index\n ) {\n return true;\n }\n }\n return false;\n });\n\n return (\n <Rule\n key={rule.id ?? index}\n {...rule}\n isInvalid={isInvalid}\n id={rule.id}\n combinator={combinator}\n />\n );\n })}\n </div>\n )}\n {rules?.length === 0 && (\n <HvEmptyState\n title={labels.empty?.title}\n message={\n <>\n <HvTypography\n variant=\"link\"\n component=\"a\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n style={{ cursor: \"pointer\", textDecoration: \"underline\" }}\n >\n {`${labels.empty?.createCondition}`}\n </HvTypography>\n {level <= normalizedMaxDepth && (\n <>\n {`${labels.empty?.spacer}`}\n <HvTypography\n variant=\"link\"\n component=\"a\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n style={{\n cursor: \"pointer\",\n textDecoration: \"underline\",\n }}\n >\n {`${labels.empty?.createGroup}`}\n </HvTypography>\n </>\n )}\n </>\n }\n icon={<Info />}\n />\n )}\n <HvGrid container>\n <HvGrid\n item\n className={cx(\n queryBuilderClasses.actionButtonContainer,\n queryBuilderClasses.topActionButtonContainer,\n css(styles.actionButtonContainer),\n css(styles.topActionButtonContainer),\n classes?.actionButtonContainer,\n classes?.topActionButtonContainer\n )}\n >\n {actionButtons}\n </HvGrid>\n </HvGrid>\n </div>\n )}\n </ClassNames>\n );\n};\n"],"names":["RuleGroup","level","id","combinator","rules","classes","context","useContext","QueryBuilderContext","dispatchAction","askAction","maxDepth","combinators","labels","readOnly","normalizedMaxDepth","actionButtons","ClassNames","children","css","cx","_Fragment","_jsx","className","queryBuilderClasses","buttonBackground","styles","HvButton","variant","onClick","type","disabled","startIcon","Add","query","addRule","label","group","addGroup","DeleteIcon","withTooltip","Delete","topRemoveButtonDisabled","delete","tooltip","onClickCombinator","useCallback","item","operand","root","topGroup","subGroup","_jsxs","HvGrid","container","HvMultiButton","topCombinator","map","combinatorButton","selected","size","topRemoveButton","icon","removeButton","actions","dialog","ariaLabel","length","rulesContainer","subRulesContainer","topRulesContainer","rule","index","isInvalid","some","r","i","attribute","Rule","HvEmptyState","title","empty","message","HvTypography","component","style","cursor","textDecoration","createCondition","spacer","createGroup","Info","actionButtonContainer","topActionButtonContainer"],"mappings":"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"}
1
+ {"version":3,"file":"RuleGroup.cjs","sources":["../../../../../src/components/QueryBuilder/RuleGroup/RuleGroup.tsx"],"sourcesContent":["import { useCallback, useContext } from \"react\";\n\nimport { Add, Delete, Info } from \"@hitachivantara/uikit-react-icons\";\n\nimport {\n HvButton,\n HvEmptyState,\n HvGrid,\n HvMultiButton,\n HvTypography,\n} from \"@core/components\";\nimport { withTooltip } from \"@core/hocs\";\n\nimport { Rule } from \"../Rule\";\nimport { QueryBuilderContext } from \"../Context\";\nimport { HvQueryBuilderClasses } from \"../QueryBuilder\";\nimport { useClasses } from \"../QueryBuilder.styles\";\n\nexport interface RuleGroupProps {\n /**\n * Override or extend the styles applied to the component.\n * See CSS API tab for more details.\n */\n classes?: HvQueryBuilderClasses;\n id?: number;\n level?: number;\n combinator?: string;\n rules?: any[];\n}\n\nexport const RuleGroup = ({\n level = 0,\n id,\n combinator = \"and\",\n rules = [],\n classes: classesProp = {},\n}: RuleGroupProps) => {\n const { classes, cx } = useClasses(classesProp);\n\n const context = useContext(QueryBuilderContext);\n\n const { dispatchAction, askAction, maxDepth, combinators, labels, readOnly } =\n context;\n const normalizedMaxDepth = maxDepth - 1;\n\n const actionButtons = (\n <>\n <div className={classes.buttonBackground}>\n <HvButton\n variant=\"secondarySubtle\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n disabled={readOnly}\n startIcon={<Add />}\n >\n {level === 0 && labels.query?.addRule?.label != null\n ? labels.query?.addRule?.label\n : labels.group.addRule.label}\n </HvButton>\n </div>\n {level <= normalizedMaxDepth && (\n <div className={classes.buttonBackground}>\n <HvButton\n variant=\"secondarySubtle\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n disabled={readOnly}\n startIcon={<Add />}\n >\n {level === 0 && labels.query?.addGroup?.label != null\n ? labels.query?.addGroup?.label\n : labels.group.addGroup.label}\n </HvButton>\n </div>\n )}\n </>\n );\n\n const DeleteIcon = withTooltip(\n () => (\n <Delete\n className={cx({\n [classes.topRemoveButtonDisabled]: readOnly,\n })}\n />\n ),\n level === 0 && labels.query?.delete?.tooltip\n ? labels.query?.delete?.tooltip\n : labels.group.delete.tooltip,\n \"top\"\n );\n\n const onClickCombinator = useCallback(\n (item) => {\n dispatchAction({\n type: \"set-combinator\",\n id,\n combinator: item.operand,\n });\n },\n [dispatchAction, id]\n );\n\n return (\n <div\n className={cx(classes.root, {\n [classes.topGroup]: level === 0,\n [classes.subGroup]: !(level === 0),\n })}\n >\n <HvGrid container>\n <HvGrid item>\n <HvMultiButton\n className={cx(classes.combinator, classes.topCombinator)}\n disabled={readOnly}\n >\n {combinators &&\n combinators.map((item) => (\n <HvButton\n key={item.operand}\n className={classes.combinatorButton}\n selected={item.operand === combinator}\n onClick={() => item.operand && onClickCombinator(item)}\n disabled={readOnly}\n size=\"xs\"\n >\n {item.label}\n </HvButton>\n ))}\n </HvMultiButton>\n </HvGrid>\n <HvGrid item>\n <div\n className={cx(classes.buttonBackground, classes.topRemoveButton)}\n >\n <HvButton\n icon\n className={classes.removeButton}\n onClick={() => {\n askAction({\n actions: [{ type: \"remove-node\", id }],\n dialog:\n level === 0 && labels.query?.delete != null\n ? labels.query.delete\n : labels.group.delete,\n });\n }}\n aria-label={\n level === 0 && labels.query?.delete?.ariaLabel\n ? labels.query?.delete?.ariaLabel\n : labels.group.delete.ariaLabel\n }\n disabled={readOnly}\n variant=\"secondaryGhost\"\n >\n <DeleteIcon />\n </HvButton>\n </div>\n </HvGrid>\n </HvGrid>\n {rules?.length > 0 && (\n <div\n className={cx(classes.rulesContainer, {\n [classes.subRulesContainer]: level > 0,\n [classes.topRulesContainer]: level === 0,\n })}\n >\n {rules.map((rule, index) => {\n if (\"combinator\" in rule) {\n return (\n <RuleGroup\n key={rule.id ?? index}\n level={level + 1}\n {...rule}\n id={rule.id}\n classes={classes}\n />\n );\n }\n\n const isInvalid =\n combinator === \"and\" &&\n rules.some((r, i) => {\n if (\"attribute\" in r) {\n if (\n r.attribute === rule.attribute &&\n r.id !== rule.id &&\n i < index\n ) {\n return true;\n }\n }\n return false;\n });\n\n return (\n <Rule\n key={rule.id ?? index}\n {...rule}\n isInvalid={isInvalid}\n id={rule.id}\n combinator={combinator}\n />\n );\n })}\n </div>\n )}\n {rules?.length === 0 && (\n <HvEmptyState\n title={labels.empty?.title}\n message={\n <>\n <HvTypography\n variant=\"link\"\n component=\"a\"\n onClick={() => {\n dispatchAction({ type: \"add-rule\", id });\n }}\n style={{ cursor: \"pointer\", textDecoration: \"underline\" }}\n >\n {`${labels.empty?.createCondition}`}\n </HvTypography>\n {level <= normalizedMaxDepth && (\n <>\n {`${labels.empty?.spacer}`}\n <HvTypography\n variant=\"link\"\n component=\"a\"\n onClick={() => {\n dispatchAction({ type: \"add-group\", id });\n }}\n style={{\n cursor: \"pointer\",\n textDecoration: \"underline\",\n }}\n >\n {`${labels.empty?.createGroup}`}\n </HvTypography>\n </>\n )}\n </>\n }\n icon={<Info />}\n />\n )}\n <HvGrid container>\n <HvGrid\n item\n className={cx(\n classes.actionButtonContainer,\n classes.topActionButtonContainer\n )}\n >\n {actionButtons}\n </HvGrid>\n </HvGrid>\n </div>\n );\n};\n"],"names":["RuleGroup","level","id","combinator","rules","classes","classesProp","cx","useClasses","context","useContext","QueryBuilderContext","dispatchAction","askAction","maxDepth","combinators","labels","readOnly","normalizedMaxDepth","actionButtons","_Fragment","children","_jsx","className","buttonBackground","HvButton","variant","onClick","type","disabled","startIcon","Add","query","addRule","label","group","addGroup","DeleteIcon","withTooltip","Delete","topRemoveButtonDisabled","delete","tooltip","onClickCombinator","useCallback","item","operand","root","topGroup","subGroup","_jsxs","HvGrid","container","HvMultiButton","topCombinator","map","combinatorButton","selected","size","topRemoveButton","icon","removeButton","actions","dialog","ariaLabel","length","rulesContainer","subRulesContainer","topRulesContainer","rule","index","isInvalid","some","r","i","attribute","Rule","HvEmptyState","title","empty","message","HvTypography","component","style","cursor","textDecoration","createCondition","spacer","createGroup","Info","actionButtonContainer","topActionButtonContainer"],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const React = require("react");
4
+ const datepicker = require("@react-aria/datepicker");
5
+ const jsxRuntime = require("@emotion/react/jsx-runtime");
6
+ const getDateValue = (date) => {
7
+ if (!date)
8
+ return "";
9
+ const {
10
+ hour,
11
+ minute,
12
+ second
13
+ } = date;
14
+ return [hour, minute, second].map((el) => String(el).padStart(2, "0")).join(":");
15
+ };
16
+ const PlaceholderSegment = ({
17
+ segment,
18
+ state,
19
+ placeholder
20
+ }) => {
21
+ const ref = React.useRef(null);
22
+ const {
23
+ segmentProps
24
+ } = datepicker.useDateSegment(segment, state, ref);
25
+ return /* @__PURE__ */ jsxRuntime.jsx("div", {
26
+ ref,
27
+ ...segmentProps,
28
+ children: (() => {
29
+ if (segment.type === "literal")
30
+ return segment.text;
31
+ if (segment.isPlaceholder)
32
+ return placeholder ?? segment.text;
33
+ return segment.text.padStart(2, "0");
34
+ })()
35
+ });
36
+ };
37
+ const Placeholder = React.forwardRef((props, ref) => {
38
+ const {
39
+ name,
40
+ state,
41
+ placeholders,
42
+ onKeyDown,
43
+ ...others
44
+ } = props;
45
+ const {
46
+ value,
47
+ segments
48
+ } = state;
49
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {
50
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", {
51
+ ref,
52
+ onKeyDown: (event) => {
53
+ event.stopPropagation();
54
+ onKeyDown == null ? void 0 : onKeyDown(event);
55
+ },
56
+ ...others,
57
+ children: [name && /* @__PURE__ */ jsxRuntime.jsx("input", {
58
+ type: "hidden",
59
+ name,
60
+ value: getDateValue(value)
61
+ }), segments.map((segment, i) => /* @__PURE__ */ jsxRuntime.jsx(PlaceholderSegment, {
62
+ segment,
63
+ state,
64
+ placeholder: placeholders[segment.type]
65
+ }, i))]
66
+ })
67
+ });
68
+ });
69
+ exports.Placeholder = Placeholder;
70
+ //# sourceMappingURL=Placeholder.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Placeholder.cjs","sources":["../../../../src/components/TimePicker/Placeholder.tsx"],"sourcesContent":["import { forwardRef, useRef } from \"react\";\nimport { DateFieldState, DateSegment } from \"@react-stately/datepicker\";\nimport { useDateSegment } from \"@react-aria/datepicker\";\nimport { HvBaseProps } from \"@core/types\";\n\n/** Convert `Date` into `hh:mm:ss` format */\nconst getDateValue = (date) => {\n if (!date) return \"\";\n const { hour, minute, second } = date;\n\n return [hour, minute, second]\n .map((el) => String(el).padStart(2, \"0\"))\n .join(\":\");\n};\n\nconst PlaceholderSegment = ({\n segment,\n state,\n placeholder,\n}: {\n segment: DateSegment;\n state: DateFieldState;\n placeholder: string;\n}) => {\n const ref = useRef(null);\n const { segmentProps } = useDateSegment(segment, state, ref);\n\n return (\n <div ref={ref} {...segmentProps}>\n {(() => {\n if (segment.type === \"literal\") return segment.text;\n if (segment.isPlaceholder) return placeholder ?? segment.text;\n return segment.text.padStart(2, \"0\");\n })()}\n </div>\n );\n};\n\ninterface PlaceholderProps extends HvBaseProps<HTMLDivElement> {\n name?: string;\n state: DateFieldState;\n placeholders: { hour?: string; minute?: string; second?: string };\n}\n\nexport const Placeholder = forwardRef<HTMLDivElement, PlaceholderProps>(\n (props, ref) => {\n const { name, state, placeholders, onKeyDown, ...others } = props;\n const { value, segments } = state;\n\n return (\n <>\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n <div\n ref={ref}\n onKeyDown={(event) => {\n // stop ArrowDown from opening dropdown\n event.stopPropagation();\n onKeyDown?.(event);\n }}\n {...others}\n >\n {name && (\n <input type=\"hidden\" name={name} value={getDateValue(value)} />\n )}\n {segments.map((segment, i) => (\n <PlaceholderSegment\n key={i}\n segment={segment}\n state={state}\n placeholder={placeholders[segment.type]}\n />\n ))}\n </div>\n </>\n );\n }\n);\n"],"names":["getDateValue","date","hour","minute","second","map","el","String","padStart","join","PlaceholderSegment","segment","state","placeholder","ref","useRef","segmentProps","useDateSegment","children","type","text","isPlaceholder","Placeholder","forwardRef","props","name","placeholders","onKeyDown","others","value","segments","_Fragment","event","stopPropagation","_jsx","i"],"mappings":";;;;;AAMA,MAAMA,eAAgBC,CAAS,SAAA;AAC7B,MAAI,CAACA;AAAa,WAAA;AACZ,QAAA;AAAA,IAAEC;AAAAA,IAAMC;AAAAA,IAAQC;AAAAA,EAAWH,IAAAA;AAEjC,SAAO,CAACC,MAAMC,QAAQC,MAAM,EACzBC,IAAKC,CAAOC,OAAAA,OAAOD,EAAE,EAAEE,SAAS,GAAG,GAAG,CAAC,EACvCC,KAAK,GAAG;AACb;AAEA,MAAMC,qBAAqBA,CAAC;AAAA,EAC1BC;AAAAA,EACAC;AAAAA,EACAC;AAKF,MAAM;AACEC,QAAAA,MAAMC,aAAO,IAAI;AACjB,QAAA;AAAA,IAAEC;AAAAA,EAAiBC,IAAAA,0BAAeN,SAASC,OAAOE,GAAG;AAE3D,wCACE,OAAA;AAAA,IAAKA;AAAAA,IAAS,GAAKE;AAAAA,IAAYE,WAC3B,MAAM;AACN,UAAIP,QAAQQ,SAAS;AAAW,eAAOR,QAAQS;AAC/C,UAAIT,QAAQU;AAAe,eAAOR,eAAeF,QAAQS;AACzD,aAAOT,QAAQS,KAAKZ,SAAS,GAAG,GAAG;AAAA,IAAA,GAClC;AAAA,EAAA,CACA;AAET;AAQO,MAAMc,cAAcC,MAAAA,WACzB,CAACC,OAAOV,QAAQ;AACR,QAAA;AAAA,IAAEW;AAAAA,IAAMb;AAAAA,IAAOc;AAAAA,IAAcC;AAAAA,IAAW,GAAGC;AAAAA,EAAWJ,IAAAA;AACtD,QAAA;AAAA,IAAEK;AAAAA,IAAOC;AAAAA,EAAalB,IAAAA;AAE5B,wCACEmB,WAAAA,UAAA;AAAA,IAAAb,0CAEE,OAAA;AAAA,MACEJ;AAAAA,MACAa,WAAYK,CAAU,UAAA;AAEpBA,cAAMC,gBAAgB;AACtBN,+CAAYK;AAAAA,MACd;AAAA,MAAE,GACEJ;AAAAA,MAAMV,UAAA,CAETO,QACCS,2BAAAA,IAAA,SAAA;AAAA,QAAOf,MAAK;AAAA,QAASM;AAAAA,QAAYI,OAAO7B,aAAa6B,KAAK;AAAA,MAAA,CAAI,GAE/DC,SAASzB,IAAI,CAACM,SAASwB,qCACrBzB,oBAAkB;AAAA,QAEjBC;AAAAA,QACAC;AAAAA,QACAC,aAAaa,aAAaf,QAAQQ,IAAI;AAAA,MAAA,GAHjCgB,CAIN,CACF,CAAC;AAAA,IAAA,CACC;AAAA,EAAA,CACL;AAEN,CACF;;"}
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const React = require("react");
4
+ const date = require("@internationalized/date");
5
+ const datepicker$1 = require("@react-aria/datepicker");
6
+ const datepicker = require("@react-stately/datepicker");
7
+ const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
8
+ require("@hitachivantara/uikit-styles");
9
+ const Placeholder = require("./Placeholder.cjs");
10
+ const TimePicker_styles = require("./TimePicker.styles.cjs");
11
+ const jsxRuntime = require("@emotion/react/jsx-runtime");
12
+ const useUniqueId = require("../../hooks/useUniqueId.cjs");
13
+ const Unit = require("./Unit/Unit.cjs");
14
+ const useControlled = require("../../hooks/useControlled.cjs");
15
+ const setId = require("../../utils/setId.cjs");
16
+ const FormElement = require("../Forms/FormElement/FormElement.cjs");
17
+ const Label = require("../Forms/Label/Label.cjs");
18
+ const InfoMessage = require("../Forms/InfoMessage/InfoMessage.cjs");
19
+ const BaseDropdown = require("../BaseDropdown/BaseDropdown.cjs");
20
+ const WarningText = require("../Forms/WarningText/WarningText.cjs");
21
+ const toTime = (value) => {
22
+ if (!value)
23
+ return void 0;
24
+ const {
25
+ hours,
26
+ minutes,
27
+ seconds
28
+ } = value;
29
+ return new date.Time(hours, minutes, seconds);
30
+ };
31
+ const getFormat = (timeFormat) => {
32
+ if (timeFormat == null)
33
+ return 24;
34
+ return timeFormat === "12" ? 12 : 24;
35
+ };
36
+ const HvTimePicker = (props) => {
37
+ const {
38
+ classes: classesProp = {},
39
+ className,
40
+ id: idProp,
41
+ name,
42
+ required = false,
43
+ disabled = false,
44
+ readOnly = false,
45
+ label,
46
+ "aria-label": ariaLabel,
47
+ "aria-labelledby": ariaLabelledBy,
48
+ description,
49
+ "aria-describedby": ariaDescribedBy,
50
+ status,
51
+ statusMessage,
52
+ "aria-errormessage": ariaErrorMessage,
53
+ placeholder,
54
+ hoursPlaceholder = "hh",
55
+ minutesPlaceholder = "mm",
56
+ secondsPlaceholder = "ss",
57
+ value: valueProp,
58
+ defaultValue: defaultValueProp,
59
+ timeFormat,
60
+ showSeconds,
61
+ disableExpand,
62
+ locale = "en",
63
+ onToggle,
64
+ onChange,
65
+ // misc properties:
66
+ disablePortal = true,
67
+ escapeWithReference = true,
68
+ dropdownProps,
69
+ ...others
70
+ } = props;
71
+ const id = useUniqueId.default(idProp, "hvtimepicker");
72
+ const ref = React.useRef(null);
73
+ const {
74
+ classes,
75
+ cx
76
+ } = TimePicker_styles.useClasses(classesProp);
77
+ const stateProps = {
78
+ value: toTime(valueProp),
79
+ defaultValue: toTime(defaultValueProp),
80
+ label,
81
+ locale,
82
+ isRequired: required,
83
+ isReadOnly: readOnly,
84
+ isDisabled: disabled,
85
+ granularity: "second",
86
+ hourCycle: getFormat(timeFormat),
87
+ onChange: (value) => {
88
+ const {
89
+ hour: hours,
90
+ minute: minutes,
91
+ second: seconds
92
+ } = value;
93
+ onChange == null ? void 0 : onChange({
94
+ hours,
95
+ minutes,
96
+ seconds
97
+ });
98
+ }
99
+ };
100
+ const state = datepicker.useTimeFieldState(stateProps);
101
+ const {
102
+ labelProps,
103
+ fieldProps
104
+ } = datepicker$1.useTimeField({
105
+ ...stateProps,
106
+ id,
107
+ "aria-label": ariaLabel,
108
+ "aria-labelledby": ariaLabelledBy,
109
+ "aria-describedby": ariaDescribedBy
110
+ }, state, ref);
111
+ const [open, setOpen] = React.useState(false);
112
+ const [validationMessage] = useControlled.useControlled(statusMessage, "Required");
113
+ const [validationState] = useControlled.useControlled(status, "standBy");
114
+ const placeholders = React.useMemo(() => ({
115
+ hour: hoursPlaceholder,
116
+ minute: minutesPlaceholder,
117
+ second: secondsPlaceholder
118
+ }), [hoursPlaceholder, minutesPlaceholder, secondsPlaceholder]);
119
+ const canShowError = ariaErrorMessage == null && (status !== void 0 && statusMessage !== void 0 || status === void 0 && required);
120
+ const isStateInvalid = validationState === "invalid";
121
+ const errorMessageId = isStateInvalid ? canShowError ? setId.setId(id, "error") : ariaErrorMessage : void 0;
122
+ return /* @__PURE__ */ jsxRuntime.jsxs(FormElement.HvFormElement, {
123
+ name,
124
+ required,
125
+ disabled,
126
+ status: validationState,
127
+ className: cx(classes.root, className),
128
+ ...others,
129
+ children: [(label || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", {
130
+ className: classes.labelContainer,
131
+ children: [label && /* @__PURE__ */ jsxRuntime.jsx(Label.HvLabel, {
132
+ label,
133
+ className: classes.label,
134
+ ...labelProps
135
+ }), description && /* @__PURE__ */ jsxRuntime.jsx(InfoMessage.HvInfoMessage, {
136
+ className: classes.description,
137
+ children: description
138
+ })]
139
+ }), /* @__PURE__ */ jsxRuntime.jsx(BaseDropdown.HvBaseDropdown, {
140
+ role: "combobox",
141
+ variableWidth: true,
142
+ disabled,
143
+ readOnly,
144
+ placeholder: placeholder && !state.value ? placeholder : /* @__PURE__ */ jsxRuntime.jsx(Placeholder.Placeholder, {
145
+ ref,
146
+ name,
147
+ state,
148
+ placeholders,
149
+ className: cx(classes.placeholder, {
150
+ [classes.placeholderDisabled]: disabled
151
+ }),
152
+ ...fieldProps
153
+ }),
154
+ classes: {
155
+ header: cx(classes.dropdownHeader, {
156
+ [classes.dropdownHeaderInvalid]: isStateInvalid
157
+ }),
158
+ panel: classes.dropdownPanel,
159
+ headerOpen: classes.dropdownHeaderOpen
160
+ },
161
+ placement: "right",
162
+ adornment: /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Time, {
163
+ color: disabled ? "secondary_60" : void 0,
164
+ className: classes.icon
165
+ }),
166
+ expanded: open,
167
+ onToggle: (evt, newOpen) => {
168
+ if (disableExpand)
169
+ return;
170
+ setOpen(newOpen);
171
+ onToggle == null ? void 0 : onToggle(evt, newOpen);
172
+ },
173
+ onContainerCreation: (containerRef) => {
174
+ var _a;
175
+ (_a = containerRef == null ? void 0 : containerRef.getElementsByTagName("input")[0]) == null ? void 0 : _a.focus();
176
+ },
177
+ "aria-haspopup": "dialog",
178
+ "aria-invalid": isStateInvalid ? true : void 0,
179
+ "aria-errormessage": errorMessageId,
180
+ disablePortal,
181
+ popperProps: {
182
+ modifiers: [{
183
+ name: "preventOverflow",
184
+ enabled: escapeWithReference
185
+ }]
186
+ },
187
+ ...dropdownProps,
188
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", {
189
+ ref,
190
+ className: classes.timePopperContainer,
191
+ children: state.segments.map((segment, i) => /* @__PURE__ */ jsxRuntime.jsx(Unit.Unit, {
192
+ state,
193
+ segment,
194
+ placeholder: placeholders[segment.type],
195
+ onAdd: () => state.increment(segment.type),
196
+ onSub: () => state.decrement(segment.type),
197
+ onChange: (evt, val) => {
198
+ state.setSegment(segment.type, Number(val));
199
+ }
200
+ }, i))
201
+ })
202
+ }), canShowError && /* @__PURE__ */ jsxRuntime.jsx(WarningText.HvWarningText, {
203
+ id: setId.setId(id, "error"),
204
+ disableBorder: true,
205
+ className: classes.error,
206
+ children: validationMessage
207
+ })]
208
+ });
209
+ };
210
+ exports.timePickerClasses = TimePicker_styles.staticClasses;
211
+ exports.HvTimePicker = HvTimePicker;
212
+ //# sourceMappingURL=TimePicker.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimePicker.cjs","sources":["../../../../src/components/TimePicker/TimePicker.tsx"],"sourcesContent":["import { useState, useRef, useMemo } from \"react\";\nimport { Time } from \"@internationalized/date\";\nimport { useTimeField } from \"@react-aria/datepicker\";\nimport {\n TimeFieldStateOptions,\n useTimeFieldState,\n} from \"@react-stately/datepicker\";\n\nimport { Time as TimeIcon } from \"@hitachivantara/uikit-react-icons\";\nimport {\n HvFormElement,\n HvBaseDropdown,\n HvLabel,\n HvWarningText,\n HvInfoMessage,\n HvFormElementProps,\n HvBaseDropdownProps,\n useControlled,\n useUniqueId,\n setId,\n ExtractNames,\n} from \"../..\";\n\nimport { Unit } from \"./Unit\";\nimport { Placeholder } from \"./Placeholder\";\nimport { staticClasses, useClasses } from \"./TimePicker.styles\";\n\nconst toTime = (value?: HvTimePickerValue) => {\n if (!value) return undefined;\n const { hours, minutes, seconds } = value;\n return new Time(hours, minutes, seconds);\n};\n\nconst getFormat = (timeFormat?: TimeFormat) => {\n if (timeFormat == null) return 24;\n return timeFormat === \"12\" ? 12 : 24;\n};\n\nexport { staticClasses as timePickerClasses };\n\nexport type TimeFormat = \"12\" | \"24\";\n\nexport type HvTimePickerClasses = ExtractNames<typeof useClasses>;\n\nexport type HvTimePickerClassKey =\n | \"root\"\n | \"input\"\n | \"label\"\n | \"placeholder\"\n | \"timePopperContainer\"\n | \"separator\"\n | \"periodContainer\"\n | \"formElementRoot\"\n | \"dropdownPlaceholder\"\n | \"iconBaseRoot\"\n | \"error\"\n | \"labelContainer\"\n | \"description\"\n | \"dropdownHeaderInvalid\"\n | \"dropdownPlaceholderDisabled\"\n | \"dropdownHeaderOpen\";\n\nexport type HvTimePickerValue = {\n hours: number;\n minutes: number;\n seconds: number;\n};\n\nexport interface HvTimePickerProps\n extends Omit<\n HvFormElementProps,\n \"classes\" | \"value\" | \"defaultValue\" | \"onChange\" | \"onFocus\" | \"onBlur\"\n > {\n /** Id to be applied to the form element root node. */\n id?: string;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: Partial<HvTimePickerClasses>;\n /** Current value of the element when _controlled_. Follows the 24-hour format. */\n value?: HvTimePickerValue;\n /** Initial value of the element when _uncontrolled_. Follows the 24-hour format. */\n defaultValue?: HvTimePickerValue;\n /** The placeholder value when no time is selected. */\n placeholder?: string;\n /** The placeholder of the hours input. */\n hoursPlaceholder?: string;\n /** The placeholder of the minutes input. */\n minutesPlaceholder?: string;\n /** The placeholder of the seconds input. */\n secondsPlaceholder?: string;\n /**\n * Whether the time picker should show the AM/PM 12-hour clock or the 24-hour one.\n * If undefined, the component will use a format according to the passed locale.\n */\n timeFormat?: TimeFormat;\n /** Whether to show the seconds when using the native time picker */\n showSeconds?: boolean;\n /** Locale that will provide the time format(12 or 24 hour format). It is \"overwritten\" by `showAmPm` */\n locale?: string;\n /** Whether the dropdown is expandable. */\n disableExpand?: boolean;\n\n /**\n * Callback function to be triggered when the input value is changed.\n * It is invoked with a `{hours, minutes, seconds}` object, always in the 24h format\n */\n onChange?: (value: HvTimePickerValue) => void;\n\n /** Callback called when dropdown changes the expanded state. */\n onToggle?: (event: Event, isOpen: boolean) => void;\n\n /** Disable the portal behavior. The children stay within it's parent DOM hierarchy. */\n disablePortal?: boolean;\n\n /** Sets if the calendar container should follow the date picker input out of the screen or stay visible. */\n escapeWithReference?: boolean;\n\n /** Extra properties to be passed to the TimePicker's dropdown. */\n dropdownProps?: Partial<HvBaseDropdownProps>;\n}\n\n/**\n * A Time Picker allows the user to choose a specific time or a time range.\n */\nexport const HvTimePicker = (props: HvTimePickerProps) => {\n const {\n classes: classesProp = {},\n className,\n\n id: idProp,\n name,\n required = false,\n disabled = false,\n readOnly = false,\n label,\n\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n status,\n statusMessage,\n \"aria-errormessage\": ariaErrorMessage,\n\n placeholder,\n hoursPlaceholder = \"hh\",\n minutesPlaceholder = \"mm\",\n secondsPlaceholder = \"ss\",\n\n value: valueProp,\n defaultValue: defaultValueProp,\n\n timeFormat,\n showSeconds,\n disableExpand,\n locale = \"en\",\n\n onToggle,\n onChange,\n\n // misc properties:\n disablePortal = true,\n escapeWithReference = true,\n dropdownProps,\n ...others\n } = props;\n const id = useUniqueId(idProp, \"hvtimepicker\");\n const ref = useRef<HTMLDivElement>(null);\n const { classes, cx } = useClasses(classesProp);\n\n const stateProps: TimeFieldStateOptions = {\n value: toTime(valueProp),\n defaultValue: toTime(defaultValueProp),\n label,\n locale,\n isRequired: required,\n isReadOnly: readOnly,\n isDisabled: disabled,\n granularity: \"second\",\n hourCycle: getFormat(timeFormat),\n onChange: (value) => {\n const { hour: hours, minute: minutes, second: seconds } = value;\n onChange?.({ hours, minutes, seconds });\n },\n };\n const state = useTimeFieldState(stateProps);\n const { labelProps, fieldProps } = useTimeField(\n {\n ...stateProps,\n id,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n },\n state,\n ref\n );\n\n const [open, setOpen] = useState(false);\n\n const [validationMessage] = useControlled(statusMessage, \"Required\");\n const [validationState] = useControlled(status, \"standBy\");\n\n const placeholders = useMemo(\n () => ({\n hour: hoursPlaceholder,\n minute: minutesPlaceholder,\n second: secondsPlaceholder,\n }),\n [hoursPlaceholder, minutesPlaceholder, secondsPlaceholder]\n );\n\n // the error message area will only be created if:\n // - an external element that provides an error message isn't identified via aria-errormessage AND\n // - both status and statusMessage properties are being controlled OR\n // - status is uncontrolled and required is true\n const canShowError =\n ariaErrorMessage == null &&\n ((status !== undefined && statusMessage !== undefined) ||\n (status === undefined && required));\n\n const isStateInvalid = validationState === \"invalid\";\n const errorMessageId = isStateInvalid\n ? canShowError\n ? setId(id, \"error\")\n : ariaErrorMessage\n : undefined;\n\n return (\n <HvFormElement\n name={name}\n required={required}\n disabled={disabled}\n status={validationState}\n className={cx(classes.root, className)}\n {...others}\n >\n {(label || description) && (\n <div className={classes.labelContainer}>\n {label && (\n <HvLabel label={label} className={classes.label} {...labelProps} />\n )}\n {description && (\n <HvInfoMessage className={classes.description}>\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n\n <HvBaseDropdown\n role=\"combobox\"\n variableWidth\n disabled={disabled}\n readOnly={readOnly}\n placeholder={\n placeholder && !state.value ? (\n placeholder\n ) : (\n <Placeholder\n ref={ref}\n name={name}\n state={state}\n placeholders={placeholders}\n className={cx(classes.placeholder, {\n [classes.placeholderDisabled]: disabled,\n })}\n {...fieldProps}\n />\n )\n }\n classes={{\n header: cx(classes.dropdownHeader, {\n [classes.dropdownHeaderInvalid]: isStateInvalid,\n }),\n panel: classes.dropdownPanel,\n headerOpen: classes.dropdownHeaderOpen,\n }}\n placement=\"right\"\n adornment={\n <TimeIcon\n color={disabled ? \"secondary_60\" : undefined}\n className={classes.icon}\n />\n }\n expanded={open}\n onToggle={(evt, newOpen) => {\n if (disableExpand) return;\n setOpen(newOpen);\n onToggle?.(evt, newOpen);\n }}\n onContainerCreation={(containerRef) => {\n containerRef?.getElementsByTagName(\"input\")[0]?.focus();\n }}\n aria-haspopup=\"dialog\"\n aria-invalid={isStateInvalid ? true : undefined}\n aria-errormessage={errorMessageId}\n disablePortal={disablePortal}\n popperProps={{\n modifiers: [\n { name: \"preventOverflow\", enabled: escapeWithReference },\n ],\n }}\n {...dropdownProps}\n >\n <div ref={ref} className={classes.timePopperContainer}>\n {state.segments.map((segment, i) => (\n <Unit\n key={i}\n state={state}\n segment={segment}\n placeholder={placeholders[segment.type]}\n onAdd={() => state.increment(segment.type)}\n onSub={() => state.decrement(segment.type)}\n onChange={(evt, val) => {\n state.setSegment(segment.type, Number(val));\n }}\n />\n ))}\n </div>\n </HvBaseDropdown>\n\n {canShowError && (\n <HvWarningText\n id={setId(id, \"error\")}\n disableBorder\n className={classes.error}\n >\n {validationMessage}\n </HvWarningText>\n )}\n </HvFormElement>\n );\n};\n"],"names":["toTime","value","undefined","hours","minutes","seconds","Time","getFormat","timeFormat","HvTimePicker","props","classes","classesProp","className","id","idProp","name","required","disabled","readOnly","label","ariaLabel","ariaLabelledBy","description","ariaDescribedBy","status","statusMessage","ariaErrorMessage","placeholder","hoursPlaceholder","minutesPlaceholder","secondsPlaceholder","valueProp","defaultValue","defaultValueProp","showSeconds","disableExpand","locale","onToggle","onChange","disablePortal","escapeWithReference","dropdownProps","others","useUniqueId","ref","useRef","cx","useClasses","stateProps","isRequired","isReadOnly","isDisabled","granularity","hourCycle","hour","minute","second","state","useTimeFieldState","labelProps","fieldProps","useTimeField","open","setOpen","useState","validationMessage","useControlled","validationState","placeholders","useMemo","canShowError","isStateInvalid","errorMessageId","setId","HvFormElement","root","children","labelContainer","_jsx","HvLabel","HvInfoMessage","HvBaseDropdown","role","variableWidth","Placeholder","placeholderDisabled","header","dropdownHeader","dropdownHeaderInvalid","panel","dropdownPanel","headerOpen","dropdownHeaderOpen","placement","adornment","TimeIcon","color","icon","expanded","evt","newOpen","onContainerCreation","containerRef","getElementsByTagName","focus","popperProps","modifiers","enabled","timePopperContainer","segments","map","segment","i","Unit","type","onAdd","increment","onSub","decrement","val","setSegment","Number","HvWarningText","disableBorder","error"],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const uikitStyles = require("@hitachivantara/uikit-styles");
4
+ const classes = require("../../utils/classes.cjs");
5
+ const {
6
+ useClasses,
7
+ staticClasses
8
+ } = classes.createClasses("HvTimerPicker", {
9
+ root: {
10
+ position: "relative"
11
+ },
12
+ labelContainer: {
13
+ display: "flex",
14
+ alignItems: "flex-start"
15
+ },
16
+ label: {
17
+ marginBottom: 6,
18
+ display: "block"
19
+ },
20
+ description: {},
21
+ placeholder: {
22
+ display: "flex",
23
+ gap: 1
24
+ },
25
+ placeholderDisabled: {
26
+ color: uikitStyles.theme.colors.secondary_60
27
+ },
28
+ dropdownHeader: {},
29
+ dropdownHeaderOpen: {},
30
+ dropdownHeaderInvalid: {
31
+ border: `1px solid ${uikitStyles.theme.colors.negative}`,
32
+ "&:hover": {
33
+ border: `1px solid ${uikitStyles.theme.colors.negative}`
34
+ }
35
+ },
36
+ dropdownPanel: {},
37
+ icon: {},
38
+ timePopperContainer: {
39
+ backgroundColor: uikitStyles.theme.colors.atmo1,
40
+ zIndex: 10,
41
+ display: "flex",
42
+ flexDirection: "row",
43
+ justifyContent: "center",
44
+ alignItems: "center",
45
+ padding: uikitStyles.theme.spacing(["xs", 0]),
46
+ userSelect: "none",
47
+ minWidth: "175px"
48
+ },
49
+ error: {}
50
+ });
51
+ exports.staticClasses = staticClasses;
52
+ exports.useClasses = useClasses;
53
+ //# sourceMappingURL=TimePicker.styles.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimePicker.styles.cjs","sources":["../../../../src/components/TimePicker/TimePicker.styles.ts"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\nimport { createClasses } from \"@core/utils\";\n\nexport const { useClasses, staticClasses } = createClasses(\"HvTimerPicker\", {\n root: {\n position: \"relative\",\n },\n\n labelContainer: {\n display: \"flex\",\n alignItems: \"flex-start\",\n },\n label: {\n marginBottom: 6,\n display: \"block\",\n },\n description: {},\n\n placeholder: {\n display: \"flex\",\n gap: 1,\n },\n placeholderDisabled: {\n color: theme.colors.secondary_60,\n },\n\n dropdownHeader: {},\n dropdownHeaderOpen: {},\n dropdownHeaderInvalid: {\n border: `1px solid ${theme.colors.negative}`,\n \"&:hover\": {\n border: `1px solid ${theme.colors.negative}`,\n },\n },\n dropdownPanel: {},\n\n icon: {},\n\n timePopperContainer: {\n backgroundColor: theme.colors.atmo1,\n zIndex: 10,\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n alignItems: \"center\",\n padding: theme.spacing([\"xs\", 0]),\n userSelect: \"none\",\n minWidth: \"175px\",\n },\n\n error: {},\n});\n"],"names":["useClasses","staticClasses","createClasses","root","position","labelContainer","display","alignItems","label","marginBottom","description","placeholder","gap","placeholderDisabled","color","theme","colors","secondary_60","dropdownHeader","dropdownHeaderOpen","dropdownHeaderInvalid","border","negative","dropdownPanel","icon","timePopperContainer","backgroundColor","atmo1","zIndex","flexDirection","justifyContent","padding","spacing","userSelect","minWidth","error"],"mappings":";;;;AAGa,MAAA;AAAA,EAAEA;AAAAA,EAAYC;AAAc,IAAIC,QAAAA,cAAc,iBAAiB;AAAA,EAC1EC,MAAM;AAAA,IACJC,UAAU;AAAA,EACZ;AAAA,EAEAC,gBAAgB;AAAA,IACdC,SAAS;AAAA,IACTC,YAAY;AAAA,EACd;AAAA,EACAC,OAAO;AAAA,IACLC,cAAc;AAAA,IACdH,SAAS;AAAA,EACX;AAAA,EACAI,aAAa,CAAC;AAAA,EAEdC,aAAa;AAAA,IACXL,SAAS;AAAA,IACTM,KAAK;AAAA,EACP;AAAA,EACAC,qBAAqB;AAAA,IACnBC,OAAOC,YAAAA,MAAMC,OAAOC;AAAAA,EACtB;AAAA,EAEAC,gBAAgB,CAAC;AAAA,EACjBC,oBAAoB,CAAC;AAAA,EACrBC,uBAAuB;AAAA,IACrBC,QAAS,aAAYN,YAAAA,MAAMC,OAAOM;AAAAA,IAClC,WAAW;AAAA,MACTD,QAAS,aAAYN,YAAAA,MAAMC,OAAOM;AAAAA,IACpC;AAAA,EACF;AAAA,EACAC,eAAe,CAAC;AAAA,EAEhBC,MAAM,CAAC;AAAA,EAEPC,qBAAqB;AAAA,IACnBC,iBAAiBX,YAAAA,MAAMC,OAAOW;AAAAA,IAC9BC,QAAQ;AAAA,IACRtB,SAAS;AAAA,IACTuB,eAAe;AAAA,IACfC,gBAAgB;AAAA,IAChBvB,YAAY;AAAA,IACZwB,SAAShB,YAAAA,MAAMiB,QAAQ,CAAC,MAAM,CAAC,CAAC;AAAA,IAChCC,YAAY;AAAA,IACZC,UAAU;AAAA,EACZ;AAAA,EAEAC,OAAO,CAAC;AACV,CAAC;;;"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const react = require("@emotion/react");
4
+ const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
5
+ const uikitStyles = require("@hitachivantara/uikit-styles");
6
+ const Unit_styles = require("./Unit.styles.cjs");
7
+ const jsxRuntime = require("@emotion/react/jsx-runtime");
8
+ const ToggleButton = require("../../ToggleButton/ToggleButton.cjs");
9
+ const Input = require("../../Input/Input.cjs");
10
+ const Unit = ({
11
+ id,
12
+ state,
13
+ segment,
14
+ placeholder: placeholderProp,
15
+ onChange,
16
+ onAdd,
17
+ onSub
18
+ }) => {
19
+ const {
20
+ type,
21
+ text
22
+ } = segment;
23
+ const placeholder = placeholderProp ?? segment.placeholder;
24
+ return /* @__PURE__ */ jsxRuntime.jsx(react.ClassNames, {
25
+ children: ({
26
+ css
27
+ }) => /* @__PURE__ */ jsxRuntime.jsxs("div", {
28
+ className: css(Unit_styles.styles.root),
29
+ children: [type !== "literal" && /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.DropUpXS, {
30
+ onClick: onAdd
31
+ }), type === "literal" && /* @__PURE__ */ jsxRuntime.jsx("div", {
32
+ className: css(Unit_styles.styles.separator),
33
+ children: text
34
+ }), type === "dayPeriod" && /* @__PURE__ */ jsxRuntime.jsx(ToggleButton.HvToggleButton, {
35
+ className: css(Unit_styles.styles.periodToggle),
36
+ onClick: onAdd,
37
+ children: text
38
+ }), ["hour", "minute", "second"].includes(type) && /* @__PURE__ */ jsxRuntime.jsx(Input.HvInput, {
39
+ id,
40
+ disableClear: true,
41
+ style: {
42
+ ...uikitStyles.theme.typography.title3
43
+ },
44
+ classes: {
45
+ input: css(Unit_styles.styles.input),
46
+ root: css(Unit_styles.styles.inputContainer),
47
+ inputBorderContainer: css(Unit_styles.styles.inputBorderContainer),
48
+ inputRoot: css(Unit_styles.styles.inputRoot)
49
+ },
50
+ onKeyDown: (event) => {
51
+ if (event.key === "Enter") {
52
+ event.preventDefault();
53
+ event.stopPropagation();
54
+ }
55
+ },
56
+ required: true,
57
+ status: state.validationState,
58
+ value: text.padStart(2, "0"),
59
+ onChange,
60
+ placeholder,
61
+ inputProps: {
62
+ autoComplete: "off",
63
+ type: "number"
64
+ }
65
+ }), type !== "literal" && /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.DropDownXS, {
66
+ onClick: onSub
67
+ })]
68
+ })
69
+ });
70
+ };
71
+ exports.Unit = Unit;
72
+ //# sourceMappingURL=Unit.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Unit.cjs","sources":["../../../../../src/components/TimePicker/Unit/Unit.tsx"],"sourcesContent":["import { KeyboardEvent } from \"react\";\nimport { ClassNames } from \"@emotion/react\";\nimport { DateFieldState, DateSegment } from \"@react-stately/datepicker\";\nimport {\n DropDownXS as SubtractTimeIcon,\n DropUpXS as AddTimeIcon,\n} from \"@hitachivantara/uikit-react-icons\";\nimport { HvInput, HvInputProps, HvToggleButton, theme } from \"../../..\";\nimport { styles } from \"./Unit.styles\";\n\ninterface UnitProps {\n id?: string;\n state: DateFieldState;\n segment: DateSegment;\n placeholder?: string;\n /** Called when the value changes */\n onChange?: HvInputProps[\"onChange\"];\n /** Called when the up/add arrow is pressed */\n onAdd?: () => void;\n /** Called when the down/subtract arrow is pressed */\n onSub?: () => void;\n}\n\nexport const Unit = ({\n id,\n state,\n segment,\n placeholder: placeholderProp,\n onChange,\n onAdd,\n onSub,\n}: UnitProps) => {\n const { type, text } = segment;\n const placeholder = placeholderProp ?? segment.placeholder;\n\n return (\n <ClassNames>\n {({ css }) => (\n <div className={css(styles.root)}>\n {type !== \"literal\" && <AddTimeIcon onClick={onAdd} />}\n {type === \"literal\" && (\n <div className={css(styles.separator)}>{text}</div>\n )}\n {type === \"dayPeriod\" && (\n <HvToggleButton\n className={css(styles.periodToggle)}\n onClick={onAdd}\n >\n {text}\n </HvToggleButton>\n )}\n {[\"hour\", \"minute\", \"second\"].includes(type) && (\n <HvInput\n id={id}\n disableClear\n style={{\n ...theme.typography.title3,\n }}\n classes={{\n input: css(styles.input),\n root: css(styles.inputContainer),\n inputBorderContainer: css(styles.inputBorderContainer),\n inputRoot: css(styles.inputRoot),\n }}\n onKeyDown={(event) => {\n if ((event as KeyboardEvent).key === \"Enter\") {\n event.preventDefault();\n event.stopPropagation();\n }\n }}\n required\n status={state.validationState}\n value={text.padStart(2, \"0\")}\n onChange={onChange}\n placeholder={placeholder}\n inputProps={{ autoComplete: \"off\", type: \"number\" }}\n />\n )}\n {type !== \"literal\" && <SubtractTimeIcon onClick={onSub} />}\n </div>\n )}\n </ClassNames>\n );\n};\n"],"names":["Unit","id","state","segment","placeholder","placeholderProp","onChange","onAdd","onSub","type","text","ClassNames","children","css","className","styles","root","AddTimeIcon","onClick","separator","HvToggleButton","periodToggle","includes","_jsx","HvInput","disableClear","style","theme","typography","title3","classes","input","inputContainer","inputBorderContainer","inputRoot","onKeyDown","event","key","preventDefault","stopPropagation","required","status","validationState","value","padStart","inputProps","autoComplete","SubtractTimeIcon"],"mappings":";;;;;;;;;AAuBO,MAAMA,OAAOA,CAAC;AAAA,EACnBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,aAAaC;AAAAA,EACbC;AAAAA,EACAC;AAAAA,EACAC;AACS,MAAM;AACT,QAAA;AAAA,IAAEC;AAAAA,IAAMC;AAAAA,EAASP,IAAAA;AACjBC,QAAAA,cAAcC,mBAAmBF,QAAQC;AAE/C,wCACGO,MAAAA,YAAU;AAAA,IAAAC,UACRA,CAAC;AAAA,MAAEC;AAAAA,IAAAA,sCACF,OAAA;AAAA,MAAKC,WAAWD,IAAIE,YAAAA,OAAOC,IAAI;AAAA,MAAEJ,WAC9BH,SAAS,4CAAcQ,gBAAAA,UAAW;AAAA,QAACC,SAASX;AAAAA,MAAQ,CAAA,GACpDE,SAAS,4CACR,OAAA;AAAA,QAAKK,WAAWD,IAAIE,YAAAA,OAAOI,SAAS;AAAA,QAAEP,UAAEF;AAAAA,MAAU,CAAA,GAEnDD,SAAS,8CACPW,aAAAA,gBAAc;AAAA,QACbN,WAAWD,IAAIE,YAAAA,OAAOM,YAAY;AAAA,QAClCH,SAASX;AAAAA,QAAMK,UAEdF;AAAAA,MAAAA,CACa,GAEjB,CAAC,QAAQ,UAAU,QAAQ,EAAEY,SAASb,IAAI,KACzCc,2BAAAA,IAACC,eAAO;AAAA,QACNvB;AAAAA,QACAwB,cAAY;AAAA,QACZC,OAAO;AAAA,UACL,GAAGC,YAAAA,MAAMC,WAAWC;AAAAA,QACtB;AAAA,QACAC,SAAS;AAAA,UACPC,OAAOlB,IAAIE,YAAAA,OAAOgB,KAAK;AAAA,UACvBf,MAAMH,IAAIE,YAAAA,OAAOiB,cAAc;AAAA,UAC/BC,sBAAsBpB,IAAIE,YAAAA,OAAOkB,oBAAoB;AAAA,UACrDC,WAAWrB,IAAIE,YAAAA,OAAOmB,SAAS;AAAA,QACjC;AAAA,QACAC,WAAYC,CAAU,UAAA;AACfA,cAAAA,MAAwBC,QAAQ,SAAS;AAC5CD,kBAAME,eAAe;AACrBF,kBAAMG,gBAAgB;AAAA,UACxB;AAAA,QACF;AAAA,QACAC,UAAQ;AAAA,QACRC,QAAQvC,MAAMwC;AAAAA,QACdC,OAAOjC,KAAKkC,SAAS,GAAG,GAAG;AAAA,QAC3BtC;AAAAA,QACAF;AAAAA,QACAyC,YAAY;AAAA,UAAEC,cAAc;AAAA,UAAOrC,MAAM;AAAA,QAAS;AAAA,MACnD,CAAA,GAEFA,SAAS,4CAAcsC,gBAAAA,YAAgB;AAAA,QAAC7B,SAASV;AAAAA,MAAAA,CAAQ,CAAC;AAAA,IAAA,CACxD;AAAA,EAAA,CAEG;AAEhB;;"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const uikitStyles = require("@hitachivantara/uikit-styles");
4
+ const styles = {
5
+ root: {
6
+ display: "flex",
7
+ flexDirection: "column",
8
+ justifyContent: "center",
9
+ alignItems: "center",
10
+ textAlign: "center",
11
+ ...uikitStyles.theme.typography.sTitle
12
+ },
13
+ separator: {
14
+ width: 8
15
+ },
16
+ periodToggle: {
17
+ height: 40,
18
+ width: 40
19
+ },
20
+ element: {
21
+ display: "flex",
22
+ justifyContent: "center",
23
+ alignItems: "center",
24
+ height: 40,
25
+ width: 40
26
+ },
27
+ input: {
28
+ ...uikitStyles.theme.typography.sTitle,
29
+ fontWeight: 600,
30
+ textAlign: "center",
31
+ height: 40,
32
+ width: 40,
33
+ padding: 0,
34
+ margin: 0,
35
+ "&::placeholder": {
36
+ fontSize: 16,
37
+ fontWeight: 600
38
+ }
39
+ },
40
+ inputRoot: {
41
+ width: 40,
42
+ height: 40
43
+ },
44
+ subtractIcon: {
45
+ marginTop: uikitStyles.theme.space.xs
46
+ },
47
+ inputContainer: {
48
+ minWidth: 40,
49
+ maxWidth: 40
50
+ },
51
+ inputBorderContainer: {
52
+ top: 40
53
+ }
54
+ };
55
+ exports.styles = styles;
56
+ //# sourceMappingURL=Unit.styles.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Unit.styles.cjs","sources":["../../../../../src/components/TimePicker/Unit/Unit.styles.ts"],"sourcesContent":["import { CSSInterpolation } from \"@emotion/css\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const styles = {\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n textAlign: \"center\",\n ...theme.typography.sTitle,\n },\n\n separator: {\n width: 8,\n },\n\n periodToggle: {\n height: 40,\n width: 40,\n },\n\n element: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: 40,\n width: 40,\n },\n\n input: {\n ...theme.typography.sTitle,\n fontWeight: 600,\n textAlign: \"center\",\n height: 40,\n width: 40,\n padding: 0,\n margin: 0,\n \"&::placeholder\": {\n fontSize: 16,\n fontWeight: 600,\n },\n },\n inputRoot: {\n width: 40,\n height: 40,\n },\n\n subtractIcon: {\n marginTop: theme.space.xs,\n },\n inputContainer: {\n minWidth: 40,\n maxWidth: 40,\n },\n inputBorderContainer: {\n top: 40,\n },\n} satisfies Record<string, CSSInterpolation>;\n"],"names":["styles","root","display","flexDirection","justifyContent","alignItems","textAlign","theme","typography","sTitle","separator","width","periodToggle","height","element","input","fontWeight","padding","margin","fontSize","inputRoot","subtractIcon","marginTop","space","xs","inputContainer","minWidth","maxWidth","inputBorderContainer","top"],"mappings":";;;AAGO,MAAMA,SAAS;AAAA,EACpBC,MAAM;AAAA,IACJC,SAAS;AAAA,IACTC,eAAe;AAAA,IACfC,gBAAgB;AAAA,IAChBC,YAAY;AAAA,IACZC,WAAW;AAAA,IACX,GAAGC,YAAAA,MAAMC,WAAWC;AAAAA,EACtB;AAAA,EAEAC,WAAW;AAAA,IACTC,OAAO;AAAA,EACT;AAAA,EAEAC,cAAc;AAAA,IACZC,QAAQ;AAAA,IACRF,OAAO;AAAA,EACT;AAAA,EAEAG,SAAS;AAAA,IACPZ,SAAS;AAAA,IACTE,gBAAgB;AAAA,IAChBC,YAAY;AAAA,IACZQ,QAAQ;AAAA,IACRF,OAAO;AAAA,EACT;AAAA,EAEAI,OAAO;AAAA,IACL,GAAGR,YAAAA,MAAMC,WAAWC;AAAAA,IACpBO,YAAY;AAAA,IACZV,WAAW;AAAA,IACXO,QAAQ;AAAA,IACRF,OAAO;AAAA,IACPM,SAAS;AAAA,IACTC,QAAQ;AAAA,IACR,kBAAkB;AAAA,MAChBC,UAAU;AAAA,MACVH,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACAI,WAAW;AAAA,IACTT,OAAO;AAAA,IACPE,QAAQ;AAAA,EACV;AAAA,EAEAQ,cAAc;AAAA,IACZC,WAAWf,YAAAA,MAAMgB,MAAMC;AAAAA,EACzB;AAAA,EACAC,gBAAgB;AAAA,IACdC,UAAU;AAAA,IACVC,UAAU;AAAA,EACZ;AAAA,EACAC,sBAAsB;AAAA,IACpBC,KAAK;AAAA,EACP;AACF;;"}