fabric-docs Documentation

Size: px
Start display at page:

Download "fabric-docs Documentation"

Transcription

1 fabric-docs Documentation Release Brian Garland Mar 19, 2018

2

3 Getting Started: 1 Configuring Your Environment Verify your environment works Create a Simple App Prerequisites Step 1: Create react app Step 2: Install office-ui-fabric-react package Step 3: Add DocumentCardBasic component Step 4: Preview document card Next steps The Fabric Component Focus rectangle notes Using Icons Alternative CDN options What does initializeicons do? Disabling generated warnings Using componentref Instead of ref Consuming a component s public API In Fabric, extend BaseComponent to abstract resolving the componentref Styling Component anatomy Moving styles from scss to ts Footnotes Testing Running tests Running tests in watch mode Debugging Writing tests Test Utilities & Helpers FAQ i

4 ii

5 CHAPTER 1 Configuring Your Environment To get started, we highly recommend having the following tools installed: Visual Studio Code Node.js (NOTE: please install the LTS version as we can t validate current will always work) git 1.1 Verify your environment works Open a command line and run these: Run node -v to check your node version! It should probably be 6.x.x. Run npm -v to check your npm version. If your version is below 5.x.x, run npm install -g npm to update it. Go to a folder and run code. to open VSCode in a folder. If you don t have VSCode in your path, you can open VSCode and press f1, type path, and select the Install 'code' command in PATH option. Run git --version to make sure you have git. 1

6 2 Chapter 1. Configuring Your Environment

7 CHAPTER 2 Create a Simple App In this tutorial, let s build a simple React app with an Office UI Fabric React DocumentCard. 2.1 Prerequisites Node.js and npm Install Node.js and npm if you haven t already installed in your machine. It is recommended you at least install node version 4.x.x and npm version 3.x.x. You can check your node and npm version by running node -v and npm -v respectively create-react-app package We will use Create React App to quickly create a React app for this tutorial. Once node and npm is installed, type the following command in a console to install the create-react-app npm package. npm install -g create-react-app Visual Studio Code Download and install Visual Studio Code. We will use Visual Studio Code as our code editor for this tutorial. Feel free to use your favorite code editor of choice if you do not want to use Visual Studio Code. 3

8 2.2 Step 1: Create react app In a console, type the following command to create a simple React app. create-react-app documentcardbasic-demo This will install the required depedencies and scaffold a simple React app. Once its complete, navigate to the documentcardbasic-demo folder. cd documentcardbasic-demo Type the following command to launch the React app in your browser. npm start 4 Chapter 2. Create a Simple App

9 2.3 Step 2: Install office-ui-fabric-react package To use Fabric React in your project, you will need to first install the office-ui-fabric-react npm package. Type the following in the console to install the package: npm install office-ui-fabric-react --save If you have npm start command still running, terminate the command by pressing Ctrl+C. 2.4 Step 3: Add DocumentCardBasic component Open the documentcardbasic-demo project folder in Visual Studio Code. Open the file src\app.js and replace the existing code inside render method to only return the DocumentCard component: <DocumentCard onclickhref=' <DocumentCardPreview previewimages={ [ 2.3. Step 2: Install office-ui-fabric-react package 5

10 { previewimagesrc: require('./documentpreview.png'), iconsrc: require('./iconppt.png'), width: 318, height: 196, accentcolor: '#ce4b1f' ] /> <DocumentCardTitle title='revenue stream proposal fiscal year 2016 version02.pptx'/> <DocumentCardActivity activity='created Feb 23, 2016' people={ [ { name: 'Kat Larrson', profileimagesrc: require('./avatarkat.png') ] /> </DocumentCard> DocumentCard component contains the DocumentCardPreview, DocumentCardTitle and DocumentCardActivity components that help you describe the document card. Since office-ui-fabric-react is a npm module, we will need to import the document card component in the App component. Add the following import statement at the top of the src\app.js file just below import './App.css': import { DocumentCard, DocumentCardPreview, DocumentCardTitle, DocumentCardActivity from 'office-ui-fabric-react/lib/documentcard'; Notice how we import only the specific component module from lib folder instead of importing the entire office-ui-fabric-react module. Save the src\app.js file. Below is an example of how you can similarly import other components: import { DefaultButton, PrimaryButton from 'office-ui-fabric-react/lib/button'; Open index.html file. Fabric React components provide support for Left-to-Right (LTR) and Right-to-Left (RTL) rendering out of the box. You can specify the default direction in your index.html. Add the dir attribute with the value ltr to the <html> element: <html lang="en" dir="ltr"> Load Office UI Fabric styles by linking to the Office UI Fabric CDN. Add the following to the <head> element: <link rel="stylesheet" href=" ui-fabric-core/9.0.0/css/fabric.min.css"> Save the file. 6 Chapter 2. Create a Simple App

11 Copy the following images from GitHub to src folder. avatarkat.png iconppt.png documentpreview.png 2.5 Step 4: Preview document card Switch to the console and type the following to preview your app in the browser: npm start You should see the document card component in your app. 2.6 Next steps Congratulations! You have successfully built a simple React app with an Office UI Fabric React DocumentCard. As next steps, try using other components like DetailsLists, Callout etc., 2.5. Step 4: Preview document card 7

12 8 Chapter 2. Create a Simple App

13 CHAPTER 3 The Fabric Component Consumers using Fabric components should be wrapping their content within the Fabric component. import { Fabric from 'office-ui-fabric-react/lib/fabric'; import * as React from 'react'; import * as ReactDOM from 'react-dom'; ReactDOM.render( <Fabric> <App/> </Fabric>, element); Note: The Fabric component will render a div, and will mix in div properties. You may use it as a replacement for a root div. The Fabric component is a root wrapper component which solves 2 problems: 1. The default fontfamily css style is defined at this layer, allowing components within to inherit the default fontfamily. The class ms-fabric defines this. 2. The focus rectangle visibility is managed through the is-focusvisible css class. 3.1 Focus rectangle notes Focus rectangles around components should only be shown when the user presses tab or directional keys. When they press mouse buttons, focus rectangles should not be shown. The Fabric component that will conditionally add/remove an is-focusvisible class, and components rendering focus rectangles should conditionalize their visibility based on the.ms-fabric.is-focusvisible parent selector. This is abstracted in the scss include focus-border(). 9

14 10 Chapter 3. The Fabric Component

15 CHAPTER 4 Using Icons By default, the Fabric icons are not added to your bundle, in order to save bytes for scenarios where you don t care about icons, or you only care about a subset. To make them available, you may initialize them as such: import { initializeicons from 'office-ui-fabric-react/lib/icons'; initializeicons(/* optional base url */); 4.1 Alternative CDN options By default, the icon font will be pulled from the SharePoint CDN. If you would like the icons to be served from your cdn, simply copy the files from the package s fonts folder to your cdn, and in initializeicons, provide the base url to access those fonts (Note that it will require a trailing slash.) 4.2 What does initializeicons do? It registers a map of icon names, which define how to render icons. Icons can be rendered either through JSX components, or as a font character. The icon code will register the font-face definition only when a given icon from a subset is referenced. What we re trying to optimize here is download size. We define a map of icon codes which map to a font-face. When the Icon component renders the Upload icon, we determine if the font-face has yet been registered, an if not, we add it to the page, causing the subset containing the Upload icon to be downloaded. packages can resolve over 1000 different icons, and will download from the 10+ font partitions, minimizing download overhead. We also include the most common icons in the first partition, optimizing for the basic scenarios. If there are commonly used icons missing in there, please file an issue so that we can evaluate adjusting the primary partition. 11

16 4.3 Disabling generated warnings When icons are rendered using the Icon component, but have not yet been registered, you will see console errors indicating so. In most cases, this can be addressed by registering the icons. But there are 2 cases, where this isn t desirable: Test scenarios In test scenarios, you may want to simply disable the warnings and avoid registering icons. To do this: import { seticonoptions from 'office-ui-fabric-react/lib/styling'; // Suppress icon warnings. seticonoptions({ disablewarnings: true ); Library icon registration If your code is running in an environment where icons may have already been registered, you may need to disable the warnings. (By default, registering the same icon twice will ignore subsequent registrations.) To initialize icons and avoid duplication warnings, pass options into initializeicons: import { initializeicons from '@uifabric/icons'; initializeicons(undefined, { disablewarnings: true ); 12 Chapter 4. Using Icons

17 CHAPTER 5 Using componentref Instead of ref React exposes a special ref prop for components. If you use ref on an intrinsic elements such as divs or spans, React will give you a reference to the element, allowing you access to the public API for the elements. Using ref to access component public methods is more error prone: 1. If the component wraps itself in a higher order component or decorator, the ref will return the wrapper component rather than what you intended to access. 2. Accessing the full component s public methods is probably not desirable. It isn t exactly intended to access public render or to allow the consumer to call componentwillunmount, despite these being publicly exposed to React. 5.1 Consuming a component s public API There ARE limited cases where a component should expose a public API contract. Usually, things can be more declarative in React, but some scenarios which are perhaps easier to do imperatively are: 1. Exposing a focus method. 2. Accessing current values of uncontrolled prop values (such as the current value of a TextField.) In Fabric, we do the following for components which expose an imperative API surface: 1. Define an I{ComponentName interface which only exposes the methods intended to be supported. 2. Every component supports a componentref prop, which will return the I{ComponentName interface if provided. So, use componentref as a drop-in replacement for ref. Example usage of componentref to access the IButton interface: private _primarybutton: IButton = React.createRef<IButton>(); public render() { return <PrimaryButton componentref={ this._primarybutton... />; 13

18 public componentdidmount() { this._primarybutton.value.focus(); 5.2 In Fabric, extend BaseComponent to abstract resolving the componentref If your component extends BaseComponent, the componentref will be auto-resolved for you and you just need to focus on exposing it in the prop typings. If you were to write a component which extended vanilla React.Component, you would need to resolve it manually. For example, on mount: public componentdidmount() { const { componentref = this.props; componentref && componentref(this);...and clear it on unmount: public componentwillunmount() { const { componentref = this.props; componentref && componentref(undefined); 14 Chapter 5. Using componentref Instead of ref

19 CHAPTER 6 Styling When a consumer uses a component, providing style overrides for the component should not be a fragile guessing game. We should be able to easily tweak component styling and also create variants for subcomponents without a lot of complex effort that s bound to break later on. A component consists of dom elements, or "areas". Each of the areas should be targetable for styling. The styling applied to each area may depend on the state of the component as well as the contextual theme settings. So, styling should be defined as a function of these inputs: // Take in styling input, spit out styles for each area. function getstyles(props: IComponentStyleProps): IComponentStyles { return { root: { /* styles */, child1: { /* styles */, child2: { /* styles */ ; With this in mind, let s make getstyles an optional prop to the component. Now style overrides can be applied in a functional way and even be conditionalized depending on the component state: const getstyles = props => ({ root: [ { background: props.theme.palette.themeprimary, selectors: { ':hover': { background: props.theme.palette.themesecondary,, props.isexpanded? { display: 'block' : { display: 'none' ] ); 15

20 <MyComponent getstyles={ mystyleoverrides /> Quite often, variants of a component which use the style must be created to abstract some customizations. A styled HOC is provided which can make creating variants simple: import { styled from 'office-ui-fabric-react/lib/styling'; import { getstyles from './MyComponentVariant.styles'; const MyComponentVariant = styled( MyComponent, getstyles ) ); Within the component implementation, when we need to convert these styles into class names, we will use a helper called classnamefunction to create a memoized function which can translate the style objects into strings: const getclassnames = classnamefunction<icompstyleprops, ICompStyles>(); class Comp extends React.Component { public render() { const { getstyles, theme = this.props; const classnames = getclassnames(getstyles, { /* style props */ ); return ( <div classname={ classnames.root >...</div> ); 6.1 Component anatomy A component should consist of these files: ComponentName.props.ts - The interfaces for the component. We separate these out for documentation reasons. ComponentName.base.tsx - The unstyled component. This renders DOM structure and conrtains logic, MINUS styling opinions. ComponentName.styles.ts - Exports a getstyles function for the component which takes in IComponentNameStyleProps and returns IComponentNameStyles. Once these are defined, you can export the component which ties it all together: ComponentName.tsx - Using the styled helper, exports a new component tying the base component to 1 or more style helpers. Additionally, each component should have these: ComponentName.checklist.ts - A checklist status export which allows the documentation to render notes on what validation has been done on the component. ComponentName.test.tsx - Unit tests for the component. The idea is that components, especially reusable atomic components, should by default be exported unstyled. This gives us the flexibility to create variants. 16 Chapter 6. Styling

21 6.1.1 ComponentName.props.ts changes The props file should contain these 4 interfaces, in addition to any enums or consts externally required: 1. IComponentName - The public method accessible through componentref. This should include the focus method, as well as getters for important values like checked in the case the component will be referenced and the value may be read manually. Example: export IComponentName { focus: () => void; 1. IComponentNameProps - The props for the component. This should include the componentref prop for accessing the public interface, the theme prop (which will be injected by decorator), as well as the getstyles function. Example: export IComponentNameProps extends React.Props<ComponentNameBase> { componentref?: (componentref: IComponentName) => void; theme?: ITheme; getstyles?: IStyleFunction<IComponentNameStyleProps, IComponentNameStyles>; 1. IComponentNameStyleProps - The props needed to construct styles. This represents the simplified set of immutable things which control the class names. Note that things which were optional may be set to be required here, to simplify the style definitions: export interface IComponentNameStyleProps { theme: ITheme; disabled: boolean; checked: boolean; 1. IComponentNameStyles The styles which apply to each area of the component. Each area should be listed here required, as an IStyle, with root always representing the root element of the component: export interface IComponentNameStyles { root: IStyle; child1: IStyle; // etc. In the style interface, always refer to the root element using the name root, for predictability in styling ComponentName.base.tsx contents 1. The component shoud be named {ComponentNameBase. 2. It should be decorated with the customizable decorator using {ComponentNameBase as the target name. 3. It should use the classnamefunction helper to create a classname generation function Component anatomy 17

22 Example: import { IComponentNameProps from ='./ComponentName.props'; const getclassnames = classnamefunction<icomponentnamestyleprops, IComponentNameStyles>(); export class ComponentName extends React.Component<...> { public render() { const { getstyles, theme = this.props; const classnames = getclassnames(getstyles, { theme: theme! ); return ( <div classname={ classnames.root >Hello</div>; ); ComponentName.styles.ts The styles file should export the getstyles function which takes in IComponentNameStyleProps and returns IComponentNameStyles (the default styling for the component.) Note that the root element for styles should al export function getstyles(props: IComponentNameStyleProps): IComponentNameStyles { return { root: {, child: {, etc. ; Component.tsx Tying the component to the style is made easy using the styled HOC wrapper, whch as input takes the base component and an object of 1 or more style function props. import { styled from 'office-ui-fabric-react/lb/styling'; import { CompoenentNameBase from './ComponentName.base'; import { getstyles from './ComponentName.styles'; // Create a Breadcrumb variant which uses these default styles. export const ComponentName = styled( ComponentNameBase, { getstyles ); Support for customizable sub-component styling The component may also intend to provide customized styling for nested components. For example, a Breadcrumb component may want to render Crumb components, which may take in their own styles. 18 Chapter 6. Styling

23 The recommended approach is to avoid exposing the individual Crumb props at the Breadcrumb layer. Instead, expose a way to provide an alternative component for the Crumb using the as prop convention. This lets the caller create their own Crumb variant and use it within the Breadcrumb. It also opens up other scenarios such as providing additional default props on the sub-component, or replacing it completely. In the Breadcrumb case, we would expose an optional crumbas prop. This would allow the consumer to make a Breadcrumb variant which renders red Crumb components: const RedCrumb = styled(crumb, props => ({ root: background: 'red' )); render() { return <Breadcrumb crumbas={ RedCrumb... /> Additionally this "breadcrumb with red crumbs" scenario could be abstracted as its own component, by passing in the 3rd optional param to styled, which lets the caller provide new default prop values: const RedBreadcrumb = styled(breadcrumb, undefined, { crumbas: RedCrumb ); render() { return <RedBreadcrumb... /> ComponentName.test.tsx The test file should include: 1. A snapshot test locking the component DOM structure down for the important states. 2. Tests which simulate clicking on things, changing the state of the compoent, and validating things still work. 6.2 Moving styles from scss to ts Basic conversion just means copying styles from scss into ts, making prop names camelcased instead of kebab-cased, and stringifying everything except for pixel values. In addition, all static classnames embedded within the tsx file inside of the css helper function calls can now move into the styles file. Styles in scss:.list { white-space: nowrap; padding: 0; margin: 0; display: flex; align-items: stretch; Converted to ts: list: [ 'ms-breadcrumb-list', { whitespace: 'nowrap', padding: 0, margin: 0, 6.2. Moving styles from scss to ts 19

24 ], display: 'flex', alignitems: 'stretch' Some scss special cases: Mixins and Includes Sass mixins are simply an informal way of using functions. Translating them into actual javascript, where you can reuse and import/export them, is really easy. If you find some fabric-core mixins are missing, consider adding them to package if they are highly reusable. However keep in mind that the PLT1 bundle size WILL be affected, so do this sparingly only for very common things font-size-x Variables Use typesafe enums instead of the sass variables: import { FontSizes from 'office-ui-fabric-react/lib/styling'; fontsize: FontSizes.small Focus Rectangles The styling package has a helper to provide consistent focus rectangles. 6.3 Footnotes Motivations for Moving Away from SCSS SCSS a build time process of expanding a high level css-like language into raw css. Our pipeline to load the raw css goes through a javascript conversion process and gets loaded on the page via a javascript library called load-themed-styles. Effectively, we have a complex build process which takes rules, converts them into JavaScript, and loads them dynamically. This process is complicated and adds a number of limitations We Can t Register Classes Dynamically Scenarios like "make this area of the screen use a different theme" become really complicated if build time is the only time for evaluations. 20 Chapter 6. Styling

25 6.3.3 Bundle size and css loading heft with scss If a button has 20 different possible states, using scss you must load the css for all 20 of the states pre-emptively, so you end up loading way more rules than you will ever actually use. There is no "plt1 styles vs delay loaded styles". The best you can do is to partition your css to specific modules, and delay load the modules. But in this model, you will still preempt loading a lot of rules that aren t used. Sass also encourages "mixins" as a way to have one definition of styles that can be used in multiple places. This completely fights against bundle size, since mixins simply stamp duplicates copies of the same rules whereever they re used, resulting in bloated (but highly compressable) style definitions. The compression helps but all of this could be avoided by using a different approach to defining our styling Constant battle with specificity Perhaps the most difficult thing to resolve is css specificity. Countless hacks have been implemented to "slightly tweak" styling of a thing in a particular context. If your rule is equally specific as an existing rule, you have a race condition; last one to register wins, resulting in hacks that only work sometimes. And even if your rule is more specific than an existing rule, there are no gates that can catch an existing rule being changed to be more specific later, resulting in breaking the workarounds. We want a system which allows users to pass in their overrides, which can create new permutations of classes which are only 1 level of specificity deep, providing a consistent safe way to override the defaults Footnotes 21

26 22 Chapter 6. Styling

27 CHAPTER 7 Testing Our tests are built using Jest. This allows us to run tests in a node environment, and simulates the browser using jsdom. For snapshot testing, we use react-test-renderer and Jest apis. For creating React functional tests, we use Enzyme to automate rendering. This gives us helpers for mounting a component, accessing elements rendered by it, and simulating clicks and keypresses. Visual regression testing uses Storybook to document various UI states of components. 7.1 Running tests In command prompt navigate to the appropriate package, for example packages/office-ui-fabric-react To just validate everything works, run npm run build, which will build the project including running tslint and jest for tests. If you only want to run jest, you can also run only the jest task by running npm run build jest. 7.2 Running tests in watch mode When you are developing tests, use the watch mode to run the tests as you write them! 1. Go to the package folder where you want to run the tests. 2. Type npm run start-test. 3. Edit and saving tests should now cause the console to re-run the tests you have added/modified. 23

28 7.3 Debugging To debug tests, you can use Visual Studio Code. Inside of a *.test.ts file, add a debugger statement where you want to break, and hit F5 to start debugging. Note: Because of limitations with the current Node LTS version, breakpoints in VSCode will not hit until you re actively in the debugger using debugger statement. The latest Node version however has fixes that will enable breakpoints to resolve, so this workaround is temporary. 7.4 Writing tests Simple unit testing Tests in Jest are written similar to mocha tests, though Jest includes a number of assertions that work similar to chai. A basic test example: describe('thing', () => { it('does something', () => { expect(thing.something()).toequal(avalue); ); ); Note that you do not need to import the assertions or the Jest APIs; they should be available automatically through the included typings Snapshot testing Jest enables you to create snapshot tests. Snapshots simply compare a JSON object with an expected output. The assertion tomatchsnapshot api will abstract loading a.snap file for the test to compare, or will create one if none exists. import * as React from 'react'; import { CommandBar from './CommandBar'; import * as renderer from 'react-test-renderer'; describe('commandbar', () => { it('renders commands correctly', () => { expect(renderer.create( <CommandBar items={ [ { key: '1', name: 'name 1', { key: '2', name: 'name 2' ] /> ).tojson()).tomatchsnapshot(); ); ); If you ever break a snapshot, you can update all baselines either manually, or using the npm run update-snapshots command within a given package folder. Currently the office-ui-fabric-react and experiments packages both have snapshot testing enabled. 24 Chapter 7. Testing

29 7.4.3 Functional testing In cases where you need to automate a component and validate it performs correctly, you can use Enzyme apis to mount components, evaluate dom structure, and simulate events. it('opens a menu with IContextualMenuItem.subMenuProps.items property', () => { const commandbar = mount<commandbar>( <CommandBar items={ [ { name: 'TestText 1', key: 'TestKey1', classname: 'MenuItem', submenuprops: { items: [ { name: 'SubmenuText 1', key: 'SubmenuKey1', classname: 'SubMenuClass' ], ] /> ); const menuitem = commandbar.find('.menuitem button'); expect(menuitem.length).toequal(1); menuitem.simulate('click'); expect(document.queryselector('.submenuclass')).tobedefined(); ); Visual regression testing Storybook is a dev environment for UI components. We write stories to capture different states of components. With every pull request, the stories are rendered by Screener to check for any visual changes. Screener posts a status to Github PRs where you can view the visual test report. If changes are found, the status will fail on Github until the regressions are fixed or an admin approves the changes. Stories are found at./apps/vr-tests/src/stories. Most stories are written with a FabricDecorator that wraps the components with consistent padding. Screener steps are added to crop to a specific CSS class (most stories should crop to the.testwrapper class of the FabricDecorator) and to simulate different events, such as hover and click. import * as React from 'react'; import Screener, { Steps from 'screener-storybook/src/screener'; import { storiesof from '@storybook/react'; import { FabricDecorator from '../utilities'; import { Link, ILinkProps from 'office-ui-fabric-react'; storiesof('link', module).adddecorator(fabricdecorator).adddecorator(story => ( <Screener steps={ new Steps() 7.4. Writing tests 25

30 .snapshot('default', { cropto: '.testwrapper' ).hover('.ms-link').snapshot('hover', { cropto: '.testwrapper' ).click('.ms-link').hover('.ms-link') // Always add a 'hover' step after 'click'.snapshot('click', { cropto: '.testwrapper' ).end() // Every set of Screener steps should finish with 'end()' > { story() </Screener> )).add('root', () => (<Link href='#'>i'm a link</link>)).add('disabled', () => (<Link href='#' disabled>i'm a disabled link</link>)).add('no Href', () => (<Link>I'm rendered as a button because I have no href</link> )); Certain components may be written with a custom decorator/wrapper, and you may crop to a different CSS class or omit the cropto option altogether. Components that render outside its container, require specific styles on its parent, or render on a different layer, such as Callout, are cases where you would customize the decorators. storiesof('slider', module).adddecorator(story => ( // Vertical slider requires its parent to have a height specified <div style={ { width: '300px', height: '200px', display: 'flex' > { story() // Render story (component) inside this container </div> )).adddecorator(fabricdecorator).adddecorator(story => ( <Screener steps={ new Screener.Steps().snapshot('default', { cropto: '.testwrapper' ).hover('.ms-slider-line').snapshot('hover', { cropto: '.testwrapper' ).end() > { story() </Screener> )).add('vertical', () => ( <Slider label='basic example:' min={ 1 max={ 3 step={ 1 defaultvalue={ 2 showvalue={ true vertical={ true /> )); 26 Chapter 7. Testing

31 7.5 Test Utilities & Helpers shallowuntiltarget Function Enzyme has a method called Shallow Rendering that allows you to constrain yourself to testing a component as a unit, and to ensure that your tests aren t indirectly asserting on behavior of child components. If you would like to know more about Shallow Rendering in general then you can view the main Enzyme documentation here. The shallowuntiltarget() function is a work around due to a conflict with decorated components, and considering at the time of writing this we are planning to use decorater on all Fabric components it is likely that the built into Enzyme shallow() function will not yield the correct results because it s being applied to the customized component. it('renders the result of onrenderdata', () => { const initialdata = { content: 5 ; const rendereddataid = 'onrenderdataid'; const onrenderdata = (data: any) => <div id={ rendereddataid > Rendered data: { data.content </div >; const wrapper = shallow<iresizegroupprops, IResizeGroupState>( <ResizeGroup data={ initialdata onreducedata={ onreducescalingdata onrenderdata={ onrenderdata /> ); expect(wrapper.containsmatchingelement(onrenderdata(initialdata))).toequal(true); ); For example above you expect shallow to return a ShallowWrapper of ResizeGroup but actually it will return a ShallowWrapper of ComponentWithInjectedProps - the customized component returned from decorator function. ResizeGroup is a child of the customized component. shallowuntiltarget() will allow you so specify which component you want to target for your test using a string - in this case we want ResizeGroupBase because the same effect happens to components using the styled function. We just need to import the function from the common folder. import { shallowuntiltarget from '../../common/shallowuntiltarget'; Usage is exactly the same as shallow with an added argument containing a string name of target component. it('renders the result of onrenderdata', () => { const initialdata = { content: 5 ; const rendereddataid = 'onrenderdataid'; const onrenderdata = (data: any) => <div id={ rendereddataid > Rendered data: { data.content </div >; const wrapper = shallowuntiltarget<iresizegroupprops, IResizeGroupState>( <ResizeGroup data={ initialdata onreducedata={ onreducescalingdata onrenderdata={ onrenderdata />, 'ResizeGroupBase'); 7.5. Test Utilities & Helpers 27

32 expect(wrapper.containsmatchingelement(onrenderdata(initialdata))).toequal(true); ); 7.6 FAQ Q. Browser methods aren t working. A. Using browser methods like getboundingclientrect won t work when using enzyme to render a document fragment. It s possible to mock this method out if you need, see the FocusZone unit tests as an example. Q. My event isn t being triggered. A. Make sure to use Enzyme simulate api to simulate React events. For example: menuitem. simulate('click'); 28 Chapter 7. Testing

Lesson: Web Programming(6) Omid Jafarinezhad Sharif University of Technology

Lesson: Web Programming(6) Omid Jafarinezhad Sharif University of Technology Lesson: Web Programming(6) Omid Jafarinezhad Sharif University of Technology React QUICK START QUICK START ADVANCED GUIDES React QUICK START Installation Hello World Introducing JSX Components and Props

More information

Frontend UI Training. Whats App :

Frontend UI Training. Whats App : Frontend UI Training Whats App : + 916 667 2961 trainer.subbu@gmail.com What Includes? 1. HTML 5 2. CSS 3 3. SASS 4. JavaScript 5. ES 6/7 6. jquery 7. Bootstrap 8. AJAX / JSON 9. Angular JS 1x 10. Node

More information

React + React Native. Based on material by Danilo Filgueira

React + React Native. Based on material by Danilo Filgueira React + React Native Based on material by Danilo Filgueira Prerequisites JS and ES6 HTML and CSS NPM/YARN and NODE React A Javascript library for creating reactive and composable UI components Whenever

More information

Theme System. Wisej Themes 1 OVERVIEW

Theme System. Wisej Themes 1 OVERVIEW Theme System 1 OVERVIEW Wisej theme system is quite sophisticated and goes beyond simple CSS or SASS. This document is only a short overview to get you started. The full documentation will be ready at

More information

IBM Forms V8.0 Custom Themes IBM Corporation

IBM Forms V8.0 Custom Themes IBM Corporation IBM Forms V8.0 Custom Themes Agenda 2 Overview Class Names How to Use Best Practice Styling Form Items Test Custom CSS Sample Overview 3 To create custom theme you must be familiar with the basic concept

More information

HTML/CSS Lesson Plans

HTML/CSS Lesson Plans HTML/CSS Lesson Plans Course Outline 8 lessons x 1 hour Class size: 15-25 students Age: 10-12 years Requirements Computer for each student (or pair) and a classroom projector Pencil and paper Internet

More information

Deep Dive on How ArcGIS API for JavaScript Widgets Were Built

Deep Dive on How ArcGIS API for JavaScript Widgets Were Built Deep Dive on How ArcGIS API for JavaScript Widgets Were Built Matt Driscoll @driskull JC Franco @arfncode Agenda Prerequisites How we got here Our development lifecycle Widget development tips Tools we

More information

Advanced React JS + Redux Development

Advanced React JS + Redux Development Advanced React JS + Redux Development Course code: IJ - 27 Course domain: Software Engineering Number of modules: 1 Duration of the course: 40 astr. hours / 54 study 1 hours Sofia, 2016 Copyright 2003-2016

More information

Microsoft Expression Web Quickstart Guide

Microsoft Expression Web Quickstart Guide Microsoft Expression Web Quickstart Guide MS-Expression Web Quickstart Guide Page 1 of 24 Expression Web Quickstart Guide (20-Minute Training) Welcome to Expression Web. When you first launch the program,

More information

Adobe Fireworks CS Essential Techniques

Adobe Fireworks CS Essential Techniques Adobe Fireworks CS4 HOW-TOs 100 Essential Techniques Jim Babbage 140 64 Creating Graphic Symbols Resizing Symbols When you resize any bitmap to a smaller size, pixel information is discarded. This is normally

More information

CREATE SASSY WEB PARTS. Developer Guide to SASS usage in SPFx

CREATE SASSY WEB PARTS. Developer Guide to SASS usage in SPFx CREATE SASSY WEB PARTS Developer Guide to SASS usage in SPFx !!! WARNING!!! YOU WILL SEE SOURCE CODE!!! WARNING!!! OUR GOALS Sketch and develop web parts Create your own reusable CSS Handle external

More information

Index. alt, 38, 57 class, 86, 88, 101, 107 href, 24, 51, 57 id, 86 88, 98 overview, 37. src, 37, 57. backend, WordPress, 146, 148

Index. alt, 38, 57 class, 86, 88, 101, 107 href, 24, 51, 57 id, 86 88, 98 overview, 37. src, 37, 57. backend, WordPress, 146, 148 Index Numbers & Symbols (angle brackets), in HTML, 47 : (colon), in CSS, 96 {} (curly brackets), in CSS, 75, 96. (dot), in CSS, 89, 102 # (hash mark), in CSS, 87 88, 99 % (percent) font size, in CSS,

More information

55249: Developing with the SharePoint Framework Duration: 05 days

55249: Developing with the SharePoint Framework Duration: 05 days Let s Reach For Excellence! TAN DUC INFORMATION TECHNOLOGY SCHOOL JSC Address: 103 Pasteur, Dist.1, HCMC Tel: 08 38245819; 38239761 Email: traincert@tdt-tanduc.com Website: www.tdt-tanduc.com; www.tanducits.com

More information

GIMP WEB 2.0 MENUS. Web 2.0 Menus: Horizontal Navigation Bar with Dynamic Background Image

GIMP WEB 2.0 MENUS. Web 2.0 Menus: Horizontal Navigation Bar with Dynamic Background Image GIMP WEB 2.0 MENUS Web 2.0 Menus: Horizontal Navigation Bar with Dynamic Background Image WEB 2.0 MENUS: HORIZONTAL NAVIGATION BAR DYNAMIC BACKGROUND IMAGE Before you begin this tutorial, you will need

More information

Unveiling the Basics of CSS and how it relates to the DataFlex Web Framework

Unveiling the Basics of CSS and how it relates to the DataFlex Web Framework Unveiling the Basics of CSS and how it relates to the DataFlex Web Framework Presented by Roel Fermont 1 Today more than ever, Cascading Style Sheets (CSS) have a dominant place in online business. CSS

More information

PlayerLync Forms User Guide (MachForm)

PlayerLync Forms User Guide (MachForm) PlayerLync Forms User Guide (MachForm) Table of Contents FORM MANAGER... 1 FORM BUILDER... 3 ENTRY MANAGER... 4 THEME EDITOR... 6 NOTIFICATIONS... 8 FORM CODE... 9 FORM MANAGER The form manager is where

More information

PROFILE DESIGN TUTORIAL KIT

PROFILE DESIGN TUTORIAL KIT PROFILE DESIGN TUTORIAL KIT NEW PROFILE With the help of feedback from our users and designers worldwide, we ve given our profiles a new look and feel. The new profile is designed to enhance yet simplify

More information

Full Stack boot camp

Full Stack boot camp Name Full Stack boot camp Duration (Hours) JavaScript Programming 56 Git 8 Front End Development Basics 24 Typescript 8 React Basics 40 E2E Testing 8 Build & Setup 8 Advanced JavaScript 48 NodeJS 24 Building

More information

CSS worksheet. JMC 105 Drake University

CSS worksheet. JMC 105 Drake University CSS worksheet JMC 105 Drake University 1. Download the css-site.zip file from the class blog and expand the files. You ll notice that you have an images folder with three images inside and an index.html

More information

Using Dreamweaver CC. Logo. 4 Creating a Template. Page Heading. Page content in this area. About Us Gallery Ordering Contact Us Links

Using Dreamweaver CC. Logo. 4 Creating a Template. Page Heading. Page content in this area. About Us Gallery Ordering Contact Us Links Using Dreamweaver CC 4 Creating a Template Now that the main page of our website is complete, we need to create the rest of the pages. Each of them will have a layout that follows the plan shown below.

More information

epromo Guidelines DUE DATES NOT ALLOWED PLAIN TEXT VERSION

epromo Guidelines DUE DATES NOT ALLOWED PLAIN TEXT VERSION epromo Guidelines HTML Maximum width 700px (length = N/A) Image resolution should be 72dpi Maximum total file size, including all images = 200KB Only use inline CSS, no stylesheets Use tables, rather than

More information

Before you begin, make sure you have the images for these exercises saved in the location where you intend to create the Nuklear Family Website.

Before you begin, make sure you have the images for these exercises saved in the location where you intend to create the Nuklear Family Website. 9 Now it s time to challenge the serious web developers among you. In this section we will create a website that will bring together skills learned in all of the previous exercises. In many sections, rather

More information

Table Basics. The structure of an table

Table Basics. The structure of an table TABLE -FRAMESET Table Basics A table is a grid of rows and columns that intersect to form cells. Two different types of cells exist: Table cell that contains data, is created with the A cell that

More information

React.js. a crash course. Jake Zimmerman January 29th, 2016

React.js. a crash course. Jake Zimmerman January 29th, 2016 React.js a crash course Jake Zimmerman January 29th, 2016 Key Features of React.js Easily express user interfaces Richly express the visual elements of a design, as well as the interactions users can

More information

"Charting the Course... MOC A: Developing with the SharePoint Framework. Course Summary

Charting the Course... MOC A: Developing with the SharePoint Framework. Course Summary Course Summary Description This five-day instructor-led course is intended for developers who want to be able to create client-side applications with SharePoint Framework. In this course, students will

More information

SAMPLE CHAPTER. Edd Yerburgh MANNING

SAMPLE CHAPTER. Edd Yerburgh MANNING SAMPLE CHAPTER Edd Yerburgh MANNING Testing Vue.js Applications by Edd Yerburgh Sample Chapter 5 Copyright 2019 Manning Publications 1 Introduction to testing Vue applications 1 2 Creating your first test

More information

READSPEAKER ENTERPRISE HIGHLIGHTING 2.5

READSPEAKER ENTERPRISE HIGHLIGHTING 2.5 READSPEAKER ENTERPRISE HIGHLIGHTING 2.5 Advanced Skinning Guide Introduction The graphical user interface of ReadSpeaker Enterprise Highlighting is built with standard web technologies, Hypertext Markup

More information

SASS Variables and Mixins Written by Margaret Rodgers. Variables. Contents. From Web Team. 1 Variables

SASS Variables and Mixins Written by Margaret Rodgers. Variables. Contents. From Web Team. 1 Variables SASS Variables and Mixins Written by Margaret Rodgers From Web Team Contents 1 Variables o 1.1 Nested Variables 2 Mixins 3 Inheritance Variables A variable in SASS works exactly the same as a variable

More information

Siteforce Pilot: Best Practices

Siteforce Pilot: Best Practices Siteforce Pilot: Best Practices Getting Started with Siteforce Setup your users as Publishers and Contributors. Siteforce has two distinct types of users First, is your Web Publishers. These are the front

More information

SharePoint 2010 Tutorial

SharePoint 2010 Tutorial SharePoint 2010 Tutorial TABLE OF CONTENTS Introduction... 1 Basic Navigation... 2 Navigation Buttons & Bars... 3 Ribbon... 4 Library Ribbon... 6 Recycle Bin... 7 Permission Levels & Groups... 8 Create

More information

ORB Education Quality Teaching Resources

ORB Education Quality Teaching Resources These basic resources aim to keep things simple and avoid HTML and CSS completely, whilst helping familiarise students with what can be a daunting interface. The final websites will not demonstrate best

More information

Assignments (4) Assessment as per Schedule (2)

Assignments (4) Assessment as per Schedule (2) Specification (6) Readability (4) Assignments (4) Assessment as per Schedule (2) Oral (4) Total (20) Sign of Faculty Assignment No. 02 Date of Performance:. Title: To apply various CSS properties like

More information

UI Course HTML: (Html, CSS, JavaScript, JQuery, Bootstrap, AngularJS) Introduction. The World Wide Web (WWW) and history of HTML

UI Course HTML: (Html, CSS, JavaScript, JQuery, Bootstrap, AngularJS) Introduction. The World Wide Web (WWW) and history of HTML UI Course (Html, CSS, JavaScript, JQuery, Bootstrap, AngularJS) HTML: Introduction The World Wide Web (WWW) and history of HTML Hypertext and Hypertext Markup Language Why HTML Prerequisites Objective

More information

Creating a CSS driven menu system Part 1

Creating a CSS driven menu system Part 1 Creating a CSS driven menu system Part 1 How many times do we see in forum pages the cry; I ve tried using Suckerfish, I ve started with Suckerfish and made some minor changes but can t get it to work.

More information

Dreamweaver CS5 Lab 4: Sprys

Dreamweaver CS5 Lab 4: Sprys Dreamweaver CS5 Lab 4: Sprys 1. Create a new html web page. a. Select file->new, and then Blank Page: HTML: 2 column liquid, left sidebar, header and footer b. DocType: XHTML 1.0 Strict c. Layout CSS:

More information

Virto SharePoint Forms Designer for Office 365. Installation and User Guide

Virto SharePoint Forms Designer for Office 365. Installation and User Guide Virto SharePoint Forms Designer for Office 365 Installation and User Guide 2 Table of Contents KEY FEATURES... 3 SYSTEM REQUIREMENTS... 3 INSTALLING VIRTO SHAREPOINT FORMS FOR OFFICE 365...3 LICENSE ACTIVATION...4

More information

CSS Selectors. element selectors. .class selectors. #id selectors

CSS Selectors. element selectors. .class selectors. #id selectors CSS Selectors Patterns used to select elements to style. CSS selectors refer either to a class, an id, an HTML element, or some combination thereof, followed by a list of styling declarations. Selectors

More information

Photos & Photo Albums

Photos & Photo Albums Photos & Photo Albums 2016 - Fall Edition User Guide - Table of Contents Overview Use Case(s) Accessing the Tool Image Explorer Interface Organizing Images Uploading Images Resizing and Cropping Images

More information

Microsoft Windows SharePoint Services

Microsoft Windows SharePoint Services Microsoft Windows SharePoint Services SITE ADMIN USER TRAINING 1 Introduction What is Microsoft Windows SharePoint Services? Windows SharePoint Services (referred to generically as SharePoint) is a tool

More information

HTML & CSS. SWE 432, Fall 2017 Design and Implementation of Software for the Web

HTML & CSS. SWE 432, Fall 2017 Design and Implementation of Software for the Web HTML & CSS SWE 432, Fall 2017 Design and Implementation of Software for the Web HTML: HyperText Markup Language LaToza Language for describing structure of a document Denotes hierarchy of elements What

More information

Getting Started with Eric Meyer's CSS Sculptor 1.0

Getting Started with Eric Meyer's CSS Sculptor 1.0 Getting Started with Eric Meyer's CSS Sculptor 1.0 Eric Meyer s CSS Sculptor is a flexible, powerful tool for generating highly customized Web standards based CSS layouts. With CSS Sculptor, you can quickly

More information

FEWD START SCREENCAST!!!!

FEWD START SCREENCAST!!!! FEWD START SCREENCAST!!!! LET'S GET EVERYTHING SET UP! 1. Navigate to the FEWD 51 Dashboard (saraheholden.com/fewd51) and download the Lesson 5 starter code and slides. You'll want to keep the dashboard

More information

Designing the Home Page and Creating Additional Pages

Designing the Home Page and Creating Additional Pages Designing the Home Page and Creating Additional Pages Creating a Webpage Template In Notepad++, create a basic HTML webpage with html documentation, head, title, and body starting and ending tags. From

More information

How to lay out a web page with CSS

How to lay out a web page with CSS Activity 2.6 guide How to lay out a web page with CSS You can use table design features in Adobe Dreamweaver CS4 to create a simple page layout. However, a more powerful technique is to use Cascading Style

More information

Front-End UI: Bootstrap

Front-End UI: Bootstrap Responsive Web Design BootStrap Front-End UI: Bootstrap Responsive Design and Grid System Imran Ihsan Assistant Professor, Department of Computer Science Air University, Islamabad, Pakistan www.imranihsan.com

More information

By Ryan Stevenson. Guidebook #2 HTML

By Ryan Stevenson. Guidebook #2 HTML By Ryan Stevenson Guidebook #2 HTML Table of Contents 1. HTML Terminology & Links 2. HTML Image Tags 3. HTML Lists 4. Text Styling 5. Inline & Block Elements 6. HTML Tables 7. HTML Forms HTML Terminology

More information

Insert/Edit Image. Overview

Insert/Edit Image. Overview Overview The tool is available on the default toolbar for the WYSIWYG Editor. The Images Gadget may also be used to drop an image on a page and will automatically spawn the Insert/Edit Image modal. Classic

More information

Comprehensive AngularJS Programming (5 Days)

Comprehensive AngularJS Programming (5 Days) www.peaklearningllc.com S103 Comprehensive AngularJS Programming (5 Days) The AngularJS framework augments applications with the "model-view-controller" pattern which makes applications easier to develop

More information

CSS. Selectors & Measurments. Copyright DevelopIntelligence LLC

CSS. Selectors & Measurments. Copyright DevelopIntelligence LLC CSS Selectors & Measurments 1 Back to descendants remember walking down the document tree structure and see how parents and children interact not only is it important to know about inheritance walking

More information

Code Editor. The Code Editor is made up of the following areas: Toolbar. Editable Area Output Panel Status Bar Outline. Toolbar

Code Editor. The Code Editor is made up of the following areas: Toolbar. Editable Area Output Panel Status Bar Outline. Toolbar Code Editor Wakanda s Code Editor is a powerful editor where you can write your JavaScript code for events and functions in datastore classes, attributes, Pages, widgets, and much more. Besides JavaScript,

More information

Introduction to HTML & CSS. Instructor: Beck Johnson Week 2

Introduction to HTML & CSS. Instructor: Beck Johnson Week 2 Introduction to HTML & CSS Instructor: Beck Johnson Week 2 today Week One review and questions File organization CSS Box Model: margin and padding Background images and gradients with CSS Make a hero banner!

More information

Using Dreamweaver CS6

Using Dreamweaver CS6 Using Dreamweaver CS6 4 Creating a Template Now that the main page of our website is complete, we need to create the rest of the pages. Each of them will have a layout that follows the plan shown below.

More information

Modern SharePoint and Office 365 Development

Modern SharePoint and Office 365 Development Modern SharePoint and Office 365 Development Mastering Today s Best Practices in Web and Mobile Development Course Code Audience Format Length Course Description Student Prerequisites MSD365 Professional

More information

React & Redux in Hulu. (Morgan Cheng)

React & Redux in Hulu. (Morgan Cheng) React & Redux in Hulu (Morgan Cheng) About Me @morgancheng About Hulu Challenges System Complexity Legacy code in jquery & Backbone UI non-predictable Lack of component isolation Performance Bottleneck

More information

2. Write style rules for how you d like certain elements to look.

2. Write style rules for how you d like certain elements to look. CSS for presentation Cascading Style Sheet Orientation CSS Cascading Style Sheet is a language that allows the user to change the appearance or presentation of elements on the page: the size, style, and

More information

Welcome Please sit on alternating rows. powered by lucid & no.dots.nl/student

Welcome Please sit on alternating rows. powered by lucid & no.dots.nl/student Welcome Please sit on alternating rows powered by lucid & no.dots.nl/student HTML && CSS Workshop Day Day two, November January 276 powered by lucid & no.dots.nl/student About the Workshop Day two: CSS

More information

Make a Website. A complex guide to building a website through continuing the fundamentals of HTML & CSS. Created by Michael Parekh 1

Make a Website. A complex guide to building a website through continuing the fundamentals of HTML & CSS. Created by Michael Parekh 1 Make a Website A complex guide to building a website through continuing the fundamentals of HTML & CSS. Created by Michael Parekh 1 Overview Course outcome: You'll build four simple websites using web

More information

Cascading Style Sheets (CSS)

Cascading Style Sheets (CSS) Cascading Style Sheets (CSS) Mendel Rosenblum 1 Driving problem behind CSS What font type and size does introduction generate? Answer: Some default from the browser (HTML tells what browser how)

More information

Stencil: The Time for Vanilla Web Components has Arrived

Stencil: The Time for Vanilla Web Components has Arrived Stencil: The Time for Vanilla Web Components has Arrived Gil Fink sparxys CEO @gilfink / www.gilfink.net Typical Application Web Page Design From Design to Implementation Session List Day tabs Component

More information

CSC309 Winter Lecture 2. Larry Zhang

CSC309 Winter Lecture 2. Larry Zhang CSC309 Winter 2016 Lecture 2 Larry Zhang 1 Announcements Assignment 1 is out, due Jan 25, 10pm. Start Early! Work in groups of 2, make groups on MarkUs. Make sure you can login to MarkUs, if not let me

More information

Oracle Data Visualization SDK

Oracle Data Visualization SDK Oracle Business Analytics Oracle Data Visualization SDK Antony Heljula 26 June 2017 www.peakindicators.com 1 Gold Partners Specialized Oracle Business Intelligence Foundation Oracle Data Visualization

More information

CSS Cont'd: Cascading Style Sheets

CSS Cont'd: Cascading Style Sheets CSS Cont'd: Cascading Style Sheets Computer Science and Engineering College of Engineering The Ohio State University Lecture 15 Recall: Example body.warning p.draft em h2 span.university.warning h2.university

More information

Part 1: jquery & History of DOM Scripting

Part 1: jquery & History of DOM Scripting Karl Swedberg: Intro to JavaScript & jquery 0:00:00 0:05:00 0:05:01 0:10:15 0:10:16 0:12:36 0:12:37 0:13:32 0:13:32 0:14:16 0:14:17 0:15:42 0:15:43 0:16:59 0:17:00 0:17:58 Part 1: jquery & History of DOM

More information

ADOBE DREAMWEAVER CS4 BASICS

ADOBE DREAMWEAVER CS4 BASICS ADOBE DREAMWEAVER CS4 BASICS Dreamweaver CS4 2 This tutorial focuses on the basic steps involved in creating an attractive, functional website. In using this tutorial you will learn to design a site layout,

More information

CS Multimedia and Communications. Lab 06: Webpage Tables and Image Links (Website Design part 3 of 3)

CS Multimedia and Communications. Lab 06: Webpage Tables and Image Links (Website Design part 3 of 3) CS 1033 Multimedia and Communications Lab 06: Webpage Tables and Image Links (Website Design part 3 of 3) REMEMBER TO BRING YOUR MEMORY STICK TO EVERY LAB! Table Properties Reference Guide The Property

More information

Lab 1 - Introduction to Angular

Lab 1 - Introduction to Angular Lab 1 - Introduction to Angular In this lab we will build a Hello World style Angular component. The key focus is to learn how to install all the required code and use them from the browser. We wont get

More information

AngularJS Fundamentals

AngularJS Fundamentals AngularJS Fundamentals by Jeremy Zerr Blog: http://www.jeremyzerr.com LinkedIn: http://www.linkedin.com/in/jrzerr Twitter: http://www.twitter.com/jrzerr What is AngularJS Open Source Javascript MVC/MVVM

More information

NVU Web Authoring System

NVU Web Authoring System NVU Web Authoring System http://www.nvu.com/index.php Table of Contents Using Nvu as Your Web Page Authoring System: Getting Started Opening a page, saving, and previewing your work...3 Formatting the

More information

Installing VS Code. Instructions for the Window OS.

Installing VS Code. Instructions for the Window OS. Installing VS Code Instructions for the Window OS. VS Code is a free text editor created by Microsoft. It is a lightweight version of their commercial product, Visual Studio. It runs on Microsoft Windows,

More information

Brunch Documentation. Release Brunch team

Brunch Documentation. Release Brunch team Brunch Documentation Release 1.2.2 Brunch team June 22, 2012 CONTENTS i ii Contents: CONTENTS 1 2 CONTENTS CHAPTER ONE FAQ 1.1 I want to start new project with Brunch. What s the workflow? Create new

More information

Introduction to Dreamweaver CS3

Introduction to Dreamweaver CS3 TUTORIAL 2 Introduction to Dreamweaver CS3 In Tutorial 2 you will create a sample site while you practice the following skills with Adobe Dreamweaver CS3: Creating pages based on a built-in CSS page layout

More information

AGENT123. Full Q&A and Tutorials Table of Contents. Website IDX Agent Gallery Step-by-Step Tutorials

AGENT123. Full Q&A and Tutorials Table of Contents. Website IDX Agent Gallery Step-by-Step Tutorials AGENT123 Full Q&A and Tutorials Table of Contents Website IDX Agent Gallery Step-by-Step Tutorials WEBSITE General 1. How do I log into my website? 2. How do I change the Meta Tags on my website? 3. How

More information

Web Designer s Reference

Web Designer s Reference Web Designer s Reference An Integrated Approach to Web Design with XHTML and CSS Craig Grannell Graphical navigation with rollovers The final exercise in this chapter concerns navigation with graphical

More information

Getting Started with CSS Sculptor 3

Getting Started with CSS Sculptor 3 Getting Started with CSS Sculptor 3 With CSS Sculptor, you can quickly create a cross-browser compatible layout with custom widths, margins, padding, background images and more. Additionally, you can use

More information

RC Justified Gallery User guide for version 3.2.X. Last modified: 06/09/2016

RC Justified Gallery User guide for version 3.2.X. Last modified: 06/09/2016 RC Justified Gallery User guide for version 3.2.X. Last modified: 06/09/2016 This document may not be reproduced or redistributed without the permission of the copyright holder. It may not be posted on

More information

INFS 2150 Introduction to Web Development

INFS 2150 Introduction to Web Development Objectives INFS 2150 Introduction to Web Development Create a media query Work with the browser viewport Apply a responsive design Create a pulldown menu with CSS Create a flexbox 5. Mobile Web INFS 2150

More information

INFS 2150 Introduction to Web Development

INFS 2150 Introduction to Web Development INFS 2150 Introduction to Web Development 5. Mobile Web Objectives Create a media query Work with the browser viewport Apply a responsive design Create a pulldown menu with CSS Create a flexbox INFS 2150

More information

Zen Garden. CSS Zen Garden

Zen Garden. CSS Zen Garden CSS Patrick Behr CSS HTML = content CSS = display It s important to keep them separated Less code in your HTML Easy maintenance Allows for different mediums Desktop Mobile Print Braille Zen Garden CSS

More information

Introduction to Multimedia. MMP100 Spring 2016 thiserichagan.com/mmp100

Introduction to Multimedia. MMP100 Spring 2016 thiserichagan.com/mmp100 Introduction to Multimedia MMP100 Spring 2016 profehagan@gmail.com thiserichagan.com/mmp100 Troubleshooting Check your tags! Do you have a start AND end tags? Does everything match? Check your syntax!

More information

ANGULAR 2.X,4.X + TYPESRCIPT by Sindhu

ANGULAR 2.X,4.X + TYPESRCIPT by Sindhu ANGULAR 2.X,4.X + TYPESRCIPT by Sindhu GETTING STARTED WITH TYPESCRIPT Installing TypeScript Compiling the code Building a simple demo. UNDERSTANDING CLASSES Building a class Adding properties Demo of

More information

Unit 1: Working With Tables

Unit 1: Working With Tables Unit 1: Working With Tables Unit Overview This unit covers the basics of working with Tables and the Table wizard. It does not include working with fields, which is covered in Units 3 and 4. It is divided

More information

Project 1: Creating a Web Site from Scratch. Skills and Tools: Use Expression Web tools to create a Web site

Project 1: Creating a Web Site from Scratch. Skills and Tools: Use Expression Web tools to create a Web site E00EW3.qxp 4/14/2007 3:17 PM Page 1 Workshops w Introduction The Workshop is all about being creative and thinking outside of the box. These workshops will help your right-brain soar, while making your

More information

News in RSA-RTE 10.1 updated for sprint Mattias Mohlin, November 2017

News in RSA-RTE 10.1 updated for sprint Mattias Mohlin, November 2017 News in RSA-RTE 10.1 updated for sprint 2017.46 Mattias Mohlin, November 2017 Overview Now based on Eclipse Neon.3 (4.6.3) Many general improvements since Eclipse Mars Contains everything from RSARTE 10

More information

Using Dreamweaver CS6

Using Dreamweaver CS6 Using Dreamweaver CS6 7 Dynamic HTML Dynamic HTML (DHTML) is a term that refers to website that use a combination of HTML, scripting such as JavaScript, CSS and the Document Object Model (DOM). HTML and

More information

The tech behind a design system that scales

The tech behind a design system that scales The tech behind a design system that scales BrazilJS 2018 Monica Lent Lead Frontend Engineer - SumUp @monicalent Where we re going today What is a design system? What we built Our challenges & solutions

More information

CSS Cascading Style Sheets

CSS Cascading Style Sheets CSS Cascading Style Sheets site root index.html about.html services.html stylesheet.css charlie.jpg Linking to your HTML You need to link to your css in the of your HTML file.

More information

React. HTML code is made up of tags. In the example below, <head> is an opening tag and </head> is the matching closing tag.

React. HTML code is made up of tags. In the example below, <head> is an opening tag and </head> is the matching closing tag. Document Object Model (DOM) HTML code is made up of tags. In the example below, is an opening tag and is the matching closing tag. hello The tags have a tree-like

More information

Tutorial 4: Creating Special Effects with CSS

Tutorial 4: Creating Special Effects with CSS Tutorial 4: Creating Special Effects with CSS College of Computing & Information Technology King Abdulaziz University CPCS-403 Internet Applications Programming Objectives Work with CSS selectors Create

More information

Visualforce & Lightning Experience

Visualforce & Lightning Experience Visualforce & Lightning Experience Learn how to use Visualforce to customize your Lightning Experience. UNIT I Using Visualforce in Lightning Experience Using Visualforce in Lightning Experience. Lightning

More information

Human-Computer Interaction Design

Human-Computer Interaction Design Human-Computer Interaction Design COGS120/CSE170 - Intro. HCI Instructor: Philip Guo Lab 2 - Styling and publishing your website (2018-10-10) by Michael Bernstein, Scott Klemmer, Philip Guo, and Sean Kross

More information

AngularJS Intro Homework

AngularJS Intro Homework AngularJS Intro Homework Contents 1. Overview... 2 2. Database Requirements... 2 3. Navigation Requirements... 3 4. Styling Requirements... 4 5. Project Organization Specs (for the Routing Part of this

More information

Introducing Cascading Style Sheets. Cascading Style Sheet Basics Creating Styles Using Styles Manipulating Styles Text Formatting with CSS

Introducing Cascading Style Sheets. Cascading Style Sheet Basics Creating Styles Using Styles Manipulating Styles Text Formatting with CSS Introducing Cascading Style Sheets Cascading Style Sheet Basics Creating Styles Using Styles Manipulating Styles Text Formatting with CSS Cascading Style Sheet Basics CSS has many benefits: The pages look

More information

Crestron Room Scheduling Panels. Programming Guide Crestron Electronics, Inc.

Crestron Room Scheduling Panels. Programming Guide Crestron Electronics, Inc. Crestron Room Scheduling Panels Programming Guide Crestron Electronics, Inc. Crestron product development software is licensed to Crestron dealers and Crestron Service Providers (CSPs) under a limited

More information

Locate it inside of your Class/DreamWeaver folders and open it up.

Locate it inside of your Class/DreamWeaver folders and open it up. Simple Rollovers A simple rollover graphic is one that changes somehow when the mouse rolls over it. The language used to write rollovers is JavaScript. Luckily for us, when we use DreamWeaver we don t

More information

Zend Studio 3.0. Quick Start Guide

Zend Studio 3.0. Quick Start Guide Zend Studio 3.0 This walks you through the Zend Studio 3.0 major features, helping you to get a general knowledge on the most important capabilities of the application. A more complete Information Center

More information

User Guide: Content editing

User Guide: Content editing DIGITAL FACTORY 7.0 User Guide: Content editing Rooted in Open Source CMS, Jahia s Digital Industrialization paradigm is about streamlining Enterprise digital projects across channels to truly control

More information

Virto SharePoint Forms Designer for Office 365. Installation and User Guide

Virto SharePoint Forms Designer for Office 365. Installation and User Guide Virto SharePoint Forms Designer for Office 365 Installation and User Guide 2 Table of Contents KEY FEATURES... 3 SYSTEM REQUIREMENTS... 3 INSTALLING VIRTO SHAREPOINT FORMS FOR OFFICE 365... 3 LICENSE ACTIVATION...

More information

The default style for an unordered (bulleted) list is the bullet, or dot. You can change the style to either a square or a circle as follows:

The default style for an unordered (bulleted) list is the bullet, or dot. You can change the style to either a square or a circle as follows: CSS Tutorial Part 2: Lists: The default style for an unordered (bulleted) list is the bullet, or dot. You can change the style to either a square or a circle as follows: ul { list-style-type: circle; or

More information

EmberJS A Fitting Face for a D8 Backend. Taylor Solomon

EmberJS A Fitting Face for a D8 Backend. Taylor Solomon EmberJS A Fitting Face for a D8 Backend Taylor Solomon taylor.solomon @jtsolomon http://interactivestrategies.com 2 Years Ago 2 Years Ago URL Ember Data assumes a few things. - Your API format is JSON

More information

AGENDA. EMBEDDING FONTS [ Font Files & CSS font-family ] :: Online Font Converter :: ADD font-family css code to style.css

AGENDA. EMBEDDING FONTS [ Font Files & CSS font-family ] :: Online Font Converter :: ADD font-family css code to style.css CLASS :: 12 05.04 2018 3 Hours AGENDA CREATE A WORKS PAGE [ HTML ] :: Open index.html :: Save As works.html :: Edit works.html to modify header, 3 divisions for works, then add your content :: Edit index.html

More information