nitro_sg 3.0.1 → 3.0.2

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 (110) hide show
  1. checksums.yaml +4 -4
  2. data/components/Avatar/Avatar.jsx +96 -0
  3. data/components/Avatar/styles.scss +54 -0
  4. data/components/Avatar/styles.scss.flow +14 -0
  5. data/components/Badge/Badge.jsx +40 -0
  6. data/components/Badge/badges.scss +167 -0
  7. data/components/Badge/labels.scss +121 -0
  8. data/components/Badge/styles.scss +4 -0
  9. data/components/Badge/styles.scss.flow +38 -0
  10. data/components/Banner/Banner.jsx +54 -0
  11. data/components/Banner/styles.scss +75 -0
  12. data/components/Banner/styles.scss.flow +19 -0
  13. data/components/Button/Button.jsx +75 -0
  14. data/components/Card/Card.jsx +44 -0
  15. data/components/CircleButton/CircleButton.jsx +51 -0
  16. data/components/CircleButton/CircleButtonStory.jsx +25 -0
  17. data/components/CircleButton/styles.scss +33 -0
  18. data/components/CircleButton/styles.scss.flow +6 -0
  19. data/components/CollapsibleCard/CollapsibleCard.jsx +108 -0
  20. data/components/Color/Color.jsx +55 -0
  21. data/components/Color/styles.scss +6 -0
  22. data/components/Color/styles.scss.flow +5 -0
  23. data/components/ColorPickerInput/ColorPickerInput.jsx +99 -0
  24. data/components/ColorPickerInput/colorPickerInput.scss +10 -0
  25. data/components/ColorPickerInput/colorPickerInput.scss.flow +6 -0
  26. data/components/DOBInput/index.jsx +35 -0
  27. data/components/DOBInput/story.jsx +20 -0
  28. data/components/DOBInput/styles.scss +11 -0
  29. data/components/DOBInput/styles.scss.flow +7 -0
  30. data/components/DatePicker/DatePicker.jsx +156 -0
  31. data/components/DatePicker/styles.scss +6 -0
  32. data/components/DatePicker/styles.scss.flow +5 -0
  33. data/components/DateTimePicker/DateTimePicker.jsx +109 -0
  34. data/components/DateTimePicker/story-styles.scss +3 -0
  35. data/components/DateTimePicker/story-styles.scss.flow +5 -0
  36. data/components/DateTimePicker/styles.scss +1 -0
  37. data/components/DateTimePicker/styles.scss.flow +5 -0
  38. data/components/Errors/Errors.jsx +38 -0
  39. data/components/FileCard/FileCard.jsx +183 -0
  40. data/components/FileCard/styles.scss +81 -0
  41. data/components/FileCard/styles.scss.flow +12 -0
  42. data/components/Flip/Flip.jsx +50 -0
  43. data/components/Flip/styles.scss +41 -0
  44. data/components/Flip/styles.scss.flow +11 -0
  45. data/components/FlyoutPanel/FlyoutPanel.jsx +34 -0
  46. data/components/FlyoutPanel/flyout_panel.scss +33 -0
  47. data/components/FlyoutPanel/flyout_panel.scss.flow +11 -0
  48. data/components/Grade/Grade.jsx +55 -0
  49. data/components/Grade/grade.scss +39 -0
  50. data/components/Grade/grade.scss.flow +6 -0
  51. data/components/Highlight/Highlight.jsx +39 -0
  52. data/components/Highlight/styles.scss +24 -0
  53. data/components/Highlight/styles.scss.flow +17 -0
  54. data/components/Icon/Icon.jsx +54 -0
  55. data/components/IconToggle/IconToggle.jsx +56 -0
  56. data/components/Milestones/MilestoneItem.jsx +47 -0
  57. data/components/Milestones/Milestones.jsx +51 -0
  58. data/components/Milestones/milestones.scss +19 -0
  59. data/components/Milestones/milestones.scss.flow +7 -0
  60. data/components/Milestones/milestones_item.scss +157 -0
  61. data/components/Milestones/milestones_item.scss.flow +13 -0
  62. data/components/Milestones/milestones_variables.scss +11 -0
  63. data/components/MonogramAvatar/MonogramAvatar.jsx +91 -0
  64. data/components/MonogramAvatar/monogram_avatar.scss +54 -0
  65. data/components/MonogramAvatar/monogram_avatar.scss.flow +10 -0
  66. data/components/Panel/Panel.jsx +159 -0
  67. data/components/Panel/panel.scss +32 -0
  68. data/components/Panel/panel.scss.flow +12 -0
  69. data/components/PanelGroup/PanelGroup.jsx +121 -0
  70. data/components/PanelGroup/PanelGroup.scss +96 -0
  71. data/components/PanelGroup/PanelGroup.scss.flow +6 -0
  72. data/components/SearchCollectionSelect/SearchCollectionSelect.jsx +29 -0
  73. data/components/SearchCollectionSelect/searchCollectionSelect.scss +0 -0
  74. data/components/Spinner/Spinner.jsx +80 -0
  75. data/components/Spinner/spinner.scss +6 -0
  76. data/components/Spinner/spinner.scss.flow +5 -0
  77. data/components/StepMeter/StepMeter.jsx +75 -0
  78. data/components/StepMeter/step_meter.scss +120 -0
  79. data/components/StepMeter/step_meter.scss.flow +9 -0
  80. data/components/Survey/Survey.jsx +190 -0
  81. data/components/Survey/survey.scss +75 -0
  82. data/components/Survey/survey.scss.flow +11 -0
  83. data/components/Tab/Tab.jsx +70 -0
  84. data/components/Tab/tab.scss +25 -0
  85. data/components/Tab/tab.scss.flow +6 -0
  86. data/components/TabList/TabList.jsx +35 -0
  87. data/components/TabList/tabList.scss +5 -0
  88. data/components/TabList/tabList.scss.flow +5 -0
  89. data/components/Text/Text.jsx +53 -0
  90. data/components/Text/styles.scss +3 -0
  91. data/components/Text/styles.scss.flow +123 -0
  92. data/components/Text/text.scss +35 -0
  93. data/components/TextInput/TextInput.jsx +95 -0
  94. data/components/TextInput/form-control.scss +96 -0
  95. data/components/TextInput/styles.scss +3 -0
  96. data/components/TextInput/styles.scss.flow +7 -0
  97. data/components/TimePicker/TimePicker.jsx +218 -0
  98. data/components/TimePicker/styles.scss +1 -0
  99. data/components/TimePicker/styles.scss.flow +5 -0
  100. data/components/ToggleButton/ToggleButton.jsx +68 -0
  101. data/components/ToggleButton/toggleButton.scss +70 -0
  102. data/components/ToggleButton/toggleButton.scss.flow +14 -0
  103. data/components/UserStamp/UserStamp.jsx +40 -0
  104. data/components/UserStamp/styles.scss +6 -0
  105. data/components/UserStamp/styles.scss.flow +7 -0
  106. data/components/Wip/Wip.jsx +34 -0
  107. data/components/index.js +33 -0
  108. data/components/types.js +21 -0
  109. data/lib/nitro_sg/version.rb +1 -1
  110. metadata +108 -1
@@ -0,0 +1,3 @@
1
+ .root {
2
+ margin-top: 250px;
3
+ }
@@ -0,0 +1,5 @@
1
+ // @flow
2
+ /* This file is automatically generated by css-modules-flow-types */
3
+ declare module.exports: {|
4
+ +'root': string;
5
+ |};
@@ -0,0 +1 @@
1
+ .dateTimePicker {}
@@ -0,0 +1,5 @@
1
+ // @flow
2
+ /* This file is automatically generated by css-modules-flow-types */
3
+ declare module.exports: {|
4
+
5
+ |};
@@ -0,0 +1,38 @@
1
+ /* @flow */
2
+
3
+ import React from 'react'
4
+ import { uniqueId } from 'lodash'
5
+ import { Alert } from 'react-bootstrap'
6
+
7
+ /**
8
+ * Errors
9
+ * Displays the given {@messages} in a list format, inside a red alert box.
10
+ *
11
+ * @param {Array<String>} props.messages The error messages to be displayed
12
+ */
13
+
14
+ type Props = {
15
+ messages: Array<string>,
16
+ }
17
+
18
+ export default class Errors extends React.Component<Props> {
19
+ static defaultProps = {
20
+ messages: ["Something went wong"]
21
+ }
22
+ props: Props
23
+ render() {
24
+ const { messages } = this.props
25
+ return (
26
+ <Alert
27
+ bsStyle="danger"
28
+ className="errors"
29
+ >
30
+ <ul>
31
+ {messages.map(m => (
32
+ <li key={uniqueId()}>{m}</li>
33
+ ))}
34
+ </ul>
35
+ </Alert>
36
+ )
37
+ }
38
+ }
@@ -0,0 +1,183 @@
1
+ /* @flow */
2
+
3
+ import React, { Component } from 'react'
4
+ import classnames from 'classnames'
5
+
6
+ import Icon from '../Icon/Icon'
7
+ import Panel from '../Panel/Panel'
8
+ import Text from '../Text/Text'
9
+
10
+ import { Popover, OverlayTrigger } from 'react-bootstrap'
11
+
12
+ import styles from './styles.scss'
13
+
14
+ type FileType = 'file-excel' | 'file-pdf' | 'file-word' | 'file-image' | 'file-powerpoint' | 'file-video' | 'file-text' | 'file-zip' | 'file-code' | 'file-sound' | 'file'
15
+
16
+ type Props = {
17
+ className: string,
18
+ description: string,
19
+ displayName: string,
20
+ downloadUrl: string,
21
+ layout: string,
22
+ openNewTab: boolean,
23
+ type: FileType,
24
+ hasProtection: boolean,
25
+ hasAccess: boolean,
26
+ children: Array<Component>
27
+ }
28
+
29
+ export default class FileCard extends React.Component<Props> {
30
+ static defaultProps = {
31
+ className: '',
32
+ layout: 'vertical',
33
+ openNewTab: false,
34
+ type: 'file',
35
+ hasProtection: false,
36
+ hasAccess: true,
37
+ }
38
+ props: Props
39
+
40
+ renderIcon() {
41
+ const {
42
+ downloadUrl,
43
+ openNewTab,
44
+ displayName,
45
+ type,
46
+ hasAccess,
47
+ } = this.props
48
+ const IconComponent = (
49
+ <Icon
50
+ className={styles[`icon-large`]}
51
+ label=''
52
+ name={`${type}`}
53
+ size='lg'
54
+ title={displayName}
55
+ />
56
+ )
57
+ return (
58
+ <If condition={downloadUrl && hasAccess}>
59
+ <a
60
+ href={downloadUrl}
61
+ target={openNewTab ? '_blank' : '_parent'}
62
+ >
63
+ {IconComponent}
64
+ </a>
65
+ <Else/>
66
+ {IconComponent}
67
+ </If>
68
+ )
69
+ }
70
+
71
+ renderDisplayName() {
72
+ const {
73
+ displayName,
74
+ downloadUrl,
75
+ openNewTab
76
+ } = this.props
77
+ const DisplayNameComponent = (
78
+ <Text
79
+ bold='true'
80
+ color={'ink-light'}
81
+ >{displayName}</Text>
82
+ )
83
+ return (
84
+ <h5 className='m-0'>
85
+ <If condition={downloadUrl}>
86
+ <a
87
+ href={downloadUrl}
88
+ target={openNewTab ? '_blank' : '_parent'}
89
+ >
90
+ {DisplayNameComponent}
91
+ </a>
92
+ <Else/>
93
+ {DisplayNameComponent}
94
+ </If>
95
+ </h5>
96
+ )
97
+ }
98
+
99
+ renderDescription() {
100
+ const {
101
+ description
102
+ } = this.props
103
+ return (
104
+ <p className='m-0'>
105
+ <Text color={'ink-lighter'}>{description}</Text>
106
+ </p>
107
+ )
108
+ }
109
+
110
+ renderLockIcon() {
111
+ const { hasAccess, hasProtection } = this.props
112
+ const lock = hasAccess ? 'unlock' : 'lock'
113
+
114
+ if (!hasProtection) {
115
+ return null
116
+ }
117
+
118
+ const popoverPrivacy = (
119
+ <Popover id="privacy-protected">
120
+ {'Privacy Protected'}
121
+ </Popover>
122
+ );
123
+
124
+ if (hasAccess) {
125
+ return (
126
+ <div>
127
+ <Icon
128
+ name={lock}
129
+ size={'lg'}
130
+ />
131
+ </div>
132
+ )
133
+ } else {
134
+ return (
135
+ <OverlayTrigger
136
+ overlay={popoverPrivacy}
137
+ placement="top"
138
+ trigger={['hover', 'focus']}
139
+ >
140
+ <div>
141
+ <Icon
142
+ name={lock}
143
+ size={'lg'}
144
+ />
145
+ </div>
146
+ </OverlayTrigger>
147
+ )
148
+ }
149
+
150
+ }
151
+
152
+ render() {
153
+ const {
154
+ className,
155
+ description,
156
+ displayName,
157
+ layout,
158
+ children
159
+ } = this.props
160
+ const css = [
161
+ className,
162
+ styles['file-card'],
163
+ styles[`layout-${layout}`],
164
+ ]
165
+ return (
166
+ <Panel bodyClass={'p-0'}>
167
+ <div className={classnames(css)}>
168
+ <div className={styles['lock']}>
169
+ {this.renderLockIcon()}
170
+ </div>
171
+ <div className={styles['file-type-box']}>
172
+ {this.renderIcon()}
173
+ </div>
174
+ <div className={styles['file-content-box']}>
175
+ <If condition={displayName}>{this.renderDisplayName()}</If>
176
+ <If condition={description}>{this.renderDescription()}</If>
177
+ <If condition={children}>{children}</If>
178
+ </div>
179
+ </div>
180
+ </Panel>
181
+ )
182
+ }
183
+ }
@@ -0,0 +1,81 @@
1
+ @import "base-mixins/_all.scss";
2
+ @import "base-variables/_all.scss";
3
+
4
+ $file-icon-size: 80px;
5
+
6
+ .file-card {
7
+ height: 100%;
8
+ display: flex;
9
+ flex-direction: column;
10
+
11
+ .lock {
12
+ position: absolute;
13
+ top: $space-small;
14
+ right: $space-small;
15
+ color: $gray-5;
16
+ }
17
+
18
+ .file-type-box {
19
+ padding: $space-largest $space-large $space-jumbo;
20
+ text-align: center;
21
+
22
+ .icon-large {
23
+ font-size: $file-icon-size;
24
+ line-height: $file-icon-size;
25
+ display: block;
26
+ color: $power-royal;
27
+ }
28
+ }
29
+
30
+ .file-content-box {
31
+ padding: $space-large $space-large;
32
+ border-top: 1px solid $gray-2;
33
+
34
+ display: flex;
35
+ flex-grow: 1;
36
+ flex-direction: column;
37
+ justify-content: flex-start;
38
+ align-items: flex-start;
39
+ }
40
+
41
+ &.layout-{
42
+ &vertical {}
43
+ &horizontal {
44
+ display: flex;
45
+ flex-direction: row;
46
+
47
+ .file-type-box {
48
+ width: $file-icon-size;
49
+ box-sizing: border-box;
50
+ border-right: 1px solid $gray-2;
51
+ vertical-align: middle;
52
+ padding: $space-large;
53
+ flex: 0 0 $file-icon-size;
54
+
55
+ .icon-large {
56
+ font-size: $file-icon-size/2.5;
57
+ line-height: $file-icon-size - $space-large;
58
+ }
59
+ }
60
+ .file-content-box {
61
+ border-top: 0;
62
+ vertical-align: middle;
63
+ padding: $space-base $space-large;
64
+ flex: 0 0 calc(100% - #{$file-icon-size});
65
+
66
+ h5 {
67
+ line-height: 17.5px;
68
+ height: 17.5px;
69
+ }
70
+ }
71
+
72
+ &::after {
73
+ content: '';
74
+ clear: both;
75
+ float: none;
76
+ display: block;
77
+ width: 100%;
78
+ }
79
+ }
80
+ }
81
+ }
@@ -0,0 +1,12 @@
1
+ // @flow
2
+ /* This file is automatically generated by css-modules-flow-types */
3
+ declare module.exports: {|
4
+ +'file-card': string;
5
+ +'file-content-box': string;
6
+ +'file-type-box': string;
7
+ +'hidden-xxs': string;
8
+ +'icon-large': string;
9
+ +'layout-horizontal': string;
10
+ +'lock': string;
11
+ +'visible-xxs': string;
12
+ |};
@@ -0,0 +1,50 @@
1
+ /* @flow */
2
+
3
+ import React from 'react'
4
+ import classname from 'classnames'
5
+
6
+ import styles from './styles.scss'
7
+
8
+ type FlipProps = {
9
+ children: React.ChildrenArray<React.Element<typeof FlipFront | typeof FlipBack>>,
10
+ flipped: boolean,
11
+ }
12
+
13
+ type FlipSideProps = {
14
+ children?: React.Node,
15
+ className?: string,
16
+ }
17
+
18
+ const Flip = ({ children, flipped }: FlipProps) => (
19
+ <div className={styles['flip-container']}>
20
+ <div className={
21
+ classname({
22
+ [styles['flip']]: flipped,
23
+ [styles['flap']]: !flipped,
24
+ })
25
+ }
26
+ >
27
+ {children}
28
+ </div>
29
+ </div>
30
+ )
31
+
32
+ // eslint-disable-next-line react/no-multi-comp
33
+ const FlipFront = ({
34
+ children,
35
+ className,
36
+ }: FlipSideProps) => (
37
+ <div className={classname(styles.front, className)}>{children}</div>
38
+ )
39
+
40
+ // eslint-disable-next-line react/no-multi-comp
41
+ const FlipBack = ({
42
+ children,
43
+ className,
44
+ }: FlipSideProps) => (
45
+ <div className={classname(styles.back, className)}>{children}</div>
46
+ )
47
+
48
+ Flip.Front = FlipFront
49
+ Flip.Back = FlipBack
50
+ export default Flip
@@ -0,0 +1,41 @@
1
+ @import "base-mixins/_all.scss";
2
+ @import "base-variables/_all.scss";
3
+
4
+ .flip-container {
5
+ perspective: 1000px;
6
+ height: 100%;
7
+ }
8
+
9
+ .flip {
10
+ @include rotateY(180deg);
11
+ @include transition(0.6s);
12
+ transform-style: preserve-3d;
13
+
14
+ position: relative;
15
+ }
16
+
17
+ .flap {
18
+ @include rotateY(0deg);
19
+ @include transition(0.6s);
20
+ transform-style: preserve-3d;
21
+
22
+ position: relative;
23
+ height: 100%;
24
+ }
25
+
26
+ .front, .back {
27
+ @include backface-visibility(hidden);
28
+ height: 100%;
29
+ }
30
+
31
+ .front {
32
+ z-index: 2;
33
+ @include rotateY(0deg);
34
+ }
35
+
36
+ .back {
37
+ @include rotateY(180deg);
38
+ position: absolute;
39
+ top: 0;
40
+ left: 0;
41
+ }
@@ -0,0 +1,11 @@
1
+ // @flow
2
+ /* This file is automatically generated by css-modules-flow-types */
3
+ declare module.exports: {|
4
+ +'back': string;
5
+ +'flap': string;
6
+ +'flip': string;
7
+ +'flip-container': string;
8
+ +'front': string;
9
+ +'hidden-xxs': string;
10
+ +'visible-xxs': string;
11
+ |};
@@ -0,0 +1,34 @@
1
+ /* @flow */
2
+
3
+ import React from 'react'
4
+ import classNames from 'classnames'
5
+
6
+ import styles from './flyout_panel.scss'
7
+
8
+ type FlyoutPanelProps = {|
9
+ className: ?string,
10
+ position: "left" | "right",
11
+ show: ?boolean,
12
+ children: string,
13
+ |}
14
+
15
+ const FlyoutPanel = ({ position, show, children, className }: FlyoutPanelProps) => {
16
+ const positionClass = position == "right" ? styles.right : styles.left
17
+ const classes = classNames(
18
+ styles['flyout-panel'],
19
+ positionClass,
20
+ className,
21
+ "col-md-5",
22
+ show ? styles.open : null
23
+ )
24
+ const scrollClasses = classNames(styles['scroll-inner-box'], 'p-5', 'pt-2')
25
+ return (
26
+ <div className={classes}>
27
+ <div className={scrollClasses}>
28
+ {children}
29
+ </div>
30
+ </div>
31
+ )
32
+ }
33
+
34
+ export default FlyoutPanel