Javi Velasco 2016-11-22 08:46:32 +01:00
parent 084e367bb7
commit 2e2a8fdc12
215 changed files with 10270 additions and 19663 deletions

2
.gitignore vendored
View File

@ -1,6 +1,6 @@
lib
build
node_modules
npm-debug.log
yarn.lock
.idea
.DS_Store

4354
docs/yarn.lock Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,301 +0,0 @@
//-- Color definitions taken from Material Design Lite
// Red
$palette-red-50: rgb(255,235,238);
$palette-red-100: rgb(255,205,210);
$palette-red-200: rgb(239,154,154);
$palette-red-300: rgb(229,115,115);
$palette-red-400: rgb(239,83,80);
$palette-red-500: rgb(244,67,54);
$palette-red-600: rgb(229,57,53);
$palette-red-700: rgb(211,47,47);
$palette-red-800: rgb(198,40,40);
$palette-red-900: rgb(183,28,28);
$palette-red-a100: rgb(255,138,128);
$palette-red-a200: rgb(255,82,82);
$palette-red-a400: rgb(255,23,68);
$palette-red-a700: rgb(213,0,0);
// Pink
$palette-pink-50: rgb(252,228,236);
$palette-pink-100: rgb(248,187,208);
$palette-pink-200: rgb(244,143,177);
$palette-pink-300: rgb(240,98,146);
$palette-pink-400: rgb(236,64,122);
$palette-pink-500: rgb(233,30,99);
$palette-pink-600: rgb(216,27,96);
$palette-pink-700: rgb(194,24,91);
$palette-pink-800: rgb(173,20,87);
$palette-pink-900: rgb(136,14,79);
$palette-pink-a100: rgb(255,128,171);
$palette-pink-a200: rgb(255,64,129);
$palette-pink-a400: rgb(245,0,87);
$palette-pink-a700: rgb(197,17,98);
// Purple
$palette-purple-50: rgb(243,229,245);
$palette-purple-100: rgb(225,190,231);
$palette-purple-200: rgb(206,147,216);
$palette-purple-300: rgb(186,104,200);
$palette-purple-400: rgb(171,71,188);
$palette-purple-500: rgb(156,39,176);
$palette-purple-600: rgb(142,36,170);
$palette-purple-700: rgb(123,31,162);
$palette-purple-800: rgb(106,27,154);
$palette-purple-900: rgb(74,20,140);
$palette-purple-a100: rgb(234,128,252);
$palette-purple-a200: rgb(224,64,251);
$palette-purple-a400: rgb(213,0,249);
$palette-purple-a700: rgb(170,0,255);
//Deep Purple
$palette-deep-purple-50: rgb(237,231,246);
$palette-deep-purple-100: rgb(209,196,233);
$palette-deep-purple-200: rgb(179,157,219);
$palette-deep-purple-300: rgb(149,117,205);
$palette-deep-purple-400: rgb(126,87,194);
$palette-deep-purple-500: rgb(103,58,183);
$palette-deep-purple-600: rgb(94,53,177);
$palette-deep-purple-700: rgb(81,45,168);
$palette-deep-purple-800: rgb(69,39,160);
$palette-deep-purple-900: rgb(49,27,146);
$palette-deep-purple-a100: rgb(179,136,255);
$palette-deep-purple-a200: rgb(124,77,255);
$palette-deep-purple-a400: rgb(101,31,255);
$palette-deep-purple-a700: rgb(98,0,234);
// Indigo
$palette-indigo-50: rgb(232,234,246);
$palette-indigo-100: rgb(197,202,233);
$palette-indigo-200: rgb(159,168,218);
$palette-indigo-300: rgb(121,134,203);
$palette-indigo-400: rgb(92,107,192);
$palette-indigo-500: rgb(63,81,181);
$palette-indigo-600: rgb(57,73,171);
$palette-indigo-700: rgb(48,63,159);
$palette-indigo-800: rgb(40,53,147);
$palette-indigo-900: rgb(26,35,126);
$palette-indigo-a100: rgb(140,158,255);
$palette-indigo-a200: rgb(83,109,254);
$palette-indigo-a400: rgb(61,90,254);
$palette-indigo-a700: rgb(48,79,254);
// Blue
$palette-blue-50: rgb(227,242,253);
$palette-blue-100: rgb(187,222,251);
$palette-blue-200: rgb(144,202,249);
$palette-blue-300: rgb(100,181,246);
$palette-blue-400: rgb(66,165,245);
$palette-blue-500: rgb(33,150,243);
$palette-blue-600: rgb(30,136,229);
$palette-blue-700: rgb(25,118,210);
$palette-blue-800: rgb(21,101,192);
$palette-blue-900: rgb(13,71,161);
$palette-blue-a100: rgb(130,177,255);
$palette-blue-a200: rgb(68,138,255);
$palette-blue-a400: rgb(41,121,255);
$palette-blue-a700: rgb(41,98,255);
// Light Blue
$palette-light-blue-50: rgb(225,245,254);
$palette-light-blue-100: rgb(179,229,252);
$palette-light-blue-200: rgb(129,212,250);
$palette-light-blue-300: rgb(79,195,247);
$palette-light-blue-400: rgb(41,182,246);
$palette-light-blue-500: rgb(3,169,244);
$palette-light-blue-600: rgb(3,155,229);
$palette-light-blue-700: rgb(2,136,209);
$palette-light-blue-800: rgb(2,119,189);
$palette-light-blue-900: rgb(1,87,155);
$palette-light-blue-a100: rgb(128,216,255);
$palette-light-blue-a200: rgb(64,196,255);
$palette-light-blue-a400: rgb(0,176,255);
$palette-light-blue-a700: rgb(0,145,234);
// Cyan
$palette-cyan-50: rgb(224,247,250);
$palette-cyan-100: rgb(178,235,242);
$palette-cyan-200: rgb(128,222,234);
$palette-cyan-300: rgb(77,208,225);
$palette-cyan-400: rgb(38,198,218);
$palette-cyan-500: rgb(0,188,212);
$palette-cyan-600: rgb(0,172,193);
$palette-cyan-700: rgb(0,151,167);
$palette-cyan-800: rgb(0,131,143);
$palette-cyan-900: rgb(0,96,100);
$palette-cyan-a100: rgb(132,255,255);
$palette-cyan-a200: rgb(24,255,255);
$palette-cyan-a400: rgb(0,229,255);
$palette-cyan-a700: rgb(0,184,212);
// Teal
$palette-teal-50: rgb(224,242,241);
$palette-teal-100: rgb(178,223,219);
$palette-teal-200: rgb(128,203,196);
$palette-teal-300: rgb(77,182,172);
$palette-teal-400: rgb(38,166,154);
$palette-teal-500: rgb(0,150,136);
$palette-teal-600: rgb(0,137,123);
$palette-teal-700: rgb(0,121,107);
$palette-teal-800: rgb(0,105,92);
$palette-teal-900: rgb(0,77,64);
$palette-teal-a100: rgb(167,255,235);
$palette-teal-a200: rgb(100,255,218);
$palette-teal-a400: rgb(29,233,182);
$palette-teal-a700: rgb(0,191,165);
// Green
$palette-green-50: rgb(232,245,233);
$palette-green-100: rgb(200,230,201);
$palette-green-200: rgb(165,214,167);
$palette-green-300: rgb(129,199,132);
$palette-green-400: rgb(102,187,106);
$palette-green-500: rgb(76,175,80);
$palette-green-600: rgb(67,160,71);
$palette-green-700: rgb(56,142,60);
$palette-green-800: rgb(46,125,50);
$palette-green-900: rgb(27,94,32);
$palette-green-a100: rgb(185,246,202);
$palette-green-a200: rgb(105,240,174);
$palette-green-a400: rgb(0,230,118);
$palette-green-a700: rgb(0,200,83);
// Green
$palette-light-green-50: rgb(241,248,233);
$palette-light-green-100: rgb(220,237,200);
$palette-light-green-200: rgb(197,225,165);
$palette-light-green-300: rgb(174,213,129);
$palette-light-green-400: rgb(156,204,101);
$palette-light-green-500: rgb(139,195,74);
$palette-light-green-600: rgb(124,179,66);
$palette-light-green-700: rgb(104,159,56);
$palette-light-green-800: rgb(85,139,47);
$palette-light-green-900: rgb(51,105,30);
$palette-light-green-a100: rgb(204,255,144);
$palette-light-green-a200: rgb(178,255,89);
$palette-light-green-a400: rgb(118,255,3);
$palette-light-green-a700: rgb(100,221,23);
// Lime
$palette-lime-50: rgb(249,251,231);
$palette-lime-100: rgb(240,244,195);
$palette-lime-200: rgb(230,238,156);
$palette-lime-300: rgb(220,231,117);
$palette-lime-400: rgb(212,225,87);
$palette-lime-500: rgb(205,220,57);
$palette-lime-600: rgb(192,202,51);
$palette-lime-700: rgb(175,180,43);
$palette-lime-800: rgb(158,157,36);
$palette-lime-900: rgb(130,119,23);
$palette-lime-a100: rgb(244,255,129);
$palette-lime-a200: rgb(238,255,65);
$palette-lime-a400: rgb(198,255,0);
$palette-lime-a700: rgb(174,234,0);
// Yellow
$palette-yellow-50: rgb(255,253,231);
$palette-yellow-100: rgb(255,249,196);
$palette-yellow-200: rgb(255,245,157);
$palette-yellow-300: rgb(255,241,118);
$palette-yellow-400: rgb(255,238,88);
$palette-yellow-500: rgb(255,235,59);
$palette-yellow-600: rgb(253,216,53);
$palette-yellow-700: rgb(251,192,45);
$palette-yellow-800: rgb(249,168,37);
$palette-yellow-900: rgb(245,127,23);
$palette-yellow-a100: rgb(255,255,141);
$palette-yellow-a200: rgb(255,255,0);
$palette-yellow-a400: rgb(255,234,0);
$palette-yellow-a700: rgb(255,214,0);
// Amber
$palette-amber-50: rgb(255,248,225);
$palette-amber-100: rgb(255,236,179);
$palette-amber-200: rgb(255,224,130);
$palette-amber-300: rgb(255,213,79);
$palette-amber-400: rgb(255,202,40);
$palette-amber-500: rgb(255,193,7);
$palette-amber-600: rgb(255,179,0);
$palette-amber-700: rgb(255,160,0);
$palette-amber-800: rgb(255,143,0);
$palette-amber-900: rgb(255,111,0);
$palette-amber-a100: rgb(255,229,127);
$palette-amber-a200: rgb(255,215,64);
$palette-amber-a400: rgb(255,196,0);
$palette-amber-a700: rgb(255,171,0);
// Orange
$palette-orange-50: rgb(255,243,224);
$palette-orange-100: rgb(255,224,178);
$palette-orange-200: rgb(255,204,128);
$palette-orange-300: rgb(255,183,77);
$palette-orange-400: rgb(255,167,38);
$palette-orange-500: rgb(255,152,0);
$palette-orange-600: rgb(251,140,0);
$palette-orange-700: rgb(245,124,0);
$palette-orange-800: rgb(239,108,0);
$palette-orange-900: rgb(230,81,0);
$palette-orange-a100: rgb(255,209,128);
$palette-orange-a200: rgb(255,171,64);
$palette-orange-a400: rgb(255,145,0);
$palette-orange-a700: rgb(255,109,0);
// Deep Orange
$palette-deep-orange-50: rgb(251,233,231);
$palette-deep-orange-100: rgb(255,204,188);
$palette-deep-orange-200: rgb(255,171,145);
$palette-deep-orange-300: rgb(255,138,101);
$palette-deep-orange-400: rgb(255,112,67);
$palette-deep-orange-500: rgb(255,87,34);
$palette-deep-orange-600: rgb(244,81,30);
$palette-deep-orange-700: rgb(230,74,25);
$palette-deep-orange-800: rgb(216,67,21);
$palette-deep-orange-900: rgb(191,54,12);
$palette-deep-orange-a100: rgb(255,158,128);
$palette-deep-orange-a200: rgb(255,110,64);
$palette-deep-orange-a400: rgb(255,61,0);
$palette-deep-orange-a700: rgb(221,44,0);
// Brown
$palette-brown-50: rgb(239,235,233);
$palette-brown-100: rgb(215,204,200);
$palette-brown-200: rgb(188,170,164);
$palette-brown-300: rgb(161,136,127);
$palette-brown-400: rgb(141,110,99);
$palette-brown-500: rgb(121,85,72);
$palette-brown-600: rgb(109,76,65);
$palette-brown-700: rgb(93,64,55);
$palette-brown-800: rgb(78,52,46);
$palette-brown-900: rgb(62,39,35);
// Grey
$palette-grey-50: rgb(250,250,250);
$palette-grey-100: rgb(245,245,245);
$palette-grey-200: rgb(238,238,238);
$palette-grey-300: rgb(224,224,224);
$palette-grey-400: rgb(189,189,189);
$palette-grey-500: rgb(158,158,158);
$palette-grey-600: rgb(117,117,117);
$palette-grey-700: rgb(97,97,97);
$palette-grey-800: rgb(66,66,66);
$palette-grey-900: rgb(33,33,33);
// Blue Grey
$palette-blue-grey-50: rgb(236,239,241);
$palette-blue-grey-100: rgb(207,216,220);
$palette-blue-grey-200: rgb(176,190,197);
$palette-blue-grey-300: rgb(144,164,174);
$palette-blue-grey-400: rgb(120,144,156);
$palette-blue-grey-500: rgb(96,125,139);
$palette-blue-grey-600: rgb(84,110,122);
$palette-blue-grey-700: rgb(69,90,100);
$palette-blue-grey-800: rgb(55,71,79);
$palette-blue-grey-900: rgb(38,50,56);
$color-black: rgb(0,0,0);
$color-white: rgb(255,255,255);
//-- The two possible colors for overlayed text.
$styleguide-generate-template: false !default;
$color-dark-contrast: $color-white !default;
$color-light-contrast: $color-black !default;

View File

@ -1,81 +0,0 @@
//-- Color configuration
$color-divider: $palette-grey-200 !default;
$color-background: $color-white !default;
$color-text: $palette-grey-900 !default;
$color-text-secondary: $palette-grey-600 !default;
$color-primary: $palette-indigo-500 !default;
$color-primary-dark: $palette-indigo-700 !default;
$color-accent: $palette-pink-a200 !default;
$color-accent-dark: $palette-pink-700 !default;
$color-primary-contrast: $color-dark-contrast !default;
$color-accent-contrast: $color-dark-contrast !default;
//-- Sizing
$unit: 1rem !default;
// -- Fonts
$preferred-font: "Roboto", "Helvetica", "Arial", sans-serif !default;
$font-size: 1.6 * $unit !default;
$font-size-tiny: 1.2 * $unit !default;
$font-size-small: 1.4 * $unit !default;
$font-size-normal: $font-size !default;
$font-size-big: 1.8 * $unit !default;
$font-weight-thin: 300 !default;
$font-weight-normal: 400 !default;
$font-weight-semi-bold: 500 !default;
$font-weight-bold: 700 !default;
//-- Shadows
$shadow-key-umbra-opacity: 0.2 !default;
$shadow-key-penumbra-opacity: 0.14 !default;
$shadow-ambient-shadow-opacity: 0.12 !default;
//-- Depth Shadows
$zdepth-shadow-1: 0 1px 6px rgba(0,0,0,.12), 0 1px 4px rgba(0,0,0,.24);
$zdepth-shadow-2: 0 3px 10px rgba(0,0,0,.16), 0 3px 10px rgba(0,0,0,.23);
$zdepth-shadow-3: 0 10px 30px rgba(0,0,0,.19), 0 6px 10px rgba(0,0,0,.23);
$zdepth-shadow-4: 0 14px 45px rgba(0,0,0,.25), 0 10px 18px rgba(0,0,0,.22);
$zdepth-shadow-5: 0 19px 60px rgba(0,0,0,.3), 0 15px 20px rgba(0,0,0,.22);
//-- Animation
$animation-duration: .35s;
$animation-delay: $animation-duration / 5;
$animation-curve-fast-out-slow-in: cubic-bezier(0.4, 0, 0.2, 1) !default;
$animation-curve-linear-out-slow-in: cubic-bezier(0, 0, 0.2, 1) !default;
$animation-curve-fast-out-linear-in: cubic-bezier(0.4, 0, 1, 1) !default;
$animation-curve-default: $animation-curve-fast-out-slow-in !default;
//-- Indexes
$z-index-highest: 300 !default;
$z-index-higher: 200 !default;
$z-index-high: 100 !default;
$z-index-normal: 1 !default;
$z-index-low: -100 !default;
$z-index-lower: -200 !default;
//-- Breakpoints
// height of app bar
// https://material.google.com/layout/metrics-keylines.html#metrics-keylines-keylines-spacing
$standard-increment-mobile: (5.6 * $unit) !default;
$standard-increment-desktop: (6.4 * $unit) !default;
// https://material.google.com/layout/metrics-keylines.html#metrics-keylines-baseline-grids
$baseline-grid: (0.8 * $unit) !default;
$layout-gutter-width-sm: ($baseline-grid * 2) !default;
$layout-gutter-width: ($baseline-grid * 3) !default;
// https://material.google.com/layout/responsive-ui.html#responsive-ui-breakpoints
// 4 columns
$layout-breakpoint-xxs: 480px !default;
// 8 columns
$layout-breakpoint-xs: 600px !default;
// 12 columns
$layout-breakpoint-sm-tablet: 720px !default;
$layout-breakpoint-sm: 840px !default;
$layout-breakpoint-md: 960px !default;
$layout-breakpoint-lg-tablet: 1024px !default;
$layout-breakpoint-lg: 1280px !default;
$layout-breakpoint-xl: 1440px !default;
$layout-breakpoint-xxl: 1600px !default;
$layout-breakpoint-xxxl: 1920px !default;

View File

@ -1,260 +0,0 @@
// scss-lint:disable VendorPrefix
@mixin typo-preferred-font($use-preferred: true) {
@if $use-preferred {
font-family: $preferred-font;
}
}
@mixin typo-display-4($color-contrast: false, $use-preferred: true) {
@include typo-preferred-font($use-preferred);
font-size: $unit * 11.2;
font-weight: 300;
line-height: 1;
letter-spacing: -.04em;
@if $color-contrast {
opacity: .54;
}
}
@mixin typo-display-3($color-contrast: false, $use-preferred: true) {
@include typo-preferred-font($use-preferred);
font-size: $unit * 5.6;
font-weight: 400;
line-height: 1.35;
letter-spacing: -.02em;
@if $color-contrast {
opacity: .54;
}
}
@mixin typo-display-2($color-contrast: false, $use-preferred: true) {
@include typo-preferred-font($use-preferred);
font-size: $unit * 4.5;
font-weight: 400;
line-height: $unit * 4.8;
@if $color-contrast {
opacity: .54;
}
}
@mixin typo-display-1($color-contrast: false, $use-preferred: true) {
@include typo-preferred-font($use-preferred);
font-size: $unit * 3.4;
font-weight: 400;
line-height: $unit * 4;
@if $color-contrast {
opacity: .54;
}
}
@mixin typo-headline($color-contrast: false, $use-preferred: true) {
@include typo-preferred-font($use-preferred);
font-size: $unit * 2.4;
font-weight: 400;
line-height: $unit * 3.2;
-moz-osx-font-smoothing: grayscale;
@if $color-contrast {
opacity: .87;
}
}
@mixin typo-title($color-contrast: false, $use-preferred: true) {
@include typo-preferred-font($use-preferred);
font-size: $unit * 2;
font-weight: 500;
line-height: 1;
letter-spacing: .02em;
@if $color-contrast {
opacity: .87;
}
}
@mixin typo-subhead($color-contrast: false, $use-preferred: true) {
@include typo-preferred-font($use-preferred);
font-size: $unit * 1.6;
font-weight: 400;
line-height: $unit * 2.4;
letter-spacing: .04em;
@if $color-contrast {
opacity: .87;
}
}
@mixin typo-subhead-2($color-contrast: false, $use-preferred: true) {
@include typo-preferred-font($use-preferred);
font-size: $unit * 1.6;
font-weight: 400;
line-height: $unit * 2.8;
letter-spacing: .04em;
@if $color-contrast {
opacity: .87;
}
}
@mixin typo-body-2($color-contrast: false, $use-preferred: false) {
@include typo-preferred-font($use-preferred);
font-size: $unit * 1.4;
line-height: $unit * 2.4;
letter-spacing: 0;
@if $use-preferred {
font-weight: 500;
} @else {
font-weight: bold;
}
@if $color-contrast {
opacity: .87;
}
}
@mixin typo-body-1($color-contrast: false, $use-preferred: false) {
@include typo-preferred-font($use-preferred);
font-size: $unit * 1.4;
font-weight: 400;
line-height: $unit * 2.4;
letter-spacing: 0;
@if $color-contrast {
opacity: .87;
}
}
@mixin typo-caption($color-contrast: false, $use-preferred: false) {
@include typo-preferred-font($use-preferred);
font-size: $unit * 1.2;
font-weight: 400;
line-height: 1;
letter-spacing: 0;
@if $color-contrast {
opacity: .54;
}
}
@mixin typo-blockquote($color-contrast: false, $use-preferred: true) {
@include typo-preferred-font($use-preferred);
position: relative;
font-size: $unit * 2.4;
font-style: italic;
font-weight: 300;
line-height: 1.35;
letter-spacing: .08em;
&:before {
position: absolute;
left: -.5em;
content: "";
}
&:after {
margin-left: -.05em;
content: "";
}
@if $color-contrast {
opacity: .54;
}
}
@mixin typo-menu($color-contrast: false, $use-preferred: true) {
@include typo-preferred-font($use-preferred);
font-size: $unit * 1.4;
font-weight: 500;
line-height: 1;
letter-spacing: 0;
@if $color-contrast {
opacity: .87;
}
}
@mixin typo-button($color-contrast: false, $use-preferred: true) {
@include typo-preferred-font($use-preferred);
font-size: $unit * 1.4;
font-weight: 500;
line-height: 1;
text-transform: uppercase;
letter-spacing: 0;
@if $color-contrast {
opacity: .87;
}
}
//-- Shadows
@mixin focus-shadow() {
box-shadow: 0 0 8px rgba(0, 0, 0, .18), 0 8px 16px rgba(0, 0, 0, .36);
}
@mixin shadow-2dp() {
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, $shadow-key-penumbra-opacity),
0 3px 1px -2px rgba(0, 0, 0, $shadow-key-umbra-opacity),
0 1px 5px 0 rgba(0, 0, 0, $shadow-ambient-shadow-opacity);
}
@mixin shadow-3dp() {
box-shadow: 0 3px 4px 0 rgba(0, 0, 0, $shadow-key-penumbra-opacity),
0 3px 3px -2px rgba(0, 0, 0, $shadow-key-umbra-opacity),
0 1px 8px 0 rgba(0, 0, 0, $shadow-ambient-shadow-opacity);
}
@mixin shadow-4dp() {
box-shadow: 0 4px 5px 0 rgba(0, 0, 0, $shadow-key-penumbra-opacity),
0 1px 10px 0 rgba(0, 0, 0, $shadow-ambient-shadow-opacity),
0 2px 4px -1px rgba(0, 0, 0, $shadow-key-umbra-opacity);
}
@mixin shadow-6dp() {
box-shadow: 0 6px 10px 0 rgba(0, 0, 0, $shadow-key-penumbra-opacity),
0 1px 18px 0 rgba(0, 0, 0, $shadow-ambient-shadow-opacity),
0 3px 5px -1px rgba(0, 0, 0, $shadow-key-umbra-opacity);
}
@mixin shadow-8dp() {
box-shadow: 0 8px 10px 1px rgba(0, 0, 0, $shadow-key-penumbra-opacity),
0 3px 14px 2px rgba(0, 0, 0, $shadow-ambient-shadow-opacity),
0 5px 5px -3px rgba(0, 0, 0, $shadow-key-umbra-opacity);
}
@mixin shadow-16dp() {
box-shadow: 0 16px 24px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity),
0 6px 30px 5px rgba(0, 0, 0, $shadow-ambient-shadow-opacity),
0 8px 10px -5px rgba(0, 0, 0, $shadow-key-umbra-opacity);
}
//-- Animations
@mixin material-animation-fast-out-slow-in($duration: .2s) {
transition-timing-function: $animation-curve-fast-out-slow-in;
transition-duration: $duration;
}
@mixin material-animation-linear-out-slow-in($duration: .2s) {
transition-timing-function: $animation-curve-linear-out-slow-in;
transition-duration: $duration;
}
@mixin material-animation-fast-out-linear-in($duration: .2s) {
transition-timing-function: $animation-curve-fast-out-linear-in;
transition-duration: $duration;
}
@mixin material-animation-default($duration: .2s) {
transition-timing-function: $animation-curve-default;
transition-duration: $duration;
}
@mixin no-webkit-scrollbar {
&::-webkit-scrollbar {
width: 0;
height: 0;
}
}

View File

@ -1,29 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ZoomOut = exports.ZoomIn = exports.SlideRight = exports.SlideLeft = undefined;
var _slideLeft = require('./slide-left.scss');
var _slideLeft2 = _interopRequireDefault(_slideLeft);
var _slideRight = require('./slide-right.scss');
var _slideRight2 = _interopRequireDefault(_slideRight);
var _zoomIn = require('./zoom-in.scss');
var _zoomIn2 = _interopRequireDefault(_zoomIn);
var _zoomOut = require('./zoom-out.scss');
var _zoomOut2 = _interopRequireDefault(_zoomOut);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.SlideLeft = _slideLeft2.default;
exports.SlideRight = _slideRight2.default;
exports.ZoomIn = _zoomIn2.default;
exports.ZoomOut = _zoomOut2.default;

View File

@ -1,26 +0,0 @@
.enter, .leave {
position: absolute;
transition-timing-function: ease-in-out;
transition-duration: .35s;
transition-property: transform, opacity;
}
.enter {
opacity: 0;
transform: translate3d(-100%, 0, 0);
&.enterActive {
opacity: 1;
transform: translate3d(0, 0, 0);
}
}
.leave {
opacity: 1;
transform: translate3d(0, 0, 0);
&.leaveActive {
opacity: 0;
transform: translate3d(100%, 0, 0);
}
}

View File

@ -1,29 +0,0 @@
.enter, .leave {
position: absolute;
}
.enterActive, .leaveActive {
transition-timing-function: ease-in-out;
transition-duration: 350ms;
transition-property: transform, opacity;
}
.enter {
opacity: 0;
transform: translateX(100%);
&.enterActive {
opacity: 1;
transform: translateX(0);
}
}
.leave {
opacity: 1;
transform: translateX(0);
&.leaveActive {
opacity: 0;
transform: translateX(-100%);
}
}

View File

@ -1,33 +0,0 @@
@import "../colors";
@import "../globals";
@import "../mixins";
.enter, .leave {
position: absolute;
}
.enterActive, .leaveActive {
transition: transform, opacity;
transition-timing-function: $animation-curve-fast-out-slow-in;
transition-duration: 500ms;
}
.enter {
opacity: 0;
transform: scale(0.85);
&.enterActive {
opacity: 1;
transform: scale(1);
}
}
.leave {
opacity: 1;
transform: scale(1);
&.leaveActive {
opacity: 0;
transform: scale(1.25);
}
}

View File

@ -1,33 +0,0 @@
@import "../colors";
@import "../globals";
@import "../mixins";
.enter, .leave {
position: absolute;
}
.enterActive, .leaveActive {
transition: transform, opacity;
transition-timing-function: $animation-curve-fast-out-slow-in;
transition-duration: 500ms;
}
.enter {
opacity: 0;
transform: scale(1.25);
&.enterActive {
opacity: 1;
transform: scale(1);
}
}
.leave {
opacity: 1;
transform: scale(1);
&.leaveActive {
opacity: 0;
transform: scale(0.85);
}
}

View File

@ -1,177 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.AppBar = exports.appBarFactory = undefined;
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames2 = require('classnames');
var _classnames3 = _interopRequireDefault(_classnames2);
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
var _IconButton = require('../button/IconButton.js');
var _IconButton2 = _interopRequireDefault(_IconButton);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var factory = function factory(IconButton) {
var AppBar = function (_React$Component) {
_inherits(AppBar, _React$Component);
function AppBar() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, AppBar);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = AppBar.__proto__ || Object.getPrototypeOf(AppBar)).call.apply(_ref, [this].concat(args))), _this), _this.state = { hidden: false, height: 0 }, _this.initializeScroll = function () {
window.addEventListener('scroll', _this.handleScroll);
var _this$rootNode$getBou = _this.rootNode.getBoundingClientRect(),
height = _this$rootNode$getBou.height;
_this.curScroll = window.scrollY;
_this.setState({ height: height });
}, _this.endScroll = function () {
window.removeEventListener('scroll', _this.handleScroll);
}, _this.handleScroll = function () {
var scrollDiff = _this.curScroll - window.scrollY;
var hidden = scrollDiff < 0 && window.scrollY !== undefined && window.scrollY > _this.state.height;
_this.setState({ hidden: hidden });
_this.curScroll = window.scrollY;
}, _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(AppBar, [{
key: 'componentDidMount',
value: function componentDidMount() {
if (this.props.scrollHide) {
this.initializeScroll();
}
}
}, {
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
if (!this.props.scrollHide && nextProps.scrollHide) {
this.initializeScroll();
}
if (this.props.scrollHide && !nextProps.scrollHide) {
this.endScroll();
}
}
}, {
key: 'componentWillUnmount',
value: function componentWillUnmount() {
if (this.props.scrollHide) {
this.endScroll();
}
}
}, {
key: 'render',
value: function render() {
var _classnames,
_this2 = this;
var _props = this.props,
children = _props.children,
leftIcon = _props.leftIcon,
onLeftIconClick = _props.onLeftIconClick,
onRightIconClick = _props.onRightIconClick,
rightIcon = _props.rightIcon,
theme = _props.theme,
title = _props.title;
var className = (0, _classnames3.default)(theme.appBar, (_classnames = {}, _defineProperty(_classnames, theme.fixed, this.props.fixed), _defineProperty(_classnames, theme.flat, this.props.flat), _defineProperty(_classnames, theme.scrollHide, this.state.hidden), _classnames), this.props.className);
return _react2.default.createElement(
'header',
{
className: className,
'data-react-toolbox': 'app-bar',
ref: function ref(node) {
_this2.rootNode = node;
}
},
leftIcon && _react2.default.createElement(IconButton, {
inverse: true,
className: (0, _classnames3.default)(theme.leftIcon),
onClick: onLeftIconClick,
icon: leftIcon }),
title && _react2.default.createElement(
'h1',
{ className: (0, _classnames3.default)(theme.title) },
title
),
children,
rightIcon && _react2.default.createElement(IconButton, {
inverse: true,
className: (0, _classnames3.default)(theme.rightIcon),
onClick: onRightIconClick,
icon: rightIcon })
);
}
}]);
return AppBar;
}(_react2.default.Component);
AppBar.propTypes = {
children: _react.PropTypes.node,
className: _react.PropTypes.string,
fixed: _react.PropTypes.bool,
flat: _react.PropTypes.bool,
leftIcon: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element]),
onLeftIconClick: _react.PropTypes.func,
onRightIconClick: _react.PropTypes.func,
rightIcon: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element]),
scrollHide: _react.PropTypes.bool,
theme: _react.PropTypes.shape({
appBar: _react.PropTypes.string,
fixed: _react.PropTypes.string,
flat: _react.PropTypes.string,
leftIcon: _react.PropTypes.string,
rightIcon: _react.PropTypes.string,
title: _react.PropTypes.string
}),
title: _react.PropTypes.string
};
AppBar.defaultProps = {
className: '',
fixed: false,
flat: false,
scrollHide: false
};
return AppBar;
};
var AppBar = factory(_IconButton2.default);
exports.default = (0, _reactCssThemr.themr)(_identifiers.APP_BAR)(AppBar);
exports.appBarFactory = factory;
exports.AppBar = AppBar;

View File

@ -1,8 +0,0 @@
$appbar-color: $color-primary-dark !default;
$appbar-contrast: $color-primary-contrast !default;
$appbar-title-total-distance: 8 * $unit !default;
$appbar-height: 6.4 * $unit !default;
$appbar-height-m-portrait: 5.6 * $unit !default;
$appbar-height-m-landscape: 4.8 * $unit !default;
$appbar-h-padding: 2.4 * $unit !default;
$appbar-title-distance: $appbar-title-total-distance - $appbar-h-padding !default;

View File

@ -1,74 +0,0 @@
import * as React from "react";
import ReactToolbox from "../index";
export interface AppBarTheme {
/**
* Used for the component root element.
*/
appBar?: string;
/**
* Added to the root element when the app bar is fixed.
*/
fixed?: string;
/**
* Added to the root element when the app bar is flat.
*/
flat?: string;
/**
* Used as the app bar title.
*/
title ?: string;
/**
* Added to the left icon app bar element.
*/
leftIcon?: string;
/**
* Added to the right icon app bar element.
*/
rightIcon?: string;
}
interface AppBarProps extends ReactToolbox.Props {
/**
* Children to pass through the component.
*/
children?: React.ReactNode;
/**
* Determine if the bar should have position fixed or relative.
* @default false
*/
fixed?: boolean;
/**
* If true, the AppBar shows a shadow.
* @default false
*/
flat?: boolean;
/**
* If it exists it is used as the AppBar title
*/
title?: string;
/**
* If it exists it is used as the AppBar left icon
*/
leftIcon?: string;
/**
* Called when the left icon is clicked
*/
onLeftIconClick?: Function;
/**
* If it exists it is used as the AppBar right icon
*/
rightIcon?: string;
/**
* Called when the righticon is clicked
*/
onRightIconClick?: Function;
/**
* Classnames object defining the component style.
*/
theme?: AppBarTheme;
}
export class AppBar extends React.Component<AppBarProps, {}> { }
export default AppBar;

View File

@ -1,26 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.AppBar = undefined;
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
var _AppBar = require('./AppBar.js');
var _button = require('../button');
var _theme = require('./theme.scss');
var _theme2 = _interopRequireDefault(_theme);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var AppBar = (0, _AppBar.appBarFactory)(_button.IconButton);
var ThemedAppBar = (0, _reactCssThemr.themr)(_identifiers.APP_BAR, _theme2.default)(AppBar);
exports.default = ThemedAppBar;
exports.AppBar = ThemedAppBar;

View File

@ -1,65 +0,0 @@
@import "../colors";
@import "../globals";
@import "../mixins";
@import "./config";
.appBar {
display: flex;
height: $appbar-height;
align-items: center;
padding: 0 $appbar-h-padding;
color: $appbar-contrast;
background: $appbar-color;
@media screen and (max-width: $layout-breakpoint-xxs) and (orientation: portrait) {
height: $appbar-height-m-portrait;
}
@media screen and (max-width: $layout-breakpoint-xs) and (orientation: landscape) {
height: $appbar-height-m-landscape;
}
&:not(.flat) {
z-index: $z-index-high;
box-shadow: 0 2px 5px rgba(0,0,0,.26);
}
&.fixed {
position: fixed;
top: 0;
right: 0;
left: 0;
z-index: $z-index-highest;
}
a {
color: $appbar-contrast;
}
.title {
flex-grow: 1;
font-size: 1.8 * $unit;
font-weight: bold;
> small {
font-size: 1.8 * $unit;
font-weight: normal;
}
}
.leftIcon {
margin-left: -1.2 * $unit;
}
.rightIcon {
margin-right: -1.2 * $unit;
margin-left: auto;
}
transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
transition-duration: .5s;
transition-property: transform;
&.scrollHide {
transform: translateY(-100%);
}
}

View File

@ -1,498 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Autocomplete = exports.autocompleteFactory = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactDom = require('react-dom');
var _reactDom2 = _interopRequireDefault(_reactDom);
var _classnames4 = require('classnames');
var _classnames5 = _interopRequireDefault(_classnames4);
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
var _Chip = require('../chip/Chip.js');
var _Chip2 = _interopRequireDefault(_Chip);
var _Input = require('../input/Input.js');
var _Input2 = _interopRequireDefault(_Input);
var _events = require('../utils/events.js');
var _events2 = _interopRequireDefault(_events);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var POSITION = {
AUTO: 'auto',
DOWN: 'down',
UP: 'up'
};
var factory = function factory(Chip, Input) {
var Autocomplete = function (_Component) {
_inherits(Autocomplete, _Component);
function Autocomplete() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, Autocomplete);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Autocomplete.__proto__ || Object.getPrototypeOf(Autocomplete)).call.apply(_ref, [this].concat(args))), _this), _this.state = {
direction: _this.props.direction,
focus: false,
showAllSuggestions: _this.props.showSuggestionsWhenValueIsSet,
query: _this.query(_this.props.value)
}, _this.handleChange = function (keys, event) {
var key = _this.props.multiple ? keys : keys[0];
var showAllSuggestions = _this.props.showSuggestionsWhenValueIsSet;
var query = _this.query(key);
if (_this.props.onChange) _this.props.onChange(key, event);
if (_this.props.keepFocusOnChange) {
_this.setState({ query: query, showAllSuggestions: showAllSuggestions });
} else {
_this.setState({ focus: false, query: query, showAllSuggestions: showAllSuggestions }, function () {
_reactDom2.default.findDOMNode(_this).querySelector('input').blur();
});
}
}, _this.handleQueryBlur = function (event) {
if (_this.state.focus) _this.setState({ focus: false });
if (_this.props.onBlur) _this.props.onBlur(event, _this.state.active);
}, _this.handleQueryChange = function (value) {
_this.setState({ query: value, showAllSuggestions: false, active: null });
}, _this.handleQueryFocus = function () {
_this.suggestionsNode.scrollTop = 0;
_this.setState({ active: '', focus: true });
if (_this.props.onFocus) _this.props.onFocus();
}, _this.handleQueryKeyDown = function (event) {
// Clear query when pressing backspace and showing all suggestions.
var shouldClearQuery = event.which === 8 && _this.props.showSuggestionsWhenValueIsSet && _this.state.showAllSuggestions;
if (shouldClearQuery) {
_this.setState({ query: '' });
}
if (event.which === 13) {
var target = _this.state.active;
if (!target) {
target = _this.props.allowCreate ? _this.state.query : [].concat(_toConsumableArray(_this.suggestions().keys()))[0];
_this.setState({ active: target });
}
_this.select(event, target);
}
}, _this.handleQueryKeyUp = function (event) {
if (event.which === 27) _reactDom2.default.findDOMNode(_this).querySelector('input').blur();
if ([40, 38].indexOf(event.which) !== -1) {
var suggestionsKeys = [].concat(_toConsumableArray(_this.suggestions().keys()));
var index = suggestionsKeys.indexOf(_this.state.active) + (event.which === 40 ? +1 : -1);
if (index < 0) index = suggestionsKeys.length - 1;
if (index >= suggestionsKeys.length) index = 0;
_this.setState({ active: suggestionsKeys[index] });
}
}, _this.handleSuggestionHover = function (event) {
_this.setState({ active: event.target.id });
}, _this.select = function (event, target) {
_events2.default.pauseEvent(event);
var values = _this.values(_this.props.value);
var newValue = target === void 0 ? event.target.id : target;
_this.handleChange([newValue].concat(_toConsumableArray(values.keys())), event);
}, _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(Autocomplete, [{
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
if (!this.props.multiple) {
this.setState({
query: this.query(nextProps.value)
});
}
}
}, {
key: 'shouldComponentUpdate',
value: function shouldComponentUpdate(nextProps, nextState) {
if (!this.state.focus && nextState.focus && this.props.direction === POSITION.AUTO) {
var direction = this.calculateDirection();
if (this.state.direction !== direction) {
this.setState({ direction: direction });
}
}
return true;
}
}, {
key: 'calculateDirection',
value: function calculateDirection() {
if (this.props.direction === 'auto') {
var client = _reactDom2.default.findDOMNode(this.inputNode).getBoundingClientRect();
var screen_height = window.innerHeight || document.documentElement.offsetHeight;
var up = client.top > screen_height / 2 + client.height;
return up ? 'up' : 'down';
} else {
return this.props.direction;
}
}
}, {
key: 'query',
value: function query(key) {
var query_value = '';
if (!this.props.multiple && key) {
var source_value = this.source().get(key);
query_value = source_value ? source_value : key;
}
return query_value;
}
}, {
key: 'suggestions',
value: function suggestions() {
var suggest = new Map();
var rawQuery = this.state.query || (this.props.multiple ? '' : this.props.value);
var query = (rawQuery || '').toLowerCase().trim();
var values = this.values();
var source = this.source();
// Suggest any non-set value which matches the query
if (this.props.multiple) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = source[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var _step$value = _slicedToArray(_step.value, 2),
key = _step$value[0],
value = _step$value[1];
if (!values.has(key) && this.matches(value.toLowerCase().trim(), query)) {
suggest.set(key, value);
}
}
// When multiple is false, suggest any value which matches the query if showAllSuggestions is false
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
} else if (query && !this.state.showAllSuggestions) {
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
try {
for (var _iterator2 = source[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var _step2$value = _slicedToArray(_step2.value, 2),
key = _step2$value[0],
value = _step2$value[1];
if (this.matches(value.toLowerCase().trim(), query)) {
suggest.set(key, value);
}
}
// When multiple is false, suggest all values when showAllSuggestions is true
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return) {
_iterator2.return();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
} else {
suggest = source;
}
return suggest;
}
}, {
key: 'matches',
value: function matches(value, query) {
var suggestionMatch = this.props.suggestionMatch;
if (suggestionMatch === 'start') {
return value.startsWith(query);
} else if (suggestionMatch === 'anywhere') {
return value.includes(query);
} else if (suggestionMatch === 'word') {
var re = new RegExp('\\b' + query, 'g');
return re.test(value);
}
return false;
}
}, {
key: 'source',
value: function source() {
var src = this.props.source;
if (src.hasOwnProperty('length')) {
return new Map(src.map(function (item) {
return Array.isArray(item) ? [].concat(_toConsumableArray(item)) : [item, item];
}));
} else {
return new Map(Object.keys(src).map(function (key) {
return [key, src[key]];
}));
}
}
}, {
key: 'values',
value: function values() {
var valueMap = new Map();
var vals = this.props.multiple ? this.props.value : [this.props.value];
var _iteratorNormalCompletion3 = true;
var _didIteratorError3 = false;
var _iteratorError3 = undefined;
try {
for (var _iterator3 = this.source()[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
var _step3$value = _slicedToArray(_step3.value, 2),
k = _step3$value[0],
v = _step3$value[1];
if (vals.indexOf(k) !== -1) valueMap.set(k, v);
}
} catch (err) {
_didIteratorError3 = true;
_iteratorError3 = err;
} finally {
try {
if (!_iteratorNormalCompletion3 && _iterator3.return) {
_iterator3.return();
}
} finally {
if (_didIteratorError3) {
throw _iteratorError3;
}
}
}
return valueMap;
}
}, {
key: 'unselect',
value: function unselect(key, event) {
if (!this.props.disabled) {
var values = this.values(this.props.value);
values.delete(key);
this.handleChange([].concat(_toConsumableArray(values.keys())), event);
}
}
}, {
key: 'renderSelected',
value: function renderSelected() {
var _this2 = this;
if (this.props.multiple) {
var selectedItems = [].concat(_toConsumableArray(this.values())).map(function (_ref2) {
var _ref3 = _slicedToArray(_ref2, 2),
key = _ref3[0],
value = _ref3[1];
return _react2.default.createElement(
Chip,
{
key: key,
className: _this2.props.theme.value,
deletable: true,
onDeleteClick: _this2.unselect.bind(_this2, key)
},
value
);
});
return _react2.default.createElement(
'ul',
{ className: this.props.theme.values },
selectedItems
);
}
}
}, {
key: 'renderSuggestions',
value: function renderSuggestions() {
var _this3 = this;
var theme = this.props.theme;
var suggestions = [].concat(_toConsumableArray(this.suggestions())).map(function (_ref4) {
var _ref5 = _slicedToArray(_ref4, 2),
key = _ref5[0],
value = _ref5[1];
var className = (0, _classnames5.default)(theme.suggestion, _defineProperty({}, theme.active, _this3.state.active === key));
return _react2.default.createElement(
'li',
{
id: key,
key: key,
className: className,
onMouseDown: _this3.select,
onMouseOver: _this3.handleSuggestionHover
},
value
);
});
return _react2.default.createElement(
'ul',
{
className: (0, _classnames5.default)(theme.suggestions, _defineProperty({}, theme.up, this.state.direction === 'up')),
ref: function ref(node) {
_this3.suggestionsNode = node;
}
},
suggestions
);
}
}, {
key: 'render',
value: function render() {
var _this4 = this;
var _props = this.props,
allowCreate = _props.allowCreate,
error = _props.error,
label = _props.label,
source = _props.source,
suggestionMatch = _props.suggestionMatch,
selectedPosition = _props.selectedPosition,
keepFocusOnChange = _props.keepFocusOnChange,
showSuggestionsWhenValueIsSet = _props.showSuggestionsWhenValueIsSet,
theme = _props.theme,
other = _objectWithoutProperties(_props, ['allowCreate', 'error', 'label', 'source', 'suggestionMatch', 'selectedPosition', 'keepFocusOnChange', 'showSuggestionsWhenValueIsSet', 'theme']);
var className = (0, _classnames5.default)(theme.autocomplete, _defineProperty({}, theme.focus, this.state.focus), this.props.className);
return _react2.default.createElement(
'div',
{ 'data-react-toolbox': 'autocomplete', className: className },
this.props.selectedPosition === 'above' ? this.renderSelected() : null,
_react2.default.createElement(Input, _extends({}, other, {
ref: function ref(node) {
_this4.inputNode = node;
},
autoComplete: 'off',
className: theme.input,
error: error,
label: label,
onBlur: this.handleQueryBlur,
onChange: this.handleQueryChange,
onFocus: this.handleQueryFocus,
onKeyDown: this.handleQueryKeyDown,
onKeyUp: this.handleQueryKeyUp,
theme: theme,
themeNamespace: 'input',
value: this.state.query
})),
this.renderSuggestions(),
this.props.selectedPosition === 'below' ? this.renderSelected() : null
);
}
}]);
return Autocomplete;
}(_react.Component);
Autocomplete.propTypes = {
allowCreate: _react.PropTypes.bool,
className: _react.PropTypes.string,
direction: _react.PropTypes.oneOf(['auto', 'up', 'down']),
disabled: _react.PropTypes.bool,
error: _react.PropTypes.string,
keepFocusOnChange: _react.PropTypes.bool,
label: _react.PropTypes.string,
multiple: _react.PropTypes.bool,
onBlur: _react.PropTypes.func,
onChange: _react.PropTypes.func,
onFocus: _react.PropTypes.func,
selectedPosition: _react.PropTypes.oneOf(['above', 'below']),
showSuggestionsWhenValueIsSet: _react.PropTypes.bool,
source: _react.PropTypes.any,
suggestionMatch: _react.PropTypes.oneOf(['start', 'anywhere', 'word']),
theme: _react.PropTypes.shape({
active: _react.PropTypes.string,
autocomplete: _react.PropTypes.string,
focus: _react.PropTypes.string,
input: _react.PropTypes.string,
suggestion: _react.PropTypes.string,
suggestions: _react.PropTypes.string,
up: _react.PropTypes.string,
value: _react.PropTypes.string,
values: _react.PropTypes.string
}),
value: _react.PropTypes.any
};
Autocomplete.defaultProps = {
allowCreate: false,
className: '',
direction: 'auto',
keepFocusOnChange: false,
multiple: true,
selectedPosition: 'above',
showSuggestionsWhenValueIsSet: false,
source: {},
suggestionMatch: 'start'
};
return Autocomplete;
};
var Autocomplete = factory(_Chip2.default, _Input2.default);
exports.default = (0, _reactCssThemr.themr)(_identifiers.AUTOCOMPLETE)(Autocomplete);
exports.autocompleteFactory = factory;
exports.Autocomplete = Autocomplete;

View File

@ -1,7 +0,0 @@
$autocomplete-color-primary-contrast: $color-primary-contrast !default;
$autocomplete-color-primary: $color-primary !default;
$autocomplete-overflow-max-height: 45vh !default;
$autocomplete-suggestion-active-background: $palette-grey-200 !default;
$autocomplete-suggestion-padding: $unit !default;
$autocomplete-suggestions-background: $color-white !default;
$autocomplete-value-margin: $unit * .25 $unit * .5 $unit * .25 0 !default;

View File

@ -1,106 +0,0 @@
import * as React from "react";
import ReactToolbox from "../index";
export interface AutocompleteTheme {
/**
* Used for a suggestion when it's active.
*/
active?: string;
/**
* Used for the root element.
*/
autocomplete?: string;
/**
* Used when the input is focused.
*/
focus?: string;
/**
* Used to style the Input component.
*/
input?: string;
/**
* Used for the label.
*/
label?: string;
/**
* Used to style each suggestion.
*/
suggestion?: string;
/**
* Used to style the suggestions container.
*/
suggestions?: string;
/**
* Used for the suggestions when it's opening to the top.
*/
up?: string;
/**
* Classname used for a single value.
*/
value?: string;
/**
* Classname used for the values container.
*/
values?: string;
}
interface AutocompleteProps extends ReactToolbox.Props {
/**
* Determines the opening direction. It can be auto, up or down.
* @default auto
*/
direction?: "auto" | "up" | "down";
/**
* If true, component will be disabled.
*/
disabled?: boolean;
/**
* Sets the error string for the internal input element.
* @default false
*/
error?: string;
/**
* The text string to use for the floating label element.
*/
label?: string;
/**
* If true, component can hold multiple values.
*/
multiple?: boolean;
/**
* Callback function that is fired when the components's value changes.
* @default auto
*/
onChange?: Function;
/**
* Determines if the selected list is shown above or below input. It can be above or below.
* @default above
*/
selectedPosition?: "above" | "below";
/**
* If true, the list of suggestions will not be filtered when a value is selected.
* @default false
*/
showSuggestionsWhenValueIsSet?: boolean;
/**
* Object of key/values or array representing all items suggested.
*/
source?: any;
/**
* Determines how suggestions are supplied.
* @default start
*/
suggestionMatch?: "start" | "anywhere" | "word";
/**
* Classnames object defining the component style.
*/
theme?: AutocompleteTheme;
/**
* Value or array of values currently selected component.
*/
value?: any;
}
export class Autocomplete extends React.Component<AutocompleteProps, {}> { }
export default Autocomplete;

View File

@ -1,32 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Autocomplete = undefined;
var _identifiers = require('../identifiers.js');
var _reactCssThemr = require('react-css-themr');
var _Autocomplete = require('./Autocomplete.js');
var _chip = require('../chip');
var _chip2 = _interopRequireDefault(_chip);
var _input = require('../input');
var _input2 = _interopRequireDefault(_input);
var _theme = require('./theme.scss');
var _theme2 = _interopRequireDefault(_theme);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Autocomplete = (0, _Autocomplete.autocompleteFactory)(_chip2.default, _input2.default);
var ThemedAutocomplete = (0, _reactCssThemr.themr)(_identifiers.AUTOCOMPLETE, _theme2.default)(Autocomplete);
exports.default = ThemedAutocomplete;
exports.Autocomplete = ThemedAutocomplete;

View File

@ -1,76 +0,0 @@
@import "../colors";
@import "../globals";
@import "../mixins";
@import "./config";
@import "../input/config";
.autocomplete {
position: relative;
padding: $unit 0;
&.focus {
.suggestions {
max-height: $autocomplete-overflow-max-height;
visibility: visible;
box-shadow: $zdepth-shadow-1;
}
}
}
.values {
flex-direction: row;
flex-wrap: wrap;
padding-bottom: $unit / 2;
}
.value {
margin: $autocomplete-value-margin;
}
.suggestions {
@include no-webkit-scrollbar;
position: absolute;
z-index: $z-index-high;
width: 100%;
max-height: 0;
overflow-x: hidden;
overflow-y: auto;
visibility: hidden;
background-color: $autocomplete-suggestions-background;
transition-timing-function: $animation-curve-default;
transition-duration: $animation-duration;
transition-property: max-height, box-shadow;
&:not(.up) {
margin-top: - $input-padding;
}
&.up {
bottom: 0;
}
}
.suggestion {
padding: $autocomplete-suggestion-padding;
font-size: $input-field-font-size;
cursor: pointer;
&.active {
background-color: $autocomplete-suggestion-active-background;
}
}
.input {
position: relative;
&:after {
$size: ($input-field-height / 7);
$border: $size solid transparent;
position: absolute;
top: 50%;
right: $input-chevron-offset;
width: 0;
height: 0;
pointer-events: none;
content: "";
border-top: $size solid $input-text-bottom-border-color;
border-right: $border;
border-left: $border;
transition: transform $animation-duration $animation-curve-default;
}
}

View File

@ -1,80 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Avatar = exports.avatarFactory = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
var _FontIcon = require('../font_icon/FontIcon.js');
var _FontIcon2 = _interopRequireDefault(_FontIcon);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var factory = function factory(FontIcon) {
var Avatar = function Avatar(_ref) {
var children = _ref.children,
className = _ref.className,
cover = _ref.cover,
icon = _ref.icon,
image = _ref.image,
theme = _ref.theme,
title = _ref.title,
other = _objectWithoutProperties(_ref, ['children', 'className', 'cover', 'icon', 'image', 'theme', 'title']);
return _react2.default.createElement(
'div',
_extends({ 'data-react-toolbox': 'avatar', className: (0, _classnames2.default)(theme.avatar, className) }, other),
children,
cover && typeof image === 'string' && _react2.default.createElement('span', { alt: title, className: theme.image, style: { backgroundImage: 'url(' + image + ')' } }),
!cover && (typeof image === 'string' ? _react2.default.createElement('img', { alt: title, className: theme.image, src: image, title: title }) : image),
typeof icon === 'string' ? _react2.default.createElement(FontIcon, { className: theme.letter, value: icon }) : icon,
title ? _react2.default.createElement(
'span',
{ className: theme.letter },
title[0]
) : null
);
};
Avatar.propTypes = {
children: _react.PropTypes.node,
className: _react.PropTypes.string,
cover: _react.PropTypes.bool,
icon: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element]),
image: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element]),
theme: _react.PropTypes.shape({
avatar: _react.PropTypes.string,
image: _react.PropTypes.string,
letter: _react.PropTypes.string
}),
title: _react.PropTypes.string
};
Avatar.defaultProps = {
cover: false
};
return Avatar;
};
var Avatar = factory(_FontIcon2.default);
exports.default = (0, _reactCssThemr.themr)(_identifiers.AVATAR)(Avatar);
exports.avatarFactory = factory;
exports.Avatar = Avatar;

View File

@ -1,4 +0,0 @@
$avatar-color: $color-white !default;
$avatar-background: $palette-grey-500 !default;
$avatar-size: 4 * $unit !default;
$avatar-font-size: 2.4 * $unit !default;

48
lib/avatar/index.d.ts vendored
View File

@ -1,48 +0,0 @@
import * as React from "react";
import ReactToolbox from "../index";
export interface AvatarTheme {
/**
* Used for the root class of the element.
*/
avatar?: string;
/**
* Added to the root element when the component has image.
*/
image?: string;
/**
* Used for the root element if the component shows the letter.
*/
letter?: string;
}
interface AvatarProps extends ReactToolbox.Props {
/**
* Children to pass through the component.
*/
children?: React.ReactNode;
/**
* Set to true if your image is not squared so it will be used as a cover for the element.
*/
cover?: boolean;
/**
* A key to identify an Icon from Material Design Icons or a custom Icon Element.
*/
icon?: React.ReactNode | string;
/**
* An image source or an image element.
*/
image?: React.ReactNode | string;
/**
* Classnames object defining the component style.
*/
theme?: AvatarTheme;
/**
* A title for the image. If no image is provided, the first letter will be displayed as the avatar.
*/
title?: string;
}
export class Avatar extends React.Component<AvatarProps, {}> { }
export default Avatar;

View File

@ -1,28 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Avatar = undefined;
var _identifiers = require('../identifiers.js');
var _reactCssThemr = require('react-css-themr');
var _Avatar = require('./Avatar.js');
var _FontIcon = require('../font_icon/FontIcon.js');
var _FontIcon2 = _interopRequireDefault(_FontIcon);
var _theme = require('./theme.scss');
var _theme2 = _interopRequireDefault(_theme);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Avatar = (0, _Avatar.avatarFactory)(_FontIcon2.default);
var ThemedAvatar = (0, _reactCssThemr.themr)(_identifiers.AVATAR, _theme2.default)(Avatar);
exports.default = ThemedAvatar;
exports.Avatar = ThemedAvatar;

View File

@ -1,44 +0,0 @@
@import "../colors";
@import "../globals";
@import "../mixins";
@import "./config";
.avatar {
position: relative;
display: inline-block;
width: $avatar-size;
height: $avatar-size;
overflow: hidden;
font-size: $avatar-font-size;
color: $avatar-color;
text-align: center;
vertical-align: middle;
background-color: $avatar-background;
border-radius: 50%;
> svg {
width: 1em;
height: $avatar-size;
fill: currentColor;
}
> img {
max-width: 100%;
height: auto;
}
}
.image {
position: absolute;
display: block;
width: 100%;
height: 100%;
background-color: transparent;
background-position: center;
background-size: cover;
border-radius: 50%;
}
.letter {
display: block;
width: 100%;
line-height: $avatar-size;
}

View File

@ -1,168 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.BrowseButton = exports.browseButtonFactory = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames2 = require('classnames');
var _classnames3 = _interopRequireDefault(_classnames2);
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
var _FontIcon = require('../font_icon/FontIcon.js');
var _FontIcon2 = _interopRequireDefault(_FontIcon);
var _Ripple = require('../ripple/Ripple.js');
var _Ripple2 = _interopRequireDefault(_Ripple);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var factory = function factory(ripple, FontIcon) {
var SimpleBrowseButton = function (_Component) {
_inherits(SimpleBrowseButton, _Component);
function SimpleBrowseButton() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, SimpleBrowseButton);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = SimpleBrowseButton.__proto__ || Object.getPrototypeOf(SimpleBrowseButton)).call.apply(_ref, [this].concat(args))), _this), _this.handleMouseUp = function (event) {
_this.refs.label.blur();
if (_this.props.onMouseUp) _this.props.onMouseUp(event);
}, _this.handleMouseLeave = function (event) {
_this.refs.label.blur();
if (_this.props.onMouseLeave) _this.props.onMouseLeave(event);
}, _this.handleFileChange = function (event) {
if (_this.props.onChange) _this.props.onChange(event);
}, _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(SimpleBrowseButton, [{
key: 'render',
value: function render() {
var _classnames;
var _props = this.props,
accent = _props.accent,
children = _props.children,
className = _props.className,
flat = _props.flat,
floating = _props.floating,
icon = _props.icon,
inverse = _props.inverse,
label = _props.label,
mini = _props.mini,
neutral = _props.neutral,
primary = _props.primary,
theme = _props.theme,
raised = _props.raised,
others = _objectWithoutProperties(_props, ['accent', 'children', 'className', 'flat', 'floating', 'icon', 'inverse', 'label', 'mini', 'neutral', 'primary', 'theme', 'raised']);
var element = 'label';
var level = primary ? 'primary' : accent ? 'accent' : 'neutral';
var shape = flat ? 'flat' : raised ? 'raised' : floating ? 'floating' : 'flat';
var classes = (0, _classnames3.default)(theme.button, [theme[shape]], (_classnames = {}, _defineProperty(_classnames, theme[level], neutral), _defineProperty(_classnames, theme.mini, mini), _defineProperty(_classnames, theme.inverse, inverse), _classnames), className);
var props = _extends({}, others, {
ref: 'label',
className: classes,
disabled: this.props.disabled,
onMouseUp: this.handleMouseUp,
onMouseLeave: this.handleMouseLeave,
'data-react-toolbox': 'label'
});
return _react2.default.createElement(element, props, icon ? _react2.default.createElement(FontIcon, { className: theme.icon, value: icon }) : null, _react2.default.createElement(
'span',
null,
label
), _react2.default.createElement('input', { className: classes, type: 'file', onChange: this.handleFileChange }), children);
}
}]);
return SimpleBrowseButton;
}(_react.Component);
SimpleBrowseButton.propTypes = {
accent: _react.PropTypes.bool,
children: _react.PropTypes.node,
className: _react.PropTypes.string,
disabled: _react.PropTypes.bool,
flat: _react.PropTypes.bool,
floating: _react.PropTypes.bool,
icon: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element]),
inverse: _react.PropTypes.bool,
label: _react.PropTypes.string,
mini: _react.PropTypes.bool,
neutral: _react.PropTypes.bool,
onChange: _react.PropTypes.func,
onMouseLeave: _react.PropTypes.func,
onMouseUp: _react.PropTypes.func,
primary: _react.PropTypes.bool,
raised: _react.PropTypes.bool,
theme: _react.PropTypes.shape({
accent: _react.PropTypes.string,
button: _react.PropTypes.string,
flat: _react.PropTypes.string,
floating: _react.PropTypes.string,
icon: _react.PropTypes.string,
inverse: _react.PropTypes.string,
mini: _react.PropTypes.string,
neutral: _react.PropTypes.string,
primary: _react.PropTypes.string,
raised: _react.PropTypes.string,
rippleWrapper: _react.PropTypes.string,
toggle: _react.PropTypes.string
}),
type: _react.PropTypes.string
};
SimpleBrowseButton.defaultProps = {
accent: false,
className: '',
flat: false,
floating: false,
mini: false,
neutral: true,
primary: false,
raised: false
};
return ripple(SimpleBrowseButton);
};
var BrowseButton = factory((0, _Ripple2.default)({ centered: false }), _FontIcon2.default);
exports.default = (0, _reactCssThemr.themr)(_identifiers.BUTTON)(BrowseButton);
exports.browseButtonFactory = factory;
exports.BrowseButton = BrowseButton;

View File

@ -1,164 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Button = exports.buttonFactory = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames2 = require('classnames');
var _classnames3 = _interopRequireDefault(_classnames2);
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
var _FontIcon = require('../font_icon/FontIcon.js');
var _FontIcon2 = _interopRequireDefault(_FontIcon);
var _Ripple = require('../ripple/Ripple.js');
var _Ripple2 = _interopRequireDefault(_Ripple);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var factory = function factory(ripple, FontIcon) {
var Button = function (_Component) {
_inherits(Button, _Component);
function Button() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, Button);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Button.__proto__ || Object.getPrototypeOf(Button)).call.apply(_ref, [this].concat(args))), _this), _this.handleMouseUp = function (event) {
_this.refs.button.blur();
if (_this.props.onMouseUp) _this.props.onMouseUp(event);
}, _this.handleMouseLeave = function (event) {
_this.refs.button.blur();
if (_this.props.onMouseLeave) _this.props.onMouseLeave(event);
}, _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(Button, [{
key: 'render',
value: function render() {
var _classnames;
var _props = this.props,
accent = _props.accent,
children = _props.children,
className = _props.className,
flat = _props.flat,
floating = _props.floating,
href = _props.href,
icon = _props.icon,
inverse = _props.inverse,
label = _props.label,
mini = _props.mini,
neutral = _props.neutral,
primary = _props.primary,
theme = _props.theme,
raised = _props.raised,
others = _objectWithoutProperties(_props, ['accent', 'children', 'className', 'flat', 'floating', 'href', 'icon', 'inverse', 'label', 'mini', 'neutral', 'primary', 'theme', 'raised']);
var element = href ? 'a' : 'button';
var level = primary ? 'primary' : accent ? 'accent' : 'neutral';
var shape = flat ? 'flat' : raised ? 'raised' : floating ? 'floating' : 'flat';
var classes = (0, _classnames3.default)(theme.button, [theme[shape]], (_classnames = {}, _defineProperty(_classnames, theme[level], neutral), _defineProperty(_classnames, theme.mini, mini), _defineProperty(_classnames, theme.inverse, inverse), _classnames), className);
var props = _extends({}, others, {
href: href,
ref: 'button',
className: classes,
disabled: this.props.disabled,
onMouseUp: this.handleMouseUp,
onMouseLeave: this.handleMouseLeave,
'data-react-toolbox': 'button'
});
return _react2.default.createElement(element, props, icon ? _react2.default.createElement(FontIcon, { className: theme.icon, value: icon }) : null, label, children);
}
}]);
return Button;
}(_react.Component);
Button.propTypes = {
accent: _react.PropTypes.bool,
children: _react.PropTypes.node,
className: _react.PropTypes.string,
disabled: _react.PropTypes.bool,
flat: _react.PropTypes.bool,
floating: _react.PropTypes.bool,
href: _react.PropTypes.string,
icon: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element]),
inverse: _react.PropTypes.bool,
label: _react.PropTypes.string,
mini: _react.PropTypes.bool,
neutral: _react.PropTypes.bool,
onMouseLeave: _react.PropTypes.func,
onMouseUp: _react.PropTypes.func,
primary: _react.PropTypes.bool,
raised: _react.PropTypes.bool,
theme: _react.PropTypes.shape({
accent: _react.PropTypes.string,
button: _react.PropTypes.string,
flat: _react.PropTypes.string,
floating: _react.PropTypes.string,
icon: _react.PropTypes.string,
inverse: _react.PropTypes.string,
mini: _react.PropTypes.string,
neutral: _react.PropTypes.string,
primary: _react.PropTypes.string,
raised: _react.PropTypes.string,
rippleWrapper: _react.PropTypes.string,
toggle: _react.PropTypes.string
}),
type: _react.PropTypes.string
};
Button.defaultProps = {
accent: false,
className: '',
flat: false,
floating: false,
mini: false,
neutral: true,
primary: false,
raised: false
};
return ripple(Button);
};
var Button = factory((0, _Ripple2.default)({ centered: false }), _FontIcon2.default);
exports.default = (0, _reactCssThemr.themr)(_identifiers.BUTTON)(Button);
exports.buttonFactory = factory;
exports.Button = Button;

View File

@ -1,135 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.IconButton = exports.iconButtonFactory = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames2 = require('classnames');
var _classnames3 = _interopRequireDefault(_classnames2);
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
var _FontIcon = require('../font_icon/FontIcon.js');
var _FontIcon2 = _interopRequireDefault(_FontIcon);
var _Ripple = require('../ripple/Ripple.js');
var _Ripple2 = _interopRequireDefault(_Ripple);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var factory = function factory(ripple, FontIcon) {
var IconButton = function (_Component) {
_inherits(IconButton, _Component);
function IconButton() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, IconButton);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = IconButton.__proto__ || Object.getPrototypeOf(IconButton)).call.apply(_ref, [this].concat(args))), _this), _this.handleMouseUp = function (event) {
_this.refs.button.blur();
if (_this.props.onMouseUp) _this.props.onMouseUp(event);
}, _this.handleMouseLeave = function (event) {
_this.refs.button.blur();
if (_this.props.onMouseLeave) _this.props.onMouseLeave(event);
}, _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(IconButton, [{
key: 'render',
value: function render() {
var _classnames;
var _props = this.props,
accent = _props.accent,
children = _props.children,
className = _props.className,
href = _props.href,
icon = _props.icon,
inverse = _props.inverse,
neutral = _props.neutral,
primary = _props.primary,
theme = _props.theme,
others = _objectWithoutProperties(_props, ['accent', 'children', 'className', 'href', 'icon', 'inverse', 'neutral', 'primary', 'theme']);
var element = href ? 'a' : 'button';
var level = primary ? 'primary' : accent ? 'accent' : 'neutral';
var classes = (0, _classnames3.default)([theme.toggle], (_classnames = {}, _defineProperty(_classnames, theme[level], neutral), _defineProperty(_classnames, theme.inverse, inverse), _classnames), className);
var props = _extends({}, others, {
href: href,
ref: 'button',
className: classes,
disabled: this.props.disabled,
onMouseUp: this.handleMouseUp,
onMouseLeave: this.handleMouseLeave,
'data-react-toolbox': 'button'
});
return _react2.default.createElement(element, props, icon ? typeof icon === 'string' ? _react2.default.createElement(FontIcon, { className: theme.icon, value: icon }) : icon : null, children);
}
}]);
return IconButton;
}(_react.Component);
IconButton.propTypes = {
accent: _react.PropTypes.bool,
children: _react.PropTypes.node,
className: _react.PropTypes.string,
disabled: _react.PropTypes.bool,
href: _react.PropTypes.string,
icon: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element]),
inverse: _react.PropTypes.bool,
neutral: _react.PropTypes.bool,
onMouseLeave: _react.PropTypes.func,
onMouseUp: _react.PropTypes.func,
primary: _react.PropTypes.bool,
theme: _react.PropTypes.object,
type: _react.PropTypes.string
};
IconButton.defaultProps = {
accent: false,
className: '',
neutral: true,
primary: false
};
return ripple(IconButton);
};
var IconButton = factory((0, _Ripple2.default)({ centered: true }), _FontIcon2.default);
exports.default = (0, _reactCssThemr.themr)(_identifiers.BUTTON)(IconButton);
exports.iconButtonFactory = factory;
exports.IconButton = IconButton;

View File

@ -1,66 +0,0 @@
'use strict';
var _expect = require('expect');
var _expect2 = _interopRequireDefault(_expect);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactDom = require('react-dom');
var _reactDom2 = _interopRequireDefault(_reactDom);
var _reactAddonsTestUtils = require('react-addons-test-utils');
var _reactAddonsTestUtils2 = _interopRequireDefault(_reactAddonsTestUtils);
var _theme = require('../theme.scss');
var _theme2 = _interopRequireDefault(_theme);
var _Button = require('../Button');
var _Button2 = _interopRequireDefault(_Button);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var getRenderedClassName = function getRenderedClassName(tree, Component) {
var rendered = _reactAddonsTestUtils2.default.findRenderedComponentWithType(tree, Component);
return _reactDom2.default.findDOMNode(rendered).getAttribute('class');
};
describe('Button', function () {
describe('#render', function () {
it('uses flat and neutral styles by default', function () {
var tree = _reactAddonsTestUtils2.default.renderIntoDocument(_react2.default.createElement(_Button2.default, { theme: _theme2.default }));
var className = getRenderedClassName(tree, _Button.Button);
(0, _expect2.default)(className).toContain(_theme2.default.flat);
(0, _expect2.default)(className).toContain(_theme2.default.neutral);
});
it('renders accent button with accent style', function () {
var tree = _reactAddonsTestUtils2.default.renderIntoDocument(_react2.default.createElement(_Button2.default, { accent: true, theme: _theme2.default }));
var className = getRenderedClassName(tree, _Button.Button);
(0, _expect2.default)(className).toContain(_theme2.default.flat);
(0, _expect2.default)(className).toContain(_theme2.default.accent);
});
it('renders mini button with mini style', function () {
var tree = _reactAddonsTestUtils2.default.renderIntoDocument(_react2.default.createElement(_Button2.default, { floating: true, mini: true, theme: _theme2.default }));
var className = getRenderedClassName(tree, _Button.Button);
(0, _expect2.default)(className).toContain(_theme2.default.floating);
(0, _expect2.default)(className).toContain(_theme2.default.neutral);
(0, _expect2.default)(className).toContain(_theme2.default.mini);
});
it('renders mini accented button with both styles', function () {
var tree = _reactAddonsTestUtils2.default.renderIntoDocument(_react2.default.createElement(_Button2.default, { accent: true, mini: true, theme: _theme2.default }));
var className = getRenderedClassName(tree, _Button.Button);
(0, _expect2.default)(className).toContain(_theme2.default.flat);
(0, _expect2.default)(className).toContain(_theme2.default.accent);
(0, _expect2.default)(className).toContain(_theme2.default.mini);
});
});
});

View File

@ -1,21 +0,0 @@
$button-neutral-color: $color-white !default;
$button-neutral-color-contrast: $palette-grey-900 !default;
$button-neutral-color-hover: rgba($palette-grey-900, .2) !default;
$button-primary-color-contrast: $color-primary-contrast !default;
$button-primary-color-hover: rgba($color-primary, .2) !default;
$button-primary-color: $color-primary !default;
$button-accent-color-contrast: $color-primary-contrast !default;
$button-accent-color-hover: rgba($color-accent, .2) !default;
$button-accent-color: $color-accent !default;
$button-disabled-text-color: rgba($color-black, 0.26) !default;
$button-disabled-background-color: rgba($color-black, 0.12) !default;
$button-border-radius: 0.2 * $unit !default;
$button-floating-font-size: $unit * 2.4 !default;
$button-floating-height: $unit * 5.6 !default;
$button-floating-mini-height: $unit * 4 !default;
$button-floating-mini-font-size: $button-floating-mini-height / 2.25 !default;
$button-height: $unit * 3.6 !default;
$button-squared-icon-margin: $unit * .6 !default;
$button-squared-min-width: 9 * $unit !default;
$button-squared-padding: 0 $unit * 1.2 !default;
$button-toggle-font-size: $unit * 2 !default;

View File

@ -1,17 +0,0 @@
@mixin btn-colors($name, $color, $background, $hover) {
.#{$name}:not([disabled]) {
&.raised, &.floating {
color: $color;
background: $background;
}
&.flat, &.toggle {
color: $background;
&:focus:not(:active) {
background: $hover;
}
}
&.flat:hover {
background: $hover;
}
}
}

337
lib/button/index.d.ts vendored
View File

@ -1,337 +0,0 @@
import * as React from "react";
import ReactToolbox from "../index";
export interface ButtonTheme {
/**
* Used for the root in case button is accent.
*/
accent?: string;
/**
* Used for the root element in any button.
*/
button?: string;
/**
* Used when the button is flat for the root element.
*/
flat?: string;
/**
* Used when the button is floating for the root element.
*/
floating?: string;
/**
* For the icon inside a button.
*/
icon?: string;
/**
* Used when colors are inverted.
*/
inverse?: string;
/**
* Used for mini floating buttons.
*/
mini?: string;
/**
* Used for neutral colored buttons.
*/
neutral?: string;
/**
* Used for primary buttons when button is primary.
*/
primary?: string;
/**
* Used when the button is raised for root element.
*/
raised?: string;
/**
* Used for the ripple element.
*/
rippleWrapper?: string;
/**
* Used for toggle buttons in the root element.
*/
toggle?: string;
}
interface ButtonProps extends ReactToolbox.Props {
/**
* Indicates if the button should have accent color.
* @default false
*/
accent?: boolean;
/**
* Children to pass through the component.
*/
children?: React.ReactNode;
/**
* If true, component will be disabled.
* @default false
*/
disabled?: boolean;
/**
* If true, the button will have a flat look.
* @default false
*/
flat?: boolean;
/**
* If true, the button will have a floating look.
* @default false
*/
floating?: boolean;
/**
* Creates a link for the button.
*/
href?: string;
/**
* Value of the icon (See Font Icon Component).
*/
icon?: React.ReactNode | string;
/**
* If true, the neutral colors are inverted. Useful to put a button over a dark background.
*/
inverse?: boolean;
/**
* The text string to use for the name of the button.
*/
label?: string;
/**
* To be used with floating button. If true, the button will be smaller.
* @default false
*/
mini?: boolean;
/**
* Set it to false if you don't want the neutral styles to be included.
* @default true
*/
neutral?: boolean;
/**
* Indicates if the button should have primary color.
* @default false
*/
primary?: boolean;
/**
* If true, the button will have a raised look.
* @default false
*/
raised?: boolean;
/**
* If true, component will have a ripple effect on click.
* @default true
*/
ripple?: boolean;
/**
* Classnames object defining the component style.
*/
theme?: ButtonTheme;
}
export class Button extends React.Component<ButtonProps, {}> { }
export interface IconButtonTheme {
/**
* Used for the root in case button is accent.
*/
accent?: string;
/**
* Used for the root element in any button.
*/
button?: string;
/**
* For the icon inside a button.
*/
icon?: string;
/**
* Used when colors are inverted.
*/
inverse?: string;
/**
* Used for neutral colored buttons.
*/
neutral?: string;
/**
* Used for primary buttons when button is primary.
*/
primary?: string;
/**
* Used for the ripple element.
*/
rippleWrapper?: string;
/**
* Used for toggle buttons in the root element.
*/
toggle?: string;
}
interface IconButtonProps extends ReactToolbox.Props {
/**
* Indicates if the button should have accent color.
* @default false
*/
accent?: boolean;
/**
* Children to pass through the component.
*/
children?: React.ReactNode;
/**
* If true, component will be disabled.
* @default false
*/
disabled?: boolean;
/**
* Creates a link for the button.
*/
href?: string;
/**
* Value of the icon (See Font Icon Component).
*/
icon?: React.ReactNode | string;
/**
* If true, the neutral colors are inverted. Useful to put a button over a dark background.
*/
inverse?: boolean;
/**
* Set it to false if you don't want the neutral styles to be included.
* @default true
*/
neutral?: boolean;
/**
* Indicates if the button should have primary color.
* @default false
*/
primary?: boolean;
/**
* If true, component will have a ripple effect on click.
* @default true
*/
ripple?: boolean;
/**
* Classnames object defining the component style.
*/
theme?: IconButtonTheme;
}
export class IconButton extends React.Component<IconButtonProps, {}> { }
export interface BrowseButtonTheme {
/**
* Used for the root in case button is accent.
*/
accent?: string;
/**
* Used for the root element in any button.
*/
button?: string;
/**
* Used when the button is flat for the root element.
*/
flat?: string;
/**
* Used when the button is floating for the root element.
*/
floating?: string;
/**
* For the icon inside a button.
*/
icon?: string;
/**
* Used when colors are inverted.
*/
inverse?: string;
/**
* Used for mini floating buttons.
*/
mini?: string;
/**
* Used for neutral colored buttons.
*/
neutral?: string;
/**
* Used for primary buttons when button is primary.
*/
primary?: string;
/**
* Used when the button is raised for root element.
*/
raised?: string;
/**
* Used for the ripple element.
*/
rippleWrapper?: string;
/**
* Used for toggle buttons in the root element.
*/
toggle?: string;
}
interface BrowseButtonProps extends ReactToolbox.Props {
/**
* Indicates if the button should have accent color.
* @default false
*/
accent?: boolean;
/**
* Children to pass through the component.
*/
children?: React.ReactNode;
/**
* If true, component will be disabled.
* @default false
*/
disabled?: boolean;
/**
* If true, the button will have a flat look.
* @default false
*/
flat?: boolean;
/**
* If true, the button will have a floating look.
* @default false
*/
floating?: boolean;
/**
* Creates a link for the button.
*/
href?: string;
/**
* Value of the icon (See Font Icon Component).
*/
icon?: React.ReactNode | string;
/**
* If true, the neutral colors are inverted. Useful to put a button over a dark background.
*/
inverse?: boolean;
/**
* The text string to use for the name of the button.
*/
label?: string;
/**
* To be used with floating button. If true, the button will be smaller.
* @default false
*/
mini?: boolean;
/**
* Set it to false if you don't want the neutral styles to be included.
* @default true
*/
neutral?: boolean;
/**
* Indicates if the button should have primary color.
* @default false
*/
primary?: boolean;
/**
* If true, the button will have a raised look.
* @default false
*/
raised?: boolean;
/**
* If true, component will have a ripple effect on click.
* @default true
*/
ripple?: boolean;
/**
* Classnames object defining the component style.
*/
theme?: BrowseButtonTheme;
}
export class BrowseButton extends React.Component<BrowseButtonProps, {}> { }

View File

@ -1,42 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.BrowseButton = exports.IconButton = exports.Button = undefined;
var _identifiers = require('../identifiers.js');
var _reactCssThemr = require('react-css-themr');
var _Button = require('./Button.js');
var _BrowseButton = require('./BrowseButton.js');
var _IconButton = require('./IconButton.js');
var _FontIcon = require('../font_icon/FontIcon.js');
var _FontIcon2 = _interopRequireDefault(_FontIcon);
var _ripple = require('../ripple');
var _ripple2 = _interopRequireDefault(_ripple);
var _theme = require('./theme.scss');
var _theme2 = _interopRequireDefault(_theme);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Button = (0, _Button.buttonFactory)((0, _ripple2.default)({ centered: false }), _FontIcon2.default);
var IconButton = (0, _IconButton.iconButtonFactory)((0, _ripple2.default)({ centered: true }), _FontIcon2.default);
var BrowseButton = (0, _BrowseButton.browseButtonFactory)((0, _ripple2.default)({ centered: false }), _FontIcon2.default);
var ThemedButton = (0, _reactCssThemr.themr)(_identifiers.BUTTON, _theme2.default)(Button);
var ThemedIconButton = (0, _reactCssThemr.themr)(_identifiers.BUTTON, _theme2.default)(IconButton);
var ThemedBrowseButton = (0, _reactCssThemr.themr)(_identifiers.BUTTON, _theme2.default)(BrowseButton);
exports.default = ThemedButton;
exports.Button = ThemedButton;
exports.IconButton = ThemedIconButton;
exports.BrowseButton = ThemedBrowseButton;

View File

@ -1,182 +0,0 @@
@import "../colors";
@import "../globals";
@import "../mixins";
@import "./config";
@import "./mixins";
.button {
position: relative;
> input {
position: absolute;
top: 0;
left:0;
z-index: 0;
width: 0.1px;
height: 0.1px;
padding: 0;
margin: 0;
overflow: hidden;
opacity: 0;
}
}
%button {
@include typo-button();
position: relative;
display: inline-block;
height: $button-height;
flex-direction: row;
align-content: center;
align-items: center;
justify-content: center;
line-height: $button-height;
text-align: center;
text-decoration: none;
white-space: nowrap;
cursor: pointer;
border: 0;
outline: none;
transition: box-shadow .2s $animation-curve-fast-out-linear-in, background-color .2s $animation-curve-default, color .2s $animation-curve-default;
&::-moz-focus-inner {
border: 0;
}
> span:not([data-react-toolbox="tooltip"]) {
display: inline-block;
line-height: $button-height;
vertical-align: top;
}
> svg {
display: inline-block;
width: 1em;
height: $button-height;
font-size: 120%;
vertical-align: top;
fill: currentColor;
}
> * {
pointer-events: none;
}
> .rippleWrapper {
overflow: hidden;
}
&[disabled] {
color: $button-disabled-text-color;
pointer-events: none;
cursor: auto;
}
}
%squared {
min-width: $button-squared-min-width;
padding: $button-squared-padding;
border-radius: $button-border-radius;
.icon {
margin-right: $button-squared-icon-margin;
font-size: 120%;
vertical-align: middle;
}
> svg {
margin-right: .5 * $unit;
}
}
%solid {
&[disabled] {
@include shadow-2dp();
background-color: $button-disabled-background-color;
}
&:active {
@include shadow-4dp();
}
&:focus:not(:active) {
@include focus-shadow();
}
}
.raised {
@extend %button;
@extend %squared;
@extend %solid;
@include shadow-2dp();
}
.flat {
@extend %button;
@extend %squared;
background: transparent;
}
.floating {
@extend %button;
@extend %solid;
width: $button-floating-height;
height: $button-floating-height;
font-size: $button-floating-font-size;
border-radius: 50%;
box-shadow: 0 1px 1.5px 0 rgba(0, 0, 0, .12), 0 1px 1px 0 rgba(0, 0, 0, .24);
.icon {
line-height: $button-floating-height;
}
> .rippleWrapper {
border-radius: 50%;
}
&.mini {
width: $button-floating-mini-height;
height: $button-floating-mini-height;
font-size: $button-floating-mini-font-size;
.icon {
line-height: $button-floating-mini-height;
}
}
}
.toggle {
@extend %button;
width: $button-height;
background: transparent;
border-radius: 50%;
> .icon, svg {
font-size: $button-toggle-font-size;
line-height: $button-height;
vertical-align: top;
}
> .rippleWrapper {
border-radius: 50%;
}
}
.neutral:not([disabled]) {
&.raised, &.floating {
color: $button-neutral-color-contrast;
background-color: $button-neutral-color;
}
&.flat, &.toggle {
color: $button-neutral-color-contrast;
&:focus:not(:active) {
background: $button-neutral-color-hover;
}
}
&.flat:hover {
background: $button-neutral-color-hover;
}
&.inverse {
&.raised, &.floating {
color: $button-neutral-color;
background-color: $button-neutral-color-contrast;
}
&.flat, &.toggle {
color: $button-neutral-color;
&:focus:not(:active) {
background: $button-neutral-color-hover;
}
}
&.flat:hover {
background: $button-neutral-color-hover;
}
}
}
@include btn-colors("primary", $button-primary-color-contrast, $button-primary-color, $button-primary-color-hover);
@include btn-colors("accent", $button-accent-color-contrast, $button-accent-color, $button-accent-color-hover);

View File

@ -1,55 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Card = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactCssThemr = require('react-css-themr');
var _classnames2 = require('classnames');
var _classnames3 = _interopRequireDefault(_classnames2);
var _identifiers = require('../identifiers.js');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var Card = function Card(_ref) {
var children = _ref.children,
className = _ref.className,
raised = _ref.raised,
theme = _ref.theme,
other = _objectWithoutProperties(_ref, ['children', 'className', 'raised', 'theme']);
var classes = (0, _classnames3.default)(theme.card, _defineProperty({}, theme.raised, raised), className);
return _react2.default.createElement(
'div',
_extends({ 'data-react-toolbox': 'card', className: classes }, other),
children
);
};
Card.propTypes = {
children: _react.PropTypes.any,
className: _react.PropTypes.string,
raised: _react.PropTypes.bool,
theme: _react.PropTypes.shape({
card: _react.PropTypes.string,
raised: _react.PropTypes.string
})
};
exports.default = (0, _reactCssThemr.themr)(_identifiers.CARD)(Card);
exports.Card = Card;

View File

@ -1,48 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.CardActions = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactCssThemr = require('react-css-themr');
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _identifiers = require('../identifiers.js');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var CardActions = function CardActions(_ref) {
var children = _ref.children,
className = _ref.className,
theme = _ref.theme,
other = _objectWithoutProperties(_ref, ['children', 'className', 'theme']);
return _react2.default.createElement(
'div',
_extends({ className: (0, _classnames2.default)(theme.cardActions, className) }, other),
children
);
};
CardActions.propTypes = {
children: _react.PropTypes.any,
className: _react.PropTypes.string,
theme: _react.PropTypes.shape({
cardActions: _react.PropTypes.string
})
};
exports.default = (0, _reactCssThemr.themr)(_identifiers.CARD)(CardActions);
exports.CardActions = CardActions;

View File

@ -1,75 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.CardMedia = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactCssThemr = require('react-css-themr');
var _classnames3 = require('classnames');
var _classnames4 = _interopRequireDefault(_classnames3);
var _identifiers = require('../identifiers.js');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var CardMedia = function CardMedia(_ref) {
var aspectRatio = _ref.aspectRatio,
children = _ref.children,
className = _ref.className,
color = _ref.color,
contentOverlay = _ref.contentOverlay,
image = _ref.image,
theme = _ref.theme,
other = _objectWithoutProperties(_ref, ['aspectRatio', 'children', 'className', 'color', 'contentOverlay', 'image', 'theme']);
var classes = (0, _classnames4.default)(theme.cardMedia, _defineProperty({}, theme[aspectRatio], aspectRatio), className);
var innerClasses = (0, _classnames4.default)(theme.content, _defineProperty({}, theme.contentOverlay, contentOverlay));
var bgStyle = {
backgroundColor: color ? color : undefined,
backgroundImage: typeof image === 'string' ? 'url(\'' + image + '\')' : undefined
};
return _react2.default.createElement(
'div',
_extends({ style: bgStyle, className: classes }, other),
_react2.default.createElement(
'div',
{ className: innerClasses },
children
)
);
};
CardMedia.propTypes = {
aspectRatio: _react.PropTypes.oneOf(['wide', 'square']),
children: _react.PropTypes.any,
className: _react.PropTypes.string,
color: _react.PropTypes.string,
contentOverlay: _react.PropTypes.bool,
image: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element]),
theme: _react.PropTypes.shape({
cardMedia: _react.PropTypes.string,
content: _react.PropTypes.string,
contentOverlay: _react.PropTypes.string,
square: _react.PropTypes.string,
wide: _react.PropTypes.string
})
};
exports.default = (0, _reactCssThemr.themr)(_identifiers.CARD)(CardMedia);
exports.CardMedia = CardMedia;

View File

@ -1,52 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.CardText = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactCssThemr = require('react-css-themr');
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _identifiers = require('../identifiers.js');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var CardText = function CardText(_ref) {
var children = _ref.children,
className = _ref.className,
theme = _ref.theme,
other = _objectWithoutProperties(_ref, ['children', 'className', 'theme']);
return _react2.default.createElement(
'div',
_extends({ className: (0, _classnames2.default)(theme.cardText, className) }, other),
typeof children === 'string' ? _react2.default.createElement(
'p',
null,
children
) : children
);
};
CardText.propTypes = {
children: _react.PropTypes.any,
className: _react.PropTypes.string,
theme: _react.PropTypes.shape({
cardText: _react.PropTypes.string
})
};
exports.default = (0, _reactCssThemr.themr)(_identifiers.CARD)(CardText);
exports.CardText = CardText;

View File

@ -1,93 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.cardTitleFactory = exports.CardTitle = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames2 = require('classnames');
var _classnames3 = _interopRequireDefault(_classnames2);
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
var _Avatar = require('../avatar/Avatar.js');
var _Avatar2 = _interopRequireDefault(_Avatar);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var factory = function factory(Avatar) {
var CardTitle = function CardTitle(_ref) {
var _classnames;
var avatar = _ref.avatar,
children = _ref.children,
className = _ref.className,
subtitle = _ref.subtitle,
theme = _ref.theme,
title = _ref.title,
other = _objectWithoutProperties(_ref, ['avatar', 'children', 'className', 'subtitle', 'theme', 'title']);
var classes = (0, _classnames3.default)(theme.cardTitle, (_classnames = {}, _defineProperty(_classnames, theme.small, avatar), _defineProperty(_classnames, theme.large, !avatar), _classnames), className);
return _react2.default.createElement(
'div',
_extends({ className: classes }, other),
typeof avatar === 'string' ? _react2.default.createElement(Avatar, { image: avatar, theme: theme }) : avatar,
_react2.default.createElement(
'div',
null,
title && _react2.default.createElement(
'h5',
{ className: theme.title },
title
),
children && typeof children === 'string' && _react2.default.createElement(
'h5',
{ className: theme.title },
children
),
subtitle && _react2.default.createElement(
'p',
{ className: theme.subtitle },
subtitle
),
children && typeof children !== 'string' && children
)
);
};
CardTitle.propTypes = {
avatar: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element]),
children: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element, _react.PropTypes.array]),
className: _react.PropTypes.string,
subtitle: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element]),
theme: _react.PropTypes.shape({
large: _react.PropTypes.string,
title: _react.PropTypes.string,
small: _react.PropTypes.string,
subtitle: _react.PropTypes.string
}),
title: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element])
};
return CardTitle;
};
var CardTitle = factory(_Avatar2.default);
exports.default = (0, _reactCssThemr.themr)(_identifiers.CARD)(CardTitle);
exports.CardTitle = CardTitle;
exports.cardTitleFactory = factory;

View File

@ -1,7 +0,0 @@
$card-color-white: $color-white !default;
$card-text-overlay: rgba($color-black, 0.35) !default;
$card-background-color: $card-color-white !default;
$card-padding-sm: .8 * $unit !default;
$card-padding: 1.6 * $unit !default;
$card-padding-lg: 2 * $unit !default;
$card-font-size: $font-size-small !default;

103
lib/card/index.d.ts vendored
View File

@ -1,103 +0,0 @@
import * as React from "react";
import ReactToolbox from "../index";
export interface CardTheme {
card?: string;
raised?: string;
}
interface CardProps extends ReactToolbox.Props {
/**
* Children to pass through the component.
*/
children?: React.ReactNode;
raised?: boolean;
/**
* Classnames object defining the component style.
*/
theme?: CardTheme;
}
export class Card extends React.Component<CardProps, {}> { }
export interface CardActionsTheme {
cardActions?: string;
}
interface CardActionsProps extends ReactToolbox.Props {
/**
* Children to pass through the component.
*/
children?: React.ReactNode;
/**
* Classnames object defining the component style.
*/
theme?: CardActionsTheme;
}
export class CardActions extends React.Component<CardActionsProps, {}> { }
export interface CardMediaTheme {
cardMedia?: string;
content?: string;
contentOverlay?: string;
square?: string;
wide?: string;
}
interface CardMediaProps extends ReactToolbox.Props {
aspectRatio?: "wide" | "square";
/**
* Children to pass through the component.
*/
children?: React.ReactNode;
color?: string;
contentOverlay?: boolean;
image?: React.ReactNode | string;
/**
* Classnames object defining the component style.
*/
theme?: CardMediaTheme;
}
export class CardMedia extends React.Component<CardMediaProps, {}> { }
export interface CardTextTheme {
cardText?: string;
}
interface CardTextProps extends ReactToolbox.Props {
/**
* Children to pass through the component.
*/
children?: React.ReactNode;
/**
* Classnames object defining the component style.
*/
theme?: CardTextTheme;
}
export class CardText extends React.Component<CardTextProps, {}> { }
export interface CardTitleTheme {
large?: string;
title?: string;
small?: string;
subtitle?: string;
}
interface CardTitleProps extends ReactToolbox.Props {
avatar?: React.ReactNode | string;
/**
* Children to pass through the component.
*/
children?: React.ReactNode;
subtitle?: React.ReactNode | string;
/**
* Classnames object defining the component style.
*/
theme?: CardTitleTheme;
title?: React.ReactNode | string;
}
export class CardTitle extends React.Component<CardTitleProps, {}> { }

View File

@ -1,44 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.CardTitle = exports.CardText = exports.CardMedia = exports.CardActions = exports.Card = undefined;
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
var _Card = require('./Card.js');
var _CardActions = require('./CardActions.js');
var _CardMedia = require('./CardMedia.js');
var _CardText = require('./CardText.js');
var _CardTitle = require('./CardTitle.js');
var _avatar = require('../avatar');
var _avatar2 = _interopRequireDefault(_avatar);
var _theme = require('./theme.scss');
var _theme2 = _interopRequireDefault(_theme);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var CardTitle = (0, _CardTitle.cardTitleFactory)(_avatar2.default);
var ThemedCard = (0, _reactCssThemr.themr)(_identifiers.CARD, _theme2.default)(_Card.Card);
var ThemedCardActions = (0, _reactCssThemr.themr)(_identifiers.CARD, _theme2.default)(_CardActions.CardActions);
var ThemedCardMedia = (0, _reactCssThemr.themr)(_identifiers.CARD, _theme2.default)(_CardMedia.CardMedia);
var ThemedCardText = (0, _reactCssThemr.themr)(_identifiers.CARD, _theme2.default)(_CardText.CardText);
var ThemedCardTitle = (0, _reactCssThemr.themr)(_identifiers.CARD, _theme2.default)(CardTitle);
exports.default = ThemedCard;
exports.Card = ThemedCard;
exports.CardActions = ThemedCardActions;
exports.CardMedia = ThemedCardMedia;
exports.CardText = ThemedCardText;
exports.CardTitle = ThemedCardTitle;

View File

@ -1,126 +0,0 @@
@import "../colors";
@import "../globals";
@import "../mixins";
@import "./config";
.card {
@include shadow-2dp();
display: flex;
width: 100%;
flex-direction: column;
overflow: hidden;
font-size: $card-font-size;
background: $card-background-color;
border-radius: .2 * $unit;
&.raised {
@include shadow-8dp();
}
[data-react-toolbox="avatar"] {
display: block;
}
}
.cardMedia {
position: relative;
background-repeat: no-repeat;
background-position: center center;
background-size: cover;
&.wide, &.square {
width: 100%;
.content {
position: absolute;
height: 100%;
}
.content > iframe, .content > video, .content > img {
max-width: 100%;
}
}
&::after {
display: block;
height: 0;
content: "";
}
&.wide::after {
padding-top: 56.25%;
}
&.square::after {
padding-top: 100%;
}
.content {
position: relative;
top: 0;
left: 0;
display: flex;
width: 100%;
flex-direction: column;
justify-content: flex-end;
overflow: hidden;
}
.contentOverlay {
.cardTitle, .cardActions, .cardText {
background-color: $card-text-overlay;
}
}
}
.cardTitle {
display: flex;
align-items: center;
[data-react-toolbox="avatar"] {
margin-right: 1.3 * $unit;
}
.subtitle {
color: $color-text-secondary;
}
&.large {
padding: $card-padding-lg $card-padding ($card-padding - .2 * $unit);
.title {
@include typo-headline();
line-height: 1.25;
}
}
&.small {
padding: $card-padding;
.title {
@include typo-body-2(false, true);
line-height: 1.4;
}
.subtitle {
font-weight: 500;
line-height: 1.4;
}
}
.cardMedia & {
.title, .subtitle {
color: $card-color-white;
}
}
}
.cardTitle, .cardText {
padding: ($card-padding - .2 * $unit) $card-padding;
&:last-child {
padding-bottom: $card-padding-lg;
}
+ .cardText {
padding-top: 0;
}
}
.cardActions {
display: flex;
align-items: center;
justify-content: flex-start;
padding: $card-padding-sm;
[data-react-toolbox="button"] {
min-width: 0;
padding: 0 $card-padding-sm;
margin: 0 $card-padding-sm / 2;
&:first-child {
margin-left: 0;
}
&:last-child {
margin-right: 0;
}
}
}

View File

@ -1,52 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames2 = require('classnames');
var _classnames3 = _interopRequireDefault(_classnames2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var factory = function factory(ripple) {
var Check = function Check(_ref) {
var checked = _ref.checked,
children = _ref.children,
onMouseDown = _ref.onMouseDown,
theme = _ref.theme,
style = _ref.style;
return _react2.default.createElement(
'div',
{
'data-react-toolbox': 'check',
className: (0, _classnames3.default)(theme.check, _defineProperty({}, theme.checked, checked)),
onMouseDown: onMouseDown,
style: style
},
children
);
};
Check.propTypes = {
checked: _react.PropTypes.bool,
children: _react.PropTypes.any,
onMouseDown: _react.PropTypes.func,
style: _react.PropTypes.object,
theme: _react.PropTypes.shape({
check: _react.PropTypes.string,
checked: _react.PropTypes.string
})
};
return ripple(Check);
};
exports.default = factory;

View File

@ -1,154 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Checkbox = exports.checkboxFactory = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames2 = require('classnames');
var _classnames3 = _interopRequireDefault(_classnames2);
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
var _Ripple = require('../ripple/Ripple.js');
var _Ripple2 = _interopRequireDefault(_Ripple);
var _Check = require('./Check.js');
var _Check2 = _interopRequireDefault(_Check);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var factory = function factory(Check) {
var Checkbox = function (_Component) {
_inherits(Checkbox, _Component);
function Checkbox() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, Checkbox);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Checkbox.__proto__ || Object.getPrototypeOf(Checkbox)).call.apply(_ref, [this].concat(args))), _this), _this.handleToggle = function (event) {
if (event.pageX !== 0 && event.pageY !== 0) _this.blur();
if (!_this.props.disabled && _this.props.onChange) {
_this.props.onChange(!_this.props.checked, event);
}
}, _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(Checkbox, [{
key: 'blur',
value: function blur() {
this.inputNode && this.inputNode.blur();
}
}, {
key: 'focus',
value: function focus() {
this.inputNode && this.inputNode.focus();
}
}, {
key: 'render',
value: function render() {
var _this2 = this;
var _props = this.props,
checked = _props.checked,
disabled = _props.disabled,
label = _props.label,
style = _props.style,
theme = _props.theme,
others = _objectWithoutProperties(_props, ['checked', 'disabled', 'label', 'style', 'theme']);
var className = (0, _classnames3.default)(theme.field, _defineProperty({}, theme.disabled, this.props.disabled), this.props.className);
return _react2.default.createElement(
'label',
{ 'data-react-toolbox': 'checkbox', className: className },
_react2.default.createElement('input', _extends({}, others, {
checked: checked,
className: theme.input,
disabled: disabled,
onChange: function onChange() {},
onClick: this.handleToggle,
ref: function ref(node) {
_this2.inputNode = node;
},
type: 'checkbox'
})),
_react2.default.createElement(Check, {
checked: checked,
disabled: disabled,
rippleClassName: theme.ripple,
style: style,
theme: theme
}),
label ? _react2.default.createElement(
'span',
{ 'data-react-toolbox': 'label', className: theme.text },
label
) : null
);
}
}]);
return Checkbox;
}(_react.Component);
Checkbox.propTypes = {
checked: _react.PropTypes.bool,
className: _react.PropTypes.string,
disabled: _react.PropTypes.bool,
label: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.node]),
name: _react.PropTypes.string,
onChange: _react.PropTypes.func,
style: _react.PropTypes.object,
theme: _react.PropTypes.shape({
disabled: _react.PropTypes.string,
field: _react.PropTypes.string,
input: _react.PropTypes.string,
ripple: _react.PropTypes.string
})
};
Checkbox.defaultProps = {
checked: false,
className: '',
disabled: false
};
return Checkbox;
};
var Check = (0, _Check2.default)((0, _Ripple2.default)({ centered: true, spread: 2.6 }));
var Checkbox = factory(Check);
exports.default = (0, _reactCssThemr.themr)(_identifiers.CHECKBOX)(Checkbox);
exports.checkboxFactory = factory;
exports.Checkbox = Checkbox;

View File

@ -1,12 +0,0 @@
$checkbox-color: $color-primary !default;
$checkbox-disabled-color: rgba($color-black, 0.26) !default;
$checkbox-field-margin-bottom: 1.5 * $unit !default;
$checkbox-focus-checked-color: rgba($color-primary, 0.26) !default;
$checkbox-ripple-duration: 650ms !default;
$checkbox-size: 1.8 * $unit !default;
$checkbox-focus-color: rgba($color-black, 0.1) !default;
$checkbox-focus-size: $checkbox-size * 2.3 !default;
$checkbox-text-color: $color-black !default;
$checkbox-text-font-size: $font-size-small !default;
$checkbox-total-height: 1.8 * $unit !default;
$checkbox-transition-duration: .2s !default;

View File

@ -1,70 +0,0 @@
import * as React from "react";
import ReactToolbox from "../index";
export interface CheckboxTheme {
/**
* Used as root in the check element.
*/
check?: string;
/**
* Used for the check element when it's checked.
*/
checked?: string;
/**
* Used when the component is disabled.
*/
disabled?: string;
/**
* Used as the root class of the component.
*/
field?: string;
/**
* Used for the input element.
*/
input?: string;
/**
* Used for the ripple component.
*/
ripple?: string;
/**
* Used for the text label.
*/
text?: string;
}
interface CheckboxProps extends ReactToolbox.Props {
/**
* Value for the checkbox, can be true or false.
* @default false
*/
checked?: boolean;
/**
* If true, the checkbox shown as disabled and cannot be modified.
* @default false
*/
disabled?: boolean;
/**
* Text label to attach next to the checkbox element.
*/
label?: React.ReactNode | string;
/**
* The name of the field to set in the input checkbox.
*/
name?: string;
/**
* Callback called when the checkbox is blurred.
*/
onBlur?: Function;
/**
* Callback called when the checkbox value is changed.
*/
onChange?: Function;
/**
* Classnames object defining the component style.
*/
theme?: CheckboxTheme;
}
export class Checkbox extends React.Component<CheckboxProps, {}> { }
export default Checkbox;

View File

@ -1,32 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Checkbox = undefined;
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
var _ripple = require('../ripple');
var _ripple2 = _interopRequireDefault(_ripple);
var _Checkbox = require('./Checkbox.js');
var _Check = require('./Check.js');
var _Check2 = _interopRequireDefault(_Check);
var _theme = require('./theme.scss');
var _theme2 = _interopRequireDefault(_theme);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var ThemedCheck = (0, _Check2.default)((0, _ripple2.default)({ centered: true, spread: 2.6 }));
var ThemedCheckbox = (0, _reactCssThemr.themr)(_identifiers.CHECKBOX, _theme2.default)((0, _Checkbox.checkboxFactory)(ThemedCheck));
exports.default = ThemedCheckbox;
exports.Checkbox = ThemedCheckbox;

View File

@ -1,121 +0,0 @@
@import "../colors";
@import "../globals";
@import "../mixins";
@import "./config";
.field {
position: relative;
display: block;
height: $checkbox-size;
margin-bottom: $checkbox-field-margin-bottom;
white-space: nowrap;
vertical-align: middle;
.ripple {
background-color: $checkbox-color;
opacity: .3;
transition-duration: $checkbox-ripple-duration;
}
}
.text {
display: inline-block;
padding-left: $unit;
font-size: $checkbox-text-font-size;
line-height: $checkbox-size;
color: $checkbox-text-color;
white-space: nowrap;
vertical-align: top;
}
.input {
position: absolute;
width: 0;
height: 0;
overflow: hidden;
opacity: 0;
&:focus ~ .check {
&:before {
position: absolute;
top: 50%;
left: 50%;
width: $checkbox-focus-size;
height: $checkbox-focus-size;
margin-top: - $checkbox-focus-size / 2;
margin-left: - $checkbox-focus-size / 2;
pointer-events: none;
content: "";
background-color: $checkbox-focus-color;
border-radius: 50%;
}
&.checked:before {
background-color: $checkbox-focus-checked-color;
}
}
}
.check {
position: relative;
display: inline-block;
width: $checkbox-size;
height: $checkbox-size;
vertical-align: top;
cursor: pointer;
border-color: $checkbox-text-color;
border-style: solid;
border-width: 2px;
border-radius: 2px;
transition-timing-function: $animation-curve-default;
transition-duration: $checkbox-transition-duration;
transition-property: background-color;
&.checked {
background-color: $checkbox-color;
border-color: $checkbox-color;
&:after {
position: absolute;
top: -.1 * $unit;
left: .4 * $unit;
width: .7 * $unit;
height: 1.2 * $unit;
content: "";
border-color: $color-background;
border-style: solid;
border-top: 0;
border-right-width: 2px;
border-bottom-width: 2px;
border-left: 0;
transform: rotate(45deg);
animation: checkmark-expand 140ms ease-out forwards;
}
}
}
.disabled {
> .text {
color: $checkbox-disabled-color;
}
> .check {
cursor: auto;
border-color: $checkbox-disabled-color;
&.checked {
cursor: auto;
background-color: $checkbox-disabled-color;
border-color: transparent;
}
}
}
@keyframes checkmark-expand {
0% {
top: .9 * $unit;
left: .6 * $unit;
width: 0;
height: 0;
}
100% {
top: -.1 * $unit;
left: .4 * $unit;
width: .7 * $unit;
height: 1.2 * $unit;
}
}

View File

@ -1,97 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Chip = exports.chipFactory = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames2 = require('classnames');
var _classnames3 = _interopRequireDefault(_classnames2);
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
var _Avatar = require('../avatar/Avatar.js');
var _Avatar2 = _interopRequireDefault(_Avatar);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var factory = function factory(Avatar) {
var Chip = function Chip(_ref) {
var _classnames;
var children = _ref.children,
className = _ref.className,
deletable = _ref.deletable,
onDeleteClick = _ref.onDeleteClick,
theme = _ref.theme,
other = _objectWithoutProperties(_ref, ['children', 'className', 'deletable', 'onDeleteClick', 'theme']);
var hasAvatar = false;
if (_react2.default.Children.count(children)) {
var firstChild = children[0];
hasAvatar = firstChild && firstChild.type && firstChild.type === Avatar;
}
var classes = (0, _classnames3.default)(theme.chip, (_classnames = {}, _defineProperty(_classnames, theme.deletable, !!deletable), _defineProperty(_classnames, theme.avatar, !!hasAvatar), _classnames), className);
return _react2.default.createElement(
'div',
_extends({ 'data-react-toolbox': 'chip', className: classes }, other),
typeof children === 'string' ? _react2.default.createElement(
'span',
null,
children
) : children,
deletable ? _react2.default.createElement(
'span',
{ className: theme.delete, onClick: onDeleteClick },
_react2.default.createElement(
'svg',
{ viewBox: '0 0 40 40', className: theme.deleteIcon },
_react2.default.createElement('path', { className: theme.deleteX, d: 'M 12,12 L 28,28 M 28,12 L 12,28' })
)
) : null
);
};
Chip.propTypes = {
children: _react.PropTypes.node,
className: _react.PropTypes.string,
deletable: _react.PropTypes.bool,
onDeleteClick: _react.PropTypes.func,
theme: _react.PropTypes.shape({
avatar: _react.PropTypes.string,
chip: _react.PropTypes.string,
deletable: _react.PropTypes.string,
delete: _react.PropTypes.string,
deleteIcon: _react.PropTypes.string,
deleteX: _react.PropTypes.string
})
};
Chip.defaultProps = {
className: '',
deletable: false
};
return Chip;
};
var Chip = factory(_Avatar2.default);
exports.default = (0, _reactCssThemr.themr)(_identifiers.CHIP)(Chip);
exports.chipFactory = factory;
exports.Chip = Chip;

View File

@ -1,17 +0,0 @@
$chip-height: 3.2 * $unit !default;
$chip-padding: 1.2 * $unit !default;
$chip-margin-right: 0.25 * $unit !default;
$chip-background: $palette-grey-200 !default;
$chip-icon-font-size: 2 * $unit !default;
$chip-icon-margin-right: 0.8 * $unit !default;
$chip-color: $color-text-secondary !default;
$chip-font-size: $font-size-small !default;
$chip-remove-size: 2.4 * $unit !default;
$chip-remove-margin: 0.4 * $unit !default;
$chip-remove-stroke-width: 0.4 * $unit !default;
$chip-remove-background: $palette-grey-400 !default;
$chip-remove-background-hover: $palette-grey-500 !default;
$chip-remove-color: $color-white !default;

53
lib/chip/index.d.ts vendored
View File

@ -1,53 +0,0 @@
import * as React from "react";
import ReactToolbox from "../index";
export interface ChipTheme {
/**
* Added to the root element when the component includes an avatar.
*/
avatar?: string;
/**
* Used for the root element.
*/
chip?: string;
/**
* Added to the root element when the component is deletable.
*/
deletable?: string;
/**
* Used for the delete element wrapper.
*/
delete?: string;
/**
* Used for the delete icon.
*/
deleteIcon?: string;
/**
* Used for the delete svg inner layer.
*/
deleteX?: string;
}
interface ChipProps extends ReactToolbox.Props {
/**
* Children to pass through the component.
*/
children?: React.ReactNode;
/**
* If true, the chip will be rendered with a delete icon.
* @default false
*/
deletable?: boolean;
/**
* Callback to be invoked when the delete icon is clicked.
*/
onDeleteClick?: Function;
/**
* Classnames object defining the component style.
*/
theme?: ChipTheme;
}
export class Chip extends React.Component<ChipProps, {}> { }
export default Chip;

View File

@ -1,28 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Chip = undefined;
var _identifiers = require('../identifiers.js');
var _reactCssThemr = require('react-css-themr');
var _Chip = require('./Chip.js');
var _avatar = require('../avatar');
var _avatar2 = _interopRequireDefault(_avatar);
var _theme = require('./theme.scss');
var _theme2 = _interopRequireDefault(_theme);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Chip = (0, _Chip.chipFactory)(_avatar2.default);
var ThemedChip = (0, _reactCssThemr.themr)(_identifiers.CHIP, _theme2.default)(Chip);
exports.default = ThemedChip;
exports.Chip = ThemedChip;

View File

@ -1,68 +0,0 @@
@import "../colors";
@import "../globals";
@import "../mixins";
@import "./config";
.chip {
position: relative;
display: inline-block;
max-width: 100%;
padding: 0 $chip-padding;
margin-right: $chip-margin-right;
overflow: hidden;
font-size: $chip-font-size;
line-height: $chip-height;
color: $chip-color;
text-overflow: ellipsis;
white-space: nowrap;
background-color: $chip-background;
border-radius: $chip-height;
}
.avatar {
padding-left: 0;
> [data-react-toolbox="avatar"] {
width: $chip-height;
height: $chip-height;
margin-right: $chip-icon-margin-right;
vertical-align: middle;
> span {
font-size: $chip-icon-font-size;
line-height: $chip-height;
}
}
}
.deletable {
padding-right: $chip-remove-size + 2 * $chip-remove-margin;
}
.delete {
position: absolute;
right: 0;
display: inline-block;
width: $chip-remove-size;
height: $chip-remove-size;
padding: $chip-remove-margin;
margin: $chip-remove-margin;
vertical-align: middle;
cursor: pointer;
}
.delete:hover .deleteIcon {
background: $chip-remove-background-hover;
}
.deleteIcon {
vertical-align: top;
background: $chip-remove-background;
border-radius: $chip-remove-size;
.deleteX {
fill: transparent;
stroke-width: $chip-remove-stroke-width;
stroke: $chip-remove-color;
}
}

View File

@ -1,95 +0,0 @@
@import "./colors";
@import "./globals";
@import "./mixins";
@import "~normalize.css";
html {
font-size: 62.5%;
}
body {
position: absolute;
width: 100%;
height: 100%;
padding: 0;
margin: 0;
font-family: Roboto, sans-serif;
font-size: 1.6rem;
-webkit-touch-callout: none;
* {
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
}
}
a, abbr, address, article, aside, audio, b, blockquote, body, caption, cite,
code, dd, del, dfn, dialog, div, dl, dt, em, fieldset, figure, footer, form, h1,
h2, h3, h4, h5, h6, header, hgroup, hr, html, i, iframe, img, ins, kbd, label,
legend, li, mark, menu, nav, object, ol, p, pre, q, samp, section, small, span,
strong, sub, sup, table, tbody, td, tfoot, th, thead, time, tr, ul, var, video {
padding: 0;
margin: 0;
border: 0;
outline: 0;
}
*, *:before, *:after {
box-sizing: border-box;
padding: 0;
margin: 0;
}
h1, h2, h3, h4, h5, h6, label, p, button, abbr, a, span, small {
font-smoothing: antialiased;
-webkit-font-smoothing: antialiased;
text-size-adjust: 100%;
}
a {
text-decoration: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
input:not([type="checkbox"]):not([type="radio"]), button {
outline: none;
appearance: none;
-webkit-touch-callout: none;
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
}
// -- Remove firefox default style for required inputs
input[required]:-moz-ui-invalid {
box-shadow: none;
}
// -- Material design font sizes
h1 small, h2 small, h3 small, h4 small, h5 small, h6 small {
@include typo-display-3($color-contrast: true);
}
h1 {
@include typo-display-3;
}
h2 {
@include typo-display-2;
}
h3 {
@include typo-display-1;
}
h4 {
@include typo-headline;
}
h5 {
@include typo-title;
}
h6 {
@include typo-subhead;
}
p {
@include typo-body-1;
}

View File

@ -1,208 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactAddonsCssTransitionGroup = require('react-addons-css-transition-group');
var _reactAddonsCssTransitionGroup2 = _interopRequireDefault(_reactAddonsCssTransitionGroup);
var _animations = require('../animations');
var _time = require('../utils/time.js');
var _time2 = _interopRequireDefault(_time);
var _utils = require('../utils/utils.js');
var _utils2 = _interopRequireDefault(_utils);
var _CalendarMonth = require('./CalendarMonth.js');
var _CalendarMonth2 = _interopRequireDefault(_CalendarMonth);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var DIRECTION_STEPS = { left: -1, right: 1 };
var factory = function factory(IconButton) {
var Calendar = function (_Component) {
_inherits(Calendar, _Component);
function Calendar() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, Calendar);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Calendar.__proto__ || Object.getPrototypeOf(Calendar)).call.apply(_ref, [this].concat(args))), _this), _this.state = {
viewDate: _this.props.selectedDate
}, _this.handleDayClick = function (day) {
_this.props.onChange(_time2.default.setDay(_this.state.viewDate, day), true);
}, _this.handleYearClick = function (event) {
var year = parseInt(event.currentTarget.id);
var viewDate = _time2.default.setYear(_this.props.selectedDate, year);
_this.setState({ viewDate: viewDate });
_this.props.onChange(viewDate, false);
}, _this.handleKeys = function (e) {
var selectedDate = _this.props.selectedDate;
if (e.which === 37 || e.which === 38 || e.which === 39 || e.which === 40 || e.which === 13) e.preventDefault();
switch (e.which) {
case 13:
_this.props.handleSelect();break; // enter
case 37:
_this.handleDayArrowKey(_time2.default.addDays(selectedDate, -1));break; // left
case 38:
_this.handleDayArrowKey(_time2.default.addDays(selectedDate, -7));break; // up
case 39:
_this.handleDayArrowKey(_time2.default.addDays(selectedDate, 1));break; // right
case 40:
_this.handleDayArrowKey(_time2.default.addDays(selectedDate, 7));break; // down
default:
break;
}
}, _this.handleDayArrowKey = function (date) {
_this.setState({ viewDate: date });
_this.props.onChange(date, false);
}, _this.changeViewMonth = function (event) {
var direction = event.currentTarget.id;
_this.setState({
direction: direction,
viewDate: _time2.default.addMonths(_this.state.viewDate, DIRECTION_STEPS[direction])
});
}, _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(Calendar, [{
key: 'componentWillMount',
value: function componentWillMount() {
document.body.addEventListener('keydown', this.handleKeys);
}
}, {
key: 'componentDidUpdate',
value: function componentDidUpdate() {
if (this.refs.activeYear) {
this.scrollToActive();
}
}
}, {
key: 'componentWillUnmount',
value: function componentWillUnmount() {
document.body.removeEventListener('keydown', this.handleKeys);
}
}, {
key: 'scrollToActive',
value: function scrollToActive() {
this.refs.years.scrollTop = this.refs.activeYear.offsetTop - this.refs.years.offsetHeight / 2 + this.refs.activeYear.offsetHeight / 2;
}
}, {
key: 'renderYears',
value: function renderYears() {
var _this2 = this;
return _react2.default.createElement(
'ul',
{ 'data-react-toolbox': 'years', ref: 'years', className: this.props.theme.years },
_utils2.default.range(1900, 2100).map(function (year) {
return _react2.default.createElement('li', {
children: year,
className: year === _this2.state.viewDate.getFullYear() ? _this2.props.theme.active : '',
id: year,
key: year,
onClick: _this2.handleYearClick,
ref: year === _this2.state.viewDate.getFullYear() ? 'activeYear' : undefined
});
})
);
}
}, {
key: 'renderMonths',
value: function renderMonths() {
var theme = this.props.theme;
var animation = this.state.direction === 'left' ? _animations.SlideLeft : _animations.SlideRight;
return _react2.default.createElement(
'div',
{ 'data-react-toolbox': 'calendar' },
_react2.default.createElement(IconButton, { id: 'left', className: theme.prev, icon: 'chevron_left', onClick: this.changeViewMonth }),
_react2.default.createElement(IconButton, { id: 'right', className: theme.next, icon: 'chevron_right', onClick: this.changeViewMonth }),
_react2.default.createElement(
_reactAddonsCssTransitionGroup2.default,
{ transitionName: animation, transitionEnterTimeout: 350, transitionLeaveTimeout: 350 },
_react2.default.createElement(_CalendarMonth2.default, {
key: this.state.viewDate.getMonth(),
locale: this.props.locale,
maxDate: this.props.maxDate,
minDate: this.props.minDate,
onDayClick: this.handleDayClick,
selectedDate: this.props.selectedDate,
sundayFirstDayOfWeek: this.props.sundayFirstDayOfWeek,
theme: this.props.theme,
viewDate: this.state.viewDate
})
)
);
}
}, {
key: 'render',
value: function render() {
return _react2.default.createElement(
'div',
{ className: this.props.theme.calendar },
this.props.display === 'months' ? this.renderMonths() : this.renderYears()
);
}
}]);
return Calendar;
}(_react.Component);
Calendar.propTypes = {
display: _react.PropTypes.oneOf(['months', 'years']),
handleSelect: _react.PropTypes.func,
locale: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.object]),
maxDate: _react.PropTypes.object,
minDate: _react.PropTypes.object,
onChange: _react.PropTypes.func,
selectedDate: _react.PropTypes.object,
sundayFirstDayOfWeek: _react2.default.PropTypes.bool,
theme: _react.PropTypes.shape({
active: _react.PropTypes.string,
calendar: _react.PropTypes.string,
next: _react.PropTypes.string,
prev: _react.PropTypes.string,
years: _react.PropTypes.string
}),
viewDate: _react.PropTypes.object
};
Calendar.defaultProps = {
display: 'months',
selectedDate: new Date()
};
return Calendar;
};
exports.default = factory;

View File

@ -1,106 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames2 = require('classnames');
var _classnames3 = _interopRequireDefault(_classnames2);
var _time = require('../utils/time.js');
var _time2 = _interopRequireDefault(_time);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var Day = function (_Component) {
_inherits(Day, _Component);
function Day() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, Day);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Day.__proto__ || Object.getPrototypeOf(Day)).call.apply(_ref, [this].concat(args))), _this), _this.handleClick = function () {
if (!_this.props.disabled && _this.props.onClick) {
_this.props.onClick(_this.props.day);
}
}, _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(Day, [{
key: 'dayStyle',
value: function dayStyle() {
if (this.props.day === 1) {
var e = this.props.sundayFirstDayOfWeek ? 0 : 1;
var firstDay = _time2.default.getFirstWeekDay(this.props.viewDate) - e;
return {
marginLeft: (firstDay >= 0 ? firstDay : 6) * 100 / 7 + '%'
};
}
}
}, {
key: 'isSelected',
value: function isSelected() {
var sameYear = this.props.viewDate.getFullYear() === this.props.selectedDate.getFullYear();
var sameMonth = this.props.viewDate.getMonth() === this.props.selectedDate.getMonth();
var sameDay = this.props.day === this.props.selectedDate.getDate();
return sameYear && sameMonth && sameDay;
}
}, {
key: 'render',
value: function render() {
var _classnames;
var className = (0, _classnames3.default)(this.props.theme.day, (_classnames = {}, _defineProperty(_classnames, this.props.theme.active, this.isSelected()), _defineProperty(_classnames, this.props.theme.disabled, this.props.disabled), _classnames));
return _react2.default.createElement(
'div',
{ 'data-react-toolbox': 'day', className: className, style: this.dayStyle() },
_react2.default.createElement(
'span',
{ onClick: this.handleClick },
this.props.day
)
);
}
}]);
return Day;
}(_react.Component);
Day.propTypes = {
day: _react.PropTypes.number,
disabled: _react.PropTypes.bool,
onClick: _react.PropTypes.func,
selectedDate: _react.PropTypes.object,
sundayFirstDayOfWeek: _react.PropTypes.bool,
theme: _react.PropTypes.shape({
active: _react.PropTypes.string,
day: _react.PropTypes.string,
disabled: _react.PropTypes.string
}),
viewDate: _react.PropTypes.object
};
exports.default = Day;

View File

@ -1,137 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _time = require('../utils/time.js');
var _time2 = _interopRequireDefault(_time);
var _utils = require('../utils/utils.js');
var _utils2 = _interopRequireDefault(_utils);
var _CalendarDay = require('./CalendarDay.js');
var _CalendarDay2 = _interopRequireDefault(_CalendarDay);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var Month = function (_Component) {
_inherits(Month, _Component);
function Month() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, Month);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Month.__proto__ || Object.getPrototypeOf(Month)).call.apply(_ref, [this].concat(args))), _this), _this.handleDayClick = function (day) {
if (_this.props.onDayClick) _this.props.onDayClick(day);
}, _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(Month, [{
key: 'renderWeeks',
value: function renderWeeks() {
var _this2 = this;
var days = _utils2.default.range(0, 7).map(function (d) {
return _time2.default.getDayOfWeekLetter(d, _this2.props.locale);
});
var source = this.props.sundayFirstDayOfWeek ? days : [].concat(_toConsumableArray(days.slice(1)), [days[0]]);
return source.map(function (d, i) {
return _react2.default.createElement(
'span',
{ key: i },
d
);
});
}
}, {
key: 'renderDays',
value: function renderDays() {
var _this3 = this;
return _utils2.default.range(1, _time2.default.getDaysInMonth(this.props.viewDate) + 1).map(function (i) {
var date = new Date(_this3.props.viewDate.getFullYear(), _this3.props.viewDate.getMonth(), i);
var disabled = _time2.default.dateOutOfRange(date, _this3.props.minDate, _this3.props.maxDate);
return _react2.default.createElement(_CalendarDay2.default, {
key: i,
day: i,
disabled: disabled,
onClick: _this3.handleDayClick,
selectedDate: _this3.props.selectedDate,
theme: _this3.props.theme,
viewDate: _this3.props.viewDate,
sundayFirstDayOfWeek: _this3.props.sundayFirstDayOfWeek
});
});
}
}, {
key: 'render',
value: function render() {
return _react2.default.createElement(
'div',
{ 'data-react-toolbox': 'month', className: this.props.theme.month },
_react2.default.createElement(
'span',
{ className: this.props.theme.title },
_time2.default.getFullMonth(this.props.viewDate, this.props.locale),
' ',
this.props.viewDate.getFullYear()
),
_react2.default.createElement(
'div',
{ className: this.props.theme.week },
this.renderWeeks()
),
_react2.default.createElement(
'div',
{ className: this.props.theme.days },
this.renderDays()
)
);
}
}]);
return Month;
}(_react.Component);
Month.propTypes = {
locale: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.object]),
maxDate: _react.PropTypes.object,
minDate: _react.PropTypes.object,
onDayClick: _react.PropTypes.func,
selectedDate: _react.PropTypes.object,
sundayFirstDayOfWeek: _react2.default.PropTypes.bool,
theme: _react.PropTypes.shape({
days: _react.PropTypes.string,
month: _react.PropTypes.string,
title: _react.PropTypes.string,
week: _react.PropTypes.string
}),
viewDate: _react.PropTypes.object
};
exports.default = Month;

View File

@ -1,227 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DatePicker = exports.datePickerFactory = exports.DatePickerDialog = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames2 = require('classnames');
var _classnames3 = _interopRequireDefault(_classnames2);
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
var _events = require('../utils/events.js');
var _events2 = _interopRequireDefault(_events);
var _time = require('../utils/time.js');
var _time2 = _interopRequireDefault(_time);
var _IconButton = require('../button/IconButton.js');
var _IconButton2 = _interopRequireDefault(_IconButton);
var _Input = require('../input/Input.js');
var _Input2 = _interopRequireDefault(_Input);
var _Dialog = require('../dialog/Dialog.js');
var _Dialog2 = _interopRequireDefault(_Dialog);
var _Calendar = require('./Calendar.js');
var _Calendar2 = _interopRequireDefault(_Calendar);
var _DatePickerDialog = require('./DatePickerDialog.js');
var _DatePickerDialog2 = _interopRequireDefault(_DatePickerDialog);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var factory = function factory(Input, DatePickerDialog) {
var DatePicker = function (_Component) {
_inherits(DatePicker, _Component);
function DatePicker() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, DatePicker);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = DatePicker.__proto__ || Object.getPrototypeOf(DatePicker)).call.apply(_ref, [this].concat(args))), _this), _this.state = {
active: _this.props.active
}, _this.handleDismiss = function () {
_this.setState({ active: false });
if (_this.props.onDismiss) {
_this.props.onDismiss();
}
}, _this.handleInputFocus = function (event) {
_events2.default.pauseEvent(event);
_this.setState({ active: true });
}, _this.handleInputBlur = function (event) {
_events2.default.pauseEvent(event);
_this.setState({ active: false });
}, _this.handleInputClick = function (event) {
_events2.default.pauseEvent(event);
_this.setState({ active: true });
if (_this.props.onClick) _this.props.onClick(event);
}, _this.handleInputKeyPress = function (event) {
if (event.charCode === 13) {
_events2.default.pauseEvent(event);
_this.setState({ active: true });
}
if (_this.props.onKeyPress) _this.props.onKeyPress(event);
}, _this.handleSelect = function (value, event) {
if (_this.props.onChange) _this.props.onChange(value, event);
_this.setState({ active: false });
}, _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(DatePicker, [{
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
if (nextProps.active !== this.props.active && this.state.active !== nextProps.active) {
this.setState({ active: nextProps.active });
}
}
}, {
key: 'render',
value: function render() {
var _props = this.props,
active = _props.active,
onDismiss = _props.onDismiss,
autoOk = _props.autoOk,
cancelLabel = _props.cancelLabel,
inputClassName = _props.inputClassName,
inputFormat = _props.inputFormat,
locale = _props.locale,
maxDate = _props.maxDate,
minDate = _props.minDate,
okLabel = _props.okLabel,
onEscKeyDown = _props.onEscKeyDown,
onOverlayClick = _props.onOverlayClick,
readonly = _props.readonly,
sundayFirstDayOfWeek = _props.sundayFirstDayOfWeek,
value = _props.value,
others = _objectWithoutProperties(_props, ['active', 'onDismiss', 'autoOk', 'cancelLabel', 'inputClassName', 'inputFormat', 'locale', 'maxDate', 'minDate', 'okLabel', 'onEscKeyDown', 'onOverlayClick', 'readonly', 'sundayFirstDayOfWeek', 'value']);
var finalInputFormat = inputFormat || _time2.default.formatDate;
var date = Object.prototype.toString.call(value) === '[object Date]' ? value : undefined;
var formattedDate = date === undefined ? '' : finalInputFormat(value, locale);
return _react2.default.createElement(
'div',
{ 'data-react-toolbox': 'date-picker' },
_react2.default.createElement(Input, _extends({}, others, {
className: (0, _classnames3.default)(this.props.theme.input, _defineProperty({}, inputClassName, inputClassName)),
disabled: readonly,
error: this.props.error,
icon: this.props.icon,
label: this.props.label,
name: this.props.name,
onFocus: this.handleInputFocus,
onKeyPress: this.handleInputKeyPress,
onClick: this.handleInputClick,
readOnly: true,
type: 'text',
value: formattedDate
})),
_react2.default.createElement(DatePickerDialog, {
active: this.state.active,
autoOk: autoOk,
cancelLabel: cancelLabel,
className: this.props.className,
locale: locale,
maxDate: maxDate,
minDate: minDate,
name: this.props.name,
onDismiss: this.handleDismiss,
okLabel: okLabel,
onEscKeyDown: onEscKeyDown || this.handleDismiss,
onOverlayClick: onOverlayClick || this.handleDismiss,
onSelect: this.handleSelect,
sundayFirstDayOfWeek: sundayFirstDayOfWeek,
theme: this.props.theme,
value: date
})
);
}
}]);
return DatePicker;
}(_react.Component);
DatePicker.propTypes = {
active: _react.PropTypes.bool,
autoOk: _react.PropTypes.bool,
cancelLabel: _react.PropTypes.string,
className: _react.PropTypes.string,
error: _react.PropTypes.string,
icon: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element]),
inputClassName: _react.PropTypes.string,
inputFormat: _react.PropTypes.func,
label: _react.PropTypes.string,
locale: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.object]),
maxDate: _react.PropTypes.object,
minDate: _react.PropTypes.object,
name: _react.PropTypes.string,
okLabel: _react.PropTypes.string,
onChange: _react.PropTypes.func,
onClick: _react.PropTypes.func,
onDismiss: _react.PropTypes.func,
onEscKeyDown: _react.PropTypes.func,
onKeyPress: _react.PropTypes.func,
onOverlayClick: _react.PropTypes.func,
readonly: _react.PropTypes.bool,
sundayFirstDayOfWeek: _react2.default.PropTypes.bool,
theme: _react.PropTypes.shape({
input: _react.PropTypes.string
}),
value: _react.PropTypes.oneOfType([_react.PropTypes.instanceOf(Date), _react.PropTypes.string])
};
DatePicker.defaultProps = {
active: false,
locale: 'en',
sundayFirstDayOfWeek: false
};
return DatePicker;
};
var Calendar = (0, _Calendar2.default)(_IconButton2.default);
var DatePickerDialog = (0, _DatePickerDialog2.default)(_Dialog2.default, Calendar);
var DatePicker = factory(_Input2.default, DatePickerDialog);
exports.default = (0, _reactCssThemr.themr)(_identifiers.DATE_PICKER)(DatePicker);
exports.DatePickerDialog = DatePickerDialog;
exports.datePickerFactory = factory;
exports.DatePicker = DatePicker;

View File

@ -1,181 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _time = require('../utils/time.js');
var _time2 = _interopRequireDefault(_time);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var factory = function factory(Dialog, Calendar) {
var CalendarDialog = function (_Component) {
_inherits(CalendarDialog, _Component);
function CalendarDialog() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, CalendarDialog);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = CalendarDialog.__proto__ || Object.getPrototypeOf(CalendarDialog)).call.apply(_ref, [this].concat(args))), _this), _this.state = {
display: 'months',
date: _this.props.value
}, _this.handleNewDate = function (value, dayClick) {
var state = { display: 'months', date: value };
if (_time2.default.dateOutOfRange(value, _this.props.minDate, _this.props.maxDate)) {
if (_this.props.maxDate && _this.props.minDate) {
state.date = _time2.default.closestDate(value, _this.props.maxDate, _this.props.minDate);
} else {
state.date = _this.props.maxDate || _this.props.minDate;
}
}
_this.setState(state);
if (dayClick && _this.props.autoOk && _this.props.onSelect) {
_this.props.onSelect(value);
}
}, _this.handleSelect = function (event) {
if (_this.props.onSelect) _this.props.onSelect(_this.state.date, event);
}, _this.handleSwitchDisplay = function (event) {
_this.setState({ display: event.target.id });
}, _this.updateStateDate = function (date) {
if (Object.prototype.toString.call(date) === '[object Date]') {
_this.handleNewDate(date, false);
}
}, _this.actions = [{ label: _this.props.cancelLabel, className: _this.props.theme.button, onClick: _this.props.onDismiss }, { label: _this.props.okLabel, className: _this.props.theme.button, name: _this.props.name, onClick: _this.handleSelect }], _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(CalendarDialog, [{
key: 'componentWillMount',
value: function componentWillMount() {
this.updateStateDate(this.props.value);
}
}, {
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
this.updateStateDate(nextProps.value);
}
}, {
key: 'render',
value: function render() {
var theme = this.props.theme;
var display = this.state.display + 'Display';
var className = (0, _classnames2.default)(theme.dialog, this.props.className);
var headerClassName = (0, _classnames2.default)(theme.header, theme[display]);
var shortDayOfWeek = _time2.default.getShortDayOfWeek(this.state.date.getDay(), this.props.locale);
var shortMonth = _time2.default.getShortMonth(this.state.date, this.props.locale);
var date = this.state.date.getDate();
return _react2.default.createElement(
Dialog,
{
actions: this.actions,
active: this.props.active,
className: className,
onEscKeyDown: this.props.onEscKeyDown,
onOverlayClick: this.props.onOverlayClick,
type: 'custom'
},
_react2.default.createElement(
'header',
{ className: headerClassName },
_react2.default.createElement(
'span',
{ id: 'years', className: theme.year, onClick: this.handleSwitchDisplay },
this.state.date.getFullYear()
),
_react2.default.createElement(
'h3',
{ id: 'months', className: theme.date, onClick: this.handleSwitchDisplay },
shortDayOfWeek,
', ',
shortMonth,
' ',
date
)
),
_react2.default.createElement(
'div',
{ className: theme.calendarWrapper },
_react2.default.createElement(Calendar, {
display: this.state.display,
handleSelect: this.handleSelect,
maxDate: this.props.maxDate,
minDate: this.props.minDate,
onChange: this.handleNewDate,
selectedDate: this.state.date,
theme: this.props.theme,
locale: this.props.locale,
sundayFirstDayOfWeek: this.props.sundayFirstDayOfWeek })
)
);
}
}]);
return CalendarDialog;
}(_react.Component);
CalendarDialog.propTypes = {
active: _react.PropTypes.bool,
autoOk: _react.PropTypes.bool,
cancelLabel: _react.PropTypes.string,
className: _react.PropTypes.string,
locale: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.object]),
maxDate: _react.PropTypes.object,
minDate: _react.PropTypes.object,
name: _react.PropTypes.string,
okLabel: _react.PropTypes.string,
onDismiss: _react.PropTypes.func,
onEscKeyDown: _react.PropTypes.func,
onOverlayClick: _react.PropTypes.func,
onSelect: _react.PropTypes.func,
sundayFirstDayOfWeek: _react2.default.PropTypes.bool,
theme: _react.PropTypes.shape({
button: _react.PropTypes.string,
calendarWrapper: _react.PropTypes.string,
date: _react.PropTypes.string,
dialog: _react.PropTypes.string,
header: _react.PropTypes.string,
monthsDisplay: _react.PropTypes.string,
year: _react.PropTypes.string,
yearsDisplay: _react.PropTypes.string
}),
value: _react.PropTypes.object
};
CalendarDialog.defaultProps = {
active: false,
cancelLabel: 'Cancel',
className: '',
okLabel: 'Ok',
value: new Date()
};
return CalendarDialog;
};
exports.default = factory;

View File

@ -1,96 +0,0 @@
'use strict';
var _expect = require('expect');
var _expect2 = _interopRequireDefault(_expect);
var _theme = require('../theme.scss');
var _theme2 = _interopRequireDefault(_theme);
var _DatePicker = require('../DatePicker');
var _testing = require('../../utils/testing');
var _testing2 = _interopRequireDefault(_testing);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
describe('DatePickerDialog', function () {
describe('#on mount', function () {
it('passes value through to calendar if no maxDate/minDate specified', function () {
var value = new Date(2016, 1, 1);
var wrapper = _testing2.default.shallowRenderComponent(_DatePicker.DatePickerDialog, { theme: _theme2.default, value: value });
(0, _expect2.default)(getDatePassedToCalendar(wrapper)).toBe(value);
});
describe('when minDate but not maxDate specified', function () {
var minDate = new Date(2016, 1, 2);
it('passes through a value after minDate', function () {
var value = new Date(2016, 1, 3);
var wrapper = _testing2.default.shallowRenderComponent(_DatePicker.DatePickerDialog, { theme: _theme2.default, value: value, minDate: minDate });
(0, _expect2.default)(getDatePassedToCalendar(wrapper)).toBe(value);
});
it('sanitises a value before minDate to minDate', function () {
var wrapper = _testing2.default.shallowRenderComponent(_DatePicker.DatePickerDialog, {
theme: _theme2.default, value: new Date(2016, 1, 1), minDate: minDate
});
(0, _expect2.default)(getDatePassedToCalendar(wrapper)).toBe(minDate);
});
});
describe('when maxDate but not minDate specified', function () {
var maxDate = new Date(2016, 1, 2);
it('passes through a value before maxDate', function () {
var value = new Date(2016, 1, 1);
var wrapper = _testing2.default.shallowRenderComponent(_DatePicker.DatePickerDialog, { theme: _theme2.default, value: value, maxDate: maxDate });
(0, _expect2.default)(getDatePassedToCalendar(wrapper)).toBe(value);
});
it('sanitises a value after maxDate to maxDate', function () {
var wrapper = _testing2.default.shallowRenderComponent(_DatePicker.DatePickerDialog, {
theme: _theme2.default, value: new Date(2016, 1, 3), maxDate: maxDate
});
(0, _expect2.default)(getDatePassedToCalendar(wrapper)).toBe(maxDate);
});
});
describe('if both minDate and maxDate are set', function () {
var minDate = new Date(2016, 1, 2);
var maxDate = new Date(2016, 1, 4);
it('sanitises value to minDate if value is before minDate', function () {
var wrapper = _testing2.default.shallowRenderComponent(_DatePicker.DatePickerDialog, {
theme: _theme2.default,
value: new Date(2016, 1, 1),
minDate: minDate,
maxDate: maxDate
});
(0, _expect2.default)(getDatePassedToCalendar(wrapper)).toBe(minDate);
});
it('sanitises value to maxDate if value is after maxDate', function () {
var wrapper = _testing2.default.shallowRenderComponent(_DatePicker.DatePickerDialog, {
theme: _theme2.default,
value: new Date(2016, 1, 5),
minDate: minDate,
maxDate: maxDate
});
(0, _expect2.default)(getDatePassedToCalendar(wrapper)).toBe(maxDate);
});
it('doesn\'t sanitise when value is between maxDate/minDate', function () {
var value = new Date(2016, 1, 3);
var wrapper = _testing2.default.shallowRenderComponent(_DatePicker.DatePickerDialog, { theme: _theme2.default, value: value, minDate: minDate, maxDate: maxDate });
(0, _expect2.default)(getDatePassedToCalendar(wrapper)).toBe(value);
});
});
function getDatePassedToCalendar(wrapper) {
return wrapper.props.children[1].props.children.props.selectedDate;
}
});
});

View File

@ -1,31 +0,0 @@
$datepicker-primary: $color-primary !default;
$datepicker-primary-contrast: $color-primary-contrast !default;
$datepicker-primary-dark: $color-primary-dark !default;
$datepicker-primary-color: $datepicker-primary !default;
$datepicker-primary-hover-color: rgba($datepicker-primary, .2) !default;
$datepicker-primary-contrast-color: $datepicker-primary-contrast !default;
$datepicker-primary-dark-color: $datepicker-primary-dark !default;
$datepicker-dialog-width: 33 * $unit !default;
$datepicker-inactive-opacity: .6 !default;
$datepicker-weekday-line-height: 2 * $unit !default;
$datepicker-weekday-font-size: $font-size-small !default;
$datepicker-month-font-size: $font-size-big !default;
$datepicker-day-font-size: 5 * $unit !default;
$datepicker-day-line-height: 4 * $unit !default;
$datepicker-year-font-size: $font-size-small !default;
$calendar-primary: $color-primary !default;
$calendar-primary-contrast: $color-primary-contrast !default;
$calendar-primary-color: $calendar-primary !default;
$calendar-primary-contrast-color: $calendar-primary-contrast !default;
$calendar-primary-hover-color: rgba($calendar-primary, .21) !default;
$calendar-arrows-color: $palette-grey-600 !default;
$calendar-arrows-font-size: 2 * $unit !default;
$calendar-year-font-size: 2.4 * $unit !default;
$calendar-day-font-size: 1.3 * $unit !default;
$calendar-day-disable-opacity: 0.25 !default;
$calendar-row-height: 3 * $unit !default;
$calendar-day-padding-topbottom: .2 * $unit !default;
$calendar-day-padding-leftright: 0 !default;
$calendar-title-height: 3.6 * $unit !default;
$calendar-total-height: $calendar-row-height * 7 + $calendar-title-height + $calendar-day-padding-topbottom * 12 !default;

View File

@ -1,153 +0,0 @@
import * as React from "react";
import ReactToolbox from "../index";
export interface DatePickerTheme {
/**
* Used for the active day and year.
*/
active?: string;
/**
* Used for the buttons in the dialog.
*/
button?: string;
/**
* Used for the calendar root element.
*/
calendar?: string;
/**
* Used as wrapper for the calendar component inside dialog.
*/
calendarWrapper?: string;
/**
* Used for the date element inside header.
*/
date?: string;
/**
* Used for the day element inside the calendar.
*/
day?: string;
/**
* Used for the list of days inside a month.
*/
days?: string;
/**
* Used for the dialog component.
*/
dialog?: string;
/**
* Added to day element when day is disabled.
*/
disabled?: string;
/**
* Used for the dialog header,.
*/
header?: string;
/**
* Used for Input element that opens the picker.
*/
input?: string;
/**
* Used for the month root element.
*/
month?: string;
/**
* Added to the root dialog when months are displayed.
*/
monthsDisplay?: string;
/**
* Used for the next month icon.
*/
next?: string;
/**
* Used for the prev month icon.
*/
prev?: string;
/**
* Used for the month title element.
*/
title?: string;
/**
* Used for the weekdays wrapper.
*/
week?: string;
/**
* Used for the year element inside header.
*/
year?: string;
/**
* Used for the years list in years view.
*/
years?: string;
/**
* Added to the root dialog when years are displayed.
*/
yearsDisplay?: string;
}
interface DatePickerProps extends ReactToolbox.Props {
/**
* Automatically selects a date upon clicking on a day
* @default false
*/
autoOk?: boolean;
/**
* Give an error node to display under the field.
*/
error?: string;
/**
* A key to identify an Icon from Material Design Icons or a custom Icon Element.
*/
icon?: React.ReactNode | string;
/**
* This class will be applied to Input component of DatePicker.
*/
inputClassName?: string;
/**
* Function to format the date displayed on the input.
*/
inputFormat?: Function;
/**
* The text string to use for the floating label element in the input component.
*/
label?: string;
/**
* Date object with the maximum selectable date.
*/
maxDate?: Date;
/**
* Date object with the minimum selectable date.
*/
minDate?: Date;
/**
* Name for the input field.
*/
name?: string;
/**
* Callback called when the picker value is changed.
*/
onChange?: Function;
/**
* Callback called when the ESC key is pressed with the overlay active.
*/
onEscKeyDown?: Function;
/**
* Callback to be invoked when the dialog overlay is clicked.
*/
onOverlayClick?: Function;
/**
* The input element will be readonly and look like disabled.
*/
readonly?: boolean;
/**
* Classnames object defining the component style.
*/
theme?: DatePickerTheme;
/**
* Date object with the currently selected date.
*/
value?: Date | string;
}
export class DatePicker extends React.Component<DatePickerProps, {}> { }
export default DatePicker;

View File

@ -1,48 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DatePickerDialog = exports.DatePicker = undefined;
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
var _DatePicker = require('./DatePicker.js');
var _DatePickerDialog = require('./DatePickerDialog.js');
var _DatePickerDialog2 = _interopRequireDefault(_DatePickerDialog);
var _Calendar = require('./Calendar.js');
var _Calendar2 = _interopRequireDefault(_Calendar);
var _button = require('../button');
var _input = require('../input');
var _input2 = _interopRequireDefault(_input);
var _dialog = require('../dialog');
var _dialog2 = _interopRequireDefault(_dialog);
var _theme = require('./theme.scss');
var _theme2 = _interopRequireDefault(_theme);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Calendar = (0, _Calendar2.default)(_button.IconButton);
var DatePickerDialog = (0, _DatePickerDialog2.default)(_dialog2.default, Calendar);
var DatePicker = (0, _DatePicker.datePickerFactory)(_input2.default, DatePickerDialog);
var ThemedDatePicker = (0, _reactCssThemr.themr)(_identifiers.DATE_PICKER, _theme2.default)(DatePicker);
exports.default = ThemedDatePicker;
exports.DatePicker = ThemedDatePicker;
var ThemedDatePickerDialog = (0, _reactCssThemr.themr)(_identifiers.DIALOG, _theme2.default)(DatePickerDialog);
exports.DatePickerDialog = ThemedDatePickerDialog;

View File

@ -1,156 +0,0 @@
@import "../colors";
@import "../globals";
@import "../mixins";
@import "./config";
.input:not(.disabled) > .inputElement {
cursor: pointer;
}
.header {
padding: 1.6 * $unit 2 * $unit;
color: $datepicker-primary-contrast-color;
cursor: pointer;
background-color: $datepicker-primary-color;
}
.year {
display: inline-block;
font-size: $datepicker-year-font-size;
transition: opacity, font-size $animation-duration $animation-curve-default;
}
.date {
display: block;
font-weight: $font-weight-semi-bold;
text-transform: capitalize;
transition: opacity $animation-duration $animation-curve-default;
}
.calendarWrapper {
padding: $unit .5 * $unit 0;
}
.yearsDisplay {
.date {
opacity: $datepicker-inactive-opacity;
}
.year {
font-size: $font-size-normal;
}
}
.monthsDisplay {
.year {
opacity: $datepicker-inactive-opacity;
}
}
.dialog {
width: $datepicker-dialog-width;
> [role="body"] {
padding: 0;
}
> [role="navigation"] > .button {
color: $datepicker-primary-color;
&:hover {
background: $datepicker-primary-hover-color;
}
&:focus:not(:active) {
background: $datepicker-primary-hover-color;
}
}
}
.calendar {
position: relative;
height: $calendar-total-height;
overflow: hidden;
font-size: $font-size-small;
line-height: $calendar-row-height;
text-align: center;
background: $calendar-primary-contrast-color;
.prev, .next {
position: absolute;
top: 0;
z-index: $z-index-high;
height: 3.6 * $unit;
cursor: pointer;
opacity: .7;
}
.prev {
left: 0;
}
.next {
right: 0;
}
}
.title {
display: inline-block;
font-weight: 500;
line-height: $calendar-row-height;
}
.years {
height: 100%;
overflow-y: auto;
font-size: $font-size-big;
> li {
line-height: 2.4;
cursor: pointer;
&.active {
font-size: $calendar-year-font-size;
font-weight: $font-weight-semi-bold;
color: $calendar-primary-color;
}
}
}
.week {
display: flex;
height: $calendar-row-height;
flex-wrap: wrap;
font-size: $calendar-day-font-size;
line-height: $calendar-row-height;
opacity: .5;
> span {
flex: 0 0 (100% / 7);
}
}
.days {
display: flex;
flex-wrap: wrap;
font-size: $calendar-day-font-size;
}
.day {
flex: 0 0 (100% / 7);
padding: $calendar-day-padding-topbottom $calendar-day-padding-leftright;
> span {
display: inline-block;
width: $calendar-row-height;
height: $calendar-row-height;
line-height: $calendar-row-height;
border-radius: 50%;
}
&:hover:not(.active):not(.disabled) > span {
color: $calendar-primary-contrast-color;
background: $calendar-primary-hover-color;
}
&.active > span {
color: $calendar-primary-contrast-color;
background: $calendar-primary-color;
}
&:hover:not(.disabled) > span {
cursor: pointer;
}
&.disabled {
opacity: $calendar-day-disable-opacity;
}
}
.month {
background-color: $calendar-primary-contrast-color;
}

View File

@ -1,113 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.dialogFactory = exports.Dialog = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactCssThemr = require('react-css-themr');
var _classnames3 = require('classnames');
var _classnames4 = _interopRequireDefault(_classnames3);
var _identifiers = require('../identifiers.js');
var _ActivableRenderer = require('../hoc/ActivableRenderer.js');
var _ActivableRenderer2 = _interopRequireDefault(_ActivableRenderer);
var _Button = require('../button/Button.js');
var _Button2 = _interopRequireDefault(_Button);
var _Overlay = require('../overlay/Overlay.js');
var _Overlay2 = _interopRequireDefault(_Overlay);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var factory = function factory(Overlay, Button) {
var Dialog = function Dialog(props) {
var actions = props.actions.map(function (action, idx) {
var className = (0, _classnames4.default)(props.theme.button, _defineProperty({}, action.className, action.className));
return _react2.default.createElement(Button, _extends({ key: idx }, action, { className: className }));
});
var className = (0, _classnames4.default)([props.theme.dialog, props.theme[props.type]], _defineProperty({}, props.theme.active, props.active), props.className);
return _react2.default.createElement(
Overlay,
{
active: props.active,
onClick: props.onOverlayClick,
onEscKeyDown: props.onEscKeyDown,
onMouseDown: props.onOverlayMouseDown,
onMouseMove: props.onOverlayMouseMove,
onMouseUp: props.onOverlayMouseUp
},
_react2.default.createElement(
'div',
{ 'data-react-toolbox': 'dialog', className: className },
_react2.default.createElement(
'section',
{ role: 'body', className: props.theme.body },
props.title ? _react2.default.createElement(
'h6',
{ className: props.theme.title },
props.title
) : null,
props.children
),
actions.length ? _react2.default.createElement(
'nav',
{ role: 'navigation', className: props.theme.navigation },
actions
) : null
)
);
};
Dialog.propTypes = {
actions: _react.PropTypes.array,
active: _react.PropTypes.bool,
children: _react.PropTypes.node,
className: _react.PropTypes.string,
onEscKeyDown: _react.PropTypes.func,
onOverlayClick: _react.PropTypes.func,
onOverlayMouseDown: _react.PropTypes.func,
onOverlayMouseMove: _react.PropTypes.func,
onOverlayMouseUp: _react.PropTypes.func,
theme: _react.PropTypes.shape({
active: _react.PropTypes.string,
body: _react.PropTypes.string,
button: _react.PropTypes.string,
dialog: _react.PropTypes.string,
navigation: _react.PropTypes.string,
title: _react.PropTypes.string
}),
title: _react.PropTypes.string,
type: _react.PropTypes.string
};
Dialog.defaultProps = {
actions: [],
active: false,
type: 'normal'
};
return (0, _ActivableRenderer2.default)()(Dialog);
};
var Dialog = factory(_Overlay2.default, _Button2.default);
exports.default = (0, _reactCssThemr.themr)(_identifiers.DIALOG)(Dialog);
exports.Dialog = Dialog;
exports.dialogFactory = factory;

View File

@ -1,6 +0,0 @@
$dialog-border-radius: .2 * $unit !default;
$dialog-color-title: $color-black !default;
$dialog-color-white: $color-white !default;
$dialog-content-padding: 2.4 * $unit !default;
$dialog-navigation-padding: .8 * $unit !default;
$dialog-translate-y: 4 * $unit !default;

93
lib/dialog/index.d.ts vendored
View File

@ -1,93 +0,0 @@
import * as React from "react";
import ReactToolbox from "../index";
export interface DialogTheme {
/**
* Used for the root when the dialog is active.
*/
active?: string;
/**
* Used to wrap the dialog body.
*/
body?: string;
/**
* Used in buttons when the dialog implements actions.
*/
button?: string;
/**
* Used for the root element.
*/
dialog?: string;
/**
* Used for the navigation element when it implements actions.
*/
navigation?: string;
/**
* Used for the title element of the dialog.
*/
title?: string;
}
interface DialogActionProps {
/**
* The text string to use for the name of the button.
*/
label?: string;
/**
* Callback called when the component is clicked.
*/
onClick?: Function;
}
interface DialogProps extends ReactToolbox.Props {
/**
* A array of objects representing the buttons for the dialog navigation area. The properties will be transferred to the buttons.
*/
actions?: DialogActionProps[];
/**
* If true, the dialog will be active.
* @default false
*/
active?: boolean;
/**
* Children to pass through the component.
*/
children?: React.ReactNode;
/**
* Callback called when the ESC key is pressed with the overlay active.
*/
onEscKeyDown?: Function;
/**
* Callback to be invoked when the dialog overlay is clicked.
*/
onOverlayClick?: Function;
/**
* Callback called when the mouse button is pressed on the overlay.
*/
onOverlayMouseDown?: Function;
/**
* Callback called when the mouse is moving over the overlay.
*/
onOverlayMouseMove?: Function;
/**
* Callback called when the mouse button is released over the overlay.
*/
onOverlayMouseUp?: Function;
/**
* Classnames object defining the component style.
*/
theme?: DialogTheme;
/**
* The text string to use as standar title of the dialog.
*/
title?: string;
/**
* Used to determine the size of the dialog. It can be small, normal or large.
* @default normal
*/
type?: string;
}
export class Dialog extends React.Component<DialogProps, {}> { }
export default Dialog;

View File

@ -1,32 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Dialog = undefined;
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
var _Dialog = require('./Dialog.js');
var _overlay = require('../overlay');
var _overlay2 = _interopRequireDefault(_overlay);
var _button = require('../button');
var _button2 = _interopRequireDefault(_button);
var _theme = require('./theme.scss');
var _theme2 = _interopRequireDefault(_theme);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Dialog = (0, _Dialog.dialogFactory)(_overlay2.default, _button2.default);
var ThemedDialog = (0, _reactCssThemr.themr)(_identifiers.DIALOG, _theme2.default)(Dialog);
exports.default = ThemedDialog;
exports.Dialog = ThemedDialog;

View File

@ -1,86 +0,0 @@
@import "../colors";
@import "../globals";
@import "../mixins";
@import "./config";
.dialog {
display: flex;
max-width: 96vw;
max-height: 96vh;
flex-direction: column;
background-color: $dialog-color-white;
border-radius: $dialog-border-radius;
box-shadow: $zdepth-shadow-5;
opacity: 0;
transition-delay: $animation-delay;
transition-timing-function: $animation-curve-default;
transition-duration: $animation-duration;
transition-property: opacity, transform;
transform: translateY(-$dialog-translate-y);
&.active {
opacity: 1;
transform: translateY(0%);
}
}
.small {
width: 30vw;
@media screen and (max-width: $layout-breakpoint-sm-tablet) {
width: 50vw;
}
@media screen and (max-width: $layout-breakpoint-xs) {
width: 75vw;
}
}
.normal {
width: 50vw;
@media screen and (max-width: $layout-breakpoint-xs) {
width: 96vw;
}
}
.large {
width: 96vw;
}
.fullscreen {
width: 96vw;
@media screen and (max-width: $layout-breakpoint-xs) {
width: 100vw;
max-width: 100vw;
min-height: 100vh;
max-height: 100vh;
border-radius: 0;
}
}
.title {
@include typo-title();
flex-grow: 0;
margin-bottom: 1.6 * $unit;
color: $dialog-color-title;
}
.body {
flex-grow: 2;
padding: $dialog-content-padding;
color: $color-text-secondary;
}
.navigation {
flex-grow: 0;
padding: $dialog-navigation-padding;
text-align: right;
}
.button {
min-width: 0;
padding-right: $dialog-navigation-padding;
padding-left: $dialog-navigation-padding;
margin-left: $dialog-navigation-padding;
}

View File

@ -1,85 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Drawer = exports.drawerFactory = undefined;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactCssThemr = require('react-css-themr');
var _classnames2 = require('classnames');
var _classnames3 = _interopRequireDefault(_classnames2);
var _identifiers = require('../identifiers.js');
var _ActivableRenderer = require('../hoc/ActivableRenderer.js');
var _ActivableRenderer2 = _interopRequireDefault(_ActivableRenderer);
var _Overlay = require('../overlay/Overlay.js');
var _Overlay2 = _interopRequireDefault(_Overlay);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var factory = function factory(Overlay) {
var Drawer = function Drawer(_ref) {
var active = _ref.active,
children = _ref.children,
className = _ref.className,
onOverlayClick = _ref.onOverlayClick,
theme = _ref.theme,
type = _ref.type;
var _className = (0, _classnames3.default)([theme.drawer, theme[type]], _defineProperty({}, theme.active, active), className);
return _react2.default.createElement(
Overlay,
{ active: active, onClick: onOverlayClick },
_react2.default.createElement(
'div',
{ 'data-react-toolbox': 'drawer', className: _className },
_react2.default.createElement(
'aside',
{ className: theme.content },
children
)
)
);
};
Drawer.propTypes = {
active: _react.PropTypes.bool,
children: _react.PropTypes.node,
className: _react.PropTypes.string,
onOverlayClick: _react.PropTypes.func,
theme: _react.PropTypes.shape({
active: _react.PropTypes.string,
content: _react.PropTypes.string,
drawer: _react.PropTypes.string,
left: _react.PropTypes.string,
right: _react.PropTypes.string
}),
type: _react.PropTypes.oneOf(['left', 'right'])
};
Drawer.defaultProps = {
active: false,
className: '',
type: 'left'
};
return (0, _ActivableRenderer2.default)()(Drawer);
};
var Drawer = factory(_Overlay2.default);
exports.default = (0, _reactCssThemr.themr)(_identifiers.DRAWER)(Drawer);
exports.drawerFactory = factory;
exports.Drawer = Drawer;

View File

@ -1,4 +0,0 @@
$drawer-background-color: $palette-grey-50 !default;
$drawer-border-color: $palette-grey-300 !default;
$drawer-text-color: $palette-grey-800 !default;
$drawer-width: 24 * $unit !default;

54
lib/drawer/index.d.ts vendored
View File

@ -1,54 +0,0 @@
import * as React from "react";
import ReactToolbox from "../index";
export interface DrawerTheme {
/**
* Used for the root class when the drawer is active.
*/
active?: string;
/**
* Used for the drawer content.
*/
content?: string;
/**
* Root class.
*/
drawer?: string;
/**
* Added to the root class when drawer is to the left.
*/
left?: string;
/**
* Added to the root class when drawer is to the right.
*/
right?: string;
}
interface DrawerProps extends ReactToolbox.Props {
/**
* If true, the drawer will be visible.
* @default false
*/
active?: boolean;
/**
* Children to pass through the component.
*/
children?: React.ReactNode;
/**
* Callback function to be invoked when the overlay is clicked.
*/
onOverlayClick?: Function;
/**
* Classnames object defining the component style.
*/
theme?: DrawerTheme;
/**
* Type of drawer. It can be left or right to display the drawer on the left or right side of the screen.
* @default left
*/
type?: "left" | "right";
}
export class Drawer extends React.Component<DrawerProps, {}> { }
export default Drawer;

View File

@ -1,26 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Drawer = undefined;
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
var _overlay = require('../overlay');
var _Drawer = require('./Drawer.js');
var _theme = require('./theme.scss');
var _theme2 = _interopRequireDefault(_theme);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Drawer = (0, _Drawer.drawerFactory)(_overlay.Overlay);
var ThemedDrawer = (0, _reactCssThemr.themr)(_identifiers.DRAWER, _theme2.default)(Drawer);
exports.default = ThemedDrawer;
exports.Drawer = ThemedDrawer;

View File

@ -1,43 +0,0 @@
@import "../colors";
@import "../globals";
@import "../mixins";
@import "./config";
.drawer {
@include shadow-2dp();
position: absolute;
top: 0;
display: block;
width: $drawer-width;
height: 100%;
overflow-x: hidden;
overflow-y: auto;
color: $drawer-text-color;
pointer-events: none;
background-color: $drawer-background-color;
transition-delay: 0s;
transition-timing-function: $animation-curve-default;
transition-duration: $animation-duration;
transition-property: transform;
transform-style: preserve-3d;
will-change: transform;
&.active {
pointer-events: all;
transition-delay: $animation-delay;
transform: translateX(0);
}
&.right {
right: 0;
border-left: 1px solid $drawer-border-color;
&:not(.active) {
transform: translateX(100%);
}
}
&.left {
left: 0;
border-right: 1px solid $drawer-border-color;
&:not(.active) {
transform: translateX(- 100%);
}
}
}

View File

@ -1,304 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Dropdown = exports.dropdownFactory = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactDom = require('react-dom');
var _reactDom2 = _interopRequireDefault(_reactDom);
var _classnames3 = require('classnames');
var _classnames4 = _interopRequireDefault(_classnames3);
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
var _Input = require('../input/Input.js');
var _Input2 = _interopRequireDefault(_Input);
var _events = require('../utils/events.js');
var _events2 = _interopRequireDefault(_events);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var factory = function factory(Input) {
var Dropdown = function (_Component) {
_inherits(Dropdown, _Component);
function Dropdown() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, Dropdown);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Dropdown.__proto__ || Object.getPrototypeOf(Dropdown)).call.apply(_ref, [this].concat(args))), _this), _this.state = {
active: false,
up: false
}, _this.getDocumentEvents = function () {
return {
click: _this.handleDocumentClick,
touchend: _this.handleDocumentClick
};
}, _this.open = function () {
var client = event.target.getBoundingClientRect();
var screenHeight = window.innerHeight || document.documentElement.offsetHeight;
var up = _this.props.auto ? client.top > screenHeight / 2 + client.height : false;
if (_this.inputNode) _this.inputNode.blur();
_this.setState({ active: true, up: up });
}, _this.close = function () {
if (_this.state.active) {
_this.setState({ active: false });
}
}, _this.handleDocumentClick = function (event) {
if (_this.state.active && !_events2.default.targetIsDescendant(event, _reactDom2.default.findDOMNode(_this))) {
_this.setState({ active: false });
}
}, _this.handleClick = function (event) {
_this.open();
_events2.default.pauseEvent(event);
if (_this.props.onClick) _this.props.onClick(event);
}, _this.handleSelect = function (item, event) {
if (_this.props.onBlur) _this.props.onBlur(event);
if (!_this.props.disabled && _this.props.onChange) {
if (_this.props.name) {
event.target.name = _this.props.name;
}
_this.props.onChange(item, event);
_this.close();
}
}, _this.getSelectedItem = function () {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = _this.props.source[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var item = _step.value;
if (item.value === _this.props.value) return item;
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
if (!_this.props.allowBlank) {
return _this.props.source[0];
}
}, _this.renderValue = function (item, idx) {
var theme = _this.props.theme;
var className = item.value === _this.props.value ? theme.selected : null;
return _react2.default.createElement(
'li',
{ key: idx, className: className, onClick: _this.handleSelect.bind(_this, item.value) },
_this.props.template ? _this.props.template(item) : item.label
);
}, _this.handleFocus = function (event) {
event.stopPropagation();
if (!_this.props.disabled) _this.open();
if (_this.props.onFocus) _this.props.onFocus(event);
}, _this.handleBlur = function (event) {
event.stopPropagation();
if (_this.state.active) _this.close();
if (_this.props.onBlur) _this.props.onBlur(event);
}, _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(Dropdown, [{
key: 'componentWillUpdate',
value: function componentWillUpdate(nextProps, nextState) {
if (!this.state.active && nextState.active) {
_events2.default.addEventsToDocument(this.getDocumentEvents());
}
}
}, {
key: 'componentDidUpdate',
value: function componentDidUpdate(prevProps, prevState) {
if (prevState.active && !this.state.active) {
_events2.default.removeEventsFromDocument(this.getDocumentEvents());
}
}
}, {
key: 'componentWillUnmount',
value: function componentWillUnmount() {
if (this.state.active) {
_events2.default.removeEventsFromDocument(this.getDocumentEvents());
}
}
}, {
key: 'renderTemplateValue',
value: function renderTemplateValue(selected) {
var _classnames;
var theme = this.props.theme;
var className = (0, _classnames4.default)(theme.field, (_classnames = {}, _defineProperty(_classnames, theme.errored, this.props.error), _defineProperty(_classnames, theme.disabled, this.props.disabled), _defineProperty(_classnames, theme.required, this.props.required), _classnames));
return _react2.default.createElement(
'div',
{ className: className, onClick: this.handleClick },
_react2.default.createElement(
'div',
{ className: theme.templateValue + ' ' + theme.value },
this.props.template(selected)
),
this.props.label ? _react2.default.createElement(
'label',
{ className: theme.label },
this.props.label,
this.props.required ? _react2.default.createElement(
'span',
{ className: theme.required },
' * '
) : null
) : null,
this.props.error ? _react2.default.createElement(
'span',
{ className: theme.error },
this.props.error
) : null
);
}
}, {
key: 'render',
value: function render() {
var _classnames2,
_this2 = this;
var _props = this.props,
allowBlank = _props.allowBlank,
auto = _props.auto,
required = _props.required,
onChange = _props.onChange,
onFocus = _props.onFocus,
onBlur = _props.onBlur,
source = _props.source,
template = _props.template,
theme = _props.theme,
others = _objectWithoutProperties(_props, ['allowBlank', 'auto', 'required', 'onChange', 'onFocus', 'onBlur', 'source', 'template', 'theme']);
var selected = this.getSelectedItem();
var className = (0, _classnames4.default)(theme.dropdown, (_classnames2 = {}, _defineProperty(_classnames2, theme.up, this.state.up), _defineProperty(_classnames2, theme.active, this.state.active), _defineProperty(_classnames2, theme.disabled, this.props.disabled), _defineProperty(_classnames2, theme.required, this.props.required), _classnames2), this.props.className);
return _react2.default.createElement(
'div',
{
className: className,
'data-react-toolbox': 'dropdown',
onBlur: this.handleBlur,
onFocus: this.handleFocus,
tabIndex: '0'
},
_react2.default.createElement(Input, _extends({}, others, {
tabIndex: '-1',
className: theme.value,
onClick: this.handleClick,
required: this.props.required,
readOnly: true,
ref: function ref(node) {
_this2.inputNode = node && node.getWrappedInstance();
},
type: template && selected ? 'hidden' : null,
value: selected && selected.label ? selected.label : ''
})),
template && selected ? this.renderTemplateValue(selected) : null,
_react2.default.createElement(
'ul',
{ className: theme.values, ref: 'values' },
source.map(this.renderValue)
)
);
}
}]);
return Dropdown;
}(_react.Component);
Dropdown.propTypes = {
allowBlank: _react.PropTypes.bool,
auto: _react.PropTypes.bool,
className: _react.PropTypes.string,
disabled: _react.PropTypes.bool,
error: _react.PropTypes.string,
label: _react.PropTypes.string,
name: _react.PropTypes.string,
onBlur: _react.PropTypes.func,
onChange: _react.PropTypes.func,
onClick: _react.PropTypes.func,
onFocus: _react.PropTypes.func,
required: _react.PropTypes.bool,
source: _react.PropTypes.array.isRequired,
template: _react.PropTypes.func,
theme: _react.PropTypes.shape({
active: _react.PropTypes.string,
disabled: _react.PropTypes.string,
dropdown: _react.PropTypes.string,
error: _react.PropTypes.string,
errored: _react.PropTypes.string,
field: _react.PropTypes.string,
label: _react.PropTypes.string,
required: _react.PropTypes.string,
selected: _react.PropTypes.string,
templateValue: _react.PropTypes.string,
up: _react.PropTypes.string,
value: _react.PropTypes.string,
values: _react.PropTypes.string
}),
value: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number])
};
Dropdown.defaultProps = {
auto: true,
className: '',
allowBlank: true,
disabled: false,
required: false
};
return Dropdown;
};
var Dropdown = factory(_Input2.default);
exports.default = (0, _reactCssThemr.themr)(_identifiers.DROPDOWN)(Dropdown);
exports.dropdownFactory = factory;
exports.Dropdown = Dropdown;

View File

@ -1,6 +0,0 @@
$dropdown-color-white: $color-white !default;
$dropdown-color-primary: $color-primary !default;
$dropdown-color-primary-contrast: $color-primary-contrast !default;
$dropdown-value-hover-background: $palette-grey-200 !default;
$dropdown-overflow-max-height: 45vh !default;
$dropdown-value-border-radius: .2 * $unit !default;

View File

@ -1,115 +0,0 @@
import * as React from "react";
import ReactToolbox from "../index";
export interface DropdownTheme {
/**
* Added to the root element when the dropdown is active.
*/
active?: string;
/**
* Added to the root element when it's disabled.
*/
disabled?: string;
/**
* Root element class.
*/
dropdown?: string;
/**
* Used for the error element.
*/
error?: string;
/**
* Added to the inner wrapper if it's errored.
*/
errored?: string;
/**
* Used for the inner wrapper of the component.
*/
field?: string;
/**
* Used for the the label element.
*/
label?: string;
/**
* Used to highlight the selected value.
*/
selected?: string;
/**
* Used as a wrapper for the given template value.
*/
templateValue?: string;
/**
* Added to the root element when it's opening up.
*/
up?: string;
/**
* Used for each value in the dropdown component.
*/
value?: string;
/**
* Used for the list of values.
*/
values?: string;
}
interface DropdownProps extends ReactToolbox.Props {
/**
* If true the dropdown will preselect the first item if the supplied value matches none of the options' values.
* @default true
*/
allowBlank?: boolean;
/**
* If true, the dropdown will open up or down depending on the position in the screen.
* @default true
*/
auto?: boolean;
/**
* Set the component as disabled.
* @default false
*/
disabled?: boolean;
/**
* Give an error string to display under the field.
*/
error?: string;
/**
* The text string to use for the floating label element.
*/
label?: string;
/**
* Name for the input field.
*/
name?: string;
/**
* Callback function that is fired when the component is blurred.
*/
onBlur?: Function;
/**
* Callback function that is fired when the component's value changes.
*/
onChange?: Function;
/**
* Callback function that is fired when the component is focused.
*/
onFocus?: Function;
/**
* Array of data objects with the data to represent in the dropdown.
*/
source: any[];
/**
* Callback function that returns a JSX template to represent the element.
*/
template?: Function;
/**
* Classnames object defining the component style.
*/
theme?: DropdownTheme;
/**
* Default value using JSON data.
*/
value?: string | number;
}
export class Dropdown extends React.Component<DropdownProps, {}> { }
export default Dropdown;

View File

@ -1,26 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Dropdown = undefined;
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
var _Dropdown = require('./Dropdown.js');
var _input = require('../input');
var _theme = require('./theme.scss');
var _theme2 = _interopRequireDefault(_theme);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Dropdown = (0, _Dropdown.dropdownFactory)(_input.Input);
var ThemedDropdown = (0, _reactCssThemr.themr)(_identifiers.DROPDOWN, _theme2.default)(Dropdown);
exports.default = ThemedDropdown;
exports.Dropdown = ThemedDropdown;

View File

@ -1,138 +0,0 @@
@import "../colors";
@import "../globals";
@import "../mixins";
@import "../input/config";
@import "./config";
.dropdown {
position: relative;
&:not(.active) {
> .values {
max-height: 0;
visibility: hidden;
}
}
&.active {
> .label, > .value {
opacity: .5;
}
> .values {
max-height: $dropdown-overflow-max-height;
visibility: visible;
box-shadow: $zdepth-shadow-1;
}
}
&:not(.up) > .values {
top: 0;
bottom: auto;
}
&.up > .values {
top: auto;
bottom: 0;
}
&.disabled {
pointer-events: none;
cursor: normal;
}
}
.value {
> input {
cursor: pointer;
}
&:after {
$size: ($input-field-height / 7);
$border: $size solid transparent;
position: absolute;
top: 50%;
right: $input-chevron-offset;
width: 0;
height: 0;
pointer-events: none;
content: "";
border-top: $size solid $input-text-bottom-border-color;
border-right: $border;
border-left: $border;
transition: transform $animation-duration $animation-curve-default;
}
}
.field {
position: relative;
padding: $input-padding 0;
cursor: pointer;
&.errored {
padding-bottom: 0;
> .label {
color: $input-text-error-color;
}
> .templateValue {
border-bottom: 1px solid $input-text-error-color;
}
> .label > .required {
color: $input-text-required-color;
}
}
&.disabled {
pointer-events: none;
cursor: normal;
> .templateValue {
border-bottom-style: dotted;
opacity: .7;
}
}
}
.templateValue {
position: relative;
min-height: $input-field-height;
padding: $input-field-padding 0;
color: $color-text;
background-color: $input-text-background-color;
border-bottom: 1px solid $input-text-bottom-border-color;
}
.label {
position: absolute;
top: $input-focus-label-top;
left: 0;
font-size: $input-label-font-size;
line-height: $input-field-font-size;
color: $input-text-label-color;
.required {
color: $input-text-required-color;
}
}
.error {
margin-bottom: - $input-underline-height;
font-size: $input-label-font-size;
line-height: $input-underline-height;
color: $input-text-error-color;
}
.values {
@include no-webkit-scrollbar;
position: absolute;
z-index: $z-index-high;
width: 100%;
overflow-y: auto;
list-style: none;
background-color: $dropdown-color-white;
border-radius: $dropdown-value-border-radius;
transition-timing-function: $animation-curve-default;
transition-duration: $animation-duration;
transition-property: max-height, box-shadow;
> * {
position: relative;
padding: $unit;
overflow: hidden;
cursor: pointer;
&:hover {
background-color: $dropdown-value-hover-background;
}
&.selected {
color: $dropdown-color-primary;
}
}
}

View File

@ -1,50 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.FontIcon = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var FontIcon = function FontIcon(_ref) {
var children = _ref.children,
className = _ref.className,
value = _ref.value,
other = _objectWithoutProperties(_ref, ['children', 'className', 'value']);
return _react2.default.createElement(
'span',
_extends({
'data-react-toolbox': 'font-icon',
className: (0, _classnames2.default)({ 'material-icons': typeof value === 'string' || typeof children === 'string' }, className)
}, other),
value,
children
);
};
FontIcon.propTypes = {
children: _react.PropTypes.any,
className: _react.PropTypes.string,
value: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element])
};
FontIcon.defaultProps = {
className: ''
};
exports.default = FontIcon;
exports.FontIcon = FontIcon;

View File

@ -1,17 +0,0 @@
import * as React from "react";
import ReactToolbox from "../index";
interface FontIconProps extends ReactToolbox.Props {
/**
* Children to pass through the component.
*/
children?: React.ReactNode;
/**
* The key string for the icon you want be displayed.
*/
value?: React.ReactNode | string;
}
export class FontIcon extends React.Component<FontIconProps, {}> { }
export default FontIcon;

View File

@ -1,15 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.FontIcon = undefined;
var _FontIcon = require('./FontIcon.js');
var _FontIcon2 = _interopRequireDefault(_FontIcon);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = _FontIcon2.default;
exports.FontIcon = _FontIcon2.default;

View File

@ -1,151 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Form = exports.formFactory = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _Autocomplete = require('../autocomplete/Autocomplete.js');
var _Autocomplete2 = _interopRequireDefault(_Autocomplete);
var _Button = require('../button/Button.js');
var _Button2 = _interopRequireDefault(_Button);
var _Checkbox = require('../checkbox/Checkbox.js');
var _Checkbox2 = _interopRequireDefault(_Checkbox);
var _DatePicker = require('../date_picker/DatePicker.js');
var _DatePicker2 = _interopRequireDefault(_DatePicker);
var _Dropdown = require('../dropdown/Dropdown.js');
var _Dropdown2 = _interopRequireDefault(_Dropdown);
var _Input = require('../input/Input.js');
var _Input2 = _interopRequireDefault(_Input);
var _RadioGroup = require('../radio/RadioGroup.js');
var _RadioGroup2 = _interopRequireDefault(_RadioGroup);
var _Slider = require('../slider/Slider.js');
var _Slider2 = _interopRequireDefault(_Slider);
var _Switch = require('../switch/Switch.js');
var _Switch2 = _interopRequireDefault(_Switch);
var _TimePicker = require('../time_picker/TimePicker.js');
var _TimePicker2 = _interopRequireDefault(_TimePicker);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var factory = function factory(Autocomplete, Button, Checkbox, DatePicker, Dropdown, Input, RadioGroup, Slider, Switch, TimePicker) {
var COMPONENTS = {
'autocomplete': Autocomplete,
'button': Button,
'checkbox': Checkbox,
'datepicker': DatePicker,
'dropdown': Dropdown,
'input': Input,
'radioGroup': RadioGroup,
'slider': Slider,
'switch': Switch,
'timepicker': TimePicker
};
var Form = function (_Component) {
_inherits(Form, _Component);
function Form() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, Form);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Form.__proto__ || Object.getPrototypeOf(Form)).call.apply(_ref, [this].concat(args))), _this), _this.onSubmit = function (event) {
event.preventDefault();
if (_this.props.onSubmit) _this.props.onSubmit(event);
}, _this.onChange = function (field, value, event) {
if (_this.props.onChange) _this.props.onChange(field, value, event);
}, _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(Form, [{
key: 'renderFields',
value: function renderFields() {
var _this2 = this;
return Object.keys(this.props.model).map(function (field, index) {
var properties = _this2.props.model[field];
var Field = COMPONENTS[properties.kind.toLowerCase()];
return _react2.default.createElement(Field, _extends({ key: index }, properties, { onChange: _this2.onChange.bind(_this2, field) }));
});
}
}, {
key: 'render',
value: function render() {
return _react2.default.createElement(
'form',
{ 'data-react-toolbox': 'form', className: this.props.className, onSubmit: this.onSubmit },
this.renderFields(),
this.props.children
);
}
}]);
return Form;
}(_react.Component);
Form.propTypes = {
attributes: _react.PropTypes.array,
children: _react.PropTypes.node,
className: _react.PropTypes.string,
model: _react.PropTypes.object,
onChange: _react.PropTypes.func,
onError: _react.PropTypes.func,
onSubmit: _react.PropTypes.func,
onValid: _react.PropTypes.func,
storage: _react.PropTypes.string
};
Form.defaultProps = {
attributes: [],
className: ''
};
return Form;
};
var Form = factory(_Autocomplete2.default, _Button2.default, _Checkbox2.default, _DatePicker2.default, _Dropdown2.default, _Input2.default, _RadioGroup2.default, _Slider2.default, _Switch2.default, _TimePicker2.default);
exports.default = Form;
exports.formFactory = factory;
exports.Form = Form;

View File

@ -1,55 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Form = undefined;
var _Form = require('./Form.js');
var _autocomplete = require('../autocomplete');
var _autocomplete2 = _interopRequireDefault(_autocomplete);
var _button = require('../button');
var _button2 = _interopRequireDefault(_button);
var _checkbox = require('../checkbox');
var _checkbox2 = _interopRequireDefault(_checkbox);
var _date_picker = require('../date_picker');
var _date_picker2 = _interopRequireDefault(_date_picker);
var _dropdown = require('../dropdown');
var _dropdown2 = _interopRequireDefault(_dropdown);
var _input = require('../input');
var _input2 = _interopRequireDefault(_input);
var _radio = require('../radio');
var _radio2 = _interopRequireDefault(_radio);
var _slider = require('../slider');
var _slider2 = _interopRequireDefault(_slider);
var _switch = require('../switch');
var _switch2 = _interopRequireDefault(_switch);
var _time_picker = require('../time_picker');
var _time_picker2 = _interopRequireDefault(_time_picker);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var ThemedForm = (0, _Form.formFactory)(_autocomplete2.default, _button2.default, _checkbox2.default, _date_picker2.default, _dropdown2.default, _input2.default, _radio2.default, _slider2.default, _switch2.default, _time_picker2.default);
exports.default = ThemedForm;
exports.Form = ThemedForm;

View File

@ -1,113 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var ActivableRendererFactory = function ActivableRendererFactory() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { delay: 500 };
return function (ActivableComponent) {
var _class, _temp2;
return _temp2 = _class = function (_Component) {
_inherits(ActivableRenderer, _Component);
function ActivableRenderer() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, ActivableRenderer);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = ActivableRenderer.__proto__ || Object.getPrototypeOf(ActivableRenderer)).call.apply(_ref, [this].concat(args))), _this), _this.state = {
active: _this.props.active,
rendered: _this.props.active
}, _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(ActivableRenderer, [{
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
if (nextProps.active && !this.props.active) this.renderAndActivate();
if (!nextProps.active && this.props.active) this.deactivateAndUnrender();
}
}, {
key: 'componentWillUnmount',
value: function componentWillUnmount() {
clearTimeout(this.activateTimeout);
clearTimeout(this.unrenderTimeout);
}
}, {
key: 'renderAndActivate',
value: function renderAndActivate() {
var _this2 = this;
if (this.unrenderTimeout) clearTimeout(this.unrenderTimeout);
this.setState({ rendered: true, active: false }, function () {
_this2.activateTimeout = setTimeout(function () {
return _this2.setState({ active: true });
}, 20);
});
}
}, {
key: 'deactivateAndUnrender',
value: function deactivateAndUnrender() {
var _this3 = this;
this.setState({ rendered: true, active: false }, function () {
_this3.unrenderTimeout = setTimeout(function () {
_this3.setState({ rendered: false });
_this3.unrenderTimeout = null;
}, _this3.props.delay);
});
}
}, {
key: 'render',
value: function render() {
var _props = this.props,
delay = _props.delay,
others = _objectWithoutProperties(_props, ['delay']); // eslint-disable-line no-unused-vars
var _state = this.state,
active = _state.active,
rendered = _state.rendered;
return rendered ? _react2.default.createElement(ActivableComponent, _extends({}, others, { active: active })) : null;
}
}]);
return ActivableRenderer;
}(_react.Component), _class.propTypes = {
active: _react.PropTypes.bool.isRequired,
children: _react.PropTypes.any,
delay: _react.PropTypes.number
}, _class.defaultProps = {
delay: options.delay
}, _temp2;
};
};
exports.default = ActivableRendererFactory;

View File

@ -1,145 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactDom = require('react-dom');
var _reactDom2 = _interopRequireDefault(_reactDom);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var Portal = function (_Component) {
_inherits(Portal, _Component);
function Portal() {
_classCallCheck(this, Portal);
return _possibleConstructorReturn(this, (Portal.__proto__ || Object.getPrototypeOf(Portal)).apply(this, arguments));
}
_createClass(Portal, [{
key: 'componentDidMount',
value: function componentDidMount() {
this._renderOverlay();
}
}, {
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
if (this._overlayTarget && nextProps.container !== this.props.container) {
this._portalContainerNode.removeChild(this._overlayTarget);
this._portalContainerNode = getContainer(nextProps.container);
this._portalContainerNode.appendChild(this._overlayTarget);
}
}
}, {
key: 'componentDidUpdate',
value: function componentDidUpdate() {
this._renderOverlay();
}
}, {
key: 'componentWillUnmount',
value: function componentWillUnmount() {
this._unrenderOverlay();
this._unmountOverlayTarget();
}
}, {
key: '_mountOverlayTarget',
value: function _mountOverlayTarget() {
if (!this._overlayTarget) {
this._overlayTarget = document.createElement('div');
this._portalContainerNode = getContainer(this.props.container);
this._portalContainerNode.appendChild(this._overlayTarget);
}
}
}, {
key: '_unmountOverlayTarget',
value: function _unmountOverlayTarget() {
if (this._overlayTarget) {
this._portalContainerNode.removeChild(this._overlayTarget);
this._overlayTarget = null;
}
this._portalContainerNode = null;
}
}, {
key: '_renderOverlay',
value: function _renderOverlay() {
var overlay = !this.props.children ? null : _react2.default.Children.only(this.props.children);
if (overlay !== null) {
this._mountOverlayTarget();
this._overlayInstance = _reactDom2.default.unstable_renderSubtreeIntoContainer(this, overlay, this._overlayTarget);
} else {
this._unrenderOverlay();
this._unmountOverlayTarget();
}
}
}, {
key: '_unrenderOverlay',
value: function _unrenderOverlay() {
if (this._overlayTarget) {
_reactDom2.default.unmountComponentAtNode(this._overlayTarget);
this._overlayInstance = null;
}
}
}, {
key: 'getMountNode',
value: function getMountNode() {
return this._overlayTarget;
}
}, {
key: 'getOverlayDOMNode',
value: function getOverlayDOMNode() {
if (!this.isMounted()) {
throw new Error('getOverlayDOMNode(): A component must be mounted to have a DOM node.');
}
if (this._overlayInstance) {
if (this._overlayInstance.getWrappedDOMNode) {
return this._overlayInstance.getWrappedDOMNode();
} else {
return _reactDom2.default.findDOMNode(this._overlayInstance);
}
}
return null;
}
}, {
key: 'render',
value: function render() {
return null;
}
}]);
return Portal;
}(_react.Component);
Portal.propTypes = {
children: _react.PropTypes.any,
container: _react.PropTypes.any,
lockBody: _react.PropTypes.bool
};
Portal.defaultProps = {
lockBody: true
};
function getContainer(container) {
var _container = typeof container === 'function' ? container() : container;
return _reactDom2.default.findDOMNode(_container) || document.body;
}
exports.default = Portal;

View File

@ -1,32 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var APP_BAR = exports.APP_BAR = 'RTAppBar';
var AUTOCOMPLETE = exports.AUTOCOMPLETE = 'RTAutocomplete';
var AVATAR = exports.AVATAR = 'RTAvatar';
var BUTTON = exports.BUTTON = 'RTButton';
var CARD = exports.CARD = 'RTCard';
var CHIP = exports.CHIP = 'RTChip';
var CHECKBOX = exports.CHECKBOX = 'RTCheckbox';
var DATE_PICKER = exports.DATE_PICKER = 'RTDatePicker';
var DIALOG = exports.DIALOG = 'RTDialog';
var DROPDOWN = exports.DROPDOWN = 'RTDropdown';
var INPUT = exports.INPUT = 'RTInput';
var LAYOUT = exports.LAYOUT = 'RTLayout';
var LINK = exports.LINK = 'RTLink';
var LIST = exports.LIST = 'RTList';
var MENU = exports.MENU = 'RTMenu';
var NAVIGATION = exports.NAVIGATION = 'RTNavigation';
var OVERLAY = exports.OVERLAY = 'RTOverlay';
var PROGRESS_BAR = exports.PROGRESS_BAR = 'RTProgressBar';
var RADIO = exports.RADIO = 'RTRadio';
var RIPPLE = exports.RIPPLE = 'RTRipple';
var SLIDER = exports.SLIDER = 'RTSlider';
var SNACKBAR = exports.SNACKBAR = 'RTSnackbar';
var SWITCH = exports.SWITCH = 'RTSwitch';
var TABLE = exports.TABLE = 'RTTable';
var TABS = exports.TABS = 'RTTabs';
var TOOLTIP = exports.TOOLTIP = 'RTTooltip';
var TIME_PICKER = exports.TIME_PICKER = 'RTTimePicker';

56
lib/index.d.ts vendored
View File

@ -1,56 +0,0 @@
import * as React from "react";
export declare namespace ReactToolbox {
interface Props {
/**
* Set a class for the root component.
*/
className?: string;
/**
* Key used to uniquely identify the element within an Array.
*/
key?: string | number;
/**
* Callback called when the component is clicked.
*/
onClick?: Function;
/**
* Fires after the mouse is released from the Component.
*/
onMouseUp?: Function;
/**
* Callback called when the mouse enters the Component.
*/
onMouseEnter?: Function;
/**
* Callback called when the mouse leaves the Component.
*/
onMouseLeave?: Function;
/**
* Callback called when the mouse press the Component.
*/
onMouseDown?: Function;
onContextMenu?: Function;
onDoubleClick?: Function;
onDrag?: Function;
onDragEnd?: Function;
onDragEnter?: Function;
onDragExit?: Function;
onDragLeave?: Function;
onDragOver?: Function;
onDragStart?: Function;
onDrop?: Function;
onMouseMove?: Function;
onMouseOut?: Function;
onMouseOver?: Function;
onTouchCancel?: Function;
onTouchEnd?: Function;
onTouchMove?: Function;
onTouchStart?: Function;
/**
* Set inline style for the root component.
*/
style?: React.CSSProperties;
}
}
export default ReactToolbox;

View File

@ -1,206 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.TimePicker = exports.Tooltip = exports.Table = exports.Switch = exports.Snackbar = exports.Slider = exports.Ripple = exports.ProgressBar = exports.Navigation = exports.Link = exports.Input = exports.Form = exports.FontIcon = exports.Dropdown = exports.Drawer = exports.Dialog = exports.DatePicker = exports.Checkbox = exports.Chip = exports.Avatar = exports.Autocomplete = exports.AppBar = undefined;
var _button = require('./button');
Object.keys(_button).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _button[key];
}
});
});
var _card = require('./card');
Object.keys(_card).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _card[key];
}
});
});
var _layout = require('./layout');
Object.keys(_layout).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _layout[key];
}
});
});
var _list = require('./list');
Object.keys(_list).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _list[key];
}
});
});
var _menu = require('./menu');
Object.keys(_menu).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _menu[key];
}
});
});
var _radio = require('./radio');
Object.keys(_radio).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _radio[key];
}
});
});
var _tabs = require('./tabs');
Object.keys(_tabs).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _tabs[key];
}
});
});
require('./utils/polyfills');
var _app_bar = require('./app_bar');
var _app_bar2 = _interopRequireDefault(_app_bar);
var _autocomplete = require('./autocomplete');
var _autocomplete2 = _interopRequireDefault(_autocomplete);
var _avatar = require('./avatar');
var _avatar2 = _interopRequireDefault(_avatar);
var _chip = require('./chip');
var _chip2 = _interopRequireDefault(_chip);
var _checkbox = require('./checkbox');
var _checkbox2 = _interopRequireDefault(_checkbox);
var _date_picker = require('./date_picker');
var _date_picker2 = _interopRequireDefault(_date_picker);
var _dialog = require('./dialog');
var _dialog2 = _interopRequireDefault(_dialog);
var _drawer = require('./drawer');
var _drawer2 = _interopRequireDefault(_drawer);
var _dropdown = require('./dropdown');
var _dropdown2 = _interopRequireDefault(_dropdown);
var _font_icon = require('./font_icon');
var _font_icon2 = _interopRequireDefault(_font_icon);
var _form = require('./form');
var _form2 = _interopRequireDefault(_form);
var _input = require('./input');
var _input2 = _interopRequireDefault(_input);
var _link = require('./link');
var _link2 = _interopRequireDefault(_link);
var _navigation = require('./navigation');
var _navigation2 = _interopRequireDefault(_navigation);
var _progress_bar = require('./progress_bar');
var _progress_bar2 = _interopRequireDefault(_progress_bar);
var _ripple = require('./ripple');
var _ripple2 = _interopRequireDefault(_ripple);
var _slider = require('./slider');
var _slider2 = _interopRequireDefault(_slider);
var _snackbar = require('./snackbar');
var _snackbar2 = _interopRequireDefault(_snackbar);
var _switch = require('./switch');
var _switch2 = _interopRequireDefault(_switch);
var _table = require('./table');
var _table2 = _interopRequireDefault(_table);
var _tooltip = require('./tooltip');
var _tooltip2 = _interopRequireDefault(_tooltip);
var _time_picker = require('./time_picker');
var _time_picker2 = _interopRequireDefault(_time_picker);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.AppBar = _app_bar2.default; // Import polyfills for IE11
exports.Autocomplete = _autocomplete2.default;
exports.Avatar = _avatar2.default;
exports.Chip = _chip2.default;
exports.Checkbox = _checkbox2.default;
exports.DatePicker = _date_picker2.default;
exports.Dialog = _dialog2.default;
exports.Drawer = _drawer2.default;
exports.Dropdown = _dropdown2.default;
exports.FontIcon = _font_icon2.default;
exports.Form = _form2.default;
exports.Input = _input2.default;
exports.Link = _link2.default;
exports.Navigation = _navigation2.default;
exports.ProgressBar = _progress_bar2.default;
exports.Ripple = _ripple2.default;
exports.Slider = _slider2.default;
exports.Snackbar = _snackbar2.default;
exports.Switch = _switch2.default;
exports.Table = _table2.default;
exports.Tooltip = _tooltip2.default;
exports.TimePicker = _time_picker2.default;

View File

@ -1,296 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Input = exports.inputFactory = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames4 = require('classnames');
var _classnames5 = _interopRequireDefault(_classnames4);
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
var _FontIcon = require('../font_icon/FontIcon.js');
var _FontIcon2 = _interopRequireDefault(_FontIcon);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var factory = function factory(FontIcon) {
var Input = function (_React$Component) {
_inherits(Input, _React$Component);
function Input() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, Input);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Input.__proto__ || Object.getPrototypeOf(Input)).call.apply(_ref, [this].concat(args))), _this), _this.handleChange = function (event) {
var _this$props = _this.props,
onChange = _this$props.onChange,
multiline = _this$props.multiline,
maxLength = _this$props.maxLength;
var valueFromEvent = event.target.value;
// Trim value to maxLength if that exists (only on multiline inputs).
// Note that this is still required even tho we have the onKeyPress filter
// because the user could paste smt in the textarea.
var haveToTrim = multiline && maxLength && event.target.value.length > maxLength;
var value = haveToTrim ? valueFromEvent.substr(0, maxLength) : valueFromEvent;
// propagate to to store and therefore to the input
if (onChange) onChange(value, event);
}, _this.handleAutoresize = function () {
var element = _this.refs.input;
var rows = _this.props.rows;
if (typeof rows === 'number' && !isNaN(rows)) {
element.style.height = null;
} else {
// compute the height difference between inner height and outer height
var style = getComputedStyle(element, null);
var heightOffset = style.boxSizing === 'content-box' ? -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom)) : parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
// resize the input to its content size
element.style.height = 'auto';
element.style.height = element.scrollHeight + heightOffset + 'px';
}
}, _this.handleKeyPress = function (event) {
// prevent insertion of more characters if we're a multiline input
// and maxLength exists
var _this$props2 = _this.props,
multiline = _this$props2.multiline,
maxLength = _this$props2.maxLength,
onKeyPress = _this$props2.onKeyPress;
if (multiline && maxLength) {
// check if smt is selected, in which case the newly added charcter would
// replace the selected characters, so the length of value doesn't actually
// increase.
var isReplacing = event.target.selectionEnd - event.target.selectionStart;
var value = event.target.value;
if (!isReplacing && value.length === maxLength) {
event.preventDefault();
event.stopPropagation();
return;
}
}
if (onKeyPress) onKeyPress(event);
}, _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(Input, [{
key: 'componentDidMount',
value: function componentDidMount() {
if (this.props.multiline) {
window.addEventListener('resize', this.handleAutoresize);
this.handleAutoresize();
}
}
}, {
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
if (!this.props.multiline && nextProps.multiline) {
window.addEventListener('resize', this.handleAutoresize);
} else if (this.props.multiline && !nextProps.multiline) {
window.removeEventListener('resize', this.handleAutoresize);
}
}
}, {
key: 'componentDidUpdate',
value: function componentDidUpdate() {
// resize the textarea, if nessesary
if (this.props.multiline) this.handleAutoresize();
}
}, {
key: 'componentWillUnmount',
value: function componentWillUnmount() {
if (this.props.multiline) window.removeEventListener('resize', this.handleAutoresize);
}
}, {
key: 'blur',
value: function blur() {
this.refs.input.blur();
}
}, {
key: 'focus',
value: function focus() {
this.refs.input.focus();
}
}, {
key: 'render',
value: function render() {
var _classnames2;
var _props = this.props,
children = _props.children,
disabled = _props.disabled,
error = _props.error,
floating = _props.floating,
hint = _props.hint,
icon = _props.icon,
name = _props.name,
labelText = _props.label,
maxLength = _props.maxLength,
multiline = _props.multiline,
required = _props.required,
theme = _props.theme,
type = _props.type,
value = _props.value,
onKeyPress = _props.onKeyPress,
_props$rows = _props.rows,
rows = _props$rows === undefined ? 1 : _props$rows,
others = _objectWithoutProperties(_props, ['children', 'disabled', 'error', 'floating', 'hint', 'icon', 'name', 'label', 'maxLength', 'multiline', 'required', 'theme', 'type', 'value', 'onKeyPress', 'rows']);
var length = maxLength && value ? value.length : 0;
var labelClassName = (0, _classnames5.default)(theme.label, _defineProperty({}, theme.fixed, !floating));
var className = (0, _classnames5.default)(theme.input, (_classnames2 = {}, _defineProperty(_classnames2, theme.disabled, disabled), _defineProperty(_classnames2, theme.errored, error), _defineProperty(_classnames2, theme.hidden, type === 'hidden'), _defineProperty(_classnames2, theme.withIcon, icon), _classnames2), this.props.className);
var valuePresent = value !== null && value !== undefined && value !== '' && !((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === Number && isNaN(value));
var inputElementProps = _extends({}, others, {
className: (0, _classnames5.default)(theme.inputElement, _defineProperty({}, theme.filled, valuePresent)),
onChange: this.handleChange,
ref: 'input',
role: 'input',
name: name,
disabled: disabled,
required: required,
type: type,
value: value
});
if (!multiline) {
inputElementProps.maxLength = maxLength;
inputElementProps.onKeyPress = onKeyPress;
} else {
inputElementProps.rows = rows;
inputElementProps.onKeyPress = this.handleKeyPress;
}
return _react2.default.createElement(
'div',
{ 'data-react-toolbox': 'input', className: className },
_react2.default.createElement(multiline ? 'textarea' : 'input', inputElementProps),
icon ? _react2.default.createElement(FontIcon, { className: theme.icon, value: icon }) : null,
_react2.default.createElement('span', { className: theme.bar }),
labelText ? _react2.default.createElement(
'label',
{ className: labelClassName },
labelText,
required ? _react2.default.createElement(
'span',
{ className: theme.required },
' * '
) : null
) : null,
hint ? _react2.default.createElement(
'span',
{ hidden: labelText, className: theme.hint },
hint
) : null,
error ? _react2.default.createElement(
'span',
{ className: theme.error },
error
) : null,
maxLength ? _react2.default.createElement(
'span',
{ className: theme.counter },
length,
'/',
maxLength
) : null,
children
);
}
}]);
return Input;
}(_react2.default.Component);
Input.propTypes = {
children: _react2.default.PropTypes.any,
className: _react2.default.PropTypes.string,
disabled: _react2.default.PropTypes.bool,
error: _react2.default.PropTypes.string,
floating: _react2.default.PropTypes.bool,
hint: _react2.default.PropTypes.string,
icon: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.element]),
label: _react2.default.PropTypes.string,
maxLength: _react2.default.PropTypes.number,
multiline: _react2.default.PropTypes.bool,
name: _react2.default.PropTypes.string,
onBlur: _react2.default.PropTypes.func,
onChange: _react2.default.PropTypes.func,
onFocus: _react2.default.PropTypes.func,
onKeyPress: _react2.default.PropTypes.func,
required: _react2.default.PropTypes.bool,
rows: _react2.default.PropTypes.number,
theme: _react2.default.PropTypes.shape({
bar: _react2.default.PropTypes.string,
counter: _react2.default.PropTypes.string,
disabled: _react2.default.PropTypes.string,
error: _react2.default.PropTypes.string,
errored: _react2.default.PropTypes.string,
hidden: _react2.default.PropTypes.string,
hint: _react2.default.PropTypes.string,
icon: _react2.default.PropTypes.string,
input: _react2.default.PropTypes.string,
inputElement: _react2.default.PropTypes.string,
required: _react2.default.PropTypes.string,
withIcon: _react2.default.PropTypes.string
}),
type: _react2.default.PropTypes.string,
value: _react2.default.PropTypes.any
};
Input.defaultProps = {
className: '',
hint: '',
disabled: false,
floating: true,
multiline: false,
required: false,
type: 'text'
};
return Input;
};
var Input = factory(_FontIcon2.default);
exports.default = (0, _reactCssThemr.themr)(_identifiers.INPUT, null, { withRef: true })(Input);
exports.inputFactory = factory;
exports.Input = Input;

View File

@ -1,20 +0,0 @@
$input-padding: 2 * $unit !default;
$input-field-padding: .8 * $unit !default;
$input-field-font-size: 1.6 * $unit !default;
$input-field-height: $input-field-padding * 2 + $input-field-font-size * 1.4 !default;
$input-label-font-size: 1.2 * $unit !default;
$input-focus-label-top: .6 * $unit !default;
$input-text-background-color: transparent !default;
$input-text-label-color: rgba($color-black, 0.26) !default;
$input-text-bottom-border-color: rgba($color-black, 0.12) !default;
$input-text-highlight-color: $color-primary !default;
$input-text-disabled-color: $input-text-bottom-border-color !default;
$input-text-disabled-text-color: $input-text-label-color !default;
$input-text-error-color: rgb(222, 50, 38) !default;
$input-text-required-color: rgb(222, 50, 38) !default;
$input-underline-height: 2 * $unit !default;
$input-icon-font-size: 2.4 * $unit !default;
$input-icon-size: 2 * $input-icon-font-size !default;
$input-icon-offset: 1.6 * $unit !default;
$input-chevron-offset: .8 * $unit !default;
$input-hint-opacity: 1 !default;

136
lib/input/index.d.ts vendored
View File

@ -1,136 +0,0 @@
import * as React from "react";
import ReactToolbox from "../index";
export interface InputTheme {
/**
* Used for the bar under the input.
*/
bar?: string;
/**
* Used for the counter element.
*/
counter?: string;
/**
* Added to the root class when input is disabled.
*/
disabled?: string;
/**
* Used for the text error.
*/
error?: string;
/**
* Added to the root class when input is errored.
*/
errored?: string;
/**
* Used when the input is hidden.
*/
hidden?: string;
/**
* Used for the hint text.
*/
hint?: string;
/**
* Used for the icon in case the input has icon.
*/
icon?: string;
/**
* Used as root class for the component.
*/
input?: string;
/**
* Used for the HTML input element.
*/
inputElement?: string;
/**
* Used in case the input is required.
*/
required?: string;
/**
* Added to the root class if the input has icon.
*/
withIcon?: string;
}
interface InputProps extends ReactToolbox.Props {
/**
* Children to pass through the component.
*/
children?: React.ReactNode;
/**
* If true, component will be disabled.
* @default false
*/
disabled?: boolean;
/**
* Give an error node to display under the field.
*/
error?: string;
/**
* Indicates if the label is floating in the input field or not.
* @default true
*/
floating?: boolean;
/**
* The text string to use for hint text element.
*/
hint?: string;
/**
* Name of an icon to use as a label for the input.
*/
icon?: React.ReactNode | string;
/**
* The text string to use for the floating label element.
*/
label?: string;
/**
* Specifies the maximum number of characters allowed in the component
*/
maxLength?: number;
/**
* If true, a textarea element will be rendered. The textarea also grows and shrinks according to the number of lines.
* @default false
*/
multiline?: boolean;
/**
* Name for the input field.
*/
name?: string;
/**
* Callback function that is fired when component is blurred.
*/
onBlur?: Function;
/**
* Callback function that is fired when the component's value changes
*/
onChange?: Function;
/**
* Callback function that is fired when component is focused.
*/
onFocus?: Function;
/**
* Callback function that is fired when a key is pressed.
*/
onKeyPress?: Function;
/**
* If true, the html input has a required attribute.
* @default false
*/
required?: boolean;
/**
* Classnames object defining the component style.
*/
theme?: InputTheme;
/**
* Type of the input element. It can be a valid HTML5 input type
*/
type?: string;
/**
* Current value of the input element.
*/
value?: any;
}
export class Input extends React.Component<InputProps, {}> { }
export default Input;

View File

@ -1,28 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Input = undefined;
var _identifiers = require('../identifiers.js');
var _reactCssThemr = require('react-css-themr');
var _Input = require('./Input.js');
var _FontIcon = require('../font_icon/FontIcon.js');
var _FontIcon2 = _interopRequireDefault(_FontIcon);
var _theme = require('./theme.scss');
var _theme2 = _interopRequireDefault(_theme);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Input = (0, _Input.inputFactory)(_FontIcon2.default);
var ThemedInput = (0, _reactCssThemr.themr)(_identifiers.INPUT, _theme2.default, { withRef: true })(Input);
exports.default = ThemedInput;
exports.Input = ThemedInput;

View File

@ -1,156 +0,0 @@
@import "../colors";
@import "../globals";
@import "../mixins";
@import "./config";
.input {
position: relative;
padding: $input-padding 0;
&.withIcon {
margin-left: $input-icon-size;
}
}
.icon {
position: absolute;
top: $input-icon-offset;
left: -$input-icon-size;
display: block;
width: $input-icon-size;
height: $input-icon-size;
font-size: $input-icon-font-size !important;
line-height: $input-icon-size !important;
color: $input-text-label-color;
text-align: center;
transition: color $animation-duration $animation-curve-default;
}
.inputElement {
display: block;
width: 100%;
padding: $input-field-padding 0;
font-size: $input-field-font-size;
color: $color-text;
background-color: $input-text-background-color;
border: 0;
border-bottom: 1px solid $input-text-bottom-border-color;
outline: none;
&:focus:not([disabled]):not([readonly]) {
~ .bar:before, ~ .bar:after {
width: 50%;
}
~ .label:not(.fixed) {
color: $input-text-highlight-color;
}
~ .label > .required {
color: $input-text-required-color;
}
~ .hint {
display: block;
opacity: $input-hint-opacity;
}
~ .icon {
color: $input-text-highlight-color;
}
}
&:focus:not([disabled]):not([readonly]), &.filled, &[type="date"], &[type="time"] {
~ .label:not(.fixed) {
top: $input-focus-label-top;
font-size: $input-label-font-size;
}
&.filled ~ .hint {
opacity: 0;
}
}
&.filled ~ .label.fixed, &.filled ~ .hint {
display: none;
}
}
.label {
position: absolute;
top: $input-padding + (1.5 * $input-field-padding);
left: 0;
font-size: $input-field-font-size;
line-height: $input-field-font-size;
color: $input-text-label-color;
pointer-events: none;
transition-timing-function: $animation-curve-default;
transition-duration: $animation-duration;
transition-property: top, font-size, color;
&.fixed ~ .hint {
display: none;
}
}
.hint {
position: absolute;
top: $input-padding + (1.5 * $input-field-padding);
left: 0;
font-size: $input-field-font-size;
line-height: $input-field-font-size;
color: $input-text-label-color;
pointer-events: none;
opacity: $input-hint-opacity;
transition-timing-function: $animation-curve-default;
transition-duration: $animation-duration;
transition-property: opacity;
}
.bar {
position: relative;
display: block;
width: 100%;
&:before, &:after {
@include material-animation-default();
position: absolute;
bottom: 0;
width: 0;
height: 2px;
content: "";
background-color: $input-text-highlight-color;
transition-property: width, background-color;
}
&:before {
left: 50%;
}
&:after {
right: 50%;
}
}
.error, .counter {
margin-bottom: - $input-underline-height;
font-size: $input-label-font-size;
line-height: $input-underline-height;
color: $input-text-error-color;
}
.counter {
position: absolute;
right: 0;
color: $input-text-label-color;
}
.disabled > .inputElement {
color: $input-text-disabled-text-color;
border-bottom-style: dotted;
}
.errored {
padding-bottom: 0;
> .inputElement {
margin-top: 1px;
border-bottom-color: $input-text-error-color;
}
> .counter, > .label {
color: $input-text-error-color;
}
> .label > .required {
color: $input-text-required-color;
}
}
.hidden {
display: none;
}

View File

@ -1,48 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Layout = undefined;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactCssThemr = require('react-css-themr');
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _identifiers = require('../identifiers.js');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Layout = function Layout(_ref) {
var className = _ref.className,
children = _ref.children,
theme = _ref.theme;
return _react2.default.createElement(
'div',
{ 'data-react-toolbox': 'layout', className: (0, _classnames2.default)(theme.layout, className) },
_react2.default.Children.map(children, function (child) {
return _react2.default.cloneElement(child, { theme: theme });
})
);
};
Layout.propTypes = {
children: _react.PropTypes.oneOfType([_react.PropTypes.arrayOf(_react.PropTypes.element), _react.PropTypes.element]),
className: _react.PropTypes.string,
theme: _react.PropTypes.shape({
layout: _react.PropTypes.string
})
};
Layout.defaultProps = {
className: ''
};
exports.default = (0, _reactCssThemr.themr)(_identifiers.LAYOUT)(Layout);
exports.Layout = Layout;

View File

@ -1,90 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NavDrawer = undefined;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames3 = require('classnames');
var _classnames4 = _interopRequireDefault(_classnames3);
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var NavDrawer = function NavDrawer(_ref) {
var _classnames;
var active = _ref.active,
children = _ref.children,
className = _ref.className,
onOverlayClick = _ref.onOverlayClick,
permanentAt = _ref.permanentAt,
pinned = _ref.pinned,
scrollY = _ref.scrollY,
theme = _ref.theme,
width = _ref.width;
var rootClasses = (0, _classnames4.default)([theme.navDrawer], (_classnames = {}, _defineProperty(_classnames, theme[permanentAt + 'Permanent'], permanentAt), _defineProperty(_classnames, theme.wide, width === 'wide'), _defineProperty(_classnames, theme.active, active), _defineProperty(_classnames, theme.pinned, pinned), _classnames), className);
var drawerClasses = (0, _classnames4.default)(theme.drawerContent, _defineProperty({}, theme.scrollY, scrollY));
return _react2.default.createElement(
'div',
{ 'data-react-toolbox': 'nav-drawer', className: rootClasses, onClick: onOverlayClick },
_react2.default.createElement(
'div',
{ 'data-react-toolbox': 'nav-drawer-scrim', className: theme.scrim },
_react2.default.createElement(
'aside',
{ 'data-react-toolbox': 'nav-drawer-content', className: drawerClasses },
children
)
)
);
};
NavDrawer.propTypes = {
active: _react.PropTypes.bool,
children: _react.PropTypes.any,
className: _react.PropTypes.string,
onOverlayClick: _react.PropTypes.func,
permanentAt: _react.PropTypes.oneOf(['sm', 'smTablet', 'md', 'lg', 'lgTablet', 'xl', 'xxl', 'xxxl']),
pinned: _react.PropTypes.bool,
scrollY: _react.PropTypes.bool,
theme: _react.PropTypes.shape({
active: _react.PropTypes.string,
drawerContent: _react.PropTypes.string,
lgPermanent: _react.PropTypes.string,
mdPermanent: _react.PropTypes.string,
navDrawer: _react.PropTypes.string,
pinned: _react.PropTypes.string,
scrim: _react.PropTypes.string,
scrollY: _react.PropTypes.string,
smPermanent: _react.PropTypes.string,
wide: _react.PropTypes.string,
xlPermanent: _react.PropTypes.string,
xxlPermanent: _react.PropTypes.string,
xxxlPermanent: _react.PropTypes.string
}),
width: _react.PropTypes.oneOf(['normal', 'wide'])
};
NavDrawer.defaultProps = {
active: false,
className: '',
scrollY: false,
width: 'normal'
};
exports.default = (0, _reactCssThemr.themr)(_identifiers.LAYOUT)(NavDrawer);
exports.NavDrawer = NavDrawer;

View File

@ -1,57 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Panel = undefined;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames2 = require('classnames');
var _classnames3 = _interopRequireDefault(_classnames2);
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var Panel = function Panel(_ref) {
var children = _ref.children,
className = _ref.className,
onScroll = _ref.onScroll,
scrollY = _ref.scrollY,
theme = _ref.theme;
var _className = (0, _classnames3.default)(theme.panel, _defineProperty({}, theme.scrollY, scrollY), className);
return _react2.default.createElement(
'div',
{ 'data-react-toolbox': 'panel', onScroll: onScroll, className: _className },
children
);
};
Panel.propTypes = {
children: _react.PropTypes.any,
className: _react.PropTypes.string,
onScroll: _react.PropTypes.func,
scrollY: _react.PropTypes.bool,
theme: _react.PropTypes.shape({
panel: _react.PropTypes.string,
scrollY: _react.PropTypes.string
})
};
Panel.defaultProps = {
className: '',
scrollY: false
};
exports.default = (0, _reactCssThemr.themr)(_identifiers.LAYOUT)(Panel);
exports.Panel = Panel;

View File

@ -1,69 +0,0 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Sidebar = undefined;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames3 = require('classnames');
var _classnames4 = _interopRequireDefault(_classnames3);
var _reactCssThemr = require('react-css-themr');
var _identifiers = require('../identifiers.js');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var Sidebar = function Sidebar(_ref) {
var children = _ref.children,
className = _ref.className,
pinned = _ref.pinned,
scrollY = _ref.scrollY,
theme = _ref.theme,
width = _ref.width;
var wrapperClasses = (0, _classnames4.default)(theme.sidebar, theme['width-' + width], _defineProperty({}, theme.pinned, pinned), className);
var innerClasses = (0, _classnames4.default)(theme.sidebarContent, _defineProperty({}, theme.scrollY, scrollY));
return _react2.default.createElement(
'div',
{ 'data-react-toolbox': 'sidebar', className: wrapperClasses },
_react2.default.createElement(
'aside',
{ 'data-react-toolbox': 'sidebar-content', className: innerClasses },
children
)
);
};
Sidebar.propTypes = {
children: _react.PropTypes.any,
className: _react.PropTypes.string,
pinned: _react.PropTypes.bool,
scrollY: _react.PropTypes.bool,
theme: _react.PropTypes.shape({
pinned: _react.PropTypes.string,
scrollY: _react.PropTypes.string,
sidebar: _react.PropTypes.string,
sidebarContent: _react.PropTypes.string
}),
width: _react.PropTypes.oneOf([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 25, 33, 50, 66, 75, 100])
};
Sidebar.defaultProps = {
className: '',
pinned: false,
scrollY: false,
width: 5
};
exports.default = (0, _reactCssThemr.themr)(_identifiers.LAYOUT)(Sidebar);
exports.Sidebar = Sidebar;

View File

@ -1,18 +0,0 @@
$drawer-background-color: $palette-grey-50 !default;
$drawer-border-color: $palette-grey-300 !default;
$drawer-text-color: $palette-grey-800 !default;
$drawer-overlay-color: $color-black !default;
$drawer-overlay-opacity: .6 !default;
// from: https://www.google.com/design/spec/layout/structure.html#structure-side-nav
$navigation-drawer-desktop-width: 5 * $standard-increment-desktop !default;
$navigation-drawer-max-desktop-width: 40 * $unit !default;
// Mobile:
// Width = Screen width 56 dp
// Maximum width: 320dp
$navigation-drawer-mobile-width: 5 * $standard-increment-mobile !default;
// sass doesn't like use of variable here: calc(100% - $standard-increment-mobile);
$navigation-drawer-max-mobile-width: calc(100% - 5.6rem) !default;

Some files were not shown because too many files have changed in this diff Show More