diff --git a/customizer/index.html b/customizer/index.html index 6a6e8563a..d0338b9d1 100644 --- a/customizer/index.html +++ b/customizer/index.html @@ -36,7 +36,7 @@ l.href = '/release/ui-grid-unstable.css'; } else { - l.href = '/release/ui-grid.css'; + l.href = '/release/css/ui-grid.css'; } document.write(outerHTML(l)); diff --git a/docs/js/docs-setup.js b/docs/js/docs-setup.js index ce84c4040..100f6c0f9 100644 --- a/docs/js/docs-setup.js +++ b/docs/js/docs-setup.js @@ -161,7 +161,7 @@ UI_DOCS={ "type": "function", "moduleName": "ui.grid", "shortDescription": "Grid is the main viewModel. Any properties or methods needed to maintain state are defined in", - "keywords": "$parent $parse-able $scope $timeout access accessor achieve add additional addrowheadercolumn adds aims alter api append appended application applying appscope appscopeprovider array asc ascending assign assigned assignment assigntypes attribute automatically based basic behavior block boolean browser build buildcolumn buildcolumndefsfromdata buildcolumns building builds buildstyles call callback callbacks calldatachangecallbacks called calls canvas case cell cellfilter chain chance change changed check class clearallfilters clearconditions clearflags clears col coldef collected column columnbuilder columnbuilders columndef columndefinition columndefs columnfooter columnfooterheight columnrefreshcallback columns columnsprocessors combo comparator complete completed completely completes configured considered container containers context controller count create created createleftcontainer createrightcontainer creates criteria current currently data datachange datachangecallback debounced debouncing declared default defaults defined definition definitions deregister desc descending direction directions directive directly displayed doesn earlier edit edited element emits enabled entity equal event events exclude exist existing exists expected false field filter filters find findrowbykey finished fired fires flag flags flagscrollinghorizontally flagscrollingvertically flow footer footerheight foreach function functional garbage general generally getcelldisplayvalue getcellvalue getcoldef getcolumn getcolumnsorting getgridqualifiedcolfield getonlydatacolumns getrow getrowsbykey grid gridapi gridcol gridcolumn gridfooter gridoptions gridrow gridrows grouping handlewindowresize handling hashing hashkey hasleftcontainer hasleftcontainercolumns hasrightcontainer hasrightcontainercolumns header height horizontally identified improve indicate indicates inform informed initial inject instance intended intermediate isinentity isrowheadercolumn isrtl isscrollinghorizontally isscrollingvertically issue iterate js key leaks leave left leftcontainer list listeners ll load loaded loading logic long longer lookinrows lower main maintain map matching memory method methods modified modifyrows needed newentity newhash newrawdata newrow newrows note notices notified notifies notifydatachange number object objects occurred occurs oldhash oldrows optional optionally options opts order originally override pagination parameter parent pass passed people percentage performance persist pick populates position precompilecelltemplates precompiles prevents priorities priority process processes processor processors processrowbuilders processrowscallback promise properties properties_datachange properties_scrolldirection property prototype provided public queuegridrefresh queuerefresh queues re-selected recalculated recalculates redraw redrawinplace reference refresh refreshcanvas refreshed refreshes refreshing refreshrows register registercolumnbuilder registercolumnsprocessor registerdatachangecallback registered registerrowbuilder registerrowsprocessor registerstylecomputation remove removed removerowsprocessor removes render rendered renderedcolumnstoprocess reorder reset resetcolumnsorting resetting resize resizes resolved resources return returns rightcontainer righttoleft room row rowbuilder rowbuilders rowentity rowequality rowhash rowheader rows rowsprocessors rules running scope screen scroll scrolldirection scrolling scrolls scrollto scrolltoifnecessary select selectable selected selection selectrow service set sets sizing somedata sort sortchanged sortcolumn sortdirectioncycle sorted sorting stopcolumnbuild stylecomputation stylecomputationinfo styles supplies tbd tells templates things three total triggered triggers true type types ui ui-grid uigridconstants update updatecanvasheight updated updatefooterheightcallback users values ve vertically view viewmodel visible watch watches window", + "keywords": "$parent $parse-able $scope $timeout access accessor achieve add additional addrowheadercolumn adds aims alter api append appended application applying appscope appscopeprovider array asc ascending assign assigned assignment assigntypes attribute automatically based basic behavior block boolean browser build buildcolumn buildcolumndefsfromdata buildcolumns building builds buildstyles call callback callbacks calldatachangecallbacks called calls canvas case cell cellfilter chain chance change changed check class clearallfilters clearconditions clearflags clears col coldef collected column columnbuilder columnbuilders columndef columndefinition columndefs columnfooter columnfooterheight columnrefreshcallback columns columnsprocessors combo comparator complete completed completely completes configured considered container containers context controller count create created createleftcontainer createrightcontainer creates criteria current currently data datachange datachangecallback debounced debouncing declared default defaults defined definition definitions deregister desc descending direction directions directive directly displayed doesn earlier edit edited element emits enabled entity equal event events example exclude exist existing exists expected false field filter filters find findrowbykey finished fired fires flag flags flagscrollinghorizontally flagscrollingvertically flow footer footerheight foreach function functional garbage general generally getcelldisplayvalue getcellvalue getcoldef getcolumn getcolumnsorting getgridqualifiedcolfield getonlydatacolumns getrow getrowsbykey grid gridapi gridcol gridcolumn gridfooter gridoptions gridrow gridrows grouping handlewindowresize handling hashing hashkey hasleftcontainer hasleftcontainercolumns hasrightcontainer hasrightcontainercolumns header height horizontally identified improve indicate indicates inform informed initial inject instance intended intermediate isinentity isrowheadercolumn isrtl isscrollinghorizontally isscrollingvertically issue iterate js key leaks leave left leftcontainer list listeners ll load loaded loading logic long longer lookinrows lower main maintain map matching memory method methods modified modifyrows needed newentity newhash newrawdata newrow newrows note notices notified notifies notifydatachange number object objects occurred occurs oldhash oldrows optional optionally options opts order originally override pagination parameter parent pass passed people percentage performance persist pick populates position precompilecelltemplates precompiles prevents priorities priority process processes processor processors processrowbuilders processrowscallback promise properties properties_datachange properties_scrolldirection property prototype provided public queuegridrefresh queuerefresh queues re-selected recalculated recalculates redraw redrawinplace reference refresh refreshcanvas refreshed refreshes refreshing refreshrows register registercolumnbuilder registercolumnsprocessor registerdatachangecallback registered registerrowbuilder registerrowsprocessor registerstylecomputation remove removed removerowsprocessor removes render rendered renderedcolumnstoprocess reorder reset resetcolumnsorting resetting resize resizes resolved resources return returns rightcontainer righttoleft room row rowbuilder rowbuilders rowentity rowequality rowhash rowheader rows rowsprocessors rules running scope screen scroll scrolldirection scrolling scrolls scrollto scrolltoifnecessary select selectable selected selection selectrow service set sets sizing somedata sort sortchanged sortcolumn sortdirectioncycle sorted sorting stopcolumnbuild stylecomputation stylecomputationinfo styles supplies tbd tells templates things three total triggered triggers true type types ui ui-grid uigridconstants update updatecanvasheight updated updatefooterheightcallback users values ve vertically view viewmodel visible watch watches window", "isDeprecated": false }, { @@ -191,7 +191,7 @@ UI_DOCS={ "type": "function", "moduleName": "ui.grid", "shortDescription": "Default GridOptions class. GridOptions are defined by the application developer and overlaid", - "keywords": "$delegate $http $provide $resource $scope $translate ability access action actions add adding additional adds addtogridmenu adjusted advantage aggregates aggregation aggregationcalcthrottle alert alert-info allow allowing allows alter altering alternative alternatively amount angular angular-translate angularjs api app application approach appscope appscopeprovider aquamarine array assign assigned associate associated attribute attributes auto-generating automatically avoid background-color backwards behavior behaviour binding block boolean bottom boxes break button calcuations callback called care cell center changed changes check class close col colcontainer coldef column columndef columndefs columnfooterheight columnmenu columns columnvirtualizationthreshold common commonly compare compared compatibility complex conditions config configure content context controller controls converts copy core css current custom customisation customised customscroller customtogglemenu data dataset debounce decorator default defaults define defined defines detailed developer direct directly disable disabled disables display displayed displayname displays div documented doesn dom dynamic element elements empty enablecolumnmenus enabled enablefiltering enablegridmenu enablehiding enablehorizontalscrollbar enableminheightcheck enablerowhashing enablesorting enableverticalscrollbar entire entities entitya entityb equality event events example examples excesscolumns excessrows exclude excludeproperties executing existing exists external extra factory false feel field1 field2 fields file filter filterchange filtercontainer filtering fired fires flat flatentityaccess flexible floats fnone follow footer footer_template footertemplate force format function functions generate getrowidentity getsafetext github grid gridapi gridfootertemplate gridmenu gridmenucustomitems gridmenushowhidecolumns gridmenutemplate gridmenutitlefilter gridoptions grids gridutil handles header header_template headercell headerrowheight headers headertemplate height helpful helps hidden hide hiding high hit hits horizontal html i18nservice icon identical identifying identity ignore ignored implemented implying improvement include individual infinite infinitescrolldown infinitescrollrowsfromend infinitescrollup initialize initialized initoptions inline instantiated integer interact interacting internal internationalization inverse issues item items json jumpy key large list listen ll loading logic maintain management maxvisiblecolumncount menu menu-items menubutton_template menubuttontemplate menuitem_template menuitems menuitemtemplate menus method middle milliseconds minimum minimumcolumnsize minrowstoshow minwidth modified modify mouse multiple mydata myscrolling myscrollingoverride names needed needmoredata needmoredatatop newly nextuid ng-click ng-repeat note null number numbers object objects onregisterapi operate option options overlaid overridden override parent party pass passed per-column performance pixels place places point pointer position precompiled prefetch preserve pretty prevents process programatically promise properties properties_scrollbars property provide provided providing query recommend refer reference remember remove removefromgridmenu render rendered renderedcolumns renderingcomplete replace request requested required resize resolve return returns role row row_template rowequality rowheight rowidentity rows rowtemplate runs savescrollpercentagemethod scope scroll scrollbar scrollbars scrolldebounce scrolled scroller scrollers scrollhandler scrolling scrollthreshold second selectallrows selected selection server service set sets setting settings shift showcolumnfooter showgridfooter showheader situation smoothness sort sorter sorting source sourced speed speeding standard starting static string stripped structure style sub-objects success supported suppresses suppressmultisort tailor takes tall template text-align third throttle throttles time title tojson top total totals track trigger true turn tutorial ui ui-grid ui-grid-bottom-panel ui-grid-cell ui-grid-column-menu-button ui-grid-header ui-grid-header-cell ui-grid-icon ui-grid-icon-container ui-grid-menu ui-grid-menu-button ui-grid-menu-item ui-grid-top-panel uigrid uigridconstants uigridviewport uniquely update updated updating usage useexternalfiltering useexternalsorting user values var vastly vertical viewport virtualization virtualizationthreshold visible wheelscrollthrottle when_needed widgets width working x_", + "keywords": "$delegate $http $provide $resource $scope $translate ability access action actions add adding additional adds addtogridmenu adjusted advantage aggregates aggregation aggregationcalcthrottle alert alert-info allow allowing allows alter altering alternative alternatively amount angular angular-translate angularjs api app application approach appscope appscopeprovider aquamarine array assign assigned associate associated attribute attributes auto-generating automatically avoid background-color backwards behavior behaviour binding block boolean bottom boxes break button calcuations callback called care cell center changed changes check class close col colcontainer coldef column columndef columndefs columnfooterheight columnmenu columns columnvirtualizationthreshold common commonly compare compared compatibility complex conditions config configure content context controller controls converts copy core css current custom customisation customised customscroller customtogglemenu data dataset debounce decorator default defaults define defined defines detailed developer direct directly disable disabled disablegridmenuhideonscroll disables display displayed displayname displays div documented doesn dom dynamic element elements empty enablecolumnmenus enabled enablefiltering enablegridmenu enablehiding enablehorizontalscrollbar enableminheightcheck enablerowhashing enablesorting enableverticalscrollbar entire entities entitya entityb equality event events example examples excesscolumns excessrows exclude excludeproperties executing existing exists external extra factory false feel field1 field2 fields file filter filterchange filtercontainer filtering fired fires flat flatentityaccess flexible floats fnone follow footer footer_template footertemplate force format function functions generate getrowidentity getsafetext github grid gridapi gridfootertemplate gridmenu gridmenucustomitems gridmenushowhidecolumns gridmenutemplate gridmenutitlefilter gridoptions grids gridutil handles header header_template headercell headerrowheight headers headertemplate height helpful helps hidden hide hiding high hit hits horizontal html i18nservice icon identical identifying identity ignore ignored implemented implying improvement include individual infinite infinitescrolldown infinitescrollrowsfromend infinitescrollup initialize initialized initoptions inline instantiated integer interact interacting internal internationalization inverse issues item items json jumpy key large list listen ll loading logic maintain management maxvisiblecolumncount menu menu-items menubutton_template menubuttontemplate menuitem_template menuitems menuitemtemplate menus method middle milliseconds minimum minimumcolumnsize minrowstoshow minwidth modified modify mouse multiple mydata myscrolling myscrollingoverride names needed needmoredata needmoredatatop newly nextuid ng-click ng-repeat note null number numbers object objects onregisterapi operate option options overlaid overridden override parent party pass passed per-column performance pixels place places point pointer position precompiled prefetch preserve pretty prevents process programatically promise properties properties_scrollbars property provide provided providing query recommend refer reference remember remove removefromgridmenu render rendered renderedcolumns renderingcomplete replace request requested required resize resolve return returns role row row_template rowequality rowheight rowidentity rows rowtemplate runs savescrollpercentagemethod scope scroll scrollbar scrollbars scrolldebounce scrolled scroller scrollers scrollhandler scrolling scrollthreshold second selectallrows selected selection server service set sets setting settings shift showcolumnfooter showgridfooter showheader situation smoothness sort sorter sorting source sourced speed speeding standard starting static string stripped structure style sub-objects success supported suppresses suppressmultisort tailor takes tall template text-align third throttle throttles time title tojson top total totals track trigger true turn tutorial ui ui-grid ui-grid-bottom-panel ui-grid-cell ui-grid-column-menu-button ui-grid-header ui-grid-header-cell ui-grid-icon ui-grid-icon-container ui-grid-menu ui-grid-menu-button ui-grid-menu-item ui-grid-top-panel uigrid uigridconstants uigridviewport uniquely update updated updating usage useexternalfiltering useexternalsorting user values var vastly vertical viewport virtualization virtualizationthreshold visible wheelscrollthrottle when_needed widgets width working x_", "isDeprecated": false }, { @@ -1500,7 +1500,7 @@ UI_DOCS={ "type": "object", "moduleName": "ui.grid.selection", "shortDescription": "Public Api for selection feature", - "keywords": "add allow api array automatically call check checkbox clearselectedrows comparator context ctrlkey current currently data directly doesn entity event evt explicitly extra false feature filtered function getselectallstate getselectedcount getselectedgridrows getselectedrows getunselectedrows grid gridoption gridoptions gridrows instance isinentity key ll lookinrows modifierkeystomultiselect multiple multiselect number object provided public raised references rendered returns row rowentity rownum rows rowsvisible screen select selectall selectallrows selectallvisiblerows selected selectedrow selection selectrow selectrowbykey selectrowbyvisibleindex selects set setmodifierkeystomultiselect setmultiselect sets setvisible shiftkey theoretically ticked togglerowselection toggles true ui unselect unselected unselectrow unselectrowbykey unselectrowbyvisibleindex unselects visible", + "keywords": "add allow api array automatically call check checkbox clearselectedrows comparator context ctrlkey current currently data directly doesn entity equal event evt example explicitly extra false feature filtered function getselectallstate getselectedcount getselectedgridrows getselectedrows getunselectedrows grid gridoption gridoptions gridrows instance isinentity key ll lookinrows modifierkeystomultiselect multiple multiselect number object provided public raised references rendered returns row rowentity rownum rows rowsvisible screen select selectall selectallrows selectallvisiblerows selected selectedrow selection selectrow selectrowbykey selectrowbyvisibleindex selects set setmodifierkeystomultiselect setmultiselect sets setvisible shiftkey theoretically ticked togglerowselection toggles true ui unselect unselected unselectrow unselectrowbykey unselectrowbyvisibleindex unselects visible", "isDeprecated": false }, { @@ -2626,7 +2626,7 @@ UI_DOCS={ "type": "script" }, { - "src": "/release/ui-grid.css", + "src": "/release/css/ui-grid.css", "type": "css" } ], @@ -2636,7 +2636,7 @@ UI_DOCS={ "type": "script" }, { - "src": "/release/ui-grid-unstable.css", + "src": "/release/css/ui-grid-unstable.css", "type": "css" } ] diff --git a/docs/partials/api/ui.grid.class.Grid.html b/docs/partials/api/ui.grid.class.Grid.html index 1f02d6864..055d94983 100644 --- a/docs/partials/api/ui.grid.class.Grid.html +++ b/docs/partials/api/ui.grid.class.Grid.html @@ -39,7 +39,7 @@

Parameters

Returns
Promise

a promise to load any needed column resources

-
  • buildStyles()

    +
  • buildStyles()

    calls each styleComputation function

  • @@ -52,7 +52,7 @@

    Parameters

    clearAllFilters(refreshRows, clearConditions, clearFlags)

    +
  • clearAllFilters(refreshRows, clearConditions, clearFlags)

    Clears all filters and optionally refreshes the visible rows.

    Parameters
  • ParamTypeDetails
    refreshRowsobject

    Defaults to true.

    clearConditionsobject

    Defaults to false.

    @@ -77,8 +77,10 @@

    Parameters

    creates the right render container if it doesn't already exist

    -
  • findRowByKey(isInEntity, key, comparator, lookInRows)

    -

    returns the first GridRow which has an key that is equal to comparator

    +
  • findRowByKey(isInEntity, key, comparator, lookInRows)

    +

    returns the first GridRow who has an key that is equal to comparator +so for Example if isInEntity == false then it does this check: row[key] === comparator +if isInEntity == true then it does this check: row.entity[key] === comparator

    Parameters
  • ParamTypeDetails
    isInEntityboolean

    if true then key is in entity else it's directly in row

    keystringnumber

    the key to look for

    comparatorany

    the value that key should have

    @@ -94,13 +96,13 @@

    Parameters

    sets isScrollingVertically to true and sets it to false in a debounced function

    -
  • getCellDisplayValue(row, col)

    +
  • getCellDisplayValue(row, col)

    Gets the displayed value of a cell after applying any the cellFilter

    Parameters
  • ParamTypeDetails
    rowGridRow

    Row to access

    colGridColumn

    Column to access

    -
  • getCellValue(row, col)

    +
  • getCellValue(row, col)

    Gets the value of a cell for a particular row and column

    Parameters
    ParamTypeDetails
    rowGridRow

    Row to access

    colGridColumn

    Column to access

    @@ -116,7 +118,7 @@

    Parameters

    Parameters
    ParamTypeDetails
    namestring

    column name

    -
  • getColumnSorting()

    +
  • getColumnSorting()

    Return the columns that the grid is currently being sorted by

    Returns
    Array[GridColumn]

    An array of GridColumn objects

    @@ -137,8 +139,10 @@

    Parameters

    getRowsByKey(isInEntity, key, comparator, lookInRows)

    -

    returns the GridRows who have an key that is equal to comparator

    +
  • getRowsByKey(isInEntity, key, comparator, lookInRows)

    +

    returns all GridRows who have an key that is equal to comparator +so for Example if isInEntity == false then it does this check: row[key] === comparator +if isInEntity == true then it does this check: row.entity[key] === comparator

    Parameters
  • ParamTypeDetails
    isInEntityboolean

    if true then key is in entity else it's directly in row

    keystringnumber

    the key to look for

    comparatorany

    the value that key should have

    @@ -146,7 +150,7 @@

    Parameters

    handleWindowResize()

    +
  • handleWindowResize()

    Triggered when the browser window resizes; automatically resizes the grid

    Returns
  • Promise

    A resolved promise once the window resize has completed.

    @@ -155,7 +159,7 @@

    Parameters

    returns true if leftContainer exists

    -
  • hasLeftContainerColumns()

    +
  • hasLeftContainerColumns()

    returns true if leftContainer has columns

  • @@ -163,7 +167,7 @@

    Parameters

    returns true if rightContainer exists

    -
  • hasRightContainerColumns()

    +
  • hasRightContainerColumns()

    returns true if rightContainer has columns

  • @@ -176,7 +180,7 @@

    Parameters

    Parameters
    ParamTypeDetails
    columnobject

    column

    -
  • modifyRows(newRawData)

    +
  • modifyRows(newRawData)

    creates or removes GridRow objects from the newRawData array. Calls each registered rowBuilder to further process the row

    Parameters
    ParamTypeDetails
    newRawDataarray

    Modified set of data

    @@ -227,7 +231,7 @@

    Parameters

    precompiles all cell templates

    -
  • processRowBuilders(gridRow)

    +
  • processRowBuilders(gridRow)

    processes all RowBuilders for the gridRow

    Parameters
  • ParamTypeDetails
    gridRowGridRow

    reference to gridRow

    Returns
    GridRow

    the gridRow with all additional behavior added

    @@ -240,32 +244,32 @@

    Parameters

    Parameters
    ParamTypeDetails
    gridobject

    The grid object.

    -
  • queueGridRefresh()

    +
  • queueGridRefresh()

    queues a grid refresh, a way of debouncing all the refreshes we might otherwise issue

  • -
  • queueRefresh()

    +
  • queueRefresh()

    queues a grid refreshCanvas, a way of debouncing all the refreshes we might otherwise issue

  • -
  • redrawInPlace([rowsAdded])

    +
  • redrawInPlace([rowsAdded])

    Redraw the rows and columns based on our current scroll position

    Parameters
    ParamTypeDetails
    [rowsAdded]boolean

    Optional to indicate rows are added and the scroll percentage must be recalculated

  • -
  • refresh([rowsAltered])

    +
  • refresh([rowsAltered])

    Refresh the rendered grid on screen.

    Parameters
    ParamTypeDetails
    [rowsAltered]boolean

    Optional flag for refreshing when the number of rows has changed.

  • -
  • refreshCanvas(buildStyles)

    +
  • refreshCanvas(buildStyles)

    Builds all styles and recalculates much of the grid sizing

    Parameters
    ParamTypeDetails
    buildStylesobject

    optional parameter. Use TBD

    Returns
    promise

    promise that is resolved when the canvas has been refreshed

  • -
  • refreshRows()

    +
  • refreshRows()

    Refresh the rendered rows on screen? Note: not functional at present

    Returns
    promise

    promise that is resolved when render completes?

    @@ -276,7 +280,7 @@

    Parameters

    Parameters
    ParamTypeDetails
    columnBuilderfunction(colDef, col, gridOptions

    function to be called

  • -
  • registerColumnsProcessor(processor, priority)

    +
  • registerColumnsProcessor(processor, priority)

    Register a "columns processor" function. When the columns are updated, the grid calls each registered "columns processor", which has a chance to alter the set of columns, as long as the count is not modified.

    @@ -321,7 +325,7 @@

    Parameters

    Parameters
    ParamTypeDetails
    rowBuilderfunction(row, gridOptions

    function to be called

  • -
  • registerRowsProcessor(processor, priority)

    +
  • registerRowsProcessor(processor, priority)

    Register a "rows processor" function. When the rows are updated, the grid calls each registered "rows processor", which has a chance to alter the set of rows (sorting, etc) as long as the count is not @@ -334,23 +338,23 @@

    Parameters

    registerStyleComputation(styleComputationInfo)

    +
  • registerStyleComputation(styleComputationInfo)

    registered a styleComputation function

    If the function returns a value it will be appended into the grid's <style> block

    Parameters
  • ParamTypeDetails
    styleComputationInfofunction($scope

    function

  • -
  • removeRowsProcessor(processor)

    +
  • removeRowsProcessor(processor)

    Remove a registered rows processor

    Parameters
    ParamTypeDetails
    processorfunction(renderableRows

    processor function

  • -
  • resetColumnSorting([excludedColumn])

    +
  • resetColumnSorting([excludedColumn])

    Return the columns that the grid is currently being sorted by

    Parameters
    ParamTypeDetails
    [excludedColumn]GridColumn

    Optional GridColumn to exclude from having its sorting reset

  • -
  • scrollTo(rowEntity, colDef)

    +
  • scrollTo(rowEntity, colDef)

    Scroll the grid such that the specified row and column is in view

    Parameters
    ParamTypeDetails
    rowEntityobject

    gridOptions.data[] array instance to make visible

    @@ -358,7 +362,7 @@

    Parameters

    Returns
    promise

    a promise that is resolved after any scrolling is finished

    -
  • scrollToIfNecessary(gridRow, gridCol)

    +
  • scrollToIfNecessary(gridRow, gridCol)

    Scrolls the grid to make a certain row and column combo visible, in the case that it is not completely visible on the screen already.

    Parameters
    ParamTypeDetails
    gridRowGridRow

    row to make visible

    @@ -366,7 +370,7 @@

    Parameters

    Returns
    promise

    a promise that is resolved when scrolling is complete

    -
  • sortColumn(column, [direction], [add])

    +
  • sortColumn(column, [direction], [add])

    Set the sorting on a given column, optionally resetting any existing sorting on the Grid. Emits the sortChanged event whenever the sort criteria are changed.

    Parameters
    ParamTypeDetails
    columnGridColumn

    Column to set the sorting on

    @@ -378,7 +382,7 @@

    Parameters

    Returns
    Promise

    A resolved promise that supplies the column.

    -
  • updateCanvasHeight()

    +
  • updateCanvasHeight()

    flags all render containers to update their canvas height

  • diff --git a/docs/partials/api/ui.grid.class.GridOptions.html b/docs/partials/api/ui.grid.class.GridOptions.html index 8ae28afc4..85f770058 100644 --- a/docs/partials/api/ui.grid.class.GridOptions.html +++ b/docs/partials/api/ui.grid.class.GridOptions.html @@ -105,6 +105,10 @@

    Usage

    array, you need to update $scope.gridOptions.data to point to that new array as well.

    +
  • disableGridMenuHideOnScroll

    +

    'false' by default. When provided, this setting disables Grid Menu Hide On Scroll

    +
    +
  • enableColumnMenus

    True by default. When enabled, this setting displays a column menu within each column. diff --git a/docs/partials/api/ui.grid.class.ScrollEvent.html b/docs/partials/api/ui.grid.class.ScrollEvent.html index 92d81cb99..d3a26870e 100644 --- a/docs/partials/api/ui.grid.class.ScrollEvent.html +++ b/docs/partials/api/ui.grid.class.ScrollEvent.html @@ -14,15 +14,15 @@

    Parameters

    string

    the source of the event - from uiGridConstants.scrollEventSources or a string value of directive/service/factory.functionName

    Methods

    -
    • fireThrottledScrollingEvent()

      +
      • fireThrottledScrollingEvent()

        fires a throttled event using grid.api.core.raise.scrollEvent

      • -
      • getNewScrollLeft()

        +
      • getNewScrollLeft()

        returns newScrollLeft property if available; calculates a new value if it isn't

      • -
      • getNewScrollTop()

        +
      • getNewScrollTop()

        returns newScrollTop property if available; calculates a new value if it isn't

      • diff --git a/docs/partials/api/ui.grid.exporter.api.ColumnDef.html b/docs/partials/api/ui.grid.exporter.api.ColumnDef.html index 285d3e39f..818e172e9 100644 --- a/docs/partials/api/ui.grid.exporter.api.ColumnDef.html +++ b/docs/partials/api/ui.grid.exporter.api.ColumnDef.html @@ -1,4 +1,4 @@ - Improve this doc View source

        ColumnDef + Improve this doc View source

        ColumnDef
        object in module ui.grid.exporter
        diff --git a/docs/partials/api/ui.grid.exporter.api.GridOptions.html b/docs/partials/api/ui.grid.exporter.api.GridOptions.html index a5d74d1eb..8cd7b64fb 100644 --- a/docs/partials/api/ui.grid.exporter.api.GridOptions.html +++ b/docs/partials/api/ui.grid.exporter.api.GridOptions.html @@ -1,4 +1,4 @@ - Improve this doc View source

        GridOptions + Improve this doc View source

        GridOptions
        object in module ui.grid.exporter
        diff --git a/docs/partials/api/ui.grid.exporter.api.GridRow.html b/docs/partials/api/ui.grid.exporter.api.GridRow.html index 70b18d2d8..64f25729a 100644 --- a/docs/partials/api/ui.grid.exporter.api.GridRow.html +++ b/docs/partials/api/ui.grid.exporter.api.GridRow.html @@ -1,4 +1,4 @@ - Improve this doc View source

        GridRow + Improve this doc View source

        GridRow
        object in module ui.grid.exporter
        diff --git a/docs/partials/api/ui.grid.exporter.api.PublicApi.html b/docs/partials/api/ui.grid.exporter.api.PublicApi.html index 1cb92f5bc..f15b4003c 100644 --- a/docs/partials/api/ui.grid.exporter.api.PublicApi.html +++ b/docs/partials/api/ui.grid.exporter.api.PublicApi.html @@ -1,4 +1,4 @@ - Improve this doc View source

        PublicApi + Improve this doc View source

        PublicApi
        object in module ui.grid.exporter
        @@ -7,7 +7,7 @@

        Public Api for exporter feature

        Methods

        -
        • csvExport(rowTypes, colTypes)

          +
          • csvExport(rowTypes, colTypes)

            Exports rows from the grid in csv format, the data exported is selected based on the provided options

            Parameters
            ParamTypeDetails
            rowTypesstring

            which rows to export, valid values are @@ -17,7 +17,7 @@ uiGridExporterConstants.ALL, uiGridExporterConstants.VISIBLE

          • -
          • excelExport(rowTypes, colTypes)

            +
          • excelExport(rowTypes, colTypes)

            Exports rows from the grid in excel format, the data exported is selected based on the provided options

            Parameters
            ParamTypeDetails
            rowTypesstring

            which rows to export, valid values are @@ -27,7 +27,7 @@ uiGridExporterConstants.ALL, uiGridExporterConstants.VISIBLE

          • -
          • pdfExport(rowTypes, colTypes)

            +
          • pdfExport(rowTypes, colTypes)

            Exports rows from the grid in pdf format, the data exported is selected based on the provided options Note that this function has a dependency on pdfMake, all diff --git a/docs/partials/api/ui.grid.exporter.directive.uiGridExporter.html b/docs/partials/api/ui.grid.exporter.directive.uiGridExporter.html index 728f0ba01..55d73a006 100644 --- a/docs/partials/api/ui.grid.exporter.directive.uiGridExporter.html +++ b/docs/partials/api/ui.grid.exporter.directive.uiGridExporter.html @@ -1,4 +1,4 @@ - Improve this doc View source

            uiGridExporter + Improve this doc View source

            uiGridExporter
            directive in module ui.grid.exporter
            diff --git a/docs/partials/api/ui.grid.exporter.service.uiGridExporterService.html b/docs/partials/api/ui.grid.exporter.service.uiGridExporterService.html index 90ed2ba8f..147a7347b 100644 --- a/docs/partials/api/ui.grid.exporter.service.uiGridExporterService.html +++ b/docs/partials/api/ui.grid.exporter.service.uiGridExporterService.html @@ -7,13 +7,13 @@

            Services for exporter feature

            Methods

            -
            • addToMenu(grid)

              +
              • addToMenu(grid)

                Adds export items to the grid menu, allowing the user to select export options

                Parameters
                ParamTypeDetails
                gridGrid

                the grid from which data should be exported

              • -
              • calculatePdfHeaderWidths(grid, exportHeaders)

                +
              • calculatePdfHeaderWidths(grid, exportHeaders)

                Determines the column widths base on the widths we got from the grid. If the column is drawn then we have a drawnWidth. If the column is not visible @@ -29,7 +29,7 @@

  • Returns
    object

    an array of header widths

  • -
  • csvExport(grid, rowTypes, colTypes)

    +
  • csvExport(grid, rowTypes, colTypes)

    Exports rows from the grid in csv format, the data exported is selected based on the provided options

    Parameters
    ParamTypeDetails
    gridGrid

    the grid from which data should be exported

    @@ -41,7 +41,7 @@ uiGridExporterConstants.SELECTED

  • -
  • downloadFile(fileName, csvContent, columnSeparator, exporterOlderExcelCompatibility, exporterIsExcelCompatible)

    +
  • downloadFile(fileName, csvContent, columnSeparator, exporterOlderExcelCompatibility, exporterIsExcelCompatible)

    Triggers download of a csv file. Logic provided by @cssensei (from his colleagues at https://github.com/ifeelgoods) in issue #2391

    Parameters
    ParamTypeDetails
    fileNamestring

    the filename we'd like our file to be @@ -53,7 +53,7 @@

    exporterIsExcelCompatibleboolean

    whether or not we add separator header ('sep=X')

  • -
  • downloadPdf(fileName, docDefinition)

    +
  • downloadPdf(fileName, docDefinition)

    Generates and retrieves the pdf as a blob, then downloads it as a file. Only used in IE, in all other browsers we use the native pdfMake.open function to just open the PDF

    @@ -63,7 +63,7 @@ and get a blob from

  • -
  • formatAsCsv(exportColumnHeaders, exportData, separator)

    +
  • formatAsCsv(exportColumnHeaders, exportData, separator)

    Formats the column headers and data as a CSV, and sends that data to the user

    Parameters
    ParamTypeDetails
    exportColumnHeadersarray

    an array of column headers, @@ -74,7 +74,7 @@

    Returns
    string

    csv the formatted csv as a string

  • -
  • formatAsExcel(exportColumnHeaders, exportData, separator)

    +
  • formatAsExcel(exportColumnHeaders, exportData, separator)

    Formats the column headers and data as a excel, and sends that data to the user

    Parameters
    ParamTypeDetails
    exportColumnHeadersarray

    an array of column headers, @@ -85,7 +85,7 @@

    Returns
    string

    csv the formatted excel as a string

  • -
  • formatFieldAsCsv(field)

    +
  • formatFieldAsCsv(field)

    Renders a single field as a csv field, including quotes around the value

    Parameters
    ParamTypeDetails
    fieldfield

    the field to be turned into a csv string, @@ -93,7 +93,7 @@

    Returns
    string

    a csv-ified version of the field

  • -
  • formatFieldAsCsv(field)

    +
  • formatFieldAsCsv(field)

    Renders a single field as a pdf-able field, which is different from a csv field only in that strings don't have quotes around them

    @@ -102,14 +102,14 @@
  • Returns
    string

    a string-ified version of the field

  • -
  • formatFieldAsExcel(field)

    +
  • formatFieldAsExcel(field)

    Renders a single field as a excel-ified field

    Parameters
    ParamTypeDetails
    fieldfield

    the field to be excel-ified, may be of any type

    Returns
    string

    a excel-ified version of the field

  • -
  • formatRowAsCsv(exporter, separator)

    +
  • formatRowAsCsv(exporter, separator)

    Renders a single field as a csv field, including quotes around the value

    Parameters
    ParamTypeDetails
    exporterexporterService

    pass in exporter

    @@ -117,7 +117,7 @@
    Returns
    function

    A function that returns a csv-ified version of the row

  • -
  • formatRowAsExcel(exporter, row)

    +
  • formatRowAsExcel(exporter, row)

    Renders a single field as a csv field, including quotes around the value

    Parameters
    ParamTypeDetails
    exporterexporterService

    pass in exporter

    @@ -125,7 +125,7 @@
    Returns
    array

    array of cell objects (i.e. {value: x, metadata: y})

  • -
  • formatRowAsPdf(exporter, row)

    +
  • formatRowAsPdf(exporter, row)

    Renders a row in a format consumable by PDF, mainly meaning casting everything to a string

    Parameters
    ParamTypeDetails
    exporterexporterService

    pass in exporter

    @@ -133,7 +133,7 @@
    Returns
    string

    a csv-ified version of the row

  • -
  • getColumnHeaders(grid, colTypes)

    +
  • getColumnHeaders(grid, colTypes)

    Gets the column headers from the grid to use as a title row for the exported file, all headers have headerCellFilters applied as appropriate.

    @@ -146,7 +146,7 @@ uiGridExporterConstants.SELECTED

  • -
  • getData(grid, rowTypes, colTypes, applyCellFilters)

    +
  • getData(grid, rowTypes, colTypes, applyCellFilters)

    Gets data from the grid based on the provided options, all cells have cellFilters applied as appropriate. Any rows marked exporterEnableExporting: false will not be exported

    @@ -160,7 +160,7 @@
  • applyCellFiltersboolean

    whether or not to get the display value or the raw value of the data

  • -
  • getDataSorted(grid)

    +
  • getDataSorted(grid)

    Gets rows from a node. If the node is grouped it will recurse down into the children to get to the raw data element which is a row without children (a leaf). If the grid is not @@ -169,7 +169,7 @@

  • Returns
    Array

    an array of leaf nodes

  • -
  • getRowsFromNode(aNode)

    +
  • getRowsFromNode(aNode)

    Gets rows from a node. If the node is grouped it will recurse down into the children to get to the raw data element which is a row without children (a leaf).

    @@ -177,11 +177,11 @@
  • Returns
    Array

    an array with all child nodes from aNode

  • -
  • isIE()

    +
  • isIE()

    Checks whether current browser is IE and returns it's version if it is

  • -
  • loadAllDataIfNeeded(grid, rowTypes, colTypes)

    +
  • loadAllDataIfNeeded(grid, rowTypes, colTypes)

    When using server side pagination, use exporterAllDataFn to load all data before continuing processing. When using client side pagination, return a resolved promise so processing @@ -195,7 +195,7 @@ uiGridExporterConstants.SELECTED

  • -
  • pdfExport(grid, rowTypes, colTypes)

    +
  • pdfExport(grid, rowTypes, colTypes)

    Exports rows from the grid in pdf format, the data exported is selected based on the provided options. Note that this function has a dependency on pdfMake, which must @@ -210,7 +210,7 @@ uiGridExporterConstants.SELECTED

  • -
  • renderAsPdf(grid, exportColumnHeaders, exportData)

    +
  • renderAsPdf(grid, exportColumnHeaders, exportData)

    Renders the data into a pdf, and opens that pdf.

    Parameters
    ParamTypeDetails
    gridGrid

    the grid from which data should be exported

    exportColumnHeadersarray

    an array of column headers, diff --git a/docs/partials/api/ui.grid.selection.api.GridOptions.html b/docs/partials/api/ui.grid.selection.api.GridOptions.html index 4233d5f69..93063a50f 100644 --- a/docs/partials/api/ui.grid.selection.api.GridOptions.html +++ b/docs/partials/api/ui.grid.selection.api.GridOptions.html @@ -1,4 +1,4 @@ - Improve this doc View source

    GridOptions + Improve this doc View source

    GridOptions
    object in module ui.grid.selection
    diff --git a/docs/partials/api/ui.grid.selection.api.PublicApi.html b/docs/partials/api/ui.grid.selection.api.PublicApi.html index 617da06c3..be216f634 100644 --- a/docs/partials/api/ui.grid.selection.api.PublicApi.html +++ b/docs/partials/api/ui.grid.selection.api.PublicApi.html @@ -7,44 +7,44 @@

    Public Api for selection feature

    Methods

    -
    • clearSelectedRows(evt)

      +
      • clearSelectedRows(evt)

        Unselects all rows

        Parameters
        ParamTypeDetails
        evtEvent

        object if raised from an event

      • -
      • getSelectAllState()

        +
      • getSelectAllState()

        Returns whether or not the selectAll checkbox is currently ticked. The grid doesn't automatically select rows when you add extra data - so when you add data you need to explicitly check whether the selectAll is set, and then call setVisible rows if it is

      • -
      • getSelectedCount()

        +
      • getSelectedCount()

        returns the number of rows selected

      • -
      • getSelectedGridRows()

        +
      • getSelectedGridRows()

        returns all selectedRow's as gridRows

      • -
      • getSelectedGridRows()

        +
      • getSelectedGridRows()

        returns all unselected Row's as gridRows

      • -
      • getSelectedRows()

        +
      • getSelectedRows()

        returns all selected Row's entity references

      • -
      • getUnSelectedRows()

        +
      • getUnSelectedRows()

        returns all unselected Row's entity references

      • -
      • selectAllRows(evt)

        +
      • selectAllRows(evt)

        Selects all rows. Does nothing if multiSelect = false

        Parameters
        ParamTypeDetails
        evtEvent

        object if raised from an event

      • -
      • selectAllVisibleRows(evt)

        +
      • selectAllVisibleRows(evt)

        Selects all visible rows. Does nothing if multiSelect = false

        Parameters
        ParamTypeDetails
        evtEvent

        object if raised from an event

        @@ -55,12 +55,14 @@

    evtEvent

    object if raised from an event

  • -
  • selectRowByKey(isInEntity, key, comparator, evt, lookInRows)

    -

    Select the data row

    +
  • selectRowByKey(isInEntity, key, comparator, evt, lookInRows)

    +

    selects all GridRows who have an key that is equal to comparator +so for Example if isInEntity == false then it does this check: row[key] === comparator +if isInEntity == true then it does this check: row.entity[key] === comparator

    Parameters
    ParamTypeDetails
    isInEntityboolean

    if true then key is in entity else it's directly in row

    -
    keySymbol

    the key to look for

    +
    keystring number

    the key to look for

    comparatorany

    the value that key should have

    -
    evtEvent

    object if raised from an event

    +
    evtEvent

    [optional] object if raised from an event

    lookInRowsarray

    [optional] the rows to look in - if not provided then looks in grid.rows

  • @@ -73,12 +75,12 @@ evtEvent

    object if raised from an event

    -
  • setModifierKeysToMultiSelect(modifierKeysToMultiSelect)

    +
  • setModifierKeysToMultiSelect(modifierKeysToMultiSelect)

    Sets the current gridOption.modifierKeysToMultiSelect to true or false

    Parameters
    ParamTypeDetails
    modifierKeysToMultiSelectbool

    true to only allow multiple rows when using ctrlKey or shiftKey is used

  • -
  • setMultiSelect(multiSelect)

    +
  • setMultiSelect(multiSelect)

    Sets the current gridOption.multiSelect to true or false

    Parameters
    ParamTypeDetails
    multiSelectbool

    true to allow multiple rows

    @@ -89,22 +91,24 @@ evtEvent

    object if raised from an event

  • -
  • unSelectRow(rowEntity, evt)

    +
  • unSelectRow(rowEntity, evt)

    UnSelect the data row

    Parameters
    ParamTypeDetails
    rowEntityobject

    gridOptions.data[] array instance

    evtEvent

    object if raised from an event

  • -
  • unSelectRowByKey(isInEntity, key, comparator, evt, lookInRows)

    -

    Select the data row

    +
  • unSelectRowByKey(isInEntity, key, comparator, evt, lookInRows)

    +

    unselects the GridRows who have an key that is equal to comparator +so for Example if isInEntity == false then it does this check: row[key] === comparator +if isInEntity == true then it does this check: row.entity[key] === comparator

    Parameters
    ParamTypeDetails
    isInEntityboolean

    if true then key is in entity else it's directly in row

    -
    keystringnumber

    the key to look for

    +
    keystring number

    the key to look for

    comparatorany

    the value that key should have

    -
    evtEvent

    object if raised from an event

    +
    evtEvent

    [optional] object if raised from an event

    lookInRowsarray

    [optional] the rows to look in - if not provided then looks in grid.rows

  • -
  • unSelectRowByVisibleIndex(rowNum, evt)

    +
  • unSelectRowByVisibleIndex(rowNum, evt)

    Unselect the specified row by visible index (i.e. if you specify row 0 you'll get the first visible row unselected). In this context visible means of those rows that are theoretically visible (i.e. not filtered), diff --git a/docs/partials/api/ui.grid.selection.directive.uiGridCell.html b/docs/partials/api/ui.grid.selection.directive.uiGridCell.html index c5e47e971..6e47d5e84 100644 --- a/docs/partials/api/ui.grid.selection.directive.uiGridCell.html +++ b/docs/partials/api/ui.grid.selection.directive.uiGridCell.html @@ -1,4 +1,4 @@ - Improve this doc View source

    uiGridCell + Improve this doc View source

    uiGridCell
    directive in module ui.grid.selection
    diff --git a/docs/partials/api/ui.grid.selection.directive.uiGridSelection.html b/docs/partials/api/ui.grid.selection.directive.uiGridSelection.html index 92644a492..358c30f24 100644 --- a/docs/partials/api/ui.grid.selection.directive.uiGridSelection.html +++ b/docs/partials/api/ui.grid.selection.directive.uiGridSelection.html @@ -1,4 +1,4 @@ - Improve this doc View source

    uiGridSelection + Improve this doc View source

    uiGridSelection
    directive in module ui.grid.selection
    diff --git a/docs/partials/api/ui.grid.selection.directive.uiGridViewport.html b/docs/partials/api/ui.grid.selection.directive.uiGridViewport.html index 4a2892b2c..47684dd6c 100644 --- a/docs/partials/api/ui.grid.selection.directive.uiGridViewport.html +++ b/docs/partials/api/ui.grid.selection.directive.uiGridViewport.html @@ -1,4 +1,4 @@ - Improve this doc View source

    uiGridViewport + Improve this doc View source

    uiGridViewport
    directive in module ui.grid.selection
    diff --git a/docs/partials/api/ui.grid.selection.service.uiGridSelectionService.html b/docs/partials/api/ui.grid.selection.service.uiGridSelectionService.html index b3030f6b3..57550763a 100644 --- a/docs/partials/api/ui.grid.selection.service.uiGridSelectionService.html +++ b/docs/partials/api/ui.grid.selection.service.uiGridSelectionService.html @@ -7,13 +7,13 @@

    Services for selection features

    Methods

    -
    • clearSelectedRows(grid, evt)

      +
      • clearSelectedRows(grid, evt)

        Clears all selected rows

        Parameters
        ParamTypeDetails
        gridGrid

        grid object

        evtEvent

        object if raised from an event

      • -
      • decideRaiseSelectionEvent(grid, row, changedRows, evt)

        +
      • decideRaiseSelectionEvent(grid, row, changedRows, evt)

        Decides whether to raise a single event or a batch event

        Parameters
        ParamTypeDetails
        gridGrid

        grid object

        rowGridRow

        row that has changed

        @@ -22,21 +22,21 @@ row if we're doing batch events

      • -
      • getSelectedRows(grid)

        +
      • getSelectedRows(grid)

        Returns all the selected rows

        Parameters
        ParamTypeDetails
        gridGrid

        grid object

      • -
      • getUnSelectedRows(grid)

        +
      • getUnSelectedRows(grid)

        Returns all the unselected rows

        Parameters
        ParamTypeDetails
        gridGrid

        grid object

      • -
      • mapAndFilterRowsByEntity()

        +
      • mapAndFilterRowsByEntity()

        Filters all rows by entity and then maps them to Array.

      • -
      • raiseSelectionEvent(grid, changedRows, evt)

        +
      • raiseSelectionEvent(grid, changedRows, evt)

        Decides whether we need to raise a batch event, and raises it if we do.

        Parameters
        ParamTypeDetails
        gridGrid

        grid object

        @@ -45,7 +45,7 @@ if we're doing batch events

      • -
      • shiftSelect(grid, row, evt, multiSelect)

        +
      • shiftSelect(grid, row, evt, multiSelect)

        selects a group of rows from the last selected row using the shift key

        Parameters
        ParamTypeDetails
        gridGrid

        grid object

        rowGridRow

        clicked row

        @@ -53,7 +53,7 @@
        multiSelectbool

        if false, does nothing this is for multiSelect only

      • -
      • toggleRowSelection(grid, row, evt, multiSelect, noUnselect, canBeInvisible)

        +
      • toggleRowSelection(grid, row, evt, multiSelect, noUnselect, canBeInvisible)

        Toggles row as selected or unselected

        Parameters
        ParamTypeDetails
        gridGrid

        grid object

        rowGridRow

        row to select or deselect

        diff --git a/index.html b/index.html index 17cc33b06..738936e39 100644 --- a/index.html +++ b/index.html @@ -76,11 +76,11 @@

        Angular UI Grid

        Code on Github - + - + - Download ( 4.11.1 ) + Download ( 4.12.0 ) diff --git a/less/moveColumns.less b/less/moveColumns.less new file mode 100644 index 000000000..935117f73 --- /dev/null +++ b/less/moveColumns.less @@ -0,0 +1,12 @@ +@import (reference) '../../core/less/variables'; + +.movingColumn { + position: absolute; + top: 0; + border: 1px solid @borderColor; + box-shadow: inset 0 0 14px rgba(0, 0, 0, 0.2); + + .ui-grid-icon-angle-down { + display: none; + } +} diff --git a/less/resizeColumns.less b/less/resizeColumns.less new file mode 100644 index 000000000..a63c09093 --- /dev/null +++ b/less/resizeColumns.less @@ -0,0 +1,53 @@ +@import (reference) '../../core/less/variables'; + +.ui-grid-column-resizer { + top: 0; + bottom: 0; + width: 5px; + position: absolute; + cursor: col-resize; + + &.left { + left: 0; + } + + &.right { + right: 0; + } +} + +// Add a visual border for final column's resizer element +.ui-grid-header-cell:last-child .ui-grid-column-resizer.right { + border-right: @gridBorderWidth solid @borderColor; +} + +// Put visual border on left of last header cell when direction is rtl +.ui-grid[dir=rtl] .ui-grid-header-cell:last-child { + .ui-grid-column-resizer.right { + border-right: 0; + } + + .ui-grid-column-resizer.left { + border-left: @gridBorderWidth solid @borderColor; + } +} + +.ui-grid { + &.column-resizing { + cursor: col-resize; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + } +} + +.ui-grid.column-resizing .ui-grid-resize-overlay { + position: absolute; + top: 0; + height: 100%; + width: @gridBorderWidth; + background-color: darken(@verticalBarColor, 15%); +} \ No newline at end of file diff --git a/less/treeBase.less b/less/treeBase.less new file mode 100644 index 000000000..6a7f1afa1 --- /dev/null +++ b/less/treeBase.less @@ -0,0 +1,6 @@ +@import (reference) '../../core/less/variables'; + +.ui-grid-tree-row-header-buttons.ui-grid-tree-header { + cursor: pointer; + opacity: 1; +} diff --git a/less/treeView.less b/less/treeView.less new file mode 100644 index 000000000..286bc018e --- /dev/null +++ b/less/treeView.less @@ -0,0 +1,8 @@ +@import (reference) '../../core/less/variables'; + +.ui-grid-tree-header-row { + font-weight: bold !important; +} +.ui-grid-tree-header-row .ui-grid-cell.ui-grid-disable-selection.ui-grid-row-header-cell { + pointer-events: all; +} diff --git a/release/4.12.0/CHANGELOG.md b/release/4.12.0/CHANGELOG.md new file mode 100644 index 000000000..ebda278b9 --- /dev/null +++ b/release/4.12.0/CHANGELOG.md @@ -0,0 +1,1895 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [4.12.0](https://github.com/angular-ui/ui-grid/compare/v4.11.1...v4.12.0) (2023-01-12) + + +### Bug Fixes + +* **pinning:** blank space between pinnedRight column and the last unpinned column ([7687192](https://github.com/angular-ui/ui-grid/commit/7687192afa6b67f013c8a559a60dc9c3f78e4efb)), closes [#4949](https://github.com/angular-ui/ui-grid/issues/4949) [#6284](https://github.com/angular-ui/ui-grid/issues/6284) + + +### Features + +* **exporter:** add export type in format method ([#7223](https://github.com/angular-ui/ui-grid/issues/7223)) ([4c36808](https://github.com/angular-ui/ui-grid/commit/4c36808e26c1ece5b48237523934e7dd5d2d2242)) +* 🎸 option to disable GridMenu close on scrolling ([6d3f006](https://github.com/angular-ui/ui-grid/commit/6d3f0065f6635179b4a3ccca5d8f0ac274bd3755)) + + + + +## [4.11.1](https://github.com/angular-ui/ui-grid/compare/v4.11.0...v4.11.1) (2022-02-23) + + +### Bug Fixes + +* clear selection function ([f616137](https://github.com/angular-ui/ui-grid/commit/f61613794aa9f919d091ea60cc27eb85bf70ee74)) +* Find or Select by Row Entity's 'ID' ([7a0a6c6](https://github.com/angular-ui/ui-grid/commit/7a0a6c6f3ed29c3e41f5cfa77b46639d3df7f1ca)) +* exchanged filter() with every() ([583940f](https://github.com/angular-ui/ui-grid/commit/583940ffa30df614b64122dc1f8b9d83103821df)) +* **i18n:** complete ru locale ([8d2caee](https://github.com/angular-ui/ui-grid/commit/8d2caeeb7fa0e85d73c5513d39f0c8ff7992f0b7)) +* **resize-columns:** width gets adjusted so that ellipses aren't shown ([7851ff8](https://github.com/angular-ui/ui-grid/commit/7851ff81eae5b48bf89f4ca88ac66b097240c1ef)) + + + + + +# [4.11.0](https://github.com/angular-ui/ui-grid/compare/v4.10.3...v4.11.0) (2021-08-12) + + +### Bug Fixes + +* 🐛 ensure viewport height cannot be negative ([a7111a1](https://github.com/angular-ui/ui-grid/commit/a7111a13b4c7d67068522881783925dedbacda88)), closes [#3034](https://github.com/angular-ui/ui-grid/issues/3034) + + +### Features + +* 🎸 option to disable multi-column sorting ([c9abb8b](https://github.com/angular-ui/ui-grid/commit/c9abb8bab2101479b0498848b4a288c1ad7d17f9)), closes [#2913](https://github.com/angular-ui/ui-grid/issues/2913) +* 🎸 the ability to disable hide columns on a grid level ([2dd1688](https://github.com/angular-ui/ui-grid/commit/2dd168859e03583cdc7e6ab671d146e343ae4275)), closes [#1604](https://github.com/angular-ui/ui-grid/issues/1604) + + + + + +## [4.10.3](https://github.com/angular-ui/ui-grid/compare/v4.10.2...v4.10.3) (2021-08-01) + + +### Bug Fixes + +* 🐛 address linting issues and unit test failures ([a9cf59f](https://github.com/angular-ui/ui-grid/commit/a9cf59f6ff31f065332bdd20b0931dba0b982183)) +* export filter with time part ('date:"MM-dd-YYYY HH:mm'). ([29d4803](https://github.com/angular-ui/ui-grid/commit/29d4803d702409bffafc30b33cbbdeda53992776)) +* error when entering *+ combination in the column filter ([1201ad2](https://github.com/angular-ui/ui-grid/commit/1201ad2678f7b54d8351f8aa876405c97beb6d05)) +* Missing german translation for selection and validate ([3ff57e0](https://github.com/angular-ui/ui-grid/commit/3ff57e00893890b3be73ec3c350d30b3b2a91cdf)) +* canvas now has a minimum height of 1px, which renders it even if it has no data ([07c26d5](https://github.com/angular-ui/ui-grid/commit/07c26d576fe6e012730fead14c9e9139d606ed13)) +* adjustColumns now calculates the colIndex instead of guessing it scrollpercentage ([ed76f02](https://github.com/angular-ui/ui-grid/commit/ed76f02090f3510d555cacdae03f1edad849d27a)) + + + + +## [4.10.2](https://github.com/angular-ui/ui-grid/compare/v4.10.1...v4.10.2) (2021-06-14) + + +### Bug Fixes + +* 🐛 add missing translations for es, fr, it and pt ([051b182](https://github.com/angular-ui/ui-grid/commit/051b1820a4a0bb97af86bba29f8889238c9b4907)) +* 🐛 improve accessibility in the grid menus and selection ([e5ae7c0](https://github.com/angular-ui/ui-grid/commit/e5ae7c085f4ac314dfbd4fab15b24f20730ee5cd)) +* **core:** use allowFloatWidth property to allow float calculations for width ([bb28b2f](https://github.com/angular-ui/ui-grid/commit/bb28b2fb523f5e47aa61a80bf70e4aabc49ab1e7)) +* **core:** use allowFloatWidth property to allow float calculations for width ([f4d3e22](https://github.com/angular-ui/ui-grid/commit/f4d3e222965d91a7faf0f4886ad6d4906789df9e)) + + + + + +## [4.10.1](https://github.com/angular-ui/ui-grid/compare/v4.10.0...v4.10.1) (2021-05-28) + + +### Bug Fixes + +* 🐛 ensure select all checkbox is announced correctly ([3b478fa](https://github.com/angular-ui/ui-grid/commit/3b478fa22fd6a438bc63331a36b4c0606d0edd36)) +* 🐛 remove extra $applyAsync from header-cell ([f9a84ff](https://github.com/angular-ui/ui-grid/commit/f9a84ff8cb314e6823bda53f174157b318b238d7)) +* clearSelectedRows should respect enableSelection ([fcad35c](https://github.com/angular-ui/ui-grid/commit/fcad35c432ad26468056451530d21d4a855c69c1)) + + + + + +# [4.10.0](https://github.com/angular-ui/ui-grid/compare/v4.9.1...v4.10.0) (2021-02-01) + + +### Bug Fixes + +* **tree-base:** grouping showing duplicate rows ([685d3c7](https://github.com/angular-ui/ui-grid/commit/685d3c798a3417a1963241e1c7763dc9e60f9d8d)) +* **tree-base:** if parent exists in cache ([cf7a5bc](https://github.com/angular-ui/ui-grid/commit/cf7a5bc8ef4d592c0907a35df7779be00ba7feac)) + + +### Features + +* 🎸 add 'aria-expanded' to expand buttons for accessibility ([2677f67](https://github.com/angular-ui/ui-grid/commit/2677f675c33d0584d6647d2f3903cd06ce36a659)) + + +### Reverts + +* Revert "chore: update changelog" and "chore: Release v4.9.2" ([3a4a27f](https://github.com/angular-ui/ui-grid/commit/3a4a27f6f1283f9b785287a53c2acc3539de170b)) + + + + + +## [4.9.1](https://github.com/angular-ui/ui-grid/compare/v4.9.0...v4.9.1) (2020-10-26) + + +### Bug Fixes + +* **core:** update rtl support function to fix rtl support ([75580b8](https://github.com/angular-ui/ui-grid/commit/75580b88c46a36029b3abb3b57eaccf1928c22ad)), closes [#7126](https://github.com/angular-ui/ui-grid/issues/7126) +* **exporter:** pass both tree parent nodes and children nodes when exporting ([3a5ac8a](https://github.com/angular-ui/ui-grid/commit/3a5ac8adf83051b48081b2cc5d9d1bae77e5ef86)), closes [#7127](https://github.com/angular-ui/ui-grid/issues/7127) [#6819](https://github.com/angular-ui/ui-grid/issues/6819) + + + + + +# [4.9.0](https://github.com/angular-ui/ui-grid/compare/v4.8.5...v4.9.0) (2020-09-27) + + +### Bug Fixes + +* **edit:** fixing firefox number edit ([b58f78d](https://github.com/angular-ui/ui-grid/commit/b58f78d6e175dce283a5c709041acbfa41d68e5e)), closes [#6953](https://github.com/angular-ui/ui-grid/issues/6953) +* **core:** replace missing string with empty string ([f7d48ee](https://github.com/angular-ui/ui-grid/commit/f7d48ee4e28f8a1233d0dc1bf4e10a5446df6e32)), closes [#7063](https://github.com/angular-ui/ui-grid/issues/7063) + + +### Reverts + +* Revert "Revert "Update ui-grid-column-resizer.js"" ([fe09d9b](https://github.com/angular-ui/ui-grid/commit/fe09d9bee956c538bcef28c997d1da9ff0b200e1)) +* Revert "Update ui-grid-column-resizer.js" ([88191a0](https://github.com/angular-ui/ui-grid/commit/88191a00ccac5b6f4c9abb0bd62d62db64daa58f)) + + +### BREAKING CHANGES + +* MISSING string will no longer be displayed. + + + + + +## [4.8.5](https://github.com/angular-ui/ui-grid/compare/v4.8.3...v4.8.5) (2020-09-14) + + +### Bug Fixes + +* **all**: Add support for angular 1.8.0 + + + + + + +## [4.8.4](https://github.com/angular-ui/ui-grid/compare/v4.8.3...v4.8.4) (2020-09-14) + + +### Bug Fixes + +* **core:** update remove method as it was throwing error.. ([#7060](https://github.com/angular-ui/ui-grid/issues/7060)) ([9f58abd](https://github.com/angular-ui/ui-grid/commit/9f58abd4a3b99a967d0ca80eefebd7401ca3740f)) +* **grouping:** adds aggregationLabel to aggregateColumn call to match ([60fcedc](https://github.com/angular-ui/ui-grid/commit/60fcedcebd815661fbb7868a5d11e964c971c5b6)) + + + + + +## [4.8.3](https://github.com/angular-ui/ui-grid/compare/v4.8.2...v4.8.3) (2019-10-21) + + +### Bug Fixes + +* **a11y:** keyboard navigation changes of expand and selection buttons ([#7048](https://github.com/angular-ui/ui-grid/issues/7048)) ([9854f69](https://github.com/angular-ui/ui-grid/commit/9854f69)) +* **exporter:** remove extra double quotes in excel export ([29c4fb1](https://github.com/angular-ui/ui-grid/commit/29c4fb1)) + + + + + +## [4.8.2](https://github.com/angular-ui/ui-grid/compare/v4.8.1...v4.8.2) (2019-10-07) + + +### Bug Fixes + +* **core:** scrollToIfNecessary not properly including rowHeight on downward scrolls ([7a0e1dc](https://github.com/angular-ui/ui-grid/commit/7a0e1dc)) +* **scrolling:** column footers misaligned with data [#6909](https://github.com/angular-ui/ui-grid/issues/6909) ([74f9107](https://github.com/angular-ui/ui-grid/commit/74f9107)) +* change Safari support to 12 - 13 ([6b0f21a](https://github.com/angular-ui/ui-grid/commit/6b0f21a)) + + + + + +## [4.8.1](https://github.com/angular-ui/ui-grid/compare/v4.8.0...v4.8.1) (2019-06-27) + + +### Bug Fixes + +* **core:** change translation in in i18n nl.js for clearAllFilters ([06c3d36](https://github.com/angular-ui/ui-grid/commit/06c3d36)) +* **core:** support jQlite ([78e44f9](https://github.com/angular-ui/ui-grid/commit/78e44f9)) +* handle rejection on timeout to avoid angularjs error message about possibly unhandled rejection ([635410c](https://github.com/angular-ui/ui-grid/commit/635410c)) +* **i18n:** improve Swedish translations ([2d3abfa](https://github.com/angular-ui/ui-grid/commit/2d3abfa)) +* **i18n:** translate clearAllFilters correctly in Swedish ([0fad621](https://github.com/angular-ui/ui-grid/commit/0fad621)) +* **ui-grid:** [#6937](https://github.com/angular-ui/ui-grid/issues/6937) fix linter error ([13bb9c0](https://github.com/angular-ui/ui-grid/commit/13bb9c0)) +* **ui-grid:** [#6937](https://github.com/angular-ui/ui-grid/issues/6937) getScrollBarWidth for Firefox ([6aee591](https://github.com/angular-ui/ui-grid/commit/6aee591)) + + + + + +# [4.8.0](https://github.com/angular-ui/ui-grid/compare/v4.7.1...v4.8.0) (2019-05-02) + + +### Bug Fixes + +* **exporter:** remove unnecessary dependencies ([c354e27](https://github.com/angular-ui/ui-grid/commit/c354e27)) +* **i18n:** add ru excel export values + fix clearAllFilters typo ([83b2aa1](https://github.com/angular-ui/ui-grid/commit/83b2aa1)), closes [#6841](https://github.com/angular-ui/ui-grid/issues/6841) +* **less:** improve less compilation ([2ab139e](https://github.com/angular-ui/ui-grid/commit/2ab139e)) +* **ui-grid-site:** upgrade bootstrap to version 3.4.1 ([a125627](https://github.com/angular-ui/ui-grid/commit/a125627)) + + +### Features + +* **filterChanged:** pass the changed column as first argument to filterChanged function ([13eacc3](https://github.com/angular-ui/ui-grid/commit/13eacc3)), closes [#4775](https://github.com/angular-ui/ui-grid/issues/4775) + + + + + +# [4.7.1](https://github.com/angular-ui/ui-grid/compare/v4.7.0...v4.7.1) (2019-02-06) + + +### Bug Fixes + +* **selection:** fix row.setSelected is not a function issue ([eb98748](https://github.com/angular-ui/ui-grid/commit/eb98748)) +* **ui-grid.js:** prevent build from duplicating files during concat ([eb98748](https://github.com/angular-ui/ui-grid/commit/eb98748)) + + + +# [4.7.0](https://github.com/angular-ui/ui-grid/compare/v4.6.6...v4.7.0) (2019-02-01) + + +### Bug Fixes + +* **exporter:** add missing dependencies ([a86eb0e](https://github.com/angular-ui/ui-grid/commit/a86eb0e)) +* **grouping.js:** fix typo in description ([4597c69](https://github.com/angular-ui/ui-grid/commit/4597c69)) +* **less:** update less file references ([47c1239](https://github.com/angular-ui/ui-grid/commit/47c1239)) +* **selection:** prevent cell to be selected when user scroll ([a537f0c](https://github.com/angular-ui/ui-grid/commit/a537f0c)) +* **selection:** take in care about time touched properly ([0dbdafe](https://github.com/angular-ui/ui-grid/commit/0dbdafe)) +* **uiGridColumMenu:** Add missing promise catch handlers for focus.bySelector calls ([de57fdc](https://github.com/angular-ui/ui-grid/commit/de57fdc)) +* **uiGridColumMenu:** Check column visibility before trying to focus it in the menu-hidden callback ([3a8e87b](https://github.com/angular-ui/ui-grid/commit/3a8e87b)) +* **uiGridColumMenu:** Check for menu item visibility before trying to focus the first visible menu item ([3085417](https://github.com/angular-ui/ui-grid/commit/3085417)) + + +### Features + +* **css:** add feature based CSS files ([9e1c042](https://github.com/angular-ui/ui-grid/commit/9e1c042)) +* **filter:** add filterContainer option to allow a column filter to be placed in column menu ([bdb832a](https://github.com/angular-ui/ui-grid/commit/bdb832a)), closes [#3989](https://github.com/angular-ui/ui-grid/issues/3989) + + +### BREAKING CHANGES + +* **less:** feature less files have been moved to the root of the +less folder. + + + + + + +## [4.6.5](https://github.com/angular-ui/ui-grid/compare/v4.6.4...v4.6.5) (2018-11-16) + + +### Bug Fixes + +* **customizer:** fix customizer ([ee5f27d](https://github.com/angular-ui/ui-grid/commit/ee5f27d)), closes [#6834](https://github.com/angular-ui/ui-grid/issues/6834) +* **rowSorter.js:** wrap rowSortFn while innards in function to prevent issue with webpack compress. ([21fa2af](https://github.com/angular-ui/ui-grid/commit/21fa2af)) +* **sort:** add an extra check for sort data ([045b77c](https://github.com/angular-ui/ui-grid/commit/045b77c)) + + +### Features + +* **sv.js:** Added missing Swedish translations ([6dfbad3](https://github.com/angular-ui/ui-grid/commit/6dfbad3)) + + + + +## [4.6.4](https://github.com/angular-ui/ui-grid/compare/v4.6.3...v4.6.4) (2018-10-30) + + +### Bug Fixes + +* **exporter:** Allow csv export for object field type ([#6870](https://github.com/angular-ui/ui-grid/issues/6870)) ([24d4224](https://github.com/angular-ui/ui-grid/commit/24d4224)) +* **grouping:** respect customTreeAggregationFn on grouped columns ([#6868](https://github.com/angular-ui/ui-grid/issues/6868)) ([e2a7310](https://github.com/angular-ui/ui-grid/commit/e2a7310)), closes [#6402](https://github.com/angular-ui/ui-grid/issues/6402) +* **treeBase:** allow setting row.$$treeLevel to undefined ([#6867](https://github.com/angular-ui/ui-grid/issues/6867)) ([3057b46](https://github.com/angular-ui/ui-grid/commit/3057b46)), closes [#5548](https://github.com/angular-ui/ui-grid/issues/5548) + + + + +## [4.6.3](https://github.com/angular-ui/ui-grid/compare/v4.6.2...v4.6.3) (2018-08-04) + + +### Bug Fixes + +* **fonts:** changed space endings on font files ([ed8ebba](https://github.com/angular-ui/ui-grid/commit/ed8ebba)), closes [#6809](https://github.com/angular-ui/ui-grid/issues/6809) +* **header:** Change grid header css to flexbox ([f9ac3e5](https://github.com/angular-ui/ui-grid/commit/f9ac3e5)), closes [#6799](https://github.com/angular-ui/ui-grid/issues/6799) [#2592](https://github.com/angular-ui/ui-grid/issues/2592) +* **less:** create a core.less file for import ([6866583](https://github.com/angular-ui/ui-grid/commit/6866583)), closes [#4659](https://github.com/angular-ui/ui-grid/issues/4659) +* **less:** remove bootstrap dependency ([a480900](https://github.com/angular-ui/ui-grid/commit/a480900)), closes [#4173](https://github.com/angular-ui/ui-grid/issues/4173) [#5435](https://github.com/angular-ui/ui-grid/issues/5435) +* **tree-base:** agg: remove now works ([4a37231](https://github.com/angular-ui/ui-grid/commit/4a37231)), closes [#5682](https://github.com/angular-ui/ui-grid/issues/5682) + + + + +## [4.6.2](https://github.com/angular-ui/ui-grid/compare/v4.6.1...v4.6.2) (2018-07-09) + + +### Performance Improvements + +* **ui-grid.core:** Remove unnecessary code. ([cfec75c](https://github.com/angular-ui/ui-grid/commit/cfec75c)) + + + + +## [4.6.1](https://github.com/angular-ui/ui-grid/compare/v4.6.0...v4.6.1) (2018-07-05) + + +### Bug Fixes + +* **exporter:** Handle filters with 3 arguments ([3207b29](https://github.com/angular-ui/ui-grid/commit/3207b29)), closes [#6784](https://github.com/angular-ui/ui-grid/issues/6784) +* **exporter:** exporterExcelCustomFormatter should return the unmodified docDefinition ([7fc39ad](https://github.com/angular-ui/ui-grid/commit/7fc39ad)), closes [#6774](https://github.com/angular-ui/ui-grid/issues/6774) [#6774](https://github.com/angular-ui/ui-grid/issues/6774) +* **i18n:** Fix Japanese translation. ([#6781](https://github.com/angular-ui/ui-grid/issues/6781)) ([9ab0a4c](https://github.com/angular-ui/ui-grid/commit/9ab0a4c)) +* **selection:** Fix multiSelect + modifierKeysToMultiSelect ([2bc8c7b](https://github.com/angular-ui/ui-grid/commit/2bc8c7b)), closes [#6793](https://github.com/angular-ui/ui-grid/issues/6793) [#6791](https://github.com/angular-ui/ui-grid/issues/6791) +* **selection:** Remove focus rows styles. ([a8480a2](https://github.com/angular-ui/ui-grid/commit/a8480a2)), closes [#6782](https://github.com/angular-ui/ui-grid/issues/6782) +* **validate:** missing getErrorMessages method ([588c868](https://github.com/angular-ui/ui-grid/commit/588c868)) + + +### Documentation + +* **ui-grid.info:** Clean up API documentation. ([a535bea](https://github.com/angular-ui/ui-grid/commit/a535bea96109540f6ca66f42646321e785f62136)) +* **ui-grid.info:** Added missing documentation. ([71c3db8](https://github.com/angular-ui/ui-grid/commit/71c3db8157159193c1fc7ce310c8c8b48f140760)) + + + + +# [4.6.0](https://github.com/angular-ui/ui-grid/compare/v4.5.1...v4.6.0) (2018-06-21) + + +### Bug Fixes + +* **gridContainer:** Revert body container id to previous. ([981e9e2](https://github.com/angular-ui/ui-grid/commit/981e9e2)), closes [#6096](https://github.com/angular-ui/ui-grid/issues/6096) +* **selection:** Selected row style only applied to left container ([ab31e0b](https://github.com/angular-ui/ui-grid/commit/ab31e0b)) +* **uiGridHeaderCell:** Remove unncessary space ([5ea8e54](https://github.com/angular-ui/ui-grid/commit/5ea8e54)) + + +### Documentation + +* **scrollThreshold:** Add missing documentation details. ([cc0fdb7](https://github.com/angular-ui/ui-grid/commit/cc0fdb7)) + + +### Features + +* **es-ct:** Add catalan translations. ([f482800](https://github.com/angular-ui/ui-grid/commit/f482800)), closes [#5536](https://github.com/angular-ui/ui-grid/issues/5536) +* **rs-lat:** Added Serbian translations. ([da57ad1](https://github.com/angular-ui/ui-grid/commit/da57ad1)) +* **i18n:** Add fallback lang support ([0e47f10](https://github.com/angular-ui/ui-grid/commit/0e47f10)), closes [#6396](https://github.com/angular-ui/ui-grid/issues/6396) + + +### BREAKING CHANGES + +* **horizontalScrollThreshold:** Removed horizontalScrollThreshold as it is not being used by the grid. +* **i18n:** getSafeText() will now return [MISSING] + the path to +the missing property or the fallback value if the property is available +on the fallback language. + + + + +## [4.5.1](https://github.com/angular-ui/ui-grid/compare/v4.5.0...v4.5.1) (2018-06-18) + + +### Bug Fixes + +* **fonts:** Add missing fonts folder to release ([544a483](https://github.com/angular-ui/ui-grid/commit/544a483)), closes [#6759](https://github.com/angular-ui/ui-grid/issues/6759) + + + + +# [4.5.0](https://github.com/angular-ui/ui-grid/compare/v4.4.11...v4.5.0) (2018-06-15) + + +### Bug Fixes + +* **fonts:** Change font files path. ([1bd060c](https://github.com/angular-ui/ui-grid/commit/1bd060c)), closes [#3751](https://github.com/angular-ui/ui-grid/issues/3751) +* **i18n:** Add missing Danish pinning translations [#6731](https://github.com/angular-ui/ui-grid/issues/6731) ([c14def4](https://github.com/angular-ui/ui-grid/commit/c14def4)) +* **i18n:** Add missing sk translations. ([2d6907f](https://github.com/angular-ui/ui-grid/commit/2d6907f)) +* **selection, expandable:** Add pointer cursor css ([faf332e](https://github.com/angular-ui/ui-grid/commit/faf332e)) +* **ui-grid-menu-button.js:** Click on the menu button item checkbox … ([#6738](https://github.com/angular-ui/ui-grid/issues/6738)) ([c0d27d1](https://github.com/angular-ui/ui-grid/commit/c0d27d1)) +* **ui-grid.core:** Address resizing issues. ([767e022](https://github.com/angular-ui/ui-grid/commit/767e022)) + + +### Features + +* **expandable:** Enhance the expandable grid feature. ([ec13255](https://github.com/angular-ui/ui-grid/commit/ec13255)) +* **selection:** Enhance the selection feature ([2485652](https://github.com/angular-ui/ui-grid/commit/2485652)) + + +### BREAKING CHANGES + +* **fonts:** If you take the new CSS and do not relocate the icon files, your icons will likely cease to +show in the grid. + + + + +## [4.4.11](https://github.com/angular-ui/ui-grid/compare/v4.4.9...v4.4.11) (2018-05-16) + +### Features + +* **angular.js:** Support Angular 1.7. ([8c6cb51](https://github.com/angular-ui/ui-grid/commit/8c6cb51d3fbcf8bb6e3fc15c8378d9ba7b11a32c)) + +### Bug Fixes + +* **ui-grid-util.js:** Replace angular.uppercase with toUpperCase. ([82033e0](https://github.com/angular-ui/ui-grid/commit/82033e0)), closes [#6729](https://github.com/angular-ui/ui-grid/issues/6729) + + + +## [4.4.10](https://github.com/angular-ui/ui-grid/compare/v4.4.9...v4.4.10) (2018-05-15) + + +### Bug Fixes + +* **ui-grid-menu-button.js:** Change "Columns:" item to a heading. ([85ad462](https://github.com/angular-ui/ui-grid/commit/85ad462)) +* **ui-grid-util.js:** Replace angular.uppercase and .lowercase with String.toUpperCase and .toLowerC ([a41677a](https://github.com/angular-ui/ui-grid/commit/a41677a)), closes [#6715](https://github.com/angular-ui/ui-grid/issues/6715) + + + + +## [4.4.9](https://github.com/angular-ui/ui-grid/compare/v4.4.7...v4.4.9) (2018-04-30) + + +### Bug Fixes + +* **exporter.js:** Eliminate selection column. Add export scale factor for excel and fonts ([d96f43d](https://github.com/angular-ui/ui-grid/commit/d96f43d)) +* **cellnav.js:** Do not trigger edit on undefined event. ([615fe49](https://github.com/angular-ui/ui-grid/commit/615fe49)) +* **Grid.js:** Use scrollbarHeight instead of scrollbarWidth for vertical scroll calculations. ([1b01490](https://github.com/angular-ui/ui-grid/commit/1b01490)), closes [#6653](https://github.com/angular-ui/ui-grid/issues/6653) +* **selection.js:** + * Allow group header selection. ([9718d8b](https://github.com/angular-ui/ui-grid/commit/9718d8b)), closes [#6698](https://github.com/angular-ui/ui-grid/issues/6698) + * Check if column is row header before disabling selection. ([dff19a7](https://github.com/angular-ui/ui-grid/commit/dff19a7)), closes [#5239](https://github.com/angular-ui/ui-grid/issues/5239) + * getSelectedRows will work on primitive data types. ([39a5439](https://github.com/angular-ui/ui-grid/commit/39a5439)), closes [#6704](https://github.com/angular-ui/ui-grid/issues/6704) + * Raise rowSelectionChangedBatch after toggling selectAll flag. ([bff5bb2](https://github.com/angular-ui/ui-grid/commit/bff5bb2)), closes [#5411](https://github.com/angular-ui/ui-grid/issues/5411) +* **tree-base.js:** + * Allow treeIndent to be 0. ([68be14e](https://github.com/angular-ui/ui-grid/commit/68be14e)) + * Call updateRowHeaderWidth even when no data exists. ([49678eb](https://github.com/angular-ui/ui-grid/commit/49678eb)), closes [#5430](https://github.com/angular-ui/ui-grid/issues/5430) + + +### Features + +* **ui-i18n.js:** Allow replacing/customizing specific existing locale strings when using add. ([d6d820f](https://github.com/angular-ui/ui-grid/commit/d6d820f)) + + + + +### v4.4.7 (2018-04-20) + + +#### Bug Fixes + +* **exporter.js:** + * Eliminate selection column. Add export scale factor for excel and fonts ([bc50dfb0](http://github.com/angular-ui/ng-grid/commit/bc50dfb054ad4a571505051de258eee33539ffe2)) + * Fix to handle filter args and spaces after filter name (#6681) ([7c2c002b](http://github.com/angular-ui/ng-grid/commit/7c2c002b29f43b46e6ac965d59bd5ff0bef677c8)) + * Fix export when selection col is hidden. (#6676) ([b971f417](http://github.com/angular-ui/ng-grid/commit/b971f4177cf19666f420eb5f70fbe774c33fd137)) +* **Grid.js:** ScrollIfNecessary does not account for scrollWidth correctly ([16826bf1](http://github.com/angular-ui/ng-grid/commit/16826bf15f9ef72f885545894deddbdef99dcc97)) +* **i18n:** Add missing portuguese translations. ([25fdb473](http://github.com/angular-ui/ng-grid/commit/25fdb4738d6daadc91ffa28294a655d45cfeac74)) +* **uiGridRenderContainer.html:** Prevent duplicate ids in the grid for ADA compliance. ([ecf07c6f](http://github.com/angular-ui/ng-grid/commit/ecf07c6f19b18a87002791d66fe8e85b0e0f0e33)) + + +### v4.4.6 (2018-04-06) + + +#### Bug Fixes + +* **Grid.js:** ScrollIfNecessary will not scroll if percentage has not changed. ([7ed11ecb](http://github.com/angular-ui/ng-grid/commit/7ed11ecb57e9a809af41e36315575486e1ad2b93)) +* **exporter.js:** Exporter will respect headerCellFilter and cellFilter. ([4c632391](http://github.com/angular-ui/ng-grid/commit/4c63239186c73fd3ba1723481ed67618897e9fe4)) +* **footer.less:** Footer column width now matches header column width. ([3134f77b](http://github.com/angular-ui/ng-grid/commit/3134f77b3dc659e172a5cda67ef7c45528a3ea3a)) +* **ui-grid-menu-button.js:** Replace show/hide buttons with a single toggle button. ([a6a26d99](http://github.com/angular-ui/ng-grid/commit/a6a26d997ed7fee102ab89cb863b0a5a40ce895c)) +* **ui-grid-menu.js:** Give bySelector correct parent. ([1972dcc2](http://github.com/angular-ui/ng-grid/commit/1972dcc29a7727f6e66fffdcbe3c5c4240f3e499)) +* **ui-grid.js:** gridOptions.data string value now works again. ([c62b986d](http://github.com/angular-ui/ng-grid/commit/c62b986d14e68f7e6e8f72ceb89666d7b7add749)) + + +### v4.4.5 (2018-03-31) + + +#### Bug Fixes + +* **Grid.js:** scrollToIfNecessary can scroll to last row. ([87c9eed3](http://github.com/angular-ui/ng-grid/commit/87c9eed31c5e3b1b81d60721cd4fad846b0eb5a9)) +* **expandable.js:** Update expandedAll attribute when toggling rows. ([1b080b91](http://github.com/angular-ui/ng-grid/commit/1b080b916798addff1b67985465c6b01a8c5dce7)) +* **footer.less:** Empty footer cells now take the full available height. (#6630) ([dbe3ecd3](http://github.com/angular-ui/ng-grid/commit/dbe3ecd3ccf1d768b8ad3a8adc5bc38676f8542c)) +* **gridClassFactory.js:** Move priority to correct spot. ([842a9b77](http://github.com/angular-ui/ng-grid/commit/842a9b772f6b3f8dc43c614133b8284e991cd0e7)) +* **gridEdit.js:** Move deregister events until event conclusion. ([214f6cc4](http://github.com/angular-ui/ng-grid/commit/214f6cc4aa547c0e027bf7c2c8ce1865f50adddc)) +* **pagination.less:** Correct style pagination in footer info panel. ([5ca555a8](http://github.com/angular-ui/ng-grid/commit/5ca555a81efd12d3411e950c379dd58a4ad23c4f)) +* **selection.js:** When enableSelection is false, row cannot be toggled. ([33260602](http://github.com/angular-ui/ng-grid/commit/33260602609711077637e04614887b3341289cb1)) +* **tree-base.js:** Stop event propagation on click of the row header. ([c2824d5c](http://github.com/angular-ui/ng-grid/commit/c2824d5cbee3cb100291f51d95c09d58fcb4f5a6)) +* **ui-grid-render-container:** Use offsetHeight to avoid sizing issues. ([9927b711](http://github.com/angular-ui/ng-grid/commit/9927b711e037946e52d17fd521600e5c4e9d8b99)) +* **ui-grid.js:** Ignore scrollbar height prior to checking if autoAdjustHeight is needed. ([f9971a5d](http://github.com/angular-ui/ng-grid/commit/f9971a5d19d215c8978f64ecbc349830be6f7d6e)) + + +### v4.4.4 (2018-03-23) + + +#### Bug Fixes + +* **Grid.js:** Select All button should be disabled when no data is present. ([08ec049a](http://github.com/angular-ui/ng-grid/commit/08ec049af25e8ef6f953955a2b2e2f570b29a4b6)) +* **column-resizer:** Disable text selection while resizing columns. ([2cf3e02a](http://github.com/angular-ui/ng-grid/commit/2cf3e02a8a1fe9762b09604cc3dff8bd079bc86d)) +* **filter:** Filter input fits in column without bootstrap ([a63e1f1a](http://github.com/angular-ui/ng-grid/commit/a63e1f1a3daae51feefab9f2b467ddfd922628d0)) +* **pagination.less:** Pagination footer no longer overlaps last row. ([713d3ea9](http://github.com/angular-ui/ng-grid/commit/713d3ea9caadaaa6e24f98ef31a43821bf9065e3)) +* **selection:** + * SelectAllRows pays attention to isRowSelectable function. ([0b7304f4](http://github.com/angular-ui/ng-grid/commit/0b7304f40d97343c2f7c249abb82050af7ef40dd)) + * Center checkmarx in selection row header. ([3f8758aa](http://github.com/angular-ui/ng-grid/commit/3f8758aa76f523fc3a23762e9772095a963d7a65)) +* **styles:** Removed div. from LESS files. ([5a7dabd6](http://github.com/angular-ui/ng-grid/commit/5a7dabd60d13405f4f9a585b45ddf2c660225b82)) +* **ui-grid-column-menu.js:** Added keyboard navigation to column menu (#6629) ([df429208](http://github.com/angular-ui/ng-grid/commit/df4292083397d498594e893746d5975c4998105b)) + + +### v4.4.3 (2018-03-21) + + +#### Bug Fixes + +* **GridColumn:** Respect minimumColumnSize when a valid minWidth is not present ([89c43ef3](http://github.com/angular-ui/ng-grid/commit/89c43ef34f01249c6025f535519ad3899daa0049)) +* **pagination.html:** Limits pagination page number to integers only ([d7eca115](http://github.com/angular-ui/ng-grid/commit/d7eca115da85b0273688855706975eb231c54e6d)) +* **selection.js:** enableFullRowSelection allows enableRowHeaderSelection. ([f77a5b3f](http://github.com/angular-ui/ng-grid/commit/f77a5b3f5092fdc4a3f5d1717855af405acb0d81)) +* **ui-grid-column-menu.js:** Focus on first item in column menu on open. ([43b313fc](http://github.com/angular-ui/ng-grid/commit/43b313fc281a13236c6e6ed3e471a0eb3bf3257f)) +* **ui-grid-util.js:** Comment out log statement. ([6b127e2d](http://github.com/angular-ui/ng-grid/commit/6b127e2d6d50a004cf85dff7ef715bd841b04624)) + + +### v4.4.2 (2018-03-20) + + +#### Bug Fixes + +* **GridRenderContainer.js:** needsHScrollbarPlaceholder accounts for WHEN_NEEDED ([403bf3ee](http://github.com/angular-ui/ng-grid/commit/403bf3ee145be349ca783f5e5cf86a5420b638bf)) +* **i18n:** change some strings in de.js due to typos ([9ebe1168](https://github.com/angular-ui/ui-grid/commit/9ebe116808ff2d56e18bc3623355121a934de080)) + + +### v4.4.1 (2018-03-16) + + +#### Bug Fixes + +* **122_accessibility.ngdoc:** Update angular-aria version. ([faa17fba](http://github.com/angular-ui/ng-grid/commit/faa17fbaea083e9e80d823601c22b81fc4899f14)) +* **pagination.less:** Remove unnecessary underline from pagination styles. ([f3a4086d](http://github.com/angular-ui/ng-grid/commit/f3a4086d8e9509dea5490105b9fbb73ceb96611d)) +* **ui-grid.core.js:** Add missing i18nService to ui-grid.core.js ([06f53d91](http://github.com/angular-ui/ng-grid/commit/06f53d91be8c4219e0dad2027b8717eeb6183f79)) + + +## v4.4.0 (2018-03-15) + + +#### Features + +* **concat.js:** Rename ui-grid.base.js to ui-grid.core.js. ([18c5ffb8](http://github.com/angular-ui/ng-grid/commit/18c5ffb8807122e6045643c73138b9d6c83b5f9e)) +* **i18n:** Separate language files from ui-grid.base.js ([1342f803](http://github.com/angular-ui/ng-grid/commit/1342f8031441647ef8533f66c7141b04bb0fafe6)) + + +#### Breaking Changes + +* ui-grid.base.js has been rename to ui-grid.core.js. Also, ui-grid.core.js no longer +contains most of the language files available to UI-Grid. It only contains english as that is the +default language of the grid. See tutorials for examples. + ([18c5ffb8](http://github.com/angular-ui/ng-grid/commit/18c5ffb8807122e6045643c73138b9d6c83b5f9e)) + + +### v4.3.1 (2018-03-15) + +* **release:** Released UI-Grid to NPM and bower ([e90a837](https://github.com/angular-ui/ui-grid/commit/e90a837b7e2414f456a3ec7b5482afe7697f4e29)) + + +## v4.3.0 (2018-03-14) + + +#### Bug Fixes + +* **build:** Remove Safari 7 from tests and switch $digest to "$apply" to add $$hashKey to da ([323fa956](http://github.com/angular-ui/ng-grid/commit/323fa956e26aa858a022449b71d5d79beaac6205)) +* **menus:** + * streamline menu positioning ([a83df5bc](http://github.com/angular-ui/ng-grid/commit/a83df5bcec80a38e8566a5385a2639173b7cd00e), closes [#5396](http://github.com/angular-ui/ng-grid/issues/5396), [#5990](http://github.com/angular-ui/ng-grid/issues/5990), [#6085](http://github.com/angular-ui/ng-grid/issues/6085)) + * Fix menu positioning/animation ([25dbd2ec](http://github.com/angular-ui/ng-grid/commit/25dbd2ec3823e20d5d458903260caf3beed83920), closes [#3436](http://github.com/angular-ui/ng-grid/issues/3436), [#3921](http://github.com/angular-ui/ng-grid/issues/3921), [#3978](http://github.com/angular-ui/ng-grid/issues/3978), [#6587](http://github.com/angular-ui/ng-grid/issues/6587)) +* **selection.js:** Allow selection to work with grouping. ([b21096b2](http://github.com/angular-ui/ng-grid/commit/b21096b2c275e365e561a39a7987a3e290b3ee59)) +* **utils.js:** Remove IE9 from supported browsers list. ([f14da2fc](http://github.com/angular-ui/ng-grid/commit/f14da2fc9995d60bed26fd00ad5c271fd7eac470), closes [#2273](http://github.com/angular-ui/ng-grid/issues/2273), [#2552](http://github.com/angular-ui/ng-grid/issues/2552), [#3593](http://github.com/angular-ui/ng-grid/issues/3593), [#3854](http://github.com/angular-ui/ng-grid/issues/3854), [#4439](http://github.com/angular-ui/ng-grid/issues/4439)) + + +#### Features + +* **GridRenderContainer:** Added WHEN_NEEDED option back to ui-grid. ([1c1ea72e](http://github.com/angular-ui/ng-grid/commit/1c1ea72e60ac082ce1c746414cb63a469462cc13)) +* **uglify/concat:** Publish multiple files separated by features. ([6d26274](https://github.com/angular-ui/ui-grid/commit/6d26274024a6925a6b89fcaab4ded6173d68169f)) + + +#### Breaking Changes + +* IE9 and Safari 7 are no longer officially supported. + +Closes #2273, #2552, #3593, #3854, #4439 + ([f14da2fc](http://github.com/angular-ui/ng-grid/commit/f14da2fc9995d60bed26fd00ad5c271fd7eac470)) + + +### v4.2.4 (2018-02-07) + + +#### Bug Fixes + +* **uiGridAutoResize:** Asking for grid $elm sizing in a digest loop always triggers `refresh`, not cond ([835153ce](http://github.com/angular-ui/ng-grid/commit/835153ce256fbeb5f58e20752ca7a4ea35b7a963), closes [#6561](http://github.com/angular-ui/ng-grid/issues/6561)) + + +#### Features + +* **expandAllButton:** Add ability to hide expand all button. ([343d7116](http://github.com/angular-ui/ng-grid/commit/343d711660e83b47c664e74fb8ec735da06a0a07)) + + +### v4.2.3 (2018-02-02) + + +#### Bug Fixes + +* **exporter:** Fix bug where selection column width was included ([d6aeb166](http://github.com/angular-ui/ng-grid/commit/d6aeb166c9931d6da6f464807e6d6575b6b2addf)) +* **importer.js:** Remove unnecessary on destroy event. ([497a554b](http://github.com/angular-ui/ng-grid/commit/497a554bc01fe1148aa804732804c0b41b0c2ced)) +* **selection.js:** Allow selection in tables that use grouping (#6556) ([f3d2a7f1](http://github.com/angular-ui/ng-grid/commit/f3d2a7f1019d269df567047be901e07523cefcb4)) +* **ui-grid-header-cell:** Improved styles with grid menu. ([c6b8d3bc](http://github.com/angular-ui/ng-grid/commit/c6b8d3bcf5095e7543603e1622499aefa2d5c0a4)) + + +#### Features + +* **i18n:** Add Arabic translation (#6551) ([24be1fb6](http://github.com/angular-ui/ng-grid/commit/24be1fb6f78bc9c5c55af0b88dfa0ef87967c395)) + + +### v4.2.2 (2018-01-17) + + +#### Bug Fixes + +* **gridEdit:** Fixing scrollToFocus issues. ([cc8144ca](http://github.com/angular-ui/ng-grid/commit/cc8144ca8b9138dfd08fffbe8cd4382f853c76e2)) + + +### v4.2.1 (2018-01-17) + + +#### Bug Fixes + +* **GridRenderContainer:** Fixing scrollbar styles. ([c36be957](http://github.com/angular-ui/ng-grid/commit/c36be957b8943110ffe4f10de8783acf8d706127)) +* **gridEdit:** Fixing issues with focus and grid edit. ([924cd9b4](http://github.com/angular-ui/ng-grid/commit/924cd9b45f7f83a620fa77bfb39a4fc8d4d1ca2d)) +* **importer:** Fix console error on opening grid menu. ([01dee3c5](http://github.com/angular-ui/ng-grid/commit/01dee3c5d5bc4f25278f58bbaab00f8e62be45e5)) +* **menus:** Switching applyAsync for timeout. ([136335fc](http://github.com/angular-ui/ng-grid/commit/136335fcba88fa0f202be90480a54c69cd90abae)) + + +## v4.2.0 (2018-01-15) + + +#### Bug Fixes + +* **build:** Fixing build failure due to poor updates. ([9382312d](http://github.com/angular-ui/ng-grid/commit/9382312d71308a2276956822918e3699491a6e8f)) +* **cellnav:** Replace $timeout with $applyAsync. ([be18d09e](http://github.com/angular-ui/ng-grid/commit/be18d09e06c36df23c017380e217bec9264d7986)) +* **docs:** Fix broken docs. ([10c3100](https://github.com/angular-ui/ui-grid/commit/10c310030730fca98d2b9a9ff4f3d02fb5d2fa62)) +* **edit:** Replace $timeout with $applyAsync. ([2d409557](http://github.com/angular-ui/ng-grid/commit/2d409557f17ef10f7ccac89f313ed16e57513c87)) +* **infinite-scroll:** Replace $timeout with $applyAsync. ([30af7e9b](http://github.com/angular-ui/ng-grid/commit/30af7e9b2d53effcb959de67cb80fc3ae68c656b)) +* **lang:** Update Polish translations. ([2999817](https://github.com/angular-ui/ui-grid/commit/299981767161b6f989af13847333eea069cdbc9a)) +* **move-columns:** Replace $timeout with $applyAsync. ([f77df14c](http://github.com/angular-ui/ng-grid/commit/f77df14c6aef34d8a938acd437ffdf92f51df7db)) +* **resize-columns:** Replace $timeout with $applyAsync. ([b77ddc36](http://github.com/angular-ui/ng-grid/commit/b77ddc362ef207ca9b89ed0fda1cecf0538330d1)) +* **tutorial:** Updating some tutorial examples. ([804fce72](http://github.com/angular-ui/ng-grid/commit/804fce72f621ca9abac75c1de0deca3c6bed2fd2)) + + +### v4.1.3 (2017-12-23) + + +#### Bug Fixes + +* **protractor:** Improving reliability of protractor tests and ensuring they can run at a basic l ([44396d22](http://github.com/angular-ui/ng-grid/commit/44396d22cf89efb6f0039e0e1bc5d1c8a19570b5)) +* **uiGridAutoResize:** Changed [0].clientHeight to gridUtil.elementHe… (#6490) ([fef9552e](http://github.com/angular-ui/ng-grid/commit/fef9552e1dc82693ee4182b694d7f3c8e893a282)) +* **GridRenderContainer.js:** Fix bug of space to the right of the last column (#6371) ([a2f2fd5](https://github.com/angular-ui/ui-grid/commit/a2f2fd518de3d88100da6ad44ec970cb53262e66)) +* **ui-grid.html:** Fix bug with template for last row's bottom border (#4413) ([faa8ece](https://github.com/angular-ui/ui-grid/commit/faa8ece144231a50d9fa771187275088b28dd3eb)) + + +### v4.1.2 (2017-12-21) + + +#### Bug Fixes + +* **tutorial:** Replacing .success with .then due to angular upgrade. ([07cbe8a8](http://github.com/angular-ui/ng-grid/commit/07cbe8a8c3315e638704ded07e49b677896ab3d0)) + + +### v4.1.1 (2017-12-20) + + +#### Bug Fixes + +* **ui-grid.info:** Updating ui-grid.info to support angular 1.6.7 ([99819cc2](http://github.com/angular-ui/ng-grid/commit/99819cc2a3a9d442e734892ec9e09847e0bd88f7)) + + +## v4.1.0 (2017-12-18) + + +#### Bug Fixes + +* **exporter:** + * fix issue #6019 errors while opening grid menu with exporter service ([18547eb6](http://github.com/angular-ui/ng-grid/commit/18547eb6db79d62d3eb6594ac281ac9c462acd75)) + * Excel export with npm instructions, fix error on menu and more examples ([88f5525](https://github.com/angular-ui/ui-grid/commit/bc37cb4d63f00ef3e49e2a8f14b6efad11107be0)) + +#### Features + +* **chore:** Support Angular 1.6. ([56d3c5f](https://github.com/angular-ui/ui-grid/commit/56d3c5f529f171d82873d4bd1c172d82d0a32ac0)) + + +### v4.0.11 (2017-11-20) + + +#### Bug Fixes + +* **sorting:** fixed the priority computing when unsorting using column menu action (#6427) ([97e0ffa5](http://github.com/angular-ui/ng-grid/commit/97e0ffa5005960bf0e1f5e933e028f0e93b78d23)) +* **uiGridAutoResize:** Replaced timeout checker with watcher (#6470) ([262dbdc8](http://github.com/angular-ui/ng-grid/commit/262dbdc89323790a4d8e87a6aeb9fa21b0b24b37)) +* **uiGridHeader:** stop preserving explicit header heights when styles are rebuilt. (#3705) ([76e18d6](https://github.com/angular-ui/ui-grid/commit/76e18d6faa9fff5bd866312e3bf1989528d6f9eb)) +* **uiGridGroupPanel:** Cleaning up dead code. (#4059) ([ded2c12](https://github.com/angular-ui/ui-grid/commit/ded2c127962d6cd3a21f0f8e25bc0118233bbb02)) + + +#### Features + +* **Excel export:** Adds ability to export as Excel with the help of Excel-builder. ([dc7d773](https://github.com/angular-ui/ui-grid/commit/dc7d7733b3989eba372d4e912b0d3189b59d23ca)) + + +### v4.0.10 (2017-11-11) + + +#### Features + +* **hidePin:** Added option to hide pinLeft or pinRight from pinning menu (#6334) ([145e3662](http://github.com/angular-ui/ng-grid/commit/145e36623f08dd7749ee54aad8eaa07c7318bcc4)) +* **tree-view:** Supports recursive expanding ([48434903](http://github.com/angular-ui/ng-grid/commit/48434903937ce93bae208a026da9d4daa032c12d)) + + +### v4.0.9 (2017-11-11) + +#### Bug Fixes + +* **selection:** Adjust bug in checkbox for selection. (#6459) ([adfc83c](https://github.com/angular-ui/ui-grid/commit/adfc83c667c395e9bfee404270f8de5b212cfd91)) +* **exporterAllDataFn:** exporterAllDataFn results is no longer ignored. (#6163) ([f16cdb0](https://github.com/angular-ui/ui-grid/commit/f16cdb06860dcd416520a48586b49d0dd50a1966)) +* **resizing:** Fix zero delta on double click resizing. (#5362) ([8dd0359](https://github.com/angular-ui/ui-grid/commit/8dd035999054837b2a1f62fb4535542620ca4e59)) + + +#### Features + +* **tree-view:** Supports recursive expanding ([4843490](https://github.com/angular-ui/ui-grid/commit/48434903937ce93bae208a026da9d4daa032c12d)) +* **hidePin:** Added option to hide pined containers from pinning menu. ([145e366](https://github.com/angular-ui/ui-grid/commit/145e36623f08dd7749ee54aad8eaa07c7318bcc4)) + + + +### v4.0.8 (2017-11-06) + + +#### Bug Fixes + +* **ARIA-Roles:** Improving accessibility of ui-grid. (#6341) ([6cf44b4b](http://github.com/angular-ui/ng-grid/commit/6cf44b4bea55e9e3883dc00ada9fe3593b538a4f)) +* **Grid.js:** + * add column header to text read by aria when user moves through grid with keyboar ([a6b52c2a](http://github.com/angular-ui/ng-grid/commit/a6b52c2a3e143fa36929ad0f850a026080656ea2)) + * wrong use in getCellDisplayValue ([57d258e9](http://github.com/angular-ui/ng-grid/commit/57d258e900fdfc1ac312edf1951edb3e04f48e76)) +* **core:** Fixes URL-based template loading for `header-cell`, `footer-cell`, `filter`. ([f0b2fa7d](http://github.com/angular-ui/ng-grid/commit/f0b2fa7d85b5e731e37f9b0ef7ab306f27bfdb3a)) +* **edit:** trigger edit when single click when set enableCellEditOnFocus with true ([bcbd8433](http://github.com/angular-ui/ng-grid/commit/bcbd8433dcb8e69d13ea4281f426febf226986aa)) +* **pagination:** remove unneeded height adjustment ([4c667e72](http://github.com/angular-ui/ng-grid/commit/4c667e721cd3273e4a34f5000bd75c8fecdec631)) +* **selection:** Prevent space bar scrolling (#6410) ([7dbf3955](http://github.com/angular-ui/ng-grid/commit/7dbf3955208496514ccf2d37d5af8e9f71ae8611)) +* **utils.js:** Update browser setting based on changes to SauceLabs. ([0cdf4e93](http://github.com/angular-ui/ng-grid/commit/0cdf4e9385423d0d6f02ca45e6dc40217cb66719)) + + +### v4.0.7 (2017-09-27) + + +#### Bug Fixes + +* **build:** Cope with tags not conforming to semver format when building. (#6376) ([1248e5a3](http://github.com/angular-ui/ng-grid/commit/1248e5a3209595fc232de992880d5de9d6397201)) +* **i18n:** Fixed i18n typo in German language (#6262) ([02a6a68d](http://github.com/angular-ui/ng-grid/commit/02a6a68d52d064f5fa9cc0c2d47f1588ba71f912)) +* **rowEdit:** cancel rowEditSaveTimer on flushDirtyRows - may cause double row save ([6711c725](http://github.com/angular-ui/ng-grid/commit/6711c725f634a1a755316269ce840ec1633109cb)) +* **scrollEvent:** Prevent scrollEvent when scroll percentage is greater then 1. (#6241) ([43ffebba](http://github.com/angular-ui/ng-grid/commit/43ffebbad73d9d4b4c4bc982d15872fb2a378f6f)) +* **ui-grid.info:** + * Removing unknown broken link. ([2968158c](http://github.com/angular-ui/ng-grid/commit/2968158c5fec17576fe88f8be6e366ef7330fc98)) + * Fix broken customizer url on homepage (#5976) ([209fc1d6](http://github.com/angular-ui/ng-grid/commit/209fc1d68769fe1918d88f3accf5cd6e48f64acb)) +* **cellnav.js:** trim text of DOM element before checking ([84ea8fa](https://github.com/angular-ui/ui-grid/commit/84ea8fa8db9c9979ee46452a773ae7da028d0dc2)) +* **gridEdit.js:** verify that the keyCode is greater than zero ([5ccd7f3](https://github.com/angular-ui/ui-grid/commit/5ccd7f3645e20f1f514f2a549cf831b63e35aadf)) +* **Grid.js:** + * Fixed grid height growing indefinitely with auto-resize. ([553d72b](https://github.com/angular-ui/ui-grid/commit/553d72bc4153dc5945978c9f7ece8bcb0040cccc)) + * "selectAll" header sync with the actual selection state of the row. ([aae3f9d](https://github.com/angular-ui/ui-grid/commit/aae3f9d965b1e39a32d1471fcd025afeb3d006b6)) +* **ui-grid-menu:** Menu Items's title can now be a function. ([df10da9](https://github.com/angular-ui/ui-grid/commit/df10da916eb52ffe5636041b56eb88242ecfdd0d)) +* **selection.less:** Focus on selection mark of unselected rows was hardly visible. ([d1aee28](https://github.com/angular-ui/ui-grid/commit/d1aee28b01782b42061e2599c5b285399ec144fa)) + + +#### Features + +* **cellnav:** + * output aria text for cells that come from selection feature - works on IE with J ([151f32b9](http://github.com/angular-ui/ng-grid/commit/151f32b904145893c9e6d51c8350814be70b5dc8)) + * output aria text for cells that come from selection feature ([6d951b2a](http://github.com/angular-ui/ng-grid/commit/6d951b2a7ac33f53b8512a6f3ad5d5498cd079c9)) +* **gridEdit:** Pass triggerEvent to cellEditableCondition fn call ([219ea716](http://github.com/angular-ui/ng-grid/commit/219ea7165ff1f6030c7d125550020181fa1fc3ae)) + + +#### Breaking Changes + +* Menu Items's title should now be a function + ([df10da91](https://github.com/angular-ui/ui-grid/commit/df10da916eb52ffe5636041b56eb88242ecfdd0d#diff-3baddc9493adec1550b73c74401d4b46)) + + +### v4.0.6 (2017-06-14) + + +#### Bug Fixes + +* **5007:** + * Reduced the amount of digest cycles initiated by the grid. ([d0bc03d9](http://github.com/angular-ui/ng-grid/commit/d0bc03d960cf06a85f8819a1d227b47d1cedc527)) + * Reduced the amount of digest cycles initiated by the grid. ([bd51855f](http://github.com/angular-ui/ng-grid/commit/bd51855fe00dac4e932f854c1d3d5116beef5678)) + * Reduced the amount of digest cycles initiated by the grid. ([75f98c3e](http://github.com/angular-ui/ng-grid/commit/75f98c3eda3e46f14f9d924e6f5a6d6e35bcc2b5)) +* **6160:** Select childrens of row group (#6167) ([21819c57](http://github.com/angular-ui/ng-grid/commit/21819c57474bf4451f3126985cfccf294c4c01e2)) +* **build:** + * Fixing test expectations since removal of close button. ([5bf9400a](http://github.com/angular-ui/ng-grid/commit/5bf9400aed4520010cfc04b3bbe91b6183092884)) + * Removing performance improvements from ui-grid-util.js and comma separated vars. ([738df91f](http://github.com/angular-ui/ng-grid/commit/738df91fd61642e2d31cec8a7381f0083dbfb338)) + * Updating protractor and selenium dependencies. (#6034) ([ca0c0368](http://github.com/angular-ui/ng-grid/commit/ca0c03683878889a5d9c40b4f2cac7ff32ee5b64)) +* **protractor:** Fixing npm so protractor can be installed and run locally. ([724df352](http://github.com/angular-ui/ng-grid/commit/724df3520ccc1d5f585fcc42508a537935875da2)) +* **shell.js:** Adding windows support. ([5e438643](http://github.com/angular-ui/ng-grid/commit/5e438643ea06e06455e91f9d0368f0021b8ef9c8)) +* **sort:** Fixing sorting priority aria-label ([a364886f](http://github.com/angular-ui/ng-grid/commit/a364886f37a2685500643d5df05b4c936dcd42a5)) + + +#### Features + +* **saveState:** change restore() to return Promise created by refresh() (#6178) ([f380055b](http://github.com/angular-ui/ng-grid/commit/f380055b58e3a42ee922c36812aa316cfef34174)) +* **sorting:** Default sorting ([e629bc69](http://github.com/angular-ui/ng-grid/commit/e629bc695d4e98a04710478310729aabf53853a1)) + + +### v4.0.5 (2017-06-14) + + +#### Bug Fixes + +* **5007:** + * Reduced the amount of digest cycles initiated by the grid. ([d0bc03d9](http://github.com/angular-ui/ng-grid/commit/d0bc03d960cf06a85f8819a1d227b47d1cedc527)) + * Reduced the amount of digest cycles initiated by the grid. ([bd51855f](http://github.com/angular-ui/ng-grid/commit/bd51855fe00dac4e932f854c1d3d5116beef5678)) + * Reduced the amount of digest cycles initiated by the grid. ([75f98c3e](http://github.com/angular-ui/ng-grid/commit/75f98c3eda3e46f14f9d924e6f5a6d6e35bcc2b5)) +* **6160:** Select childrens of row group (#6167) ([21819c57](http://github.com/angular-ui/ng-grid/commit/21819c57474bf4451f3126985cfccf294c4c01e2)) +* **build:** + * Fixing test expectations since removal of close button. ([5bf9400a](http://github.com/angular-ui/ng-grid/commit/5bf9400aed4520010cfc04b3bbe91b6183092884)) + * Removing performance improvements from ui-grid-util.js and comma separated vars. ([738df91f](http://github.com/angular-ui/ng-grid/commit/738df91fd61642e2d31cec8a7381f0083dbfb338)) + * Updating protractor and selenium dependencies. (#6034) ([ca0c0368](http://github.com/angular-ui/ng-grid/commit/ca0c03683878889a5d9c40b4f2cac7ff32ee5b64)) +* **protractor:** Fixing npm so protractor can be installed and run locally. ([724df352](http://github.com/angular-ui/ng-grid/commit/724df3520ccc1d5f585fcc42508a537935875da2)) +* **shell.js:** Adding windows support. ([5e438643](http://github.com/angular-ui/ng-grid/commit/5e438643ea06e06455e91f9d0368f0021b8ef9c8)) +* **sort:** Fixing sorting priority aria-label ([a364886f](http://github.com/angular-ui/ng-grid/commit/a364886f37a2685500643d5df05b4c936dcd42a5)) +* **ui-grid-menu.js:** Removed log debug statement (#5388) ([7efe5304](https://github.com/angular-ui/ui-grid/commit/7efe5304f015714c8ba742bafe9a96ba80971622)) + + +#### Features + +* **saveState:** change restore() to return Promise created by refresh() (#6178) ([f380055b](http://github.com/angular-ui/ng-grid/commit/f380055b58e3a42ee922c36812aa316cfef34174)) +* **sorting:** Default sorting ([e629bc69](http://github.com/angular-ui/ng-grid/commit/e629bc695d4e98a04710478310729aabf53853a1)) + + +### v4.0.4 (2017-04-04) + + +#### Bug Fixes + +* **6123:** Allowing selection and tree-base to build columns. ([2ea9a06e](http://github.com/angular-ui/ng-grid/commit/2ea9a06e594601cc44947a997f08bce628e813f4)) +* **flatEntityAccess:** getCellDisplayValue now returns the correct value. ([ba77c875](http://github.com/angular-ui/ng-grid/commit/ba77c8750431236ff4f729fe8a77eb44cbbfc9b7)) +* **japanese:** Update japanese translation. ([47e78d1](https://github.com/angular-ui/ui-grid/commit/47e78d16710a96033c692f800c5bb4874f694fc8)), closes [#6089](https://github.com/angular-ui/ui-grid/issues/6089) + + +### v4.0.3 (2017-03-24) + + +#### Bug Fixes + +* **6061:** Translated missing resources to Norwegian in no.js ([c6b0592d](http://github.com/angular-ui/ng-grid/commit/c6b0592dc1223b412985b6a3f41fbcb55038a25e)) +* **Grid:** Add missing promise wait in refresh(). (#5934) ([e23a2af3](http://github.com/angular-ui/ng-grid/commit/e23a2af3bd796d5ed3e247bbc67d53cf24e91963)) +* **Grid.js:** Reducing amount of digests cycles triggered. ([205a2151](http://github.com/angular-ui/ng-grid/commit/205a2151e7d1d31dd6a78866d0413d97487769bf)) +* **Grid.refresh:** Refreshing canvas after processing. ([e6ab96bb](http://github.com/angular-ui/ng-grid/commit/e6ab96bbae7d1ec5848a65974f5addea8e012589)) +* **SauceLabs:** Updating Sauce Labs scripts per suggestion. ([ccd0bef3](http://github.com/angular-ui/ng-grid/commit/ccd0bef30c748c7dd4eb74e9f951787256c1ec25)) +* **gridMenu:** Fixing gridMenu undefined error. ([2f5ac879](http://github.com/angular-ui/ng-grid/commit/2f5ac879f27c90ff8de6ff873414a59dfc8cd2cd)) +* **enableColumnResizing:** enableColumnResizing accumulates watchers with each table $digest cycle (#5933) ([954bebad](http://github.com/angular-ui/ng-grid/commit/954bebad33f6a4442658db1a100687a9cd4574cb)) +* **ui-grid-util:** Reducing amount of digests triggered by ui-grid-util. ([1f116fe8](http://github.com/angular-ui/ng-grid/commit/1f116fe88094d178af11f9925b822fb9643779d0)) +* **uiGridDirective:** Reducing digest cycles and improving coverage. ([56f0dc11](http://github.com/angular-ui/ng-grid/commit/56f0dc11978b9231373435d9e73da81375b5cda7)) + + +#### Features + +* **themes:** Adding a new paper theme to the customizer tool and more features to that grid. ([30f64925](http://github.com/angular-ui/ng-grid/commit/30f64925af90cff9c6b3506fb354ee883c41a3f5)) + + +### v4.0.2 (2016-12-30) + + +#### Bug Fixes + +* **bower and npm:** Fixing bower.json and package.json configuration. ([84b4f328](http://github.com/angular-ui/ng-grid/commit/84b4f3284e5d928e6dc713f4c33a29d0d233ae52)) +* **memory_leaks:** Ensuring events get unbound when grid is destroyed. (#5913) ([da942e90](http://github.com/angular-ui/ng-grid/commit/da942e90f082b851a08a3114813af88cc5d8b85e)) +* **modifyRows:** modifyRows uses the new entity when using enableRowHashing ([138d1499](http://github.com/angular-ui/ng-grid/commit/138d14994d240764f7be71d25c3034e2eaadb0a7)) + + +#### Features + +* **core:** expose GridMenuTemplate ([5f15eab5](http://github.com/angular-ui/ng-grid/commit/5f15eab5f9234d47de5d45def65829b3818922ef)) + + +### v4.0.1 (2016-12-15) + + +#### Bug Fixes + +* **core:** Adding back digest triggers when using $timeout ([d8820874](http://github.com/angular-ui/ng-grid/commit/d8820874312250919a64d0dbfa26b6a6f7e6286b)) + + +## v4.0.0 (2016-12-09) + + +#### Bug Fixes + +* Fix for dropdown losing focus when using scrollToFocus from another editfield ([02110029](http://github.com/angular-ui/ng-grid/commit/02110029cf9a5a8096f64db48c1d9b0798ea127e)) +* **5515:** Fix validation documentation ([b017d7f0](http://github.com/angular-ui/ng-grid/commit/b017d7f0541b869239326f5263dfa25f6cef7a7b)) +* **cellnav:** when grid has only one focusable column, should navigate up and down ([d3801bad](http://github.com/angular-ui/ng-grid/commit/d3801bad38055afe624c1a2b25a416cd5c8d8d16)) +* **core:** Do not clear condition when clearing all filters ([97be89a2](http://github.com/angular-ui/ng-grid/commit/97be89a2e7ce4bd7636c4812893959b3608e383d), closes [#4657](http://github.com/angular-ui/ng-grid/issues/4657)) +* **edit:** fix boolean edit issue on Firefox and Safari on macOS ([2059db95](http://github.com/angular-ui/ng-grid/commit/2059db95adcf3fcb6a44e8b04bd045920a71b6d0)) +* **fonts:** Ensuring that fonts are added to the ui-grid package. (#5844) ([8096ed04](http://github.com/angular-ui/ng-grid/commit/8096ed043bd33f8b401817296f74e94dbf35ea3d)) +* **infinite-scroll:** Remove returns of adjustInfiniteScrollPosition. ([156665f7](http://github.com/angular-ui/ng-grid/commit/156665f7e41054d9ca8ad6989fe325b69282fb45)) +* **pagination:** + * off-by-one error ([29fdb7cd](http://github.com/angular-ui/ng-grid/commit/29fdb7cd485607e0c7e579df82880b4aceae0d35)) + * Refactor 'getLastRowIndex' to call 'getFirstRowIndex' ([13bf8079](http://github.com/angular-ui/ng-grid/commit/13bf80796e0e8b60109c6875de26c6c5bdeb2c8d)) + + +#### Features + +* **Scrolling:** Adding support for a custom scroller. (#5859) ([3c6fcb44](http://github.com/angular-ui/ng-grid/commit/3c6fcb44e8514cb2ac076a667d637e4b60c3a907)) +* **core:** Reduce digest triggers when using $timeout ([7e25a9b1](http://github.com/angular-ui/ng-grid/commit/7e25a9b1b5d8278e8122b793adc6a657931f7f4f)) +* **emptyBaseLayer:** made emptyBaseLayer module to create grid background ([852f6993](http://github.com/angular-ui/ng-grid/commit/852f6993978638697cfed6d2fb4f2a0d7cbb3de2)) +* **pagination:** Add custom pagination with variable page sizes ([50880578](http://github.com/angular-ui/ng-grid/commit/50880578f6adcbd9ad59b55b157d94aa4151aaef)) + + +#### Breaking Changes + +* UI Grid is no longer compatible with +angular versions below 1.4 + ([4341af5e](http://github.com/angular-ui/ng-grid/commit/4341af5e47974e318a44951b72d93168bed445e2)) + + +### v3.2.9 (2016-09-21) + + +#### Bug Fixes + +* #5667 honor editModelField when checking new vs old cell value ([d846c5b1](http://github.com/angular-ui/ng-grid/commit/d846c5b1d4fb5896285d9467bd6964b71b6e55e6)) +* use grid headerHeight instead of random 30px value for menu height calculation ([5a67dd82](http://github.com/angular-ui/ng-grid/commit/5a67dd82c43b621aedb53efacf5f9530f60e8995)) +* prevent hidden columns triggering unnecessary re-order ([8413d8e3](http://github.com/angular-ui/ng-grid/commit/8413d8e30e7ddf815a5b429378bcb9547bf3c695)) +* update bower.json and package.json to include files for current npm ([6e2331b7](http://github.com/angular-ui/ng-grid/commit/6e2331b726bd08b209ca3927eb6074d4f1c8d6dd)) +* Wrong sort priorities 4653 and 4196 ([17296cdc](http://github.com/angular-ui/ng-grid/commit/17296cdcd57a67b16168128444b2c87d914b9ec2)) +* **3901:** Raise rowsVisibleChanged on setVisibleRows. ([801042b9](http://github.com/angular-ui/ng-grid/commit/801042b96d7530f5e0b04397bbe597056e1b06d6)) +* **col-movable:** prevent hidden columns triggering unnecessary re-order event ([644b324b](http://github.com/angular-ui/ng-grid/commit/644b324b42e83cf8014ffcd05acc948084698aaa)) +* **columnMoving:** handle touch events properly when jQuery is used (#5666) ([a81e5d5e](http://github.com/angular-ui/ng-grid/commit/a81e5d5e16f5b323d8d202e464a828dfce8d7f78)) +* **filter:** Fix noTerm option for filtering ([45bb113a](http://github.com/angular-ui/ng-grid/commit/45bb113a861525cd93ca63514376d7fe2890d18a)) +* **selection:** remove a logic bug in setSelected(..) ([57cdb31b](http://github.com/angular-ui/ng-grid/commit/57cdb31b8653e19ed306a9a54055c5060adbbf1b)) + + +#### Features + +* **core:** Allow binding a column to the row entity itself ([65e49fd5](http://github.com/angular-ui/ng-grid/commit/65e49fd59a165672c71738e4ba7df553e7f6e673)) +* **filter:** Add rawTerm option to columnDef filter options ([a75e65a6](http://github.com/angular-ui/ng-grid/commit/a75e65a6d866de174c0021dcfa6aa766e38a240d)) + + +### v3.2.8 (2016-09-09) + + +#### Bug Fixes + +* #5667 honor editModelField when checking new vs old cell value ([d846c5b1](http://github.com/angular-ui/ng-grid/commit/d846c5b1d4fb5896285d9467bd6964b71b6e55e6)) +* Wrong sort priorities 4653 and 4196 ([17296cdc](http://github.com/angular-ui/ng-grid/commit/17296cdcd57a67b16168128444b2c87d914b9ec2)) +* **columnMoving:** handle touch events properly when jQuery is used (#5666) ([a81e5d5e](http://github.com/angular-ui/ng-grid/commit/a81e5d5e16f5b323d8d202e464a828dfce8d7f78)) +* **filter:** Fix noTerm option for filtering ([45bb113a](http://github.com/angular-ui/ng-grid/commit/45bb113a861525cd93ca63514376d7fe2890d18a)) + + +#### Features + +* **core:** Allow binding a column to the row entity itself ([65e49fd5](http://github.com/angular-ui/ng-grid/commit/65e49fd59a165672c71738e4ba7df553e7f6e673)) + + +### v3.2.7 (2016-09-09) + + +#### Bug Fixes + +* #5667 honor editModelField when checking new vs old cell value ([d846c5b1](http://github.com/angular-ui/ng-grid/commit/d846c5b1d4fb5896285d9467bd6964b71b6e55e6)) +* Wrong sort priorities 4653 and 4196 ([17296cdc](http://github.com/angular-ui/ng-grid/commit/17296cdcd57a67b16168128444b2c87d914b9ec2)) +* **columnMoving:** handle touch events properly when jQuery is used (#5666) ([a81e5d5e](http://github.com/angular-ui/ng-grid/commit/a81e5d5e16f5b323d8d202e464a828dfce8d7f78)) +* **filter:** Fix noTerm option for filtering ([45bb113a](http://github.com/angular-ui/ng-grid/commit/45bb113a861525cd93ca63514376d7fe2890d18a)) +* **runValidators:** runValidators now returns a promise(..) ([f3bf313](http://github.com/angular-ui/ng-grid/commit/57cdb31b8653e19ed306a9a54055c5060adbbf1b)) + + +#### Features + +* **core:** Allow binding a column to the row entity itself ([65e49fd5](http://github.com/angular-ui/ng-grid/commit/65e49fd59a165672c71738e4ba7df553e7f6e673)) + + +### v3.2.6 (2016-07-14) + + +#### Bug Fixes + +* use grid headerHeight instead of random 30px value for menu height calculation ([5a67dd82](http://github.com/angular-ui/ng-grid/commit/5a67dd82c43b621aedb53efacf5f9530f60e8995)) +* prevent hidden columns triggering unnecessary re-order ([8413d8e3](http://github.com/angular-ui/ng-grid/commit/8413d8e30e7ddf815a5b429378bcb9547bf3c695)) +* update bower.json and package.json to include files for current npm ([6e2331b7](http://github.com/angular-ui/ng-grid/commit/6e2331b726bd08b209ca3927eb6074d4f1c8d6dd)) +* **col-movable:** prevent hidden columns triggering unnecessary re-order event ([644b324b](http://github.com/angular-ui/ng-grid/commit/644b324b42e83cf8014ffcd05acc948084698aaa)) +* **selection:** remove a logic bug in setSelected(..) ([57cdb31b](http://github.com/angular-ui/ng-grid/commit/57cdb31b8653e19ed306a9a54055c5060adbbf1b)) + + +### v3.2.5 (2016-07-01) + +* update for package.json creation for npm + + +### v3.2.4 (2016-06-30) + + +#### Bug Fixes + +* update bower.json and package.json to include files for current npm ([f7c6700d](http://github.com/angular-ui/ng-grid/commit/f7c6700dedacfa213eaa65838d127aab0bf24867)) +* **col-movable:** prevent hidden columns triggering unnecessary re-order event ([644b324b](http://github.com/angular-ui/ng-grid/commit/644b324b42e83cf8014ffcd05acc948084698aaa)) + + +### v3.2.3 (2016-06-29) + + +### v3.2.2 (2016-06-29) + + +#### Bug Fixes + +* **col-movable:** prevent hidden columns triggering unnecessary re-order event ([644b324b](http://github.com/angular-ui/ng-grid/commit/644b324b42e83cf8014ffcd05acc948084698aaa)) + + +### v3.2.1 (2016-06-24) + +#### Bug Fixes + +* **col-movable:** prevent hidden columns triggering unnecessary re-order event ([644b324b](http://github.com/angular-ui/ng-grid/commit/644b324b42e83cf8014ffcd05acc948084698aaa)) + + +## v3.2.0 (2016-06-20) + +#### Bug Fixes + +* Incorrect scroll percentage calculation in scrollHorizontal method ([f075dcbe](http://github.com/angular-ui/ng-grid/commit/f075dcbe36f1c617a2baa233deebe2e42cc854c9)) +* Introduce gridDimensionChanged event ([40ec65c0](http://github.com/angular-ui/ng-grid/commit/40ec65c0501d29d94f3d369d8e8f24b4d575cd0d), closes [#5090](http://github.com/angular-ui/ng-grid/issues/5090)) +* **cellNav:** notifyText incorrect if cellFilter had string literal parameter (#5404) ([08a9b687](http://github.com/angular-ui/ng-grid/commit/08a9b687697fe3b9592ef563a2c2ffc832bb95e0)) +* **core:** + * add row headers in order ([572766de](http://github.com/angular-ui/ng-grid/commit/572766deec7a7d4b815b8d8d5bd30fd6c02e5a09)) + * sort priorities were not displaying when 2nd sort was added ([47c77de4](http://github.com/angular-ui/ng-grid/commit/47c77de40c9a54ace853e297a0940053c10fea4a)) + * add false flag to $timeout and $interval to prevent $apply Nice increase in scro ([4ba28205](http://github.com/angular-ui/ng-grid/commit/4ba28205926ac98d16873db3c92866ff47d362fa)) + * Sort Priority Zero Based ([62dbcfe9](http://github.com/angular-ui/ng-grid/commit/62dbcfe917235d827ac09755f37d0896904a99b0), closes [#4685](http://github.com/angular-ui/ng-grid/issues/4685)) + * correct filter detection in autoAdjustHeight ([31c8e9e8](http://github.com/angular-ui/ng-grid/commit/31c8e9e8375236938c8244d87ac7f5d10bd4efe0)) +* **expandable:** Stop adding Expandable column and behavior if feature is disabled ([0bb1208c](http://github.com/angular-ui/ng-grid/commit/0bb1208cd5a6cf664c8eecdf9b544d936712b494)) +* **exporter:** + * remove coma since we use set columnseperator or default,addition to #5130 ([d0e40eb7](http://github.com/angular-ui/ng-grid/commit/d0e40eb7b652b17d63f6660b229cff6e51d37c3e)) + * use boolean ieVersion for csv export ([17b1a0a4](http://github.com/angular-ui/ng-grid/commit/17b1a0a4a4432046e5aea022265967cee60290c1)) + * pass column seperator options as param to downloadFile ([aa9b7793](http://github.com/angular-ui/ng-grid/commit/aa9b7793bbd73ce7d70f8a67cd214372579b0a2a)) +* **filter:** Custom Filter fix (#4012) ([d6d00c21](http://github.com/angular-ui/ng-grid/commit/d6d00c2142ed870ca5f29cccdd3e218b8d83a408)) +* **getTemplate:** Updated custom templates as promises condition (#5311) ([01cdfe41](http://github.com/angular-ui/ng-grid/commit/01cdfe413389aa4e7dbb2874d46035f217b60b57)) +* **i18n:** Add japanese translation ([805c8805](http://github.com/angular-ui/ng-grid/commit/805c880567b0f35a35b3c03f340276821c3f7966)) +* **infinitescroll:** make sure more data is always loaded if scrolled to top/bottom quickly (#5183) ([49536222](http://github.com/angular-ui/ng-grid/commit/49536222de1a0d0b710713b67eaf007d0f80232f)) +* **saveState:** - Allow saving of pagination state ([c6d3b2a1](http://github.com/angular-ui/ng-grid/commit/c6d3b2a1f3df9e7374c91280b243d5592013f7a6), closes [#4146](http://github.com/angular-ui/ng-grid/issues/4146)) +* **util:** deltaMode being set to 0 (#5155) ([8e5d4c4d](http://github.com/angular-ui/ng-grid/commit/8e5d4c4d0f5bddf50bd2f2dec8fe23a087289181)) + + +#### Features + +* **expandable:** Add 'expandRow', 'collapseRow' and 'getExpandedRows' ([005ca6a5](http://github.com/angular-ui/ng-grid/commit/005ca6a54c10ad60188cfb9529f92353f80cbd57)) + + +#### Breaking Changes + +* It is possible that your application will show row headers in a different order after this change. +If you are adding rowHeaders, use the new order parameter in grid.addRowHeader(colDef, order) to specify where you +want the header column. + ([572766de](http://github.com/angular-ui/ng-grid/commit/572766deec7a7d4b815b8d8d5bd30fd6c02e5a09)) +* **GridOptions.columnDef.sort.priority** now expects the lowest value +to be 0. +The Grid Header will display a sort priority of 0 as 1. +Using `if(col.sort.priority)` to determine if a column is sorted is no +longer valid as `0 == false`. +Saved grid objects may be affected by this. + ([62dbcfe9](http://github.com/angular-ui/ng-grid/commit/62dbcfe917235d827ac09755f37d0896904a99b0)) + + +### v3.1.1 (2016-02-09) + + +#### Bug Fixes + +* **core:** + * sort priorities were not displaying when 2nd sort was added ([47c77de4](http://github.com/angular-ui/ng-grid/commit/47c77de40c9a54ace853e297a0940053c10fea4a)) + * add false flag to $timeout and $interval to prevent $apply Nice increase in scro ([4ba28205](http://github.com/angular-ui/ng-grid/commit/4ba28205926ac98d16873db3c92866ff47d362fa)) + * Sort Priority Zero Based ([62dbcfe9](http://github.com/angular-ui/ng-grid/commit/62dbcfe917235d827ac09755f37d0896904a99b0), closes [#4685](http://github.com/angular-ui/ng-grid/issues/4685)) + * correct filter detection in autoAdjustHeight ([31c8e9e8](http://github.com/angular-ui/ng-grid/commit/31c8e9e8375236938c8244d87ac7f5d10bd4efe0)) +* **i18n:** Add japanese translation ([805c8805](http://github.com/angular-ui/ng-grid/commit/805c880567b0f35a35b3c03f340276821c3f7966)) +* **saveState:** - Allow saving of pagination state ([c6d3b2a1](http://github.com/angular-ui/ng-grid/commit/c6d3b2a1f3df9e7374c91280b243d5592013f7a6), closes [#4146](http://github.com/angular-ui/ng-grid/issues/4146)) + + +#### Features + +* **expandable:** Add 'expandRow', 'collapseRow' and 'getExpandedRows' ([005ca6a5](http://github.com/angular-ui/ng-grid/commit/005ca6a54c10ad60188cfb9529f92353f80cbd57)) + + +#### Breaking Changes + +* **GridOptions.columnDef.sort.priority** now expects the lowest value +to be 0. +The Grid Header will display a sort priority of 0 as 1. +Using `if(col.sort.priority)` to determine if a column is sorted is no +longer valid as `0 == false`. +Saved grid objects may be affected by this. + ([62dbcfe9](http://github.com/angular-ui/ng-grid/commit/62dbcfe917235d827ac09755f37d0896904a99b0)) + + +## v3.1.0 (2016-01-17) + + +#### Bug Fixes + +* **core:** + * fix #4592. this in link functions = window, not the directive. I could not find ([cad146bd](http://github.com/angular-ui/ng-grid/commit/cad146bd5c8a36b2c9ad7e023895aafbf54dce0e)) + * Fix #4776 scrollTo doesn't work with higher rowHeight ([0d7d37bb](http://github.com/angular-ui/ng-grid/commit/0d7d37bb6dfac4be9c6f0fcaccf8d73657417f63)) + * Column Menu Hidden by Hiding Column ([b54cc344](http://github.com/angular-ui/ng-grid/commit/b54cc344b0a0e0a31e3778aa7c9b1ee8d09ad546), closes [#3953](http://github.com/angular-ui/ng-grid/issues/3953)) + * Return promise from `handleWindowResize` method ([ad0095eb](http://github.com/angular-ui/ng-grid/commit/ad0095eb85c66154395c1bc64b553fffa1621c7d)) +* **edit:** Change setViewValue to use a fromCharCode based on evt.which ([f4054b79](http://github.com/angular-ui/ng-grid/commit/f4054b79017ee55869ffe18ba29d684dd1313d79)) +* **grid:** adjust grid height when initial height is equal to row height ([33b4d6d2](http://github.com/angular-ui/ng-grid/commit/33b4d6d2b2f4f5ff9b64e1cc3cc658dc267b7266)) +* **grouping:** When 'field' in columnDef is referred to some javascript object than a primitive ([d6320636](http://github.com/angular-ui/ng-grid/commit/d632063647787dae2d6641933d44c74887b7ecd9)) +* **move-columns:** Fix #3448 - The issue is caused by setting a left position to moving element rel ([ab0dc113](http://github.com/angular-ui/ng-grid/commit/ab0dc1136db20cc5201c38ecf418ffa34fa3ccde)) +* **uiGrid:** Fix race condition in data watcher ([b22681a3](http://github.com/angular-ui/ng-grid/commit/b22681a3e70675983a8247d01d39df96d9646118), closes [#4532](http://github.com/angular-ui/ng-grid/issues/4532)) + + +#### Features + +* **edit:** add a function to retrieve dropdown options ([480927ff](http://github.com/angular-ui/ng-grid/commit/480927ffdd6ae1e4951c149a925e2dae5e2352fc)) +* **i18n:** + * turkish(tr) translation fix ([05715b8b](http://github.com/angular-ui/ng-grid/commit/05715b8b23f45b16c93385cd2d235cc306a68b1e)) + * turkish(tr) translation ([4d147574](http://github.com/angular-ui/ng-grid/commit/4d147574d69b5416e5ba99f7a5a0718af118a30c)) + * improve da translation ([70fdf8df](http://github.com/angular-ui/ng-grid/commit/70fdf8df18c0a9319379cfcc7441c98465a6d63d)) +* **sort:** sort priority indicator hiding ([7725eac3](http://github.com/angular-ui/ng-grid/commit/7725eac316ffc48f63792b0ba7e4b898b4663467)) + + +### v3.0.7 (2015-10-06) + + +#### Bug Fixes + +* **Header:** Use IE9 condcom to fix header sizing ([a549eaa7](http://github.com/angular-ui/ng-grid/commit/a549eaa76c4a0fcb9cfd48f62cb4081b7734caf8), closes [#3854](http://github.com/angular-ui/ng-grid/issues/3854)) (REVERTED [#4417](https://github.com/angular-ui/ui-grid/pull/4417)) +* **core:** + * Fixes sort priority starting at 2 ([c910a6a3](http://github.com/angular-ui/ng-grid/commit/c910a6a318fd6ae832e3265a9220c43431f7e97c)) + * scrollTo rightBound calculation ([28227877](http://github.com/angular-ui/ng-grid/commit/2822787719f230808898b940f04bc7d63c0869f5)) +* **infinite-scroll:** load more data if needed ([65a541f3](http://github.com/angular-ui/ng-grid/commit/65a541f39c708a070244e09aa0c7bbe4b0506eff)) +* **pagination:** fix pager select not showing 3 digits on some browsers ([b183fc79](http://github.com/angular-ui/ng-grid/commit/b183fc79f785a8ff433cc52538b872a874c7732a)) +* **selection:** + * properly update selectAll flag based on current selection ([86badfd2](http://github.com/angular-ui/ng-grid/commit/86badfd2562e21179175b0974829ff7c159fc218)) + * reset selectedCount on clearSelectedRows If your data is completely replaced by ([880ce190](http://github.com/angular-ui/ng-grid/commit/880ce1905fbefcb822b0a20f4c7b183ba9b09f79)) + + +#### Features + +* **core:** + * add sortDirectionCycle column option ([3eca46e9](http://github.com/angular-ui/ng-grid/commit/3eca46e99766eb0cc9f330948f68739dbf7d7bff)) + * Adds sort priority number to header ([ca47b8ab](http://github.com/angular-ui/ng-grid/commit/ca47b8abd7d114cb7622cd8c08a677e25134d268)) +* **i18n:** completes nl translation ([b7326d81](http://github.com/angular-ui/ng-grid/commit/b7326d814938f079e32ef574c9503c7ae40c4244)) +* **sort:** Give more information to the sort functions ([0e094c97](http://github.com/angular-ui/ng-grid/commit/0e094c97fc55d064150e1a33a3042c5091327be3)) + + +### v3.0.6 (2015-09-07) + + +#### Bug Fixes + +* **gridUtil:** Fixes gridUtil.off.mousewheel event handler ([4057c64d](http://github.com/angular-ui/ng-grid/commit/4057c64d89d8c762b156961d565b65f9d9340749)) +* **infiniteScroll:** Fixes infinitescroll scrolling +* **moveColumns:** Restore column order after altering columnDefs array. ([2d433bb](http://github.com/angular-ui/ng-grid/commit/2d433bb40ff089223dd019f35543a65d3d801a84)) +* **pinnedColums:** Included pinned columns in export of visibile data. ([0b37bc4](http://github.com/angular-ui/ng-grid/commit/0b37bc403d3326514485e2c5a1a2bbed2a84ca65)), closes ([#3888](http://github.com/angular-ui/ng-grid/issues/3888)) + + +### v3.0.5 (2015-08-25) + + +#### Bug Fixes + +* **cellNav:** Error when field defined with number ([5b74559f](http://github.com/angular-ui/ng-grid/commit/5b74559f3f2a34cbe3e4b1eca7c6e8df35b2d392), closes [#4258](http://github.com/angular-ui/ng-grid/issues/4258)) +* **columns:** don't reset resized columns on data reset by default ([bda48aab](http://github.com/angular-ui/ng-grid/commit/bda48aabeb7898d63d5e05244fe88b37ba552899), closes [#4005](http://github.com/angular-ui/ng-grid/issues/4005)) +* **core:** + * fix #4180 by adding validity check for minWidth and maxWidth ([5b03cb2d](http://github.com/angular-ui/ng-grid/commit/5b03cb2da798c298eb78d2e2dfdf55bbb3d4bc51)) + * IE does not render correctly when binding is used in style. use ng-style instead ([9aea44ac](http://github.com/angular-ui/ng-grid/commit/9aea44ac78c3f27b1fbc2c0b70760511c5b37030)) +* **customizer:** Fixes less customizer in docs ([f739d9fd](http://github.com/angular-ui/ng-grid/commit/f739d9fd88abef67172496b8dab4c257ed8a7b09), closes [#4079](http://github.com/angular-ui/ng-grid/issues/4079), [#3918](http://github.com/angular-ui/ng-grid/issues/3918)) +* **edit:** fixes #4129 by only adding edit listener events when needed because of 'track by ([e6bc3009](http://github.com/angular-ui/ng-grid/commit/e6bc3009612570a4197aa50d8a908c6e99e8fe35)) +* **expandable:** fix #4156 by calling stopProp on subgrid scroll ([a7dd337a](http://github.com/angular-ui/ng-grid/commit/a7dd337a7225941aeb203628d249bb7b173a5471)) +* **less:** Makes less bootstrap dir a variable ([654c75f9](http://github.com/angular-ui/ng-grid/commit/654c75f9a9ded0a1d1e70a1e23668cd7fc4da03f), closes [#3368](http://github.com/angular-ui/ng-grid/issues/3368)) +* **pagination:** avoid initial double firing of `paginationChanged` ([1407038b](http://github.com/angular-ui/ng-grid/commit/1407038b206a8cdc4590d84d079ed22b3d087853)) + + +#### Features + +* **core:** + * Adds GridRowColumn to core ([2bed5307](http://github.com/angular-ui/ng-grid/commit/2bed5307c11e3882860c73f6d5f7e9a14d8adf74)) + * Add Clear all filters to grid menu ([77ffba5a](http://github.com/angular-ui/ng-grid/commit/77ffba5abf7b9efbbf63f37f13e2b94b9b8a483d)) +* **i18n:** Completes zh-cn translation. ([0ad28408](http://github.com/angular-ui/ng-grid/commit/0ad28408c60ef7187f4a4e61efda9e0c62d79452)) + + +### v3.0.4 (2015-08-13) + + +#### Bug Fixes + +* **grouping:** Grouping now raises a sort changed event ([d30b1ad3](http://github.com/angular-ui/ng-grid/commit/d30b1ad343ace939bf165bad2b061638a1404692), closes [#4155](http://github.com/angular-ui/ng-grid/issues/4155)) + + +### v3.0.3 (2015-08-10) + + +#### Bug Fixes + +* **build:** Fixes Grunt Task not Publishing ([7571028d](http://github.com/angular-ui/ng-grid/commit/7571028d70069fed63bee65aadd606b5caf41ac6)) + + +### v3.0.2 (2015-08-10) + + +#### Bug Fixes + +* flushDirtyRows will not throw an error when no dirty rows ([d46d04ca](http://github.com/angular-ui/ng-grid/commit/d46d04ca3574630ae09eae687e4cf4ea620c4321)) +* **Build:** + * Allow Angular 1.3.x upper constraint ([13d93f4e](http://github.com/angular-ui/ng-grid/commit/13d93f4e10f1f5e0fd7409eb258692876ed0f1b7), closes [#4064](http://github.com/angular-ui/ng-grid/issues/4064)) + * Handle -stable suffix for stable files ([f6c881e9](http://github.com/angular-ui/ng-grid/commit/f6c881e91d3eb26a8ed26d42189790b37b32f82f)) +* **Grid:** Allow >45k row identities ([d533200f](http://github.com/angular-ui/ng-grid/commit/d533200f7e3702e61115e2e507f4201f9ba08319)) +* **cellNav:** cellNav not getting attached to left container if it is built after body is rend ([36f386f4](http://github.com/angular-ui/ng-grid/commit/36f386f48419b378b93bd11da2914fb7c9649e35)) +* **core:** + * consider enableFiltering in autoAdjustHeight ([43974c48](http://github.com/angular-ui/ng-grid/commit/43974c48784bc5a2b61e6050489160c82131537c)) + * fix template issue in angular 1.2 ([d9c50cf3](http://github.com/angular-ui/ng-grid/commit/d9c50cf39b9b03c06bddf8515f07cbb9d9f60470)) +* **edit:** + * fix for Chrome and numeric inputs ([7d8af94c](http://github.com/angular-ui/ng-grid/commit/7d8af94c41baa0c7f81dce9fe7786dab814e9b8c)) + * selecting text no longer required on editor After implementing viewPortKeyPress, ([d609a108](http://github.com/angular-ui/ng-grid/commit/d609a108402293f49220d1523a9089ddd390aa78)) + * add/remove mousedown events in cellNav on beginEdit/endEdit A recent change by A ([708231f9](http://github.com/angular-ui/ng-grid/commit/708231f9f6e1f12f0f0f7d15eb8415dd0a7b7f11)) + + +#### Features + +* **cellNav:** Accessibility Support to Cell Nav ([9532de2b](http://github.com/angular-ui/ng-grid/commit/9532de2bdb083a0bb40a6099924e98893ab354e7), closes [#3896](http://github.com/angular-ui/ng-grid/issues/3896)) +* **core:** + * Two new directives to one bind ([a9d2f903](http://github.com/angular-ui/ng-grid/commit/a9d2f903848786fa09122354cfd00e11abbdb627)) + * grid menus accessible ([1d577b15](http://github.com/angular-ui/ng-grid/commit/1d577b1514c26fc005a47506a600b38d8d271a9a)) + * Accessibility and keyboard support to the grid header. ([1f1de5a4](http://github.com/angular-ui/ng-grid/commit/1f1de5a40ddf12311d719a7b58c1bbcd4b999612)) + * Accessibility and keyboard support to the filter controls. ([11a1ae55](http://github.com/angular-ui/ng-grid/commit/11a1ae55d4e4b6dab58f192eec9e6ddd34730446)) + * Basic screen reader accessibility functionality ([377485a4](http://github.com/angular-ui/ng-grid/commit/377485a47dcb32868f155c880108e3f07ec74820)) +* **edit:** raise beginCellEdit in timeout allows complex editors time to render so they can ([6b5807fe](http://github.com/angular-ui/ng-grid/commit/6b5807fe5ddd0bba9a4b7535d5109923a1981388)) +* **gridUtil:** Focus helper functions ([94e50a53](http://github.com/angular-ui/ng-grid/commit/94e50a532f7cef928385a5922169a88309c013b6)) +* **i18n:** + * Create ta.js ([40c58651](http://github.com/angular-ui/ng-grid/commit/40c58651baa3a008149bf79abd55875d8a7ae823)) + * accessibility i18n terms to 'en' ([e5c82998](http://github.com/angular-ui/ng-grid/commit/e5c8299839000ebba88fa43011f3778918c51b0b)) +* **pagination:** Accessibiliy & Keyboard Support to Pagination Controls ([ee04132a](http://github.com/angular-ui/ng-grid/commit/ee04132a9857d64919c860c329fe09e27d9091fa)) + + +## v3.0.0 (2015-07-17) + + +#### Bug Fixes + +* **Grid:** Force scroll to 100% when necessary ([3bcbe72d](http://github.com/angular-ui/ng-grid/commit/3bcbe72de0f296eedbeeca28f09600c0721824ba), closes [#3772](http://github.com/angular-ui/ng-grid/issues/3772)) +* **Tests:** All e2e tests working in Firefox ([b9cc39f1](http://github.com/angular-ui/ng-grid/commit/b9cc39f1e067a318a38d1390ed4d20695a6a282e)) +* **core:** + * change scrollbar-placeholder background-color to transparent ([18a487ea](http://github.com/angular-ui/ng-grid/commit/18a487ea3b009beb9b584f446d8f0dfabe64304d)) + * add a horizontal scrollbar placeholder when needed ([365f21f0](http://github.com/angular-ui/ng-grid/commit/365f21f0bb8383c2103af0dea6e3a03986db0c04)) + * fix #3666 #3531 #3340 thanks to @500tech-user and @Jacquelin for PR's that led t ([e582174a](http://github.com/angular-ui/ng-grid/commit/e582174a826bb232ddbb4fda8001b64c3273df0d)) +* **edit:** fix lost focus and cell scrolling into view on edit ([e9a6d4eb](http://github.com/angular-ui/ng-grid/commit/e9a6d4eba67dba23c42b54b23054c048cf9d8ebc)) +* **grouping:** grouping a pinned column was broken ([acb7e7b6](http://github.com/angular-ui/ng-grid/commit/acb7e7b636aa9215b2463a2d4282261e95ef87f0)) +* **i18n:** Replace ZWNJ with \u200c in Persian ([2f2936ae](http://github.com/angular-ui/ng-grid/commit/2f2936ae48df6fd9392f9f2ce9dc8369ac9c8261), closes [#3842](http://github.com/angular-ui/ng-grid/issues/3842)) + + +### v3.0.0-rc.22 (2015-06-15) + + +#### Bug Fixes + +* **Edit:** Allow COL_FIELD in editable templates ([fa9066b2](http://github.com/angular-ui/ng-grid/commit/fa9066b263f3ae27c085c85db07561e90fad10bd)) +* **Selection:** Prevent IE from selecting text ([a1bbc0c5](http://github.com/angular-ui/ng-grid/commit/a1bbc0c57148076ddf5b988acc9abb748cbca1e6), closes [#3392](http://github.com/angular-ui/ng-grid/issues/3392)) +* **cellNav:** + * #3528 handle focus into grid from other controls ([92477c7a](http://github.com/angular-ui/ng-grid/commit/92477c7ad97f439582039b574baa2286f724d0ef)) + * IE was scrolling the viewPort to the end when the focuser div received focus. S ([aa563554](http://github.com/angular-ui/ng-grid/commit/aa56355469e0c2fe825f6c063bb2e2f7937817c7)) + * focuser element should not have width or height or else the window will scroll t ([6997d2b7](http://github.com/angular-ui/ng-grid/commit/6997d2b7365e5fad79f0568d5f6a41d3600d69c0)) + * was processing left and right renderContainers where there is no need fix(edit): ([6f5d503d](http://github.com/angular-ui/ng-grid/commit/6f5d503d48c5871a4fd04918a6a6269758ef9bf7)) + * add an empty element to focus on instead of focusing on the viewport ([6937d4d5](http://github.com/angular-ui/ng-grid/commit/6937d4d56d722e8e23c6c0b19e917f8bdc3d8be6)) +* **edit:** + * #3128 remove grid scrollbars when in deepedit to prevent any scrolling of parent ([91077e82](http://github.com/angular-ui/ng-grid/commit/91077e828f450bbb7cb0c76404686110f700e396)) + * deep edit keydown logic wasn't right ([9e995e9e](http://github.com/angular-ui/ng-grid/commit/9e995e9e58582a6c190657c62ddf47632dc38045)) + * tweak the deep edit keydown logic so that Enter and Tab stops editing ([fbc38cb1](http://github.com/angular-ui/ng-grid/commit/fbc38cb17e314ceb48c887b03a9256199f101fe6)) + * #3742 dropdown was not calling out to cellNav for cellNav keys. also refactored ([2edc4d66](http://github.com/angular-ui/ng-grid/commit/2edc4d66193b37734733b2a8a1999921426424b2)) + * Edit events were being attached in gridCell directive even if edit was not enabl ([13ab0945](http://github.com/angular-ui/ng-grid/commit/13ab0945a17597c9a7048fdb95936662a0cfdd82)) +* **gridEdit:** + * #3373 spacebar on checkbox was incorrectly invoking deep edit mode ([4d9ec8b5](http://github.com/angular-ui/ng-grid/commit/4d9ec8b5774b6beeaab05909a7a493aa6f16e72c)) + * issue 2885 non-character fields were invoking edit. Not sure if I got all the k ([025c8939](http://github.com/angular-ui/ng-grid/commit/025c89397184ba44d65b7ad457546538e0cb3f22)) +* **gridUtil:** rtlScrollType using wrong method ([15ee480e](http://github.com/angular-ui/ng-grid/commit/15ee480ef1ad34f1bd99de1f3ddfaa9730998c07), closes [#3637](http://github.com/angular-ui/ng-grid/issues/3637)) +* **moveColumn:** account for width of left container when positioning moving column header. ([06f223bb](http://github.com/angular-ui/ng-grid/commit/06f223bbeb8cf8a82dd70142ab8d46f051df12be), closes [#3417](http://github.com/angular-ui/ng-grid/issues/3417), [#3395](http://github.com/angular-ui/ng-grid/issues/3395)) +* **saveState:** Saving state was storing rowHeader columns, causing issues on restore. ([c9ce96af](http://github.com/angular-ui/ng-grid/commit/c9ce96af75ffde134dba3b8c319b301f41781c33)) +* **treeBase:** Change calculation of number of levels in tree ([26ca6215](http://github.com/angular-ui/ng-grid/commit/26ca621594252f2e8b87687b2667b3e8d2e36226)) +* **uiGrid:** + * Add relatively-positioned wrapper ([9b2c6d51](http://github.com/angular-ui/ng-grid/commit/9b2c6d515968d0502a5a7fa1b6b6f15693669715), closes [#3412](http://github.com/angular-ui/ng-grid/issues/3412)) + * Use track by uid on columns ([e9ea9d47](http://github.com/angular-ui/ng-grid/commit/e9ea9d470823506b76458b9071cd16c3d08fb9e6)) +* **uiGridColumns:** Fix auto-incrementing of column names ([a10f1414](http://github.com/angular-ui/ng-grid/commit/a10f141444043589ecc87a79f74938d1640cdc40)) +* **uiGridHeader:** + * ensure that styles are rebuilt on explicit height ([65ad61f4](http://github.com/angular-ui/ng-grid/commit/65ad61f4439983179be4d44bac3a6cc9151ac094)) + * Recalc all explicit heights ([43f63ac9](http://github.com/angular-ui/ng-grid/commit/43f63ac9f62a133b51d7af2f4a966318eae8e9ac), closes [#3136](http://github.com/angular-ui/ng-grid/issues/3136)) + + +#### Features + +* **grouping:** Add option groupingNullLabel, to group null and undefined values together. ([9fbb1b87](http://github.com/angular-ui/ng-grid/commit/9fbb1b874ecd773649bb27f9eea145b017614e51), closes [#3271](http://github.com/angular-ui/ng-grid/issues/3271)) + + +### v3.0.0-rc.21 (2015-04-28) + + +#### Bug Fixes + +* **Expandable:** Run with lower priority than ngIf ([949013c3](http://github.com/angular-ui/ng-grid/commit/949013c332c5af1b3e37b1d3fa515dfd96c8acb2), closes [#2804](http://github.com/angular-ui/ng-grid/issues/2804)) +* **RTL:** + * Use Math.abs for normalizing negatives ([4acbdc1a](http://github.com/angular-ui/ng-grid/commit/4acbdc1a58d8043d60e3a62d1126b0f69bc6ee86)) + * Use feature detection to determine RTL ([fbb36319](http://github.com/angular-ui/ng-grid/commit/fbb363197ab3975411589dfa0904495f861795c0), closes [#1689](http://github.com/angular-ui/ng-grid/issues/1689)) +* **cellNav:** fix null ref issue in navigate event for oldRowColumn scrollTo should not setF ([02b05cae](http://github.com/angular-ui/ng-grid/commit/02b05cae6d5385e01d00f812662f16009130c647)) +* **pinning:** restore correct width state ([4ffaaf26](http://github.com/angular-ui/ng-grid/commit/4ffaaf26774bae7f52bf4956f45243f6c7dd53a3)) +* **scrolling:** Fix for #3260 atTop/Bottom/Left/Right needed tweaking ([89461bcb](http://github.com/angular-ui/ng-grid/commit/89461bcbcfdfc527655c398df19555738fa9bd63)) +* **selection:** + * allow rowSelection to be navigable if using cellNav; allow rowSelection via the ([95ce7b1b](http://github.com/angular-ui/ng-grid/commit/95ce7b1b694b23f1a7506cf4f6a32d0ae384697c)) + * allow rowSelection to be navigable if using cellNav; allow rowSelection via the ([3d5d6031](http://github.com/angular-ui/ng-grid/commit/3d5d603178f0fcb4cc2abab6ce637c1dd6face8d)) +* **uiGrid:** + * Use margins rather than floats for pinning ([1373b99e](http://github.com/angular-ui/ng-grid/commit/1373b99e1e1680184270d61bca88124efd7a4c14), closes [#2997](http://github.com/angular-ui/ng-grid/issues/2997), [#NaN](http://github.com/angular-ui/ng-grid/issues/NaN)) + * Wait for grid to get dimensions ([e7dfb8c2](http://github.com/angular-ui/ng-grid/commit/e7dfb8c2dfac69bb3a38f7253062367671fec56d)) +* **uiGridColumnMenu:** Position relatively ([9d918052](http://github.com/angular-ui/ng-grid/commit/9d9180520d8d6fd16b897ba4b9fbfc4bb4860ea9), closes [#2319](http://github.com/angular-ui/ng-grid/issues/2319)) +* **uiGridFooter:** Watch for col change ([1f9100de](http://github.com/angular-ui/ng-grid/commit/1f9100defb1489bed46515fb859aed9c9a090e73), closes [#2686](http://github.com/angular-ui/ng-grid/issues/2686)) +* **uiGridHeader:** + * Use parseInt on header heights ([98ed0104](http://github.com/angular-ui/ng-grid/commit/98ed01049015b22caddb651b1884f6e383fc58aa)) + * Allow header to shrink in size ([7c5cdca1](http://github.com/angular-ui/ng-grid/commit/7c5cdca1f471a0a3c1ef340fe65af268df68cae3), closes [#3138](http://github.com/angular-ui/ng-grid/issues/3138)) + + +#### Features + +* **saveState:** add pinning to save state ([b0d943a8](http://github.com/angular-ui/ng-grid/commit/b0d943a82a1d5c64808b759c8b96833e66380b02)) + + +#### Breaking Changes + +* gridUtil will no longer calculate dimensions of hidden +elements + ([e7dfb8c2](http://github.com/angular-ui/ng-grid/commit/e7dfb8c2dfac69bb3a38f7253062367671fec56d)) +* Two events are now emitted on scroll: + + grid.api.core.ScrollBegin + grid.api.core.ScrollEnd + + Before: + grid.api.core.ScrollEvent + After: +grid.api.core.ScrollBegin + +ScrollToIfNecessary and ScrollTo moved from cellNav to core and grid removed from arguments +Before: +grid.api.cellNav.ScrollToIfNecessary(grid, gridRow, gridCol) +grid.api.cellNav.ScrollTo(grid, rowEntity, colDef) + +After: +grid.api.core.ScrollToIfNecessary(gridRow, gridCol) +grid.api.core.ScrollTo(rowEntity, colDef) + +GridEdit/cellNav +When using cellNav, a cell no longer receives focus. Instead the viewport always receives focus. This eliminated many bugs associated with scrolling and focus. + +If you have a custom editor, you will no longer receive keyDown/Up events from the readonly cell. Use the cellNav api viewPortKeyDown to capture any needed keydown events. see GridEdit.js for an example + ([052c2321](http://github.com/angular-ui/ng-grid/commit/052c2321f97b37f860c769dcbd2e8d9094cf2bbf)) + + +### v3.0.0-rc.20 (2015-02-24) + + +#### Bug Fixes + +* **Edit:** Wrong arguments on scrollToIfNecessary ([0fc6b21c](http://github.com/angular-ui/ng-grid/commit/0fc6b21ceff002226697e5d3520b6d4f8374b678)) +* **Filtering:** Redraw grid properly when scrolled ([4c32e3d7](http://github.com/angular-ui/ng-grid/commit/4c32e3d77a1dce55a9354ad4e9d8f59b9fe2732f), closes [#2557](http://github.com/angular-ui/ng-grid/issues/2557)) +* **Grid:** + * fix buildColumns handling same field ([dd6dc150](http://github.com/angular-ui/ng-grid/commit/dd6dc1505b68a865b1c37197c133acbf5a5e58e0), closes [#2789](http://github.com/angular-ui/ng-grid/issues/2789)) + * Redraw needs scrollTop when adding rows ([509e0071](http://github.com/angular-ui/ng-grid/commit/509e0071b1929adecb6e75be20166902a70452ad)) + * Adjust available width for columns ([cf86090f](http://github.com/angular-ui/ng-grid/commit/cf86090f66ee057f541961d563ca42597112bdb4), closes [#2521](http://github.com/angular-ui/ng-grid/issues/2521), [#2734](http://github.com/angular-ui/ng-grid/issues/2734), [#2592](http://github.com/angular-ui/ng-grid/issues/2592)) + * Alter mousewheel event handling ([382f0aed](http://github.com/angular-ui/ng-grid/commit/382f0aeda61a5afde845c8faaed7b04def6fa162)) +* **Pinning:** Move rowStyle() to uiGridViewport ([09f478c2](http://github.com/angular-ui/ng-grid/commit/09f478c2af4a5f47f8b144484fe71b96f62aa64b), closes [#2821](http://github.com/angular-ui/ng-grid/issues/2821)) +* **Scrolling:** Don't trap scroll at 100% down ([78a4b433](http://github.com/angular-ui/ng-grid/commit/78a4b433b4f186a23a2ec35afe88660f8f361119)) +* **cellNav:** Allow tabbing out of grid ([aabcd4da](http://github.com/angular-ui/ng-grid/commit/aabcd4da564391296d182d78415ab51f9853df64), closes [#2339](http://github.com/angular-ui/ng-grid/issues/2339)) +* **uiGridHeader:** + * Refresh grid with new header ([d841b92b](http://github.com/angular-ui/ng-grid/commit/d841b92b8538f0683a2b4dbaf3d84c1273459eaa), closes [#2822](http://github.com/angular-ui/ng-grid/issues/2822)) + * Fix dynamic header heights ([893bb13e](http://github.com/angular-ui/ng-grid/commit/893bb13e08c3c8fac9e886b5021777d752761c2d)) + * Fix header height growth bug ([fee00cdf](http://github.com/angular-ui/ng-grid/commit/fee00cdfa5aeaeb5a10db8ea71e64035eb39bba0), closes [#2781](http://github.com/angular-ui/ng-grid/issues/2781)) +* **uiGridRenderContainer:** + * Use header min-height ([4381ca58](http://github.com/angular-ui/ng-grid/commit/4381ca5857ac09a5e752a95bf18a0356e58de9f8), closes [#2768](http://github.com/angular-ui/ng-grid/issues/2768)) + * Don't reverse X delta ([7a0e075d](http://github.com/angular-ui/ng-grid/commit/7a0e075d73bc9ff876466754404ba6f41decdcfd)) + + +### v3.0.0-rc.19 (2015-02-11) + + +#### Bug Fixes + +* **Filtering:** Let mobile devices tap filter box ([01c22acf](http://github.com/angular-ui/ng-grid/commit/01c22acf18847cc7646e405c13f50cb0b0407835)) +* **Grid:** + * Add css to allow iOS momentum scroll ([48fd5021](http://github.com/angular-ui/ng-grid/commit/48fd5021a19e3792dbc04de55770bfc26a95ce53), closes [#2671](http://github.com/angular-ui/ng-grid/issues/2671)) + * Allow col reordering with column defs ([865573cd](http://github.com/angular-ui/ng-grid/commit/865573cd61df80ed5de22b8fd5da424d4c9dcd8b), closes [#1948](http://github.com/angular-ui/ng-grid/issues/1948)) + * refactor(core) ui-grid $parent scope is now automatically assigned to grid.appScope. gridOptions.appScopeProvider can be used to assign anything to grid.appScope + +* **GridColumn:** Allow for duplicate field coldefs ([82a72130](http://github.com/angular-ui/ng-grid/commit/82a7213057a7d4c559e470c534a6ca834cad2fb6), closes [#2364](http://github.com/angular-ui/ng-grid/issues/2364)) +* **GridRenderContainer:** Redraw with scroll % ([bc2c68ab](http://github.com/angular-ui/ng-grid/commit/bc2c68aba48cdd5a3e840a589fb90cdba363618c), closes [#2357](http://github.com/angular-ui/ng-grid/issues/2357)) +* **Mobile:** + * Don't prevent default container touches ([8fe4e498](http://github.com/angular-ui/ng-grid/commit/8fe4e498caca973c6bcaac737841e38875ed9d37)) + * Allow either touch and mouse events ([654e0ce8](http://github.com/angular-ui/ng-grid/commit/654e0ce83f1ebd824341ab3d63b6d38495a67b80)) + * Bind only to touch or mouse events ([995d3c47](http://github.com/angular-ui/ng-grid/commit/995d3c472530407d19124e622c570fa65319e6fb)) +* **Selection:** Fix selection w/ row templates ([b1a57b69](http://github.com/angular-ui/ng-grid/commit/b1a57b693fb9715198f42d411345ed18548a660b)) +* **Tests:** + * Mistakenly using classList ([04d2fa69](http://github.com/angular-ui/ng-grid/commit/04d2fa694a8e0b02baaf6dcabd4b882c72a4157d)) + * Use fork of csv-js ([ef78823c](http://github.com/angular-ui/ng-grid/commit/ef78823c380dd2ed48829a02d27bdf7f395f23d3)) + * angular 1.3 compiles style blocks ([c7b0a66f](http://github.com/angular-ui/ng-grid/commit/c7b0a66fd42f14b2f6626660aff97d6ca6ab6c67)) + * Add global for Protractor ([77969eb6](http://github.com/angular-ui/ng-grid/commit/77969eb6500aa4384286a939eefa8c4ef0332960)) + * Allow touch event simulation ([2dc02753](http://github.com/angular-ui/ng-grid/commit/2dc0275391b37a1a316dee8a1418c200da5f4347)) +* **Tutorials:** Point back to angular 1.2.26 ([96625e2a](http://github.com/angular-ui/ng-grid/commit/96625e2ac8924051e6b6ec00224e565884a6fdbf)) +* **cellNav:** If cellNav api exists, turn on stuff ([14264540](http://github.com/angular-ui/ng-grid/commit/14264540c4402e77f1cb64458b568146457f6dbe), closes [#2294](http://github.com/angular-ui/ng-grid/issues/2294)) + *refactor(cellNav) remove unused $scope parameter from api methods +* **uiGridHeaderCell:** + * Change test measure method ([7774d30e](http://github.com/angular-ui/ng-grid/commit/7774d30e6085a0f98850a94880961f0511ddce50)) + * Adjust test width measure ([1f786b9c](http://github.com/angular-ui/ng-grid/commit/1f786b9c05c5330480809645c4cd3b549861c720)) +* **uiGridRow:** + * Use promise to get compiled elm fn ([5160b805](http://github.com/angular-ui/ng-grid/commit/5160b8057301c773a3ec62dab43b5c29819737a8)) + * Fix memory leak ([64d3918b](http://github.com/angular-ui/ng-grid/commit/64d3918b55c5dcb01772697cf8fcfd10dac945a4)) +* **edit:** edit cell scope was not being destroyed when element was removed +* **gridApi** add ability to pass _this variable in api.feature.on.eventName + +#### Performance +* **Grid** encapsulate the renderContainer canvasHeight and GridRow.height properties Changes getCanvasHeight function to only recalculate all the row heights when needed. Adds a CanvasH +eightChanged event to api.core + + + + +#### Features + +* **Core:** Implementation for #2483. Adds a showGridFooter option that will create a grid ([d0233601](http://github.com/angular-ui/ng-grid/commit/d0233601a67a445049a710fe84dacdb0b64c1c33)) + * Adds a showGridFooter option that will create a grid footer with the Total Items and Shown Items displayed. Also shows Selected Items if using Selection feature. + +* **cellnav:** provide row option to disallow all cells from having focus ([1bc05ebc](http://github.com/angular-ui/ng-grid/commit/1bc05ebc775a81fd164c562a343bb5d0dd7e7578)) +* **uiGridRow:** Allow dynamic row templates ([a547a52e](http://github.com/angular-ui/ng-grid/commit/a547a52e7b699ffd33bd4c5eb661b22d4c066b39)) + + +#### Breaking Changes +* getExternalScopes() function is removed. Use grid.appScope instead. + external-scopes attribute is removed. Use gridOptions.appScopeProvider to assign values other than $scope.$parent to appScope + +* removed scope parameter from grid.api.cellNav methods + old: + scrollTo($scope, rowEntity, colDef) + scrollToFocus($scope, rowEntity, colDef) + scrollToIfNecessary($scope, row, col) + new: + scrollTo(rowEntity, colDef) + scrollToFocus(rowEntity, colDef) + scrollToIfNecessary(row, col +* scrollbars.WHEN_NEEDED no longer an option +* showFooter option renamed to showColumnFooter; footerRowHeight option renamed to columnFooterHeight + ([d0233601](http://github.com/angular-ui/ng-grid/commit/d0233601a67a445049a710fe84dacdb0b64c1c33)) +* On mobile devices the user will have to long-click to +edit a cell instead of double-clicking + ([654e0ce8](http://github.com/angular-ui/ng-grid/commit/654e0ce83f1ebd824341ab3d63b6d38495a67b80)) +* **rowEdit:** * remove grid from all method signatures +* **importer:** * remove grid from importFile signature +* **core:** * remove grid from notifyDataChange signature + + + +### v3.0.0-RC.18 (2014-12-09) + +#### Bug Fixes + +* **Builds:** Switch to websockets to get SauceLabs tests running again + + +### v3.0.0-RC.17 (2014-12-08) + + +#### Bug Fixes + +* **Aggregation:** Refactor introduced bug ([a54c6639](http://github.com/angular-ui/ng-grid/commit/a54c6639fb9db0dbb1e85346cd445f316f59c1f4)) +* **Builds:** Turn off Safari 5 for SL ([3cf645ea](http://github.com/angular-ui/ng-grid/commit/3cf645eaaf3c119ee41822a2d1bee4a3c31b9c05)) +* **Edit:** Remove leftover console.log() ([3b707584](http://github.com/angular-ui/ng-grid/commit/3b7075840bf6d4788f6c1786654372e90e7a4df3)) +* **Header:** Hidden header height misplacement ([783fefbd](http://github.com/angular-ui/ng-grid/commit/783fefbd89ab51c7257c57c7e592c5aa086d664f), closes [#1995](http://github.com/angular-ui/ng-grid/issues/1995)) +* **Pinning:** Add left border for right container ([e409c54b](http://github.com/angular-ui/ng-grid/commit/e409c54bef5cddc5dfeb4bd4e84d171114960d5a)) +* **RTL:** Put filter cancel on left for RTL ([0885e509](http://github.com/angular-ui/ng-grid/commit/0885e509e9fe46e58f3b016e342088f138cb072c), closes [#2058](http://github.com/angular-ui/ng-grid/issues/2058)) +* **Tests:** Accidentally left in a ddescribe ([e6cf438a](http://github.com/angular-ui/ng-grid/commit/e6cf438a6fda31338427c7bb51f0b998d9b351bb)) +* **cellNav:** Don't setup when directive not there ([9bfa6e3f](http://github.com/angular-ui/ng-grid/commit/9bfa6e3f638548f3f78c565f142771ca65e580bd), closes [#2128](http://github.com/angular-ui/ng-grid/issues/2128)) + + +#### Breaking Changes + +* The `hideHeader` option has been changed to `showHeader` + +To migrate, change your code from the following: + +`hideHeader: true` + +To: + +`showHeader: false` + ([783fefbd](http://github.com/angular-ui/ng-grid/commit/783fefbd89ab51c7257c57c7e592c5aa086d664f)) + + +### v3.0.0-rc.16 (2014-11-13) + + +#### Bug Fixes + +* **Edit:** Retain "focus" in endEdit() ([f3a45ef5](http://github.com/angular-ui/ng-grid/commit/f3a45ef51e5f49c11490654cb757b579163e45ba)) +* **Filter:** Watch running w/o change check ([79f6c21a](http://github.com/angular-ui/ng-grid/commit/79f6c21a45fe11e4ae87f3dd6eda8326bcfbb265)) +* **Grid:** Avoid too-early header height calc ([a335b922](http://github.com/angular-ui/ng-grid/commit/a335b9223c397dca31d5db82f48d62e9b7b43187)) +* **GridRenderContainer:** Correct prevScroll* ([1182b059](http://github.com/angular-ui/ng-grid/commit/1182b059ce64b3b5b4e49054b4737684393e5a19)) +* **Selection:** Change api for getSelectAllState() ([5ffefafc](http://github.com/angular-ui/ng-grid/commit/5ffefafc000351a71b269ce2265f2faddb35b6e7), closes [#2086](http://github.com/angular-ui/ng-grid/issues/2086)) +* **cellNav:** + * Don't lose focus with wrapping nav ([0e27c181](http://github.com/angular-ui/ng-grid/commit/0e27c1815d9fe1aabce2a9ba981bb75655f08979)) + * Minor fixes and speed improvement ([94a31149](http://github.com/angular-ui/ng-grid/commit/94a31149ca0282612d7dc85d87d2a68f2c12367c)) +* **gridUtil:** Allow multiple logDebug params ([c903ecc8](http://github.com/angular-ui/ng-grid/commit/c903ecc89fabebceed576f4ca637bb3c5277a32c)) +* **uiGrid:** + * syntax error, change variable name ([63fedb6c](http://github.com/angular-ui/ng-grid/commit/63fedb6c87ac7b60d3362ce3f9359fdf070848ed)) + * syntax error, change variable name ([181dec76](http://github.com/angular-ui/ng-grid/commit/181dec76aed49ff03a7f2c329ae8b6d65bdd594e)) + * Fix race condition in data watcher ([2b25f249](http://github.com/angular-ui/ng-grid/commit/2b25f249cd133a02f44eec34ccee7f4e77adab16), closes [#2053](http://github.com/angular-ui/ng-grid/issues/2053)) +* **uiGridMenu:** Only run applyHide when not shown ([91bf06f2](http://github.com/angular-ui/ng-grid/commit/91bf06f289632f331fd125851282cb9f5b499bd4)) + + +### v3.0.0-rc.15 (2014-11-11) + + +#### Bug Fixes + +* **uiGridRenderContainer:** Inherit position ([fd353287](http://github.com/angular-ui/ng-grid/commit/fd353287639276083340ef96aa82749367f1deef), closes [#2030](http://github.com/angular-ui/ng-grid/issues/2030)) + + +#### Features + +* **Interpolation:** Handle custom symbols ([555ddecd](http://github.com/angular-ui/ng-grid/commit/555ddecddeb967f338f8bdf4da814d74f8b44495), closes [#1576](http://github.com/angular-ui/ng-grid/issues/1576)) + + +### v3.0.0-rc.14 (2014-11-05) + + +#### Bug Fixes + +* **bower:** Use right angular version spec ([6bd917a0](http://github.com/angular-ui/ng-grid/commit/6bd917a05527afe7f75db51bdaff24b44f554fd9)) + + +### v3.0.0-rc.13 (2014-11-05) + + +#### Bug Fixes + +* **AutoResize:** Redraw all of grid on resize. ([1bb5367c](http://github.com/angular-ui/ng-grid/commit/1bb5367cb304baeee6ca4ecc084cbc02601fb6f6), closes [#1770](http://github.com/angular-ui/ng-grid/issues/1770)) +* **Importer:** Account for older browsers properly ([52823249](http://github.com/angular-ui/ng-grid/commit/528232492ea9860390dd8da1a604103b25f33719)) + + +### v3.0.0-rc.12 (2014-10-08) + + +#### Bug Fixes + +* **Customizer:** Update column menu style ([ffa80002](http://github.com/angular-ui/ng-grid/commit/ffa80002c983b5eb60a4357ba2d7150682f343a2)) +* **Grid:** Fix a few mobile-browser issues ([4bb2d699](http://github.com/angular-ui/ng-grid/commit/4bb2d6996aad6463155bcd01b1521441cab45270)) +* **Pinning:** Fix pinning when col has dyanmic width ([9e022bab](http://github.com/angular-ui/ng-grid/commit/9e022babd07f6261ce6b4325b791c744da895f91), closes [#1634](http://github.com/angular-ui/ng-grid/issues/1634)) +* **RTL:** Unfixed .css() call post-jquery ([8d31f6a1](http://github.com/angular-ui/ng-grid/commit/8d31f6a1a2ae68d9c9b40fa6a2bcd3ed47febe96), closes [#1620](http://github.com/angular-ui/ng-grid/issues/1620)) +* **Selection:** Remove IE11 ellipsis in header ([a8ac76c6](http://github.com/angular-ui/ng-grid/commit/a8ac76c638c65ef3c9a062f9efb7847ebc5ddd94)) +* **Site:** Fix version select box height ([d2699092](http://github.com/angular-ui/ng-grid/commit/d2699092b0fd882c6ed2999595d5805854fa8749)) +* **Tests:** Date() usage failing on Safari 5 ([6440d81c](http://github.com/angular-ui/ng-grid/commit/6440d81c6d2ca2604aff5e0f8904a6e66093b8a9)) +* **Travis:** Make travis run saucelabs tests ([3bc3f272](http://github.com/angular-ui/ng-grid/commit/3bc3f272986c2cae55f26bc6ef8dd8f5fa6ef401)) +* **grunt:** Use correct version of grunt-jscs ([e88600a0](http://github.com/angular-ui/ng-grid/commit/e88600a0118af1535be2e4f66c0e09c41aa15efa)) +* **uiGridCell:** Use promises for tmpl processing ([9fb29cce](http://github.com/angular-ui/ng-grid/commit/9fb29cce5ea5f67c43d2aa5926a4f7a8aa4ba81c), closes [#1712](http://github.com/angular-ui/ng-grid/issues/1712)) +* **uiGridHeader:** Fix height calculations ([cfc24442](http://github.com/angular-ui/ng-grid/commit/cfc24442e08d6e9956c7f94159ddf30b7db185f7), closes [#1639](http://github.com/angular-ui/ng-grid/issues/1639), [#NaN](http://github.com/angular-ui/ng-grid/issues/NaN)) +* **uiGridHeaderCell:** Use hasClass() for IE9 ([7923f229](http://github.com/angular-ui/ng-grid/commit/7923f229a4657538923a535bb7bd5d501320c3b8)) +* **uiGridMenu:** Set box-sizing: content box ([ee418f0d](http://github.com/angular-ui/ng-grid/commit/ee418f0de9c6bf5c727d7eed7daa153dce1c5dd1)) +* **uiGridUtil:** getBorderSize() missing "width" ([174f2521](http://github.com/angular-ui/ng-grid/commit/174f25214caa10ec643db6c81aaa0f3511bf78f4)) + + +#### Features + +* **cellTemplates:** add MODEL_COL_FIELD to cellTemplate parsing so it can be used in ng-model #1633 ([66f3404a](http://github.com/angular-ui/ng-grid/commit/66f3404ade7ead010142ecf047e863f526d960a3)) + + + +### v3.0.0-rc.NEXT Current Master + +#### Breaking Changes +* editableCellTemplates should use MODEL_COL_FIELD instead of COL_FIELD. +https://github.com/angular-ui/ng-grid/issues/1633 MODEL_COL_FIELD variable was added to the cellTemplate and editCellTemplate for utilizing the bound field in ng-model. Edit feature +was changed to use MODEL_COL_FIELD instead of COL_FIELD for consistency. + + + +### v3.0.0-rc.11 (2014-09-26) + + +### v3.0.0-rc.10 (2014-09-25) + + +#### Bug Fixes + +* typo ([1272cf65](http://github.com/angular-ui/ng-grid/commit/1272cf65659a0e84102be9b1fa63f659437383ca)) +* **CHANGELOG:** anchor tag for v2.0.7 was wrong ([d0ecd310](http://github.com/angular-ui/ng-grid/commit/d0ecd31061c6dc20fa6a558dbc9e696debf83874)) +* **column-resizing:** 100% width/height not needed on ui-grid-cell-contents, just ui-grid-inner-cell-c ([6912d14f](http://github.com/angular-ui/ng-grid/commit/6912d14fe4222afe3468df846487b922741ac16b)) +* **customizer:** point to ui-grid-unstable.css at top of page ([4892fbc4](http://github.com/angular-ui/ng-grid/commit/4892fbc4804c1bdf39ef6af07b51bcf753ef0849)) +* **grunt:** + * Add testDependencies file array to karma config for travis ([7a15fe42](http://github.com/angular-ui/ng-grid/commit/7a15fe42e85f11962e000fe34a1cb67d6a28ef5e)) + * typo ([0f641c0f](http://github.com/angular-ui/ng-grid/commit/0f641c0ff055f06ea50b54f86e6c686a2d69284b)) + * cut-release wasn't running done() ([025c61b2](http://github.com/angular-ui/ng-grid/commit/025c61b28807d0b6160bbb9d50b12ea42e881695)) + * Make getVersion() work on travis ([129f28b8](http://github.com/angular-ui/ng-grid/commit/129f28b8ae5c6c5678945fbd279c91788ea19a20)) +* **less:** header variables were in file twice ([f93f675c](http://github.com/angular-ui/ng-grid/commit/f93f675c2bbb491ebe3fce27ebeb00e9adc5cca8)) +* **travis:** + * Need only one script command in travis.yml ([2278c691](http://github.com/angular-ui/ng-grid/commit/2278c69122b9bd1b8aaf2225160e015b4a161fab)) + * had grunt args out of order ([c790245a](http://github.com/angular-ui/ng-grid/commit/c790245ace77b6856d4c046f3a08d4ded188648d)) + * use SauceLabs for e2e tests on travis ([5d8a21da](http://github.com/angular-ui/ng-grid/commit/5d8a21da57a466541aef5b16b032a21e46bbf15b)) + * accidentally switched a couple words ([d67c1871](http://github.com/angular-ui/ng-grid/commit/d67c1871a748d036cc386acc559a7dcfd80a32c3)) +* **ui-grid-body:** + * normalize mouse wheel events because browsers suck ([2075bf3c](http://github.com/angular-ui/ng-grid/commit/2075bf3c04e68b0bbedb378f6d16e7cfe5b4e149)) + * scrolling with mousewheel works ([7933c1a4](http://github.com/angular-ui/ng-grid/commit/7933c1a4f353aaebe5ecb2e9c06fd472564b8152)) +* **uiGrid:** + * introduced a bug that added columns over and over when data was swapped ([7fc55b5d](http://github.com/angular-ui/ng-grid/commit/7fc55b5d255b5940139717e35e891a7b3a5bee3a)) + * Fix elm height calc for hidden grids ([420a0dcf](http://github.com/angular-ui/ng-grid/commit/420a0dcf00351d3b5c256f38da1bc2796d869ddf)) +* **uiGridCell:** re-compile if template changes ([7485e6ef](http://github.com/angular-ui/ng-grid/commit/7485e6efc8ee8105b3bb835e7f82d7f1997dcac6)) +* **uiGridHeader:** + * handle leftover pixels ([64941b3a](http://github.com/angular-ui/ng-grid/commit/64941b3a82b5ae72b1c75b1e46a6dfed2d68a696)) + * Fix header height calculation ([b1562854](http://github.com/angular-ui/ng-grid/commit/b1562854c808814695ab436b2ba63cd1afa28d4d)) +* **uiGridStyle:**
        s were being needlessly added ([ade12ec9](http://github.com/angular-ui/ng-grid/commit/ade12ec98f82400ddbc25ac2676fc88e66408164)) + + +#### Features + +* **AutoResize:** Adding auto-resize feature. ([d0bdd829](http://github.com/angular-ui/ng-grid/commit/d0bdd8295121a9b58a8a3f8ca3a52cdcba400fc0)) +* **RTL:** Adding RTL support and fixing virtualization ([d5a9982d](http://github.com/angular-ui/ng-grid/commit/d5a9982d1f6562ad4a379cfcf53165247065fe3f)) +* **Selection:** Updates ([b20c41c1](http://github.com/angular-ui/ng-grid/commit/b20c41c1715d7c5745bee7c3ea05ec585ab9bd16)) +* **e2e:** protractor testing of docs now works properly with 'grunt dev' ([08787be4](http://github.com/angular-ui/ng-grid/commit/08787be454890a3fbaae324c6741670a59a50f3f)) +* **filtering:** Add row filtering ([16161643](http://github.com/angular-ui/ng-grid/commit/16161643fa4eb925e816252937fadfabc59f55a0)) +* **row-hashing:** Add new row hashing feature ([da87ff9a](http://github.com/angular-ui/ng-grid/commit/da87ff9a4082c0f9f8996d4bdb5225ce191392ef)) +* **rowSort:** Added row sorting ([ce330978](http://github.com/angular-ui/ng-grid/commit/ce330978fe566e9695c30acef04e55221e520960)) +* **uiGridStyle:** Added ui-grid-style directive ([5687723f](http://github.com/angular-ui/ng-grid/commit/5687723f318ac322fa84ce96cc9b7cb97e2946f2)) + + +## 2.0.7 *(2013-07-01)* + +### Features +This release is mainly focused on fixing the grid layout/column widths: + +Columns +---------------------------------- + +* Removed border-left and border-right from columns. Now we are using vertical bars so if someone sets a width to be 400px for a column, the column will actually be 400px, not 401-402px due to the border. This caused the horizontal overflowing to happen producing a horizontal scrollbar. This also fixed issues like https://github.com/angular-ui/ng-grid/issues/411 where you would see columns not extend all the way to the edge and you would get double borders +* Percent calculation is handled before asterisks calculations because percent calculation should take higher priority, and the asterisks calculations will then be able to fill the remaining space instead of horizontally overflowing the viewport + + +---------------------------------- +A fix contributed by @swalters for #436: + +Editing Cells +---------------------------------- + +When editing a cell, the ng-cell-has-focus directive will broadcast a message named ngGridEventStartCellEdit to let all children know that you can now give yourself focus. When the editable cell template is done with editing (usually on a blur event) you need to emit ngGridEventEndCellEdit to let ng-cell-has-focus know that you are done editing and it will then show the non-editable cell template. The reasoning for this is (good quote): "Now I can wrap my input elements in divs/spans, whatever and control exactly what element's blur triggers the end edit" - @swalters. An example (used for ng-input directive): + +scope.$on('ngGridEventStartCellEdit', function () { + elm.focus(); + }); + +angular.element(elm).bind('blur', function () { + scope.$emit('ngGridEventEndCellEdit'); +}); + +Also, there is another option now which is enableCellEditOnFocus (yes, it's coming back) so now you can choose between excel-like editing or enabling edit mode on focus. + +---------------------------------- +Also some fixes contributed by @ebbe-brandstrup are: + +configureColumnWidths +---------------------------------- +* Columns sized with * or % now expand / shrink as other * or %-based columns are hidden / shown + * Note: the changes auto-expand/shrink only take effect on-the-fly + * Works with grouping and when enabling the selection checkbox row (showSelectionCheckbox) +* Bugfixes in configureColumnWidths + * Re-ordered columns now keep their width setup + * Fixed "asteriskNum" so it no longer includes hidden columns (was checking .visible on a columnDefs column instead of the matching ngColumn) + * Fixed "totalWidth" so it no longer includes hidden columns when using px values for width (was checking .visible on a columnDefs column instead of the matching ngColumn) + * Fixed ngColumn width being initialized to undefined when using "auto" for width, regardless of "minWidth" settings (was checking .minWidth on a columnDefs column instead of the matching ngColumn) + +Renamed "col" to "colDef" in configureColumnWidths() in the places where "col" was a column from "columnDefs". It made it clearer for me whether I was referring to a ngColumn or a column from columnDefs. There were a couple of bugs caused by that (col.visible incorrectly accessed on columnDefs objects instead of ngColumns, and the like). + +ng-grid-flexible-height plugin +---------------------------------------- +* Bugfixes in ng-grid-flexible-height + * The plugin couldn't shrink the grid, only grow it + * Using domUtilityService.UpdateGridLayout instead of grid.refreshDomSizes which correctly grows the grid if it's been shrunk (e.g. when paging to the last page and it has few rows + the plugin has a smaller min. height than what's needed on the other pages) + +### Bug fixes +Too many to list. Here is the pull request https://github.com/angular-ui/ng-grid/pull/511 + + + +## 2.0.6 *(2013-06-?)* + +### Features + +- **Development** + - Continuous integration testing with [Travis CI](https://travis-ci.org/angular-ui/ng-grid). A few tests that were looking for pixel perfection had to be relaxed due to rendering differences between browsers and OSes. + - Moved this changelog to CHANGELOG.md! + - Added tests for i18n languages. Any new language must cover all the properties that the default language (English) has. + - CSS files compiling with less ([24bb173](https://github.com/angular-ui/ng-grid/commit/24bb173)) + - Added optional --browsers flag for test tasks. `grunt test --browsers=Chrome,Firefox,PhantomJS` will test in all 3 browsers at once. + +- **Sorting** + - Allow optional '+' prefix to trigger numerical sort ([f3aff74](https://github.com/angular-ui/ng-grid/commit/f3aff74), [8e5c0a1](https://github.com/angular-ui/ng-grid/commit/8e5c0a1)) + - Standardizing sort arrow direction (thanks @dcolens) ([9608488](https://github.com/angular-ui/ng-grid/commit/9608488)) + +- **i18n** + - Added Brazilian Portugeuse (thanks @dipold) ([ab0f207](https://github.com/angular-ui/ng-grid/commit/ab0f207)) + +### Bug fixes + +- Allow column `displayName` to be an empty string. ([#363](https://github.com/angular-ui/ng-grid/issues/363), [46a992f](https://github.com/angular-ui/ng-grid/commit/46a992f)) +- Fix for `totalServerItems` not updating ([#332](https://github.com/angular-ui/ng-grid/issues/332), [#369](https://github.com/angular-ui/ng-grid/issues/369), [fcfe316](https://github.com/angular-ui/ng-grid/commit/fcfe316)) +- Fixed regression in [2.0.5](#2.0.5) that used Array.forEach, which isn't supported in IE8. Moved to angular.forEach ([e4b08a7](https://github.com/angular-ui/ng-grid/commit/e4b08a7)) +- Fixed and added tests for wysiwyg-export plugin ([57df36f](https://github.com/angular-ui/ng-grid/commit/57df36f)) +- Fixed extraneous trailing comma ([#449](https://github.com/angular-ui/ng-grid/issues/449), [2c655c7](https://github.com/angular-ui/ng-grid/commit/2c655c7)) +- **Cell editing** - various attempts at fixing broken cell editing eventually resulted in using [NgModelController](http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController) (thanks @swalters). ([#442](https://github.com/angular-ui/ng-grid/issues/442), [050a1ba](https://github.com/angular-ui/ng-grid/commit/050a1ba), [5c82f9b](https://github.com/angular-ui/ng-grid/commit/5c82f9b), [5c82f9b](https://github.com/angular-ui/ng-grid/commit/5c82f9b), [f244363](https://github.com/angular-ui/ng-grid/commit/f244363), [ee2a5f1](https://github.com/angular-ui/ng-grid/commit/ee2a5f1)) + + +## 2.0.5 *(2013-04-23)* + +### Features + +- Moving to $http for external template fetching. Should fix issues with grid rendering before templates are retrieved, as well as fetching the same template multiple times. + +### Bug fixes + +- Fixed bug that prevented the grid from maintaining row selections post-sort thanks to [sum4me](https://github.com/sum4me) + + +## 2.0.4 *(2013-04-08)* + +### Bug fixes + +- Fixing some more minor bugs + + +## 2.0.3 *(2013-03-29)* + +- Changed default multiSelect behavior, updating some plugins and making some more minor bugfixes. + + +## 2.0.2 *(2013-03-08)* + +- minor bugfixes, updating some plugins. + + +## 2.0.1 *(2013-03-05)* + + - Moved to grunt build system. No more international version; all languages are included by default. Fixed minor grouping display issue. Using $templateCache for templates instead of global namespace. + + +## 2.0.0 *(2013-03-05)* + + - Breaking Changes: see documentation (showSelectionBox, enableRowSelection, showFooter). Column Virtualization added. Row virtualization performance improved. Excel-like editing instead of enableFocusedCellEdit. + + +## 1.9.0 *(2013-02-18)* + + - Aggregates now display correctly. Added more option methods to select and group data (see wiki), Added column pinning. + + +## 1.8.0 [Hotfix] *(2013-02-11)* + + - Fixes for multi-level grouping and adding the gridId to both the grid options and as argument to the "ngGridEventData" so you can identify what grid it came from. + + +## 1.8.0 *(2013-02-07)* + + - Major architectural changes which greatly improves performance. virtualizationThreshold now controlls when virtualization is force-enabled and is user-specified in options. + + +## 1.7.1 *(2013-02-06)* + + - Fixed bug with selections and multiple grids. New emit message for notifying when hitting bottom of viewport. Can disable virtualization. ng-grid virtualization is on by default, but can be disabled if there are less than 50 rows in the grid. Anything > 50 rows virtualization is forced on for performance considerations. + + +## 1.7.0 *(2013-02-05)* + + - BREAKING CHANGES: Will add examples. Adding cell selection, navigation, and edit on focus. Added programmatic selections. Improved scrolling. ngGridEvents changed/added: see wiki. + + +## 1.6.3 *(2013-01-17)* + + - Can now highlight/copy text in grid. Fixed multiple issues when using multiselect along with shift key. Refactored key events so now they are all in the same directive for viewport. Hovering over highlightable text will change cursors in viewport. Fixed #93. + + +## 1.6.2 *(2013-01-09)* + + - Merged changes to have two-way data-binding work in templates, so if you're using a celltemplate, you can now use COL_FIELD instead of row.getProperty(col.field). row.getProperty is still in the row class for accessing other row values. + + +## 1.6.1 *(2013-01-08)* + + - Adding ability to preselect rows. Can deselect when multiSelect:false. Bug fixes/merging pull requests. Bower now works. Can now sync external search with ng-grid internal search. Check out other examples on examples page. + + +## 1.6.0 *(2012-12-27)* + + - Adding i18n support and support for different angularjs interpolation symbols (requires building from source). + + +## 1.5.0 *(2012-12-20)* + + - Modifying the way we watch for array changes. Added groupable column definition option. Bugfixes for #58, #59. + + +## 1.4.1 *(2012-12-18)* + + - jslint reformat, minor bugfixes, performance improvements while keydown navigating, adding "use strict" to script. + + +## 1.4.0 *(2012-12-12)* + + - Massive improvements to search thanks to [iNeedFat](https://github.com/ineedfat)! + + +## 1.3.9 *(2012-12-12)* + + - Refactored and removed unneeded code. Added scope events. + + +## 1.3.7 *(2012-12-12)* + + - Improving template compilation and fixing jquery theme support. Improving comments on grid options. + + +## 1.3.6 *(2012-12-06)* + + - sortInfo can now be set to default sort the grid. Improvements to the beforeSelectionChange callback mechanism when multi-selecting. + + +## 1.3.5 *(2012-12-06)* + + - Improved template rendering when using external template files. columnDefs can now be a $scope object which can be push/pop/spliced. Fixed box model for cells and header cells. + + +## 1.3.4 *(2012-12-04)* + + - Improved aggregate grouping, minor bugfixes. Auto-width works! + + +## 1.3.2 *(2012-11-27)* + + - Changed default width behavior to use *s and added option to maintain column ratios while resizing + + +## 1.3.1 *(2012-11-27)* + + - Added layout plugin. Support for uri templates. Performance improvements. + + +## 1.3.0 *(2012-11-23)* + + - Major code refactoring, can now group-by using column menu, changes to build + + +## 1.2.2 *(2012-11-21)* + + - Built-in filtering support, numerous perfomance enhancements and minor code refactoring + + +## 1.2.1 *(2012-11-20)* + + - Added ability to specify property "paths" as fields and for grid options. + + +## 1.2.0 *(2012-11-19)* + + - Added Server-Side Paging support and minor bug fixes. + + +## 1.1.0 *(2012-11-17)* + + - Added ability to hide/show columns and various bug fixes/performance enhancements. + + +## 1.0.0 *(2012-11-14)* + + - Release diff --git a/release/4.12.0/README.md b/release/4.12.0/README.md new file mode 100644 index 000000000..27c8ec742 --- /dev/null +++ b/release/4.12.0/README.md @@ -0,0 +1,59 @@ +This repo is for distribution on `npm` and `bower`. The source for this module is in the [main UI Grid repo](https://github.com/angular-ui/ui-grid). Please file issues and pull requests against that repo. + +## Install + +You can install this package either with `npm` or with `bower`. + +### npm + +```shell +npm install angular-ui-grid +``` + +Then add a ` +``` + +### bower + +```shell +bower install angular-ui-grid +``` + +Then add a ` +``` + +## Documentation + +Documentation is available on the [main UI Grid site](http://ui-grid.info). + +## License + +The MIT License + +Copyright (c) 2013-2015 the Angular-UI team, http://angular-ui.github.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/release/4.12.0/bower.json b/release/4.12.0/bower.json new file mode 100644 index 000000000..e541fbb1d --- /dev/null +++ b/release/4.12.0/bower.json @@ -0,0 +1,33 @@ +{ + "name": "angular-ui-grid", + "description": "A data grid for Angular", + "main": [ + "./ui-grid.css", + "./ui-grid.js" + ], + "ignore": [], + "dependencies": { + "angular": ">=1.4.0 1.8.x" + }, + "repository": { + "type": "git", + "url": "https://github.com/angular-ui/ui-grid.git" + }, + "homepage": "http://ui-grid.info", + "bugs": { + "url": "https://github.com/angular-ui/ui-grid/issues" + }, + "keywords": [ + "angular", + "ng-grid", + "nggrid", + "grid", + "angularjs", + "slickgrid", + "kogrid", + "ui-grid", + "ui grid", + "data grid" + ], + "license": "MIT" +} \ No newline at end of file diff --git a/release/4.12.0/css/ui-grid.cellNav.css b/release/4.12.0/css/ui-grid.cellNav.css new file mode 100644 index 000000000..84f1a252f --- /dev/null +++ b/release/4.12.0/css/ui-grid.cellNav.css @@ -0,0 +1,31 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ +.ui-grid-cell-focus { + outline: 0; + background-color: #b3c4c7; +} +.ui-grid-focuser { + position: absolute; + left: 0; + top: 0; + z-index: -1; + width: 100%; + height: 100%; +} +.ui-grid-focuser:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.ui-grid-offscreen { + display: block; + position: absolute; + left: -10000px; + top: -10000px; + clip: rect(0px, 0px, 0px, 0px); +} + diff --git a/release/4.12.0/css/ui-grid.cellNav.min.css b/release/4.12.0/css/ui-grid.cellNav.min.css new file mode 100644 index 000000000..08fbaaf48 --- /dev/null +++ b/release/4.12.0/css/ui-grid.cellNav.min.css @@ -0,0 +1,5 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */.ui-grid-cell-focus{background-color:#b3c4c7;outline:0}.ui-grid-focuser{height:100%;left:0;position:absolute;top:0;width:100%;z-index:-1}.ui-grid-focuser:focus{border-color:#66afe9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);outline:0}.ui-grid-offscreen{clip:rect(0,0,0,0);display:block;left:-10000px;position:absolute;top:-10000px} \ No newline at end of file diff --git a/release/4.12.0/css/ui-grid.core.css b/release/4.12.0/css/ui-grid.core.css new file mode 100644 index 000000000..8361fced1 --- /dev/null +++ b/release/4.12.0/css/ui-grid.core.css @@ -0,0 +1,861 @@ +.ui-grid { + border: 1px solid #d4d4d4; + box-sizing: content-box; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -o-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); +} +.ui-grid-vertical-bar { + position: absolute; + right: 0; + width: 0; +} +.ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar, +.ui-grid-cell:not(:last-child) .ui-grid-vertical-bar { + width: 1px; +} +.ui-grid-scrollbar-placeholder { + background-color: transparent; +} +.ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar { + background-color: #d4d4d4; +} +.ui-grid-cell:not(:last-child) .ui-grid-vertical-bar { + background-color: #d4d4d4; +} +.ui-grid-header-cell:last-child .ui-grid-vertical-bar { + right: -1px; + width: 1px; + background-color: #d4d4d4; +} +.ui-grid-clearfix:before, +.ui-grid-clearfix:after { + content: ""; + display: table; +} +.ui-grid-clearfix:after { + clear: both; +} +.ui-grid-invisible { + visibility: hidden; +} +.ui-grid-contents-wrapper { + position: relative; + height: 100%; + width: 100%; +} +.ui-grid-sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.ui-grid-icon-button { + background-color: transparent; + border: none; + padding: 0; +} +.clickable { + cursor: pointer; +} +.ui-grid-top-panel-background { + background-color: #f3f3f3; +} +.ui-grid-header { + border-bottom: 1px solid #d4d4d4; + box-sizing: border-box; +} +.ui-grid-top-panel { + position: relative; + overflow: hidden; + font-weight: bold; + background-color: #f3f3f3; + -webkit-border-top-right-radius: -1px; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -webkit-border-top-left-radius: -1px; + -moz-border-radius-topright: -1px; + -moz-border-radius-bottomright: 0; + -moz-border-radius-bottomleft: 0; + -moz-border-radius-topleft: -1px; + border-top-right-radius: -1px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-top-left-radius: -1px; + -moz-background-clip: padding-box; + -webkit-background-clip: padding-box; + background-clip: padding-box; +} +.ui-grid-header-viewport { + overflow: hidden; +} +.ui-grid-header-canvas:before, +.ui-grid-header-canvas:after { + content: ""; + display: -ms-flexbox; + display: flex; + line-height: 0; +} +.ui-grid-header-canvas:after { + clear: both; +} +.ui-grid-header-cell-wrapper { + position: relative; + display: -ms-flexbox; + display: flex; + box-sizing: border-box; + height: 100%; + width: 100%; +} +.ui-grid-header-cell-row { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +.ui-grid-header-cell { + position: relative; + box-sizing: border-box; + background-color: inherit; + border-right: 1px solid; + border-color: #d4d4d4; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 0; +} +.ui-grid-header-cell:last-child { + border-right: 0; +} +.ui-grid-header-cell .sortable { + cursor: pointer; +} +.ui-grid-header-cell .ui-grid-sort-priority-number { + margin-left: -8px; +} +/* Fixes IE word-wrap if needed on header cells */ +.ui-grid-header-cell > div { + -ms-flex-basis: 100%; + flex-basis: 100%; +} +.ui-grid-header .ui-grid-vertical-bar { + top: 0; + bottom: 0; +} +.ui-grid-column-menu-button { + position: absolute; + right: 1px; + top: 0; +} +.ui-grid-column-menu-button .ui-grid-icon-angle-down { + vertical-align: sub; +} +.ui-grid-header-cell-last-col .ui-grid-cell-contents, +.ui-grid-header-cell-last-col .ui-grid-filter-container, +.ui-grid-header-cell-last-col .ui-grid-column-menu-button, +.ui-grid-header-cell-last-col + .ui-grid-column-resizer.right { + margin-right: 13px; +} +.ui-grid-render-container-right .ui-grid-header-cell-last-col .ui-grid-cell-contents, +.ui-grid-render-container-right .ui-grid-header-cell-last-col .ui-grid-filter-container, +.ui-grid-render-container-right .ui-grid-header-cell-last-col .ui-grid-column-menu-button, +.ui-grid-render-container-right .ui-grid-header-cell-last-col + .ui-grid-column-resizer.right { + margin-right: 28px; +} +.ui-grid-column-menu { + position: absolute; +} +/* Slide up/down animations */ +.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-add, +.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove { + -webkit-transition: all 0.04s linear; + -moz-transition: all 0.04s linear; + -o-transition: all 0.04s linear; + transition: all 0.04s linear; + display: block !important; +} +.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-add.ng-hide-add-active, +.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove { + -webkit-transform: translateY(-100%); + -moz-transform: translateY(-100%); + -o-transform: translateY(-100%); + -ms-transform: translateY(-100%); + transform: translateY(-100%); +} +.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-add, +.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove.ng-hide-remove-active { + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -o-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); +} +/* Slide up/down animations */ +.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-add, +.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove { + -webkit-transition: all 0.04s linear; + -moz-transition: all 0.04s linear; + -o-transition: all 0.04s linear; + transition: all 0.04s linear; + display: block !important; +} +.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-add.ng-hide-add-active, +.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove { + -webkit-transform: translateY(-100%); + -moz-transform: translateY(-100%); + -o-transform: translateY(-100%); + -ms-transform: translateY(-100%); + transform: translateY(-100%); +} +.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-add, +.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove.ng-hide-remove-active { + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -o-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); +} +.ui-grid-filter-container { + padding: 4px 10px; + position: relative; +} +.ui-grid-filter-container .ui-grid-filter-button { + position: absolute; + top: 0; + bottom: 0; + right: 0; +} +.ui-grid-filter-container .ui-grid-filter-button [class^="ui-grid-icon"] { + position: absolute; + top: 50%; + line-height: 32px; + margin-top: -16px; + right: 10px; + opacity: 0.66; +} +.ui-grid-filter-container .ui-grid-filter-button [class^="ui-grid-icon"]:hover { + opacity: 1; +} +.ui-grid-filter-container .ui-grid-filter-button-select { + position: absolute; + top: 0; + bottom: 0; + right: 0; +} +.ui-grid-filter-container .ui-grid-filter-button-select [class^="ui-grid-icon"] { + position: absolute; + top: 50%; + line-height: 32px; + margin-top: -16px; + right: 0px; + opacity: 0.66; +} +.ui-grid-filter-container .ui-grid-filter-button-select [class^="ui-grid-icon"]:hover { + opacity: 1; +} +input[type="text"].ui-grid-filter-input { + box-sizing: border-box; + padding: 0 18px 0 0; + margin: 0; + width: 100%; + border: 1px solid #d4d4d4; + -webkit-border-top-right-radius: 0px; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -webkit-border-top-left-radius: 0; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0; + -moz-border-radius-bottomleft: 0; + -moz-border-radius-topleft: 0; + border-top-right-radius: 0px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-top-left-radius: 0; + -moz-background-clip: padding-box; + -webkit-background-clip: padding-box; + background-clip: padding-box; +} +input[type="text"].ui-grid-filter-input:hover { + border: 1px solid #d4d4d4; +} +select.ui-grid-filter-select { + padding: 0; + margin: 0; + border: 0; + width: 90%; + border: 1px solid #d4d4d4; + -webkit-border-top-right-radius: 0px; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -webkit-border-top-left-radius: 0; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0; + -moz-border-radius-bottomleft: 0; + -moz-border-radius-topleft: 0; + border-top-right-radius: 0px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-top-left-radius: 0; + -moz-background-clip: padding-box; + -webkit-background-clip: padding-box; + background-clip: padding-box; +} +select.ui-grid-filter-select:hover { + border: 1px solid #d4d4d4; +} +.ui-grid-filter-cancel-button-hidden select.ui-grid-filter-select { + width: 100%; +} +.ui-grid-render-container { + position: inherit; + -webkit-border-top-right-radius: 0; + -webkit-border-bottom-right-radius: 0px; + -webkit-border-bottom-left-radius: 0px; + -webkit-border-top-left-radius: 0; + -moz-border-radius-topright: 0; + -moz-border-radius-bottomright: 0px; + -moz-border-radius-bottomleft: 0px; + -moz-border-radius-topleft: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; + border-top-left-radius: 0; + -moz-background-clip: padding-box; + -webkit-background-clip: padding-box; + background-clip: padding-box; +} +.ui-grid-render-container:focus { + outline: none; +} +.ui-grid-viewport { + min-height: 20px; + position: relative; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; +} +.ui-grid-viewport:focus { + outline: none !important; +} +.ui-grid-canvas { + position: relative; + padding-top: 1px; + min-height: 1px; +} +.ui-grid-row { + clear: both; +} +.ui-grid-row:nth-child(odd) .ui-grid-cell { + background-color: #fdfdfd; +} +.ui-grid-row:nth-child(even) .ui-grid-cell { + background-color: #f3f3f3; +} +.ui-grid-row:last-child .ui-grid-cell { + border-bottom-color: #d4d4d4; + border-bottom-style: solid; +} +.ui-grid-row:hover > [ui-grid-row] > .ui-grid-cell:hover .ui-grid-cell, +.ui-grid-row:nth-child(odd):hover .ui-grid-cell, +.ui-grid-row:nth-child(even):hover .ui-grid-cell { + background-color: #d5eaee; +} +.ui-grid-no-row-overlay { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: 10%; + background-color: #f3f3f3; + -webkit-border-top-right-radius: 0px; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -webkit-border-top-left-radius: 0; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0; + -moz-border-radius-bottomleft: 0; + -moz-border-radius-topleft: 0; + border-top-right-radius: 0px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-top-left-radius: 0; + -moz-background-clip: padding-box; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #d4d4d4; + font-size: 2em; + text-align: center; +} +.ui-grid-no-row-overlay > * { + position: absolute; + display: table; + margin: auto 0; + width: 100%; + top: 0; + bottom: 0; + left: 0; + right: 0; + opacity: 0.66; +} +.ui-grid-cell { + overflow: hidden; + float: left; + background-color: inherit; + border-right: 1px solid; + border-color: #d4d4d4; + box-sizing: border-box; +} +.ui-grid-cell:last-child { + border-right: 0; +} +.ui-grid-cell-contents { + padding: 5px; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + white-space: nowrap; + -ms-text-overflow: ellipsis; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden; + height: 100%; +} +.ui-grid-cell-contents-hidden { + visibility: hidden; + width: 0; + height: 0; + display: none; +} +.ui-grid-row .ui-grid-cell.ui-grid-row-header-cell { + background-color: #F0F0EE; + border-bottom: solid 1px #d4d4d4; +} +.ui-grid-cell-empty { + display: inline-block; + width: 10px; + height: 10px; +} +.ui-grid-footer-info { + padding: 5px 10px; +} +.ui-grid-footer-panel-background { + background-color: #f3f3f3; +} +.ui-grid-footer-panel { + position: relative; + border-bottom: 1px solid #d4d4d4; + border-top: 1px solid #d4d4d4; + overflow: hidden; + font-weight: bold; + background-color: #f3f3f3; + -webkit-border-top-right-radius: -1px; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -webkit-border-top-left-radius: -1px; + -moz-border-radius-topright: -1px; + -moz-border-radius-bottomright: 0; + -moz-border-radius-bottomleft: 0; + -moz-border-radius-topleft: -1px; + border-top-right-radius: -1px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-top-left-radius: -1px; + -moz-background-clip: padding-box; + -webkit-background-clip: padding-box; + background-clip: padding-box; +} +.ui-grid-grid-footer { + float: left; + width: 100%; +} +.ui-grid-footer-viewport, +.ui-grid-footer-canvas { + height: 100%; +} +.ui-grid-footer-viewport { + overflow: hidden; +} +.ui-grid-footer-canvas { + position: relative; +} +.ui-grid-footer-canvas:before, +.ui-grid-footer-canvas:after { + content: ""; + display: table; + line-height: 0; +} +.ui-grid-footer-canvas:after { + clear: both; +} +.ui-grid-footer-cell-wrapper { + position: relative; + display: table; + box-sizing: border-box; + height: 100%; +} +.ui-grid-footer-cell-row { + display: table-row; +} +.ui-grid-footer-cell { + overflow: hidden; + background-color: inherit; + border-right: 1px solid; + border-color: #d4d4d4; + box-sizing: border-box; + display: table-cell; +} +.ui-grid-footer-cell:last-child { + border-right: 0; +} +.ui-grid-menu-button { + z-index: 2; + position: absolute; + right: 0; + top: 0; + background: #f3f3f3; + border: 0; + border-left: 1px solid #d4d4d4; + border-bottom: 1px solid #d4d4d4; + cursor: pointer; + height: 32px; + font-weight: normal; +} +.ui-grid-menu-button .ui-grid-icon-container { + margin-top: 5px; + margin-left: 2px; +} +.ui-grid-menu-button .ui-grid-menu { + right: 0; +} +.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid { + overflow: scroll; +} +.ui-grid-menu { + overflow: hidden; + max-width: 320px; + z-index: 2; + position: absolute; + right: 100%; + padding: 0 10px 20px 10px; + cursor: pointer; + box-sizing: border-box; +} +.ui-grid-menu-item { + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.ui-grid-menu .ui-grid-menu-inner { + background: #fff; + border: 1px solid #d4d4d4; + position: relative; + white-space: nowrap; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; +} +.ui-grid-menu .ui-grid-menu-inner ul { + margin: 0; + padding: 0; + list-style-type: none; +} +.ui-grid-menu .ui-grid-menu-inner ul li { + padding: 0; +} +.ui-grid-menu .ui-grid-menu-inner ul li .ui-grid-menu-item { + color: #000; + min-width: 100%; + padding: 8px; + text-align: left; + background: transparent; + border: none; + cursor: default; +} +.ui-grid-menu .ui-grid-menu-inner ul li button.ui-grid-menu-item { + cursor: pointer; +} +.ui-grid-menu .ui-grid-menu-inner ul li button.ui-grid-menu-item:hover, +.ui-grid-menu .ui-grid-menu-inner ul li button.ui-grid-menu-item:focus { + background-color: #b3c4c7; +} +.ui-grid-menu .ui-grid-menu-inner ul li button.ui-grid-menu-item.ui-grid-menu-item-active { + background-color: #9cb2b6; +} +.ui-grid-menu .ui-grid-menu-inner ul li:not(:last-child) > .ui-grid-menu-item { + border-bottom: 1px solid #d4d4d4; +} +.ui-grid-sortarrow { + right: 5px; + position: absolute; + width: 20px; + top: 0; + bottom: 0; + background-position: center; +} +.ui-grid-sortarrow.down { + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -o-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +@font-face { + font-family: 'ui-grid'; + src: url('../fonts/ui-grid.eot'); + src: url('../fonts/ui-grid.eot#iefix') format('embedded-opentype'), url('../fonts/ui-grid.woff') format('woff'), url('../fonts/ui-grid.ttf') format('truetype'), url('../fonts/ui-grid.svg?#ui-grid') format('svg'); + font-weight: normal; + font-style: normal; +} +/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ +/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ +/* +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: 'ui-grid'; + src: url('@{font-path}ui-grid.svg?12312827#ui-grid') format('svg'); + } +} +*/ +[class^="ui-grid-icon"]:before, +[class*=" ui-grid-icon"]:before { + font-family: "ui-grid"; + font-style: normal; + font-weight: normal; + speak: none; + display: inline-block; + text-decoration: inherit; + width: 1em; + margin-right: 0.2em; + text-align: center; + /* opacity: .8; */ + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + /* Animation center compensation - margins should be symmetric */ + /* remove if not needed */ + margin-left: 0.2em; + /* you can be more comfortable with increased icons size */ + /* font-size: 120%; */ + /* Uncomment for 3D effect */ + /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ +} +.ui-grid-icon-blank::before { + width: 1em; + content: ' '; +} +.ui-grid-icon-plus-squared:before { + content: '\c350'; +} +.ui-grid-icon-minus-squared:before { + content: '\c351'; +} +.ui-grid-icon-search:before { + content: '\c352'; +} +.ui-grid-icon-cancel:before { + content: '\c353'; +} +.ui-grid-icon-info-circled:before { + content: '\c354'; +} +.ui-grid-icon-lock:before { + content: '\c355'; +} +.ui-grid-icon-lock-open:before { + content: '\c356'; +} +.ui-grid-icon-pencil:before { + content: '\c357'; +} +.ui-grid-icon-down-dir:before { + content: '\c358'; +} +.ui-grid-icon-up-dir:before { + content: '\c359'; +} +.ui-grid-icon-left-dir:before { + content: '\c35a'; +} +.ui-grid-icon-right-dir:before { + content: '\c35b'; +} +.ui-grid-icon-left-open:before { + content: '\c35c'; +} +.ui-grid-icon-right-open:before { + content: '\c35d'; +} +.ui-grid-icon-angle-down:before { + content: '\c35e'; +} +.ui-grid-icon-filter:before { + content: '\c35f'; +} +.ui-grid-icon-sort-alt-up:before { + content: '\c360'; +} +.ui-grid-icon-sort-alt-down:before { + content: '\c361'; +} +.ui-grid-icon-ok:before { + content: '\c362'; +} +.ui-grid-icon-menu:before { + content: '\c363'; +} +.ui-grid-icon-indent-left:before { + content: '\e800'; +} +.ui-grid-icon-indent-right:before { + content: '\e801'; +} +.ui-grid-icon-spin5:before { + content: '\ea61'; +} +/* +* RTL Styles +*/ +.ui-grid[dir=rtl] .ui-grid-header-cell, +.ui-grid[dir=rtl] .ui-grid-footer-cell, +.ui-grid[dir=rtl] .ui-grid-cell { + float: right !important; +} +.ui-grid[dir=rtl] .ui-grid-column-menu-button { + position: absolute; + left: 1px; + top: 0; + right: inherit; +} +.ui-grid[dir=rtl] .ui-grid-cell:first-child, +.ui-grid[dir=rtl] .ui-grid-header-cell:first-child, +.ui-grid[dir=rtl] .ui-grid-footer-cell:first-child { + border-right: 0; +} +.ui-grid[dir=rtl] .ui-grid-cell:last-child, +.ui-grid[dir=rtl] .ui-grid-header-cell:last-child { + border-right: 1px solid #d4d4d4; + border-left: 0; +} +.ui-grid[dir=rtl] .ui-grid-header-cell:first-child .ui-grid-vertical-bar, +.ui-grid[dir=rtl] .ui-grid-footer-cell:first-child .ui-grid-vertical-bar, +.ui-grid[dir=rtl] .ui-grid-cell:first-child .ui-grid-vertical-bar { + width: 0; +} +.ui-grid[dir=rtl] .ui-grid-menu-button { + z-index: 2; + position: absolute; + left: 0; + right: auto; + background: #f3f3f3; + border: 1px solid #d4d4d4; + cursor: pointer; + min-height: 27px; + font-weight: normal; +} +.ui-grid[dir=rtl] .ui-grid-menu-button .ui-grid-menu { + left: 0; + right: auto; +} +.ui-grid[dir=rtl] .ui-grid-filter-container .ui-grid-filter-button { + right: initial; + left: 0; +} +.ui-grid[dir=rtl] .ui-grid-filter-container .ui-grid-filter-button [class^="ui-grid-icon"] { + right: initial; + left: 10px; +} +/* + Animation example, for spinners +*/ +.ui-grid-animate-spin { + -moz-animation: ui-grid-spin 2s infinite linear; + -o-animation: ui-grid-spin 2s infinite linear; + -webkit-animation: ui-grid-spin 2s infinite linear; + animation: ui-grid-spin 2s infinite linear; + display: inline-block; +} +@-moz-keyframes ui-grid-spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-webkit-keyframes ui-grid-spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-o-keyframes ui-grid-spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-ms-keyframes ui-grid-spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes ui-grid-spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} diff --git a/release/4.12.0/css/ui-grid.core.min.css b/release/4.12.0/css/ui-grid.core.min.css new file mode 100644 index 000000000..b46a6ad91 --- /dev/null +++ b/release/4.12.0/css/ui-grid.core.min.css @@ -0,0 +1 @@ +.ui-grid{border:1px solid #d4d4d4;box-sizing:content-box;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-o-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}.ui-grid-vertical-bar{position:absolute;right:0;width:0}.ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar,.ui-grid-cell:not(:last-child) .ui-grid-vertical-bar{width:1px}.ui-grid-scrollbar-placeholder{background-color:transparent}.ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar{background-color:#d4d4d4}.ui-grid-cell:not(:last-child) .ui-grid-vertical-bar{background-color:#d4d4d4}.ui-grid-header-cell:last-child .ui-grid-vertical-bar{right:-1px;width:1px;background-color:#d4d4d4}.ui-grid-clearfix:before,.ui-grid-clearfix:after{content:"";display:table}.ui-grid-clearfix:after{clear:both}.ui-grid-invisible{visibility:hidden}.ui-grid-contents-wrapper{position:relative;height:100%;width:100%}.ui-grid-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.ui-grid-icon-button{background-color:transparent;border:none;padding:0}.clickable{cursor:pointer}.ui-grid-top-panel-background{background-color:#f3f3f3}.ui-grid-header{border-bottom:1px solid #d4d4d4;box-sizing:border-box}.ui-grid-top-panel{position:relative;overflow:hidden;font-weight:bold;background-color:#f3f3f3;-webkit-border-top-right-radius:-1px;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-webkit-border-top-left-radius:-1px;-moz-border-radius-topright:-1px;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:0;-moz-border-radius-topleft:-1px;border-top-right-radius:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:-1px;-moz-background-clip:padding-box;-webkit-background-clip:padding-box;background-clip:padding-box}.ui-grid-header-viewport{overflow:hidden}.ui-grid-header-canvas:before,.ui-grid-header-canvas:after{content:"";display:-ms-flexbox;display:flex;line-height:0}.ui-grid-header-canvas:after{clear:both}.ui-grid-header-cell-wrapper{position:relative;display:-ms-flexbox;display:flex;box-sizing:border-box;height:100%;width:100%}.ui-grid-header-cell-row{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.ui-grid-header-cell{position:relative;box-sizing:border-box;background-color:inherit;border-right:1px solid;border-color:#d4d4d4;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:0}.ui-grid-header-cell:last-child{border-right:0}.ui-grid-header-cell .sortable{cursor:pointer}.ui-grid-header-cell .ui-grid-sort-priority-number{margin-left:-8px}.ui-grid-header-cell>div{-ms-flex-basis:100%;flex-basis:100%}.ui-grid-header .ui-grid-vertical-bar{top:0;bottom:0}.ui-grid-column-menu-button{position:absolute;right:1px;top:0}.ui-grid-column-menu-button .ui-grid-icon-angle-down{vertical-align:sub}.ui-grid-header-cell-last-col .ui-grid-cell-contents,.ui-grid-header-cell-last-col .ui-grid-filter-container,.ui-grid-header-cell-last-col .ui-grid-column-menu-button,.ui-grid-header-cell-last-col+.ui-grid-column-resizer.right{margin-right:13px}.ui-grid-render-container-right .ui-grid-header-cell-last-col .ui-grid-cell-contents,.ui-grid-render-container-right .ui-grid-header-cell-last-col .ui-grid-filter-container,.ui-grid-render-container-right .ui-grid-header-cell-last-col .ui-grid-column-menu-button,.ui-grid-render-container-right .ui-grid-header-cell-last-col+.ui-grid-column-resizer.right{margin-right:28px}.ui-grid-column-menu{position:absolute}.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-add,.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove{-webkit-transition:all .04s linear;-moz-transition:all .04s linear;-o-transition:all .04s linear;transition:all .04s linear;display:block !important}.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-add.ng-hide-add-active,.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove{-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-o-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-add,.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove.ng-hide-remove-active{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-add,.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove{-webkit-transition:all .04s linear;-moz-transition:all .04s linear;-o-transition:all .04s linear;transition:all .04s linear;display:block !important}.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-add.ng-hide-add-active,.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove{-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-o-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-add,.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove.ng-hide-remove-active{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.ui-grid-filter-container{padding:4px 10px;position:relative}.ui-grid-filter-container .ui-grid-filter-button{position:absolute;top:0;bottom:0;right:0}.ui-grid-filter-container .ui-grid-filter-button [class^="ui-grid-icon"]{position:absolute;top:50%;line-height:32px;margin-top:-16px;right:10px;opacity:.66}.ui-grid-filter-container .ui-grid-filter-button [class^="ui-grid-icon"]:hover{opacity:1}.ui-grid-filter-container .ui-grid-filter-button-select{position:absolute;top:0;bottom:0;right:0}.ui-grid-filter-container .ui-grid-filter-button-select [class^="ui-grid-icon"]{position:absolute;top:50%;line-height:32px;margin-top:-16px;right:0px;opacity:.66}.ui-grid-filter-container .ui-grid-filter-button-select [class^="ui-grid-icon"]:hover{opacity:1}input[type="text"].ui-grid-filter-input{box-sizing:border-box;padding:0 18px 0 0;margin:0;width:100%;border:1px solid #d4d4d4;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-webkit-border-top-left-radius:0;-moz-border-radius-topright:0;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:0;-moz-border-radius-topleft:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:0;-moz-background-clip:padding-box;-webkit-background-clip:padding-box;background-clip:padding-box}input[type="text"].ui-grid-filter-input:hover{border:1px solid #d4d4d4}select.ui-grid-filter-select{padding:0;margin:0;border:0;width:90%;border:1px solid #d4d4d4;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-webkit-border-top-left-radius:0;-moz-border-radius-topright:0;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:0;-moz-border-radius-topleft:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:0;-moz-background-clip:padding-box;-webkit-background-clip:padding-box;background-clip:padding-box}select.ui-grid-filter-select:hover{border:1px solid #d4d4d4}.ui-grid-filter-cancel-button-hidden select.ui-grid-filter-select{width:100%}.ui-grid-render-container{position:inherit;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-webkit-border-top-left-radius:0;-moz-border-radius-topright:0;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:0;-moz-border-radius-topleft:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:0;-moz-background-clip:padding-box;-webkit-background-clip:padding-box;background-clip:padding-box}.ui-grid-render-container:focus{outline:none}.ui-grid-viewport{min-height:20px;position:relative;overflow-y:scroll;-webkit-overflow-scrolling:touch}.ui-grid-viewport:focus{outline:none !important}.ui-grid-canvas{position:relative;padding-top:1px;min-height:1px}.ui-grid-row{clear:both}.ui-grid-row:nth-child(odd) .ui-grid-cell{background-color:#fdfdfd}.ui-grid-row:nth-child(even) .ui-grid-cell{background-color:#f3f3f3}.ui-grid-row:last-child .ui-grid-cell{border-bottom-color:#d4d4d4;border-bottom-style:solid}.ui-grid-row:hover>[ui-grid-row]>.ui-grid-cell:hover .ui-grid-cell,.ui-grid-row:nth-child(odd):hover .ui-grid-cell,.ui-grid-row:nth-child(even):hover .ui-grid-cell{background-color:#d5eaee}.ui-grid-no-row-overlay{position:absolute;top:0;bottom:0;left:0;right:0;margin:10%;background-color:#f3f3f3;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-webkit-border-top-left-radius:0;-moz-border-radius-topright:0;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:0;-moz-border-radius-topleft:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:0;-moz-background-clip:padding-box;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #d4d4d4;font-size:2em;text-align:center}.ui-grid-no-row-overlay>*{position:absolute;display:table;margin:auto 0;width:100%;top:0;bottom:0;left:0;right:0;opacity:.66}.ui-grid-cell{overflow:hidden;float:left;background-color:inherit;border-right:1px solid;border-color:#d4d4d4;box-sizing:border-box}.ui-grid-cell:last-child{border-right:0}.ui-grid-cell-contents{padding:5px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden;height:100%}.ui-grid-cell-contents-hidden{visibility:hidden;width:0;height:0;display:none}.ui-grid-row .ui-grid-cell.ui-grid-row-header-cell{background-color:#F0F0EE;border-bottom:solid 1px #d4d4d4}.ui-grid-cell-empty{display:inline-block;width:10px;height:10px}.ui-grid-footer-info{padding:5px 10px}.ui-grid-footer-panel-background{background-color:#f3f3f3}.ui-grid-footer-panel{position:relative;border-bottom:1px solid #d4d4d4;border-top:1px solid #d4d4d4;overflow:hidden;font-weight:bold;background-color:#f3f3f3;-webkit-border-top-right-radius:-1px;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-webkit-border-top-left-radius:-1px;-moz-border-radius-topright:-1px;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:0;-moz-border-radius-topleft:-1px;border-top-right-radius:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:-1px;-moz-background-clip:padding-box;-webkit-background-clip:padding-box;background-clip:padding-box}.ui-grid-grid-footer{float:left;width:100%}.ui-grid-footer-viewport,.ui-grid-footer-canvas{height:100%}.ui-grid-footer-viewport{overflow:hidden}.ui-grid-footer-canvas{position:relative}.ui-grid-footer-canvas:before,.ui-grid-footer-canvas:after{content:"";display:table;line-height:0}.ui-grid-footer-canvas:after{clear:both}.ui-grid-footer-cell-wrapper{position:relative;display:table;box-sizing:border-box;height:100%}.ui-grid-footer-cell-row{display:table-row}.ui-grid-footer-cell{overflow:hidden;background-color:inherit;border-right:1px solid;border-color:#d4d4d4;box-sizing:border-box;display:table-cell}.ui-grid-footer-cell:last-child{border-right:0}.ui-grid-menu-button{z-index:2;position:absolute;right:0;top:0;background:#f3f3f3;border:0;border-left:1px solid #d4d4d4;border-bottom:1px solid #d4d4d4;cursor:pointer;height:32px;font-weight:normal}.ui-grid-menu-button .ui-grid-icon-container{margin-top:5px;margin-left:2px}.ui-grid-menu-button .ui-grid-menu{right:0}.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid{overflow:scroll}.ui-grid-menu{overflow:hidden;max-width:320px;z-index:2;position:absolute;right:100%;padding:0 10px 20px 10px;cursor:pointer;box-sizing:border-box}.ui-grid-menu-item{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-grid-menu .ui-grid-menu-inner{background:#fff;border:1px solid #d4d4d4;position:relative;white-space:nowrap;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui-grid-menu .ui-grid-menu-inner ul{margin:0;padding:0;list-style-type:none}.ui-grid-menu .ui-grid-menu-inner ul li{padding:0}.ui-grid-menu .ui-grid-menu-inner ul li .ui-grid-menu-item{color:#000;min-width:100%;padding:8px;text-align:left;background:transparent;border:none;cursor:default}.ui-grid-menu .ui-grid-menu-inner ul li button.ui-grid-menu-item{cursor:pointer}.ui-grid-menu .ui-grid-menu-inner ul li button.ui-grid-menu-item:hover,.ui-grid-menu .ui-grid-menu-inner ul li button.ui-grid-menu-item:focus{background-color:#b3c4c7}.ui-grid-menu .ui-grid-menu-inner ul li button.ui-grid-menu-item.ui-grid-menu-item-active{background-color:#9cb2b6}.ui-grid-menu .ui-grid-menu-inner ul li:not(:last-child)>.ui-grid-menu-item{border-bottom:1px solid #d4d4d4}.ui-grid-sortarrow{right:5px;position:absolute;width:20px;top:0;bottom:0;background-position:center}.ui-grid-sortarrow.down{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}@font-face{font-family:'ui-grid';src:url('../fonts/ui-grid.eot');src:url('../fonts/ui-grid.eot#iefix') format('embedded-opentype'),url('../fonts/ui-grid.woff') format('woff'),url('../fonts/ui-grid.ttf') format('truetype'),url('../fonts/ui-grid.svg?#ui-grid') format('svg');font-weight:normal;font-style:normal}[class^="ui-grid-icon"]:before,[class*=" ui-grid-icon"]:before{font-family:"ui-grid";font-style:normal;font-weight:normal;speak:none;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em}.ui-grid-icon-blank::before{width:1em;content:' '}.ui-grid-icon-plus-squared:before{content:'\c350'}.ui-grid-icon-minus-squared:before{content:'\c351'}.ui-grid-icon-search:before{content:'\c352'}.ui-grid-icon-cancel:before{content:'\c353'}.ui-grid-icon-info-circled:before{content:'\c354'}.ui-grid-icon-lock:before{content:'\c355'}.ui-grid-icon-lock-open:before{content:'\c356'}.ui-grid-icon-pencil:before{content:'\c357'}.ui-grid-icon-down-dir:before{content:'\c358'}.ui-grid-icon-up-dir:before{content:'\c359'}.ui-grid-icon-left-dir:before{content:'\c35a'}.ui-grid-icon-right-dir:before{content:'\c35b'}.ui-grid-icon-left-open:before{content:'\c35c'}.ui-grid-icon-right-open:before{content:'\c35d'}.ui-grid-icon-angle-down:before{content:'\c35e'}.ui-grid-icon-filter:before{content:'\c35f'}.ui-grid-icon-sort-alt-up:before{content:'\c360'}.ui-grid-icon-sort-alt-down:before{content:'\c361'}.ui-grid-icon-ok:before{content:'\c362'}.ui-grid-icon-menu:before{content:'\c363'}.ui-grid-icon-indent-left:before{content:'\e800'}.ui-grid-icon-indent-right:before{content:'\e801'}.ui-grid-icon-spin5:before{content:'\ea61'}.ui-grid[dir=rtl] .ui-grid-header-cell,.ui-grid[dir=rtl] .ui-grid-footer-cell,.ui-grid[dir=rtl] .ui-grid-cell{float:right !important}.ui-grid[dir=rtl] .ui-grid-column-menu-button{position:absolute;left:1px;top:0;right:inherit}.ui-grid[dir=rtl] .ui-grid-cell:first-child,.ui-grid[dir=rtl] .ui-grid-header-cell:first-child,.ui-grid[dir=rtl] .ui-grid-footer-cell:first-child{border-right:0}.ui-grid[dir=rtl] .ui-grid-cell:last-child,.ui-grid[dir=rtl] .ui-grid-header-cell:last-child{border-right:1px solid #d4d4d4;border-left:0}.ui-grid[dir=rtl] .ui-grid-header-cell:first-child .ui-grid-vertical-bar,.ui-grid[dir=rtl] .ui-grid-footer-cell:first-child .ui-grid-vertical-bar,.ui-grid[dir=rtl] .ui-grid-cell:first-child .ui-grid-vertical-bar{width:0}.ui-grid[dir=rtl] .ui-grid-menu-button{z-index:2;position:absolute;left:0;right:auto;background:#f3f3f3;border:1px solid #d4d4d4;cursor:pointer;min-height:27px;font-weight:normal}.ui-grid[dir=rtl] .ui-grid-menu-button .ui-grid-menu{left:0;right:auto}.ui-grid[dir=rtl] .ui-grid-filter-container .ui-grid-filter-button{right:initial;left:0}.ui-grid[dir=rtl] .ui-grid-filter-container .ui-grid-filter-button [class^="ui-grid-icon"]{right:initial;left:10px}.ui-grid-animate-spin{-moz-animation:ui-grid-spin 2s infinite linear;-o-animation:ui-grid-spin 2s infinite linear;-webkit-animation:ui-grid-spin 2s infinite linear;animation:ui-grid-spin 2s infinite linear;display:inline-block}@-moz-keyframes ui-grid-spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-webkit-keyframes ui-grid-spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-o-keyframes ui-grid-spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-ms-keyframes ui-grid-spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes ui-grid-spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}} \ No newline at end of file diff --git a/release/4.12.0/css/ui-grid.css b/release/4.12.0/css/ui-grid.css new file mode 100644 index 000000000..5ee623e86 --- /dev/null +++ b/release/4.12.0/css/ui-grid.css @@ -0,0 +1,1359 @@ +.ui-grid { + border: 1px solid #d4d4d4; + box-sizing: content-box; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -o-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); +} +.ui-grid-vertical-bar { + position: absolute; + right: 0; + width: 0; +} +.ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar, +.ui-grid-cell:not(:last-child) .ui-grid-vertical-bar { + width: 1px; +} +.ui-grid-scrollbar-placeholder { + background-color: transparent; +} +.ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar { + background-color: #d4d4d4; +} +.ui-grid-cell:not(:last-child) .ui-grid-vertical-bar { + background-color: #d4d4d4; +} +.ui-grid-header-cell:last-child .ui-grid-vertical-bar { + right: -1px; + width: 1px; + background-color: #d4d4d4; +} +.ui-grid-clearfix:before, +.ui-grid-clearfix:after { + content: ""; + display: table; +} +.ui-grid-clearfix:after { + clear: both; +} +.ui-grid-invisible { + visibility: hidden; +} +.ui-grid-contents-wrapper { + position: relative; + height: 100%; + width: 100%; +} +.ui-grid-sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.ui-grid-icon-button { + background-color: transparent; + border: none; + padding: 0; +} +.clickable { + cursor: pointer; +} +.ui-grid-top-panel-background { + background-color: #f3f3f3; +} +.ui-grid-header { + border-bottom: 1px solid #d4d4d4; + box-sizing: border-box; +} +.ui-grid-top-panel { + position: relative; + overflow: hidden; + font-weight: bold; + background-color: #f3f3f3; + -webkit-border-top-right-radius: -1px; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -webkit-border-top-left-radius: -1px; + -moz-border-radius-topright: -1px; + -moz-border-radius-bottomright: 0; + -moz-border-radius-bottomleft: 0; + -moz-border-radius-topleft: -1px; + border-top-right-radius: -1px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-top-left-radius: -1px; + -moz-background-clip: padding-box; + -webkit-background-clip: padding-box; + background-clip: padding-box; +} +.ui-grid-header-viewport { + overflow: hidden; +} +.ui-grid-header-canvas:before, +.ui-grid-header-canvas:after { + content: ""; + display: -ms-flexbox; + display: flex; + line-height: 0; +} +.ui-grid-header-canvas:after { + clear: both; +} +.ui-grid-header-cell-wrapper { + position: relative; + display: -ms-flexbox; + display: flex; + box-sizing: border-box; + height: 100%; + width: 100%; +} +.ui-grid-header-cell-row { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +.ui-grid-header-cell { + position: relative; + box-sizing: border-box; + background-color: inherit; + border-right: 1px solid; + border-color: #d4d4d4; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 0; +} +.ui-grid-header-cell:last-child { + border-right: 0; +} +.ui-grid-header-cell .sortable { + cursor: pointer; +} +.ui-grid-header-cell .ui-grid-sort-priority-number { + margin-left: -8px; +} +/* Fixes IE word-wrap if needed on header cells */ +.ui-grid-header-cell > div { + -ms-flex-basis: 100%; + flex-basis: 100%; +} +.ui-grid-header .ui-grid-vertical-bar { + top: 0; + bottom: 0; +} +.ui-grid-column-menu-button { + position: absolute; + right: 1px; + top: 0; +} +.ui-grid-column-menu-button .ui-grid-icon-angle-down { + vertical-align: sub; +} +.ui-grid-header-cell-last-col .ui-grid-cell-contents, +.ui-grid-header-cell-last-col .ui-grid-filter-container, +.ui-grid-header-cell-last-col .ui-grid-column-menu-button, +.ui-grid-header-cell-last-col + .ui-grid-column-resizer.right { + margin-right: 13px; +} +.ui-grid-render-container-right .ui-grid-header-cell-last-col .ui-grid-cell-contents, +.ui-grid-render-container-right .ui-grid-header-cell-last-col .ui-grid-filter-container, +.ui-grid-render-container-right .ui-grid-header-cell-last-col .ui-grid-column-menu-button, +.ui-grid-render-container-right .ui-grid-header-cell-last-col + .ui-grid-column-resizer.right { + margin-right: 28px; +} +.ui-grid-column-menu { + position: absolute; +} +/* Slide up/down animations */ +.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-add, +.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove { + -webkit-transition: all 0.04s linear; + -moz-transition: all 0.04s linear; + -o-transition: all 0.04s linear; + transition: all 0.04s linear; + display: block !important; +} +.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-add.ng-hide-add-active, +.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove { + -webkit-transform: translateY(-100%); + -moz-transform: translateY(-100%); + -o-transform: translateY(-100%); + -ms-transform: translateY(-100%); + transform: translateY(-100%); +} +.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-add, +.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove.ng-hide-remove-active { + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -o-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); +} +/* Slide up/down animations */ +.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-add, +.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove { + -webkit-transition: all 0.04s linear; + -moz-transition: all 0.04s linear; + -o-transition: all 0.04s linear; + transition: all 0.04s linear; + display: block !important; +} +.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-add.ng-hide-add-active, +.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove { + -webkit-transform: translateY(-100%); + -moz-transform: translateY(-100%); + -o-transform: translateY(-100%); + -ms-transform: translateY(-100%); + transform: translateY(-100%); +} +.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-add, +.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove.ng-hide-remove-active { + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -o-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); +} +.ui-grid-filter-container { + padding: 4px 10px; + position: relative; +} +.ui-grid-filter-container .ui-grid-filter-button { + position: absolute; + top: 0; + bottom: 0; + right: 0; +} +.ui-grid-filter-container .ui-grid-filter-button [class^="ui-grid-icon"] { + position: absolute; + top: 50%; + line-height: 32px; + margin-top: -16px; + right: 10px; + opacity: 0.66; +} +.ui-grid-filter-container .ui-grid-filter-button [class^="ui-grid-icon"]:hover { + opacity: 1; +} +.ui-grid-filter-container .ui-grid-filter-button-select { + position: absolute; + top: 0; + bottom: 0; + right: 0; +} +.ui-grid-filter-container .ui-grid-filter-button-select [class^="ui-grid-icon"] { + position: absolute; + top: 50%; + line-height: 32px; + margin-top: -16px; + right: 0px; + opacity: 0.66; +} +.ui-grid-filter-container .ui-grid-filter-button-select [class^="ui-grid-icon"]:hover { + opacity: 1; +} +input[type="text"].ui-grid-filter-input { + box-sizing: border-box; + padding: 0 18px 0 0; + margin: 0; + width: 100%; + border: 1px solid #d4d4d4; + -webkit-border-top-right-radius: 0px; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -webkit-border-top-left-radius: 0; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0; + -moz-border-radius-bottomleft: 0; + -moz-border-radius-topleft: 0; + border-top-right-radius: 0px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-top-left-radius: 0; + -moz-background-clip: padding-box; + -webkit-background-clip: padding-box; + background-clip: padding-box; +} +input[type="text"].ui-grid-filter-input:hover { + border: 1px solid #d4d4d4; +} +select.ui-grid-filter-select { + padding: 0; + margin: 0; + border: 0; + width: 90%; + border: 1px solid #d4d4d4; + -webkit-border-top-right-radius: 0px; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -webkit-border-top-left-radius: 0; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0; + -moz-border-radius-bottomleft: 0; + -moz-border-radius-topleft: 0; + border-top-right-radius: 0px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-top-left-radius: 0; + -moz-background-clip: padding-box; + -webkit-background-clip: padding-box; + background-clip: padding-box; +} +select.ui-grid-filter-select:hover { + border: 1px solid #d4d4d4; +} +.ui-grid-filter-cancel-button-hidden select.ui-grid-filter-select { + width: 100%; +} +.ui-grid-render-container { + position: inherit; + -webkit-border-top-right-radius: 0; + -webkit-border-bottom-right-radius: 0px; + -webkit-border-bottom-left-radius: 0px; + -webkit-border-top-left-radius: 0; + -moz-border-radius-topright: 0; + -moz-border-radius-bottomright: 0px; + -moz-border-radius-bottomleft: 0px; + -moz-border-radius-topleft: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; + border-top-left-radius: 0; + -moz-background-clip: padding-box; + -webkit-background-clip: padding-box; + background-clip: padding-box; +} +.ui-grid-render-container:focus { + outline: none; +} +.ui-grid-viewport { + min-height: 20px; + position: relative; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; +} +.ui-grid-viewport:focus { + outline: none !important; +} +.ui-grid-canvas { + position: relative; + padding-top: 1px; + min-height: 1px; +} +.ui-grid-row { + clear: both; +} +.ui-grid-row:nth-child(odd) .ui-grid-cell { + background-color: #fdfdfd; +} +.ui-grid-row:nth-child(even) .ui-grid-cell { + background-color: #f3f3f3; +} +.ui-grid-row:last-child .ui-grid-cell { + border-bottom-color: #d4d4d4; + border-bottom-style: solid; +} +.ui-grid-row:hover > [ui-grid-row] > .ui-grid-cell:hover .ui-grid-cell, +.ui-grid-row:nth-child(odd):hover .ui-grid-cell, +.ui-grid-row:nth-child(even):hover .ui-grid-cell { + background-color: #d5eaee; +} +.ui-grid-no-row-overlay { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: 10%; + background-color: #f3f3f3; + -webkit-border-top-right-radius: 0px; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -webkit-border-top-left-radius: 0; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0; + -moz-border-radius-bottomleft: 0; + -moz-border-radius-topleft: 0; + border-top-right-radius: 0px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-top-left-radius: 0; + -moz-background-clip: padding-box; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #d4d4d4; + font-size: 2em; + text-align: center; +} +.ui-grid-no-row-overlay > * { + position: absolute; + display: table; + margin: auto 0; + width: 100%; + top: 0; + bottom: 0; + left: 0; + right: 0; + opacity: 0.66; +} +.ui-grid-cell { + overflow: hidden; + float: left; + background-color: inherit; + border-right: 1px solid; + border-color: #d4d4d4; + box-sizing: border-box; +} +.ui-grid-cell:last-child { + border-right: 0; +} +.ui-grid-cell-contents { + padding: 5px; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + white-space: nowrap; + -ms-text-overflow: ellipsis; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden; + height: 100%; +} +.ui-grid-cell-contents-hidden { + visibility: hidden; + width: 0; + height: 0; + display: none; +} +.ui-grid-row .ui-grid-cell.ui-grid-row-header-cell { + background-color: #F0F0EE; + border-bottom: solid 1px #d4d4d4; +} +.ui-grid-cell-empty { + display: inline-block; + width: 10px; + height: 10px; +} +.ui-grid-footer-info { + padding: 5px 10px; +} +.ui-grid-footer-panel-background { + background-color: #f3f3f3; +} +.ui-grid-footer-panel { + position: relative; + border-bottom: 1px solid #d4d4d4; + border-top: 1px solid #d4d4d4; + overflow: hidden; + font-weight: bold; + background-color: #f3f3f3; + -webkit-border-top-right-radius: -1px; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -webkit-border-top-left-radius: -1px; + -moz-border-radius-topright: -1px; + -moz-border-radius-bottomright: 0; + -moz-border-radius-bottomleft: 0; + -moz-border-radius-topleft: -1px; + border-top-right-radius: -1px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-top-left-radius: -1px; + -moz-background-clip: padding-box; + -webkit-background-clip: padding-box; + background-clip: padding-box; +} +.ui-grid-grid-footer { + float: left; + width: 100%; +} +.ui-grid-footer-viewport, +.ui-grid-footer-canvas { + height: 100%; +} +.ui-grid-footer-viewport { + overflow: hidden; +} +.ui-grid-footer-canvas { + position: relative; +} +.ui-grid-footer-canvas:before, +.ui-grid-footer-canvas:after { + content: ""; + display: table; + line-height: 0; +} +.ui-grid-footer-canvas:after { + clear: both; +} +.ui-grid-footer-cell-wrapper { + position: relative; + display: table; + box-sizing: border-box; + height: 100%; +} +.ui-grid-footer-cell-row { + display: table-row; +} +.ui-grid-footer-cell { + overflow: hidden; + background-color: inherit; + border-right: 1px solid; + border-color: #d4d4d4; + box-sizing: border-box; + display: table-cell; +} +.ui-grid-footer-cell:last-child { + border-right: 0; +} +.ui-grid-menu-button { + z-index: 2; + position: absolute; + right: 0; + top: 0; + background: #f3f3f3; + border: 0; + border-left: 1px solid #d4d4d4; + border-bottom: 1px solid #d4d4d4; + cursor: pointer; + height: 32px; + font-weight: normal; +} +.ui-grid-menu-button .ui-grid-icon-container { + margin-top: 5px; + margin-left: 2px; +} +.ui-grid-menu-button .ui-grid-menu { + right: 0; +} +.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid { + overflow: scroll; +} +.ui-grid-menu { + overflow: hidden; + max-width: 320px; + z-index: 2; + position: absolute; + right: 100%; + padding: 0 10px 20px 10px; + cursor: pointer; + box-sizing: border-box; +} +.ui-grid-menu-item { + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.ui-grid-menu .ui-grid-menu-inner { + background: #fff; + border: 1px solid #d4d4d4; + position: relative; + white-space: nowrap; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; +} +.ui-grid-menu .ui-grid-menu-inner ul { + margin: 0; + padding: 0; + list-style-type: none; +} +.ui-grid-menu .ui-grid-menu-inner ul li { + padding: 0; +} +.ui-grid-menu .ui-grid-menu-inner ul li .ui-grid-menu-item { + color: #000; + min-width: 100%; + padding: 8px; + text-align: left; + background: transparent; + border: none; + cursor: default; +} +.ui-grid-menu .ui-grid-menu-inner ul li button.ui-grid-menu-item { + cursor: pointer; +} +.ui-grid-menu .ui-grid-menu-inner ul li button.ui-grid-menu-item:hover, +.ui-grid-menu .ui-grid-menu-inner ul li button.ui-grid-menu-item:focus { + background-color: #b3c4c7; +} +.ui-grid-menu .ui-grid-menu-inner ul li button.ui-grid-menu-item.ui-grid-menu-item-active { + background-color: #9cb2b6; +} +.ui-grid-menu .ui-grid-menu-inner ul li:not(:last-child) > .ui-grid-menu-item { + border-bottom: 1px solid #d4d4d4; +} +.ui-grid-sortarrow { + right: 5px; + position: absolute; + width: 20px; + top: 0; + bottom: 0; + background-position: center; +} +.ui-grid-sortarrow.down { + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -o-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +@font-face { + font-family: 'ui-grid'; + src: url('../fonts/ui-grid.eot'); + src: url('../fonts/ui-grid.eot#iefix') format('embedded-opentype'), url('../fonts/ui-grid.woff') format('woff'), url('../fonts/ui-grid.ttf') format('truetype'), url('../fonts/ui-grid.svg?#ui-grid') format('svg'); + font-weight: normal; + font-style: normal; +} +/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ +/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ +/* +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: 'ui-grid'; + src: url('@{font-path}ui-grid.svg?12312827#ui-grid') format('svg'); + } +} +*/ +[class^="ui-grid-icon"]:before, +[class*=" ui-grid-icon"]:before { + font-family: "ui-grid"; + font-style: normal; + font-weight: normal; + speak: none; + display: inline-block; + text-decoration: inherit; + width: 1em; + margin-right: 0.2em; + text-align: center; + /* opacity: .8; */ + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + /* Animation center compensation - margins should be symmetric */ + /* remove if not needed */ + margin-left: 0.2em; + /* you can be more comfortable with increased icons size */ + /* font-size: 120%; */ + /* Uncomment for 3D effect */ + /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ +} +.ui-grid-icon-blank::before { + width: 1em; + content: ' '; +} +.ui-grid-icon-plus-squared:before { + content: '\c350'; +} +.ui-grid-icon-minus-squared:before { + content: '\c351'; +} +.ui-grid-icon-search:before { + content: '\c352'; +} +.ui-grid-icon-cancel:before { + content: '\c353'; +} +.ui-grid-icon-info-circled:before { + content: '\c354'; +} +.ui-grid-icon-lock:before { + content: '\c355'; +} +.ui-grid-icon-lock-open:before { + content: '\c356'; +} +.ui-grid-icon-pencil:before { + content: '\c357'; +} +.ui-grid-icon-down-dir:before { + content: '\c358'; +} +.ui-grid-icon-up-dir:before { + content: '\c359'; +} +.ui-grid-icon-left-dir:before { + content: '\c35a'; +} +.ui-grid-icon-right-dir:before { + content: '\c35b'; +} +.ui-grid-icon-left-open:before { + content: '\c35c'; +} +.ui-grid-icon-right-open:before { + content: '\c35d'; +} +.ui-grid-icon-angle-down:before { + content: '\c35e'; +} +.ui-grid-icon-filter:before { + content: '\c35f'; +} +.ui-grid-icon-sort-alt-up:before { + content: '\c360'; +} +.ui-grid-icon-sort-alt-down:before { + content: '\c361'; +} +.ui-grid-icon-ok:before { + content: '\c362'; +} +.ui-grid-icon-menu:before { + content: '\c363'; +} +.ui-grid-icon-indent-left:before { + content: '\e800'; +} +.ui-grid-icon-indent-right:before { + content: '\e801'; +} +.ui-grid-icon-spin5:before { + content: '\ea61'; +} +/* +* RTL Styles +*/ +.ui-grid[dir=rtl] .ui-grid-header-cell, +.ui-grid[dir=rtl] .ui-grid-footer-cell, +.ui-grid[dir=rtl] .ui-grid-cell { + float: right !important; +} +.ui-grid[dir=rtl] .ui-grid-column-menu-button { + position: absolute; + left: 1px; + top: 0; + right: inherit; +} +.ui-grid[dir=rtl] .ui-grid-cell:first-child, +.ui-grid[dir=rtl] .ui-grid-header-cell:first-child, +.ui-grid[dir=rtl] .ui-grid-footer-cell:first-child { + border-right: 0; +} +.ui-grid[dir=rtl] .ui-grid-cell:last-child, +.ui-grid[dir=rtl] .ui-grid-header-cell:last-child { + border-right: 1px solid #d4d4d4; + border-left: 0; +} +.ui-grid[dir=rtl] .ui-grid-header-cell:first-child .ui-grid-vertical-bar, +.ui-grid[dir=rtl] .ui-grid-footer-cell:first-child .ui-grid-vertical-bar, +.ui-grid[dir=rtl] .ui-grid-cell:first-child .ui-grid-vertical-bar { + width: 0; +} +.ui-grid[dir=rtl] .ui-grid-menu-button { + z-index: 2; + position: absolute; + left: 0; + right: auto; + background: #f3f3f3; + border: 1px solid #d4d4d4; + cursor: pointer; + min-height: 27px; + font-weight: normal; +} +.ui-grid[dir=rtl] .ui-grid-menu-button .ui-grid-menu { + left: 0; + right: auto; +} +.ui-grid[dir=rtl] .ui-grid-filter-container .ui-grid-filter-button { + right: initial; + left: 0; +} +.ui-grid[dir=rtl] .ui-grid-filter-container .ui-grid-filter-button [class^="ui-grid-icon"] { + right: initial; + left: 10px; +} +/* + Animation example, for spinners +*/ +.ui-grid-animate-spin { + -moz-animation: ui-grid-spin 2s infinite linear; + -o-animation: ui-grid-spin 2s infinite linear; + -webkit-animation: ui-grid-spin 2s infinite linear; + animation: ui-grid-spin 2s infinite linear; + display: inline-block; +} +@-moz-keyframes ui-grid-spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-webkit-keyframes ui-grid-spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-o-keyframes ui-grid-spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-ms-keyframes ui-grid-spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes ui-grid-spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.ui-grid-cell-focus { + outline: 0; + background-color: #b3c4c7; +} +.ui-grid-focuser { + position: absolute; + left: 0; + top: 0; + z-index: -1; + width: 100%; + height: 100%; +} +.ui-grid-focuser:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.ui-grid-offscreen { + display: block; + position: absolute; + left: -10000px; + top: -10000px; + clip: rect(0px, 0px, 0px, 0px); +} +.ui-grid-cell input { + border-radius: inherit; + padding: 0; + width: 100%; + color: inherit; + height: auto; + font: inherit; + outline: none; +} +.ui-grid-cell input:focus { + color: inherit; + outline: none; +} +.ui-grid-cell input[type="checkbox"] { + margin: 9px 0 0 6px; + width: auto; +} +.ui-grid-cell input.ng-invalid { + border: 1px solid #fc8f8f; +} +.ui-grid-cell input.ng-valid { + border: 1px solid #d4d4d4; +} +.ui-grid-viewport .ui-grid-empty-base-layer-container { + position: absolute; + overflow: hidden; + pointer-events: none; + z-index: -1; +} +.expandableRow .ui-grid-row:nth-child(odd) .ui-grid-cell { + background-color: #fdfdfd; +} +.expandableRow .ui-grid-row:nth-child(even) .ui-grid-cell { + background-color: #f3f3f3; +} +.ui-grid-cell.ui-grid-disable-selection.ui-grid-row-header-cell { + pointer-events: none; +} +.ui-grid-expandable-buttons-cell i { + pointer-events: all; +} +.scrollFiller { + float: left; + border: 1px solid #d4d4d4; +} +.ui-grid-tree-header-row { + font-weight: bold !important; +} +/*--------------------------------------------------- + LESS Elements 0.9 + --------------------------------------------------- + A set of useful LESS mixins + More info at: http://lesselements.com + ---------------------------------------------------*/ +.ui-grid-pager-panel { + display: flex; + justify-content: space-between; + align-items: center; + position: absolute; + left: 0; + bottom: 0; + width: 100%; + padding-top: 3px; + padding-bottom: 3px; + box-sizing: content-box; +} +.ui-grid-pager-container { + float: left; +} +.ui-grid-pager-control { + padding: 5px 0; + display: flex; + flex-flow: row nowrap; + align-items: center; + margin-right: 10px; + margin-left: 10px; + min-width: 135px; + float: left; +} +.ui-grid-pager-control button, +.ui-grid-pager-control span, +.ui-grid-pager-control input { + margin-right: 4px; +} +.ui-grid-pager-control button { + height: 25px; + min-width: 26px; + display: inline-block; + margin-bottom: 0; + font-weight: normal; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background: #f3f3f3; + border: 1px solid #ccc; + white-space: nowrap; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #eee; +} +.ui-grid-pager-control button:hover { + border-color: #adadad; + text-decoration: none; +} +.ui-grid-pager-control button:focus { + border-color: #8c8c8c; + text-decoration: none; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.ui-grid-pager-control button:active { + border-color: #adadad; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.ui-grid-pager-control button:active:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.ui-grid-pager-control button:active:hover, +.ui-grid-pager-control button:active:focus { + background-color: #c8c8c8; + border-color: #8c8c8c; +} +.ui-grid-pager-control button:hover, +.ui-grid-pager-control button:focus, +.ui-grid-pager-control button:active { + color: #eee; + background: #dadada; +} +.ui-grid-pager-control button[disabled] { + cursor: not-allowed; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} +.ui-grid-pager-control button[disabled]:hover, +.ui-grid-pager-control button[disabled]:focus { + background-color: #f3f3f3; + border-color: #ccc; +} +.ui-grid-pager-control input { + display: inline; + height: 26px; + width: 50px; + vertical-align: top; + color: #555555; + background: #fff; + border: 1px solid #ccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.ui-grid-pager-control input:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.ui-grid-pager-control input[disabled], +.ui-grid-pager-control input[readonly], +.ui-grid-pager-control input::-moz-placeholder { + opacity: 1; +} +.ui-grid-pager-control input::-moz-placeholder, +.ui-grid-pager-control input:-ms-input-placeholder, +.ui-grid-pager-control input::-webkit-input-placeholder { + color: #999; +} +.ui-grid-pager-control input::-ms-expand { + border: 0; + background-color: transparent; +} +.ui-grid-pager-control input[disabled], +.ui-grid-pager-control input[readonly] { + background-color: #eeeeee; +} +.ui-grid-pager-control input[disabled] { + cursor: not-allowed; +} +.ui-grid-pager-control .ui-grid-pager-max-pages-number { + vertical-align: bottom; +} +.ui-grid-pager-control .ui-grid-pager-max-pages-number > * { + vertical-align: bottom; +} +.ui-grid-pager-control .ui-grid-pager-max-pages-number abbr { + border-bottom: none; + text-decoration: none; +} +.ui-grid-pager-control .first-bar { + width: 10px; + border-left: 2px solid #4d4d4d; + margin-top: -6px; + height: 12px; + margin-left: -3px; +} +.ui-grid-pager-control .first-bar-rtl { + width: 10px; + border-left: 2px solid #4d4d4d; + margin-top: -6px; + height: 12px; + margin-right: -7px; +} +.ui-grid-pager-control .first-triangle { + width: 0; + height: 0; + border-style: solid; + border-width: 5px 8.7px 5px 0; + border-color: transparent #4d4d4d transparent transparent; + margin-left: 2px; +} +.ui-grid-pager-control .next-triangle { + margin-left: 1px; +} +.ui-grid-pager-control .prev-triangle { + margin-left: 0; +} +.ui-grid-pager-control .last-triangle { + width: 0; + height: 0; + border-style: solid; + border-width: 5px 0 5px 8.7px; + border-color: transparent transparent transparent #4d4d4d; + margin-left: -1px; +} +.ui-grid-pager-control .last-bar { + width: 10px; + border-left: 2px solid #4d4d4d; + margin-top: -6px; + height: 12px; + margin-left: 1px; +} +.ui-grid-pager-control .last-bar-rtl { + width: 10px; + border-left: 2px solid #4d4d4d; + margin-top: -6px; + height: 12px; + margin-right: -11px; +} +.ui-grid-pager-row-count-picker { + float: left; + padding: 5px 10px; +} +.ui-grid-pager-row-count-picker select { + color: #555555; + background: #fff; + border: 1px solid #ccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + height: 25px; + width: 67px; + display: inline; + vertical-align: middle; +} +.ui-grid-pager-row-count-picker select:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.ui-grid-pager-row-count-picker select[disabled], +.ui-grid-pager-row-count-picker select[readonly], +.ui-grid-pager-row-count-picker select::-moz-placeholder { + opacity: 1; +} +.ui-grid-pager-row-count-picker select::-moz-placeholder, +.ui-grid-pager-row-count-picker select:-ms-input-placeholder, +.ui-grid-pager-row-count-picker select::-webkit-input-placeholder { + color: #999; +} +.ui-grid-pager-row-count-picker select::-ms-expand { + border: 0; + background-color: transparent; +} +.ui-grid-pager-row-count-picker select[disabled], +.ui-grid-pager-row-count-picker select[readonly] { + background-color: #eeeeee; +} +.ui-grid-pager-row-count-picker select[disabled] { + cursor: not-allowed; +} +.ui-grid-pager-row-count-picker .ui-grid-pager-row-count-label { + margin-top: 3px; +} +.ui-grid-pager-count-container { + float: right; + margin-top: 4px; + min-width: 50px; +} +.ui-grid-pager-count-container .ui-grid-pager-count { + margin-right: 10px; + margin-left: 10px; + float: right; +} +.ui-grid-pager-count-container .ui-grid-pager-count abbr { + border-bottom: none; + text-decoration: none; +} +.ui-grid-pinned-container { + position: absolute; + display: inline; + top: 0; +} +.ui-grid-pinned-container.ui-grid-pinned-container-left { + float: left; + left: 0; +} +.ui-grid-pinned-container.ui-grid-pinned-container-right { + float: right; + right: 0; +} +.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-header-cell:last-child { + box-sizing: border-box; + border-right: 1px solid; + border-width: 1px; + border-right-color: #aeaeae; +} +.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-cell:last-child { + box-sizing: border-box; + border-right: 1px solid; + border-width: 1px; + border-right-color: #aeaeae; +} +.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar, +.ui-grid-pinned-container .ui-grid-cell:not(:last-child) .ui-grid-vertical-bar { + width: 1px; +} +.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar { + background-color: #d4d4d4; +} +.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-cell:not(:last-child) .ui-grid-vertical-bar { + background-color: #aeaeae; +} +.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-header-cell:last-child .ui-grid-vertical-bar { + right: -1px; + width: 1px; + background-color: #aeaeae; +} +.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-header-cell:first-child { + box-sizing: border-box; + border-left: 1px solid; + border-width: 1px; + border-left-color: #aeaeae; +} +.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-cell:first-child { + box-sizing: border-box; + border-left: 1px solid; + border-width: 1px; + border-left-color: #aeaeae; +} +.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-header-cell:not(:first-child) .ui-grid-vertical-bar, +.ui-grid-pinned-container .ui-grid-cell:not(:first-child) .ui-grid-vertical-bar { + width: 1px; +} +.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-header-cell:not(:first-child) .ui-grid-vertical-bar { + background-color: #d4d4d4; +} +.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-cell:not(:last-child) .ui-grid-vertical-bar { + background-color: #aeaeae; +} +.ui-grid-pinned-container.ui-grid-pinned-container-first .ui-grid-header-cell:first-child .ui-grid-vertical-bar { + left: -1px; + width: 1px; + background-color: #aeaeae; +} +.ui-grid-column-resizer { + top: 0; + bottom: 0; + width: 5px; + position: absolute; + cursor: col-resize; +} +.ui-grid-column-resizer.left { + left: 0; +} +.ui-grid-column-resizer.right { + right: 0; +} +.ui-grid-header-cell:last-child .ui-grid-column-resizer.right { + border-right: 1px solid #d4d4d4; +} +.ui-grid[dir=rtl] .ui-grid-header-cell:last-child .ui-grid-column-resizer.right { + border-right: 0; +} +.ui-grid[dir=rtl] .ui-grid-header-cell:last-child .ui-grid-column-resizer.left { + border-left: 1px solid #d4d4d4; +} +.ui-grid.column-resizing { + cursor: col-resize; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.ui-grid.column-resizing .ui-grid-resize-overlay { + position: absolute; + top: 0; + height: 100%; + width: 1px; + background-color: #aeaeae; +} +.ui-grid-row-saving .ui-grid-cell { + color: #848484 !important; +} +.ui-grid-row-dirty .ui-grid-cell { + color: #610B38; +} +.ui-grid-row-error .ui-grid-cell { + color: #FF0000 !important; +} +.ui-grid-row.ui-grid-row-selected > [ui-grid-row] > .ui-grid-cell { + background-color: #C9DDE1; +} +.ui-grid-disable-selection { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; +} +.ui-grid-selection-row-header-buttons { + display: flex; + align-items: center; + height: 100%; + cursor: pointer; +} +.ui-grid-selection-row-header-buttons::before { + opacity: 0.1; +} +.ui-grid-selection-row-header-buttons.ui-grid-row-selected::before, +.ui-grid-selection-row-header-buttons.ui-grid-all-selected::before { + opacity: 1; +} +.ui-grid-tree-row-header-buttons.ui-grid-tree-header { + cursor: pointer; + opacity: 1; +} +.ui-grid-tree-header-row { + font-weight: bold !important; +} +.ui-grid-tree-header-row .ui-grid-cell.ui-grid-disable-selection.ui-grid-row-header-cell { + pointer-events: all; +} +.ui-grid-cell-contents.invalid { + border: 1px solid #fc8f8f; +} diff --git a/release/4.12.0/css/ui-grid.edit.css b/release/4.12.0/css/ui-grid.edit.css new file mode 100644 index 000000000..2927abb32 --- /dev/null +++ b/release/4.12.0/css/ui-grid.edit.css @@ -0,0 +1,29 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ +.ui-grid-cell input { + border-radius: inherit; + padding: 0; + width: 100%; + color: inherit; + height: auto; + font: inherit; + outline: none; +} +.ui-grid-cell input:focus { + color: inherit; + outline: none; +} +.ui-grid-cell input[type="checkbox"] { + margin: 9px 0 0 6px; + width: auto; +} +.ui-grid-cell input.ng-invalid { + border: 1px solid #fc8f8f; +} +.ui-grid-cell input.ng-valid { + border: 1px solid #d4d4d4; +} + diff --git a/release/4.12.0/css/ui-grid.edit.min.css b/release/4.12.0/css/ui-grid.edit.min.css new file mode 100644 index 000000000..de38f6e03 --- /dev/null +++ b/release/4.12.0/css/ui-grid.edit.min.css @@ -0,0 +1,5 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */.ui-grid-cell input{border-radius:inherit;font:inherit;height:auto;padding:0;width:100%}.ui-grid-cell input,.ui-grid-cell input:focus{color:inherit;outline:none}.ui-grid-cell input[type=checkbox]{margin:9px 0 0 6px;width:auto}.ui-grid-cell input.ng-invalid{border:1px solid #fc8f8f}.ui-grid-cell input.ng-valid{border:1px solid #d4d4d4} \ No newline at end of file diff --git a/release/4.12.0/css/ui-grid.emptyBaseLayer.css b/release/4.12.0/css/ui-grid.emptyBaseLayer.css new file mode 100644 index 000000000..e7486bfd8 --- /dev/null +++ b/release/4.12.0/css/ui-grid.emptyBaseLayer.css @@ -0,0 +1,12 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ +.ui-grid-viewport .ui-grid-empty-base-layer-container { + position: absolute; + overflow: hidden; + pointer-events: none; + z-index: -1; +} + diff --git a/release/4.12.0/css/ui-grid.emptyBaseLayer.min.css b/release/4.12.0/css/ui-grid.emptyBaseLayer.min.css new file mode 100644 index 000000000..7fe3098fd --- /dev/null +++ b/release/4.12.0/css/ui-grid.emptyBaseLayer.min.css @@ -0,0 +1,5 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */.ui-grid-viewport .ui-grid-empty-base-layer-container{overflow:hidden;pointer-events:none;position:absolute;z-index:-1} \ No newline at end of file diff --git a/release/4.12.0/css/ui-grid.expandable.css b/release/4.12.0/css/ui-grid.expandable.css new file mode 100644 index 000000000..509d5a511 --- /dev/null +++ b/release/4.12.0/css/ui-grid.expandable.css @@ -0,0 +1,22 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ +.expandableRow .ui-grid-row:nth-child(odd) .ui-grid-cell { + background-color: #fdfdfd; +} +.expandableRow .ui-grid-row:nth-child(even) .ui-grid-cell { + background-color: #f3f3f3; +} +.ui-grid-cell.ui-grid-disable-selection.ui-grid-row-header-cell { + pointer-events: none; +} +.ui-grid-expandable-buttons-cell i { + pointer-events: all; +} +.scrollFiller { + float: left; + border: 1px solid #d4d4d4; +} + diff --git a/release/4.12.0/css/ui-grid.expandable.min.css b/release/4.12.0/css/ui-grid.expandable.min.css new file mode 100644 index 000000000..82b2ee312 --- /dev/null +++ b/release/4.12.0/css/ui-grid.expandable.min.css @@ -0,0 +1,5 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */.expandableRow .ui-grid-row:nth-child(odd) .ui-grid-cell{background-color:#fdfdfd}.expandableRow .ui-grid-row:nth-child(2n) .ui-grid-cell{background-color:#f3f3f3}.ui-grid-cell.ui-grid-disable-selection.ui-grid-row-header-cell{pointer-events:none}.ui-grid-expandable-buttons-cell i{pointer-events:all}.scrollFiller{border:1px solid #d4d4d4;float:left} \ No newline at end of file diff --git a/release/4.12.0/css/ui-grid.exporter.css b/release/4.12.0/css/ui-grid.exporter.css new file mode 100644 index 000000000..d0cd610e8 --- /dev/null +++ b/release/4.12.0/css/ui-grid.exporter.css @@ -0,0 +1,6 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ + diff --git a/release/4.12.0/css/ui-grid.exporter.min.css b/release/4.12.0/css/ui-grid.exporter.min.css new file mode 100644 index 000000000..566f84392 --- /dev/null +++ b/release/4.12.0/css/ui-grid.exporter.min.css @@ -0,0 +1,5 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ \ No newline at end of file diff --git a/release/4.12.0/css/ui-grid.grouping.css b/release/4.12.0/css/ui-grid.grouping.css new file mode 100644 index 000000000..c5efe28c2 --- /dev/null +++ b/release/4.12.0/css/ui-grid.grouping.css @@ -0,0 +1,9 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ +.ui-grid-tree-header-row { + font-weight: bold !important; +} + diff --git a/release/4.12.0/css/ui-grid.grouping.min.css b/release/4.12.0/css/ui-grid.grouping.min.css new file mode 100644 index 000000000..59217d296 --- /dev/null +++ b/release/4.12.0/css/ui-grid.grouping.min.css @@ -0,0 +1,5 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */.ui-grid-tree-header-row{font-weight:700!important} \ No newline at end of file diff --git a/release/4.12.0/css/ui-grid.importer.css b/release/4.12.0/css/ui-grid.importer.css new file mode 100644 index 000000000..d0cd610e8 --- /dev/null +++ b/release/4.12.0/css/ui-grid.importer.css @@ -0,0 +1,6 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ + diff --git a/release/4.12.0/css/ui-grid.importer.min.css b/release/4.12.0/css/ui-grid.importer.min.css new file mode 100644 index 000000000..566f84392 --- /dev/null +++ b/release/4.12.0/css/ui-grid.importer.min.css @@ -0,0 +1,5 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ \ No newline at end of file diff --git a/release/4.12.0/css/ui-grid.min.css b/release/4.12.0/css/ui-grid.min.css new file mode 100644 index 000000000..7bada1744 --- /dev/null +++ b/release/4.12.0/css/ui-grid.min.css @@ -0,0 +1 @@ +.ui-grid{border:1px solid #d4d4d4;box-sizing:content-box;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-o-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}.ui-grid-vertical-bar{position:absolute;right:0;width:0}.ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar,.ui-grid-cell:not(:last-child) .ui-grid-vertical-bar{width:1px}.ui-grid-scrollbar-placeholder{background-color:transparent}.ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar{background-color:#d4d4d4}.ui-grid-cell:not(:last-child) .ui-grid-vertical-bar{background-color:#d4d4d4}.ui-grid-header-cell:last-child .ui-grid-vertical-bar{right:-1px;width:1px;background-color:#d4d4d4}.ui-grid-clearfix:before,.ui-grid-clearfix:after{content:"";display:table}.ui-grid-clearfix:after{clear:both}.ui-grid-invisible{visibility:hidden}.ui-grid-contents-wrapper{position:relative;height:100%;width:100%}.ui-grid-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.ui-grid-icon-button{background-color:transparent;border:none;padding:0}.clickable{cursor:pointer}.ui-grid-top-panel-background{background-color:#f3f3f3}.ui-grid-header{border-bottom:1px solid #d4d4d4;box-sizing:border-box}.ui-grid-top-panel{position:relative;overflow:hidden;font-weight:bold;background-color:#f3f3f3;-webkit-border-top-right-radius:-1px;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-webkit-border-top-left-radius:-1px;-moz-border-radius-topright:-1px;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:0;-moz-border-radius-topleft:-1px;border-top-right-radius:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:-1px;-moz-background-clip:padding-box;-webkit-background-clip:padding-box;background-clip:padding-box}.ui-grid-header-viewport{overflow:hidden}.ui-grid-header-canvas:before,.ui-grid-header-canvas:after{content:"";display:-ms-flexbox;display:flex;line-height:0}.ui-grid-header-canvas:after{clear:both}.ui-grid-header-cell-wrapper{position:relative;display:-ms-flexbox;display:flex;box-sizing:border-box;height:100%;width:100%}.ui-grid-header-cell-row{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.ui-grid-header-cell{position:relative;box-sizing:border-box;background-color:inherit;border-right:1px solid;border-color:#d4d4d4;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:0}.ui-grid-header-cell:last-child{border-right:0}.ui-grid-header-cell .sortable{cursor:pointer}.ui-grid-header-cell .ui-grid-sort-priority-number{margin-left:-8px}.ui-grid-header-cell>div{-ms-flex-basis:100%;flex-basis:100%}.ui-grid-header .ui-grid-vertical-bar{top:0;bottom:0}.ui-grid-column-menu-button{position:absolute;right:1px;top:0}.ui-grid-column-menu-button .ui-grid-icon-angle-down{vertical-align:sub}.ui-grid-header-cell-last-col .ui-grid-cell-contents,.ui-grid-header-cell-last-col .ui-grid-filter-container,.ui-grid-header-cell-last-col .ui-grid-column-menu-button,.ui-grid-header-cell-last-col+.ui-grid-column-resizer.right{margin-right:13px}.ui-grid-render-container-right .ui-grid-header-cell-last-col .ui-grid-cell-contents,.ui-grid-render-container-right .ui-grid-header-cell-last-col .ui-grid-filter-container,.ui-grid-render-container-right .ui-grid-header-cell-last-col .ui-grid-column-menu-button,.ui-grid-render-container-right .ui-grid-header-cell-last-col+.ui-grid-column-resizer.right{margin-right:28px}.ui-grid-column-menu{position:absolute}.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-add,.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove{-webkit-transition:all .04s linear;-moz-transition:all .04s linear;-o-transition:all .04s linear;transition:all .04s linear;display:block !important}.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-add.ng-hide-add-active,.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove{-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-o-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-add,.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove.ng-hide-remove-active{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-add,.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove{-webkit-transition:all .04s linear;-moz-transition:all .04s linear;-o-transition:all .04s linear;transition:all .04s linear;display:block !important}.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-add.ng-hide-add-active,.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove{-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-o-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-add,.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid.ng-hide-remove.ng-hide-remove-active{-webkit-transform:translateY(0);-moz-transform:translateY(0);-o-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.ui-grid-filter-container{padding:4px 10px;position:relative}.ui-grid-filter-container .ui-grid-filter-button{position:absolute;top:0;bottom:0;right:0}.ui-grid-filter-container .ui-grid-filter-button [class^="ui-grid-icon"]{position:absolute;top:50%;line-height:32px;margin-top:-16px;right:10px;opacity:.66}.ui-grid-filter-container .ui-grid-filter-button [class^="ui-grid-icon"]:hover{opacity:1}.ui-grid-filter-container .ui-grid-filter-button-select{position:absolute;top:0;bottom:0;right:0}.ui-grid-filter-container .ui-grid-filter-button-select [class^="ui-grid-icon"]{position:absolute;top:50%;line-height:32px;margin-top:-16px;right:0px;opacity:.66}.ui-grid-filter-container .ui-grid-filter-button-select [class^="ui-grid-icon"]:hover{opacity:1}input[type="text"].ui-grid-filter-input{box-sizing:border-box;padding:0 18px 0 0;margin:0;width:100%;border:1px solid #d4d4d4;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-webkit-border-top-left-radius:0;-moz-border-radius-topright:0;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:0;-moz-border-radius-topleft:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:0;-moz-background-clip:padding-box;-webkit-background-clip:padding-box;background-clip:padding-box}input[type="text"].ui-grid-filter-input:hover{border:1px solid #d4d4d4}select.ui-grid-filter-select{padding:0;margin:0;border:0;width:90%;border:1px solid #d4d4d4;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-webkit-border-top-left-radius:0;-moz-border-radius-topright:0;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:0;-moz-border-radius-topleft:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:0;-moz-background-clip:padding-box;-webkit-background-clip:padding-box;background-clip:padding-box}select.ui-grid-filter-select:hover{border:1px solid #d4d4d4}.ui-grid-filter-cancel-button-hidden select.ui-grid-filter-select{width:100%}.ui-grid-render-container{position:inherit;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-webkit-border-top-left-radius:0;-moz-border-radius-topright:0;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:0;-moz-border-radius-topleft:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:0;-moz-background-clip:padding-box;-webkit-background-clip:padding-box;background-clip:padding-box}.ui-grid-render-container:focus{outline:none}.ui-grid-viewport{min-height:20px;position:relative;overflow-y:scroll;-webkit-overflow-scrolling:touch}.ui-grid-viewport:focus{outline:none !important}.ui-grid-canvas{position:relative;padding-top:1px;min-height:1px}.ui-grid-row{clear:both}.ui-grid-row:nth-child(odd) .ui-grid-cell{background-color:#fdfdfd}.ui-grid-row:nth-child(even) .ui-grid-cell{background-color:#f3f3f3}.ui-grid-row:last-child .ui-grid-cell{border-bottom-color:#d4d4d4;border-bottom-style:solid}.ui-grid-row:hover>[ui-grid-row]>.ui-grid-cell:hover .ui-grid-cell,.ui-grid-row:nth-child(odd):hover .ui-grid-cell,.ui-grid-row:nth-child(even):hover .ui-grid-cell{background-color:#d5eaee}.ui-grid-no-row-overlay{position:absolute;top:0;bottom:0;left:0;right:0;margin:10%;background-color:#f3f3f3;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-webkit-border-top-left-radius:0;-moz-border-radius-topright:0;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:0;-moz-border-radius-topleft:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:0;-moz-background-clip:padding-box;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #d4d4d4;font-size:2em;text-align:center}.ui-grid-no-row-overlay>*{position:absolute;display:table;margin:auto 0;width:100%;top:0;bottom:0;left:0;right:0;opacity:.66}.ui-grid-cell{overflow:hidden;float:left;background-color:inherit;border-right:1px solid;border-color:#d4d4d4;box-sizing:border-box}.ui-grid-cell:last-child{border-right:0}.ui-grid-cell-contents{padding:5px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden;height:100%}.ui-grid-cell-contents-hidden{visibility:hidden;width:0;height:0;display:none}.ui-grid-row .ui-grid-cell.ui-grid-row-header-cell{background-color:#F0F0EE;border-bottom:solid 1px #d4d4d4}.ui-grid-cell-empty{display:inline-block;width:10px;height:10px}.ui-grid-footer-info{padding:5px 10px}.ui-grid-footer-panel-background{background-color:#f3f3f3}.ui-grid-footer-panel{position:relative;border-bottom:1px solid #d4d4d4;border-top:1px solid #d4d4d4;overflow:hidden;font-weight:bold;background-color:#f3f3f3;-webkit-border-top-right-radius:-1px;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-webkit-border-top-left-radius:-1px;-moz-border-radius-topright:-1px;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:0;-moz-border-radius-topleft:-1px;border-top-right-radius:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:-1px;-moz-background-clip:padding-box;-webkit-background-clip:padding-box;background-clip:padding-box}.ui-grid-grid-footer{float:left;width:100%}.ui-grid-footer-viewport,.ui-grid-footer-canvas{height:100%}.ui-grid-footer-viewport{overflow:hidden}.ui-grid-footer-canvas{position:relative}.ui-grid-footer-canvas:before,.ui-grid-footer-canvas:after{content:"";display:table;line-height:0}.ui-grid-footer-canvas:after{clear:both}.ui-grid-footer-cell-wrapper{position:relative;display:table;box-sizing:border-box;height:100%}.ui-grid-footer-cell-row{display:table-row}.ui-grid-footer-cell{overflow:hidden;background-color:inherit;border-right:1px solid;border-color:#d4d4d4;box-sizing:border-box;display:table-cell}.ui-grid-footer-cell:last-child{border-right:0}.ui-grid-menu-button{z-index:2;position:absolute;right:0;top:0;background:#f3f3f3;border:0;border-left:1px solid #d4d4d4;border-bottom:1px solid #d4d4d4;cursor:pointer;height:32px;font-weight:normal}.ui-grid-menu-button .ui-grid-icon-container{margin-top:5px;margin-left:2px}.ui-grid-menu-button .ui-grid-menu{right:0}.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid{overflow:scroll}.ui-grid-menu{overflow:hidden;max-width:320px;z-index:2;position:absolute;right:100%;padding:0 10px 20px 10px;cursor:pointer;box-sizing:border-box}.ui-grid-menu-item{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-grid-menu .ui-grid-menu-inner{background:#fff;border:1px solid #d4d4d4;position:relative;white-space:nowrap;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ui-grid-menu .ui-grid-menu-inner ul{margin:0;padding:0;list-style-type:none}.ui-grid-menu .ui-grid-menu-inner ul li{padding:0}.ui-grid-menu .ui-grid-menu-inner ul li .ui-grid-menu-item{color:#000;min-width:100%;padding:8px;text-align:left;background:transparent;border:none;cursor:default}.ui-grid-menu .ui-grid-menu-inner ul li button.ui-grid-menu-item{cursor:pointer}.ui-grid-menu .ui-grid-menu-inner ul li button.ui-grid-menu-item:hover,.ui-grid-menu .ui-grid-menu-inner ul li button.ui-grid-menu-item:focus{background-color:#b3c4c7}.ui-grid-menu .ui-grid-menu-inner ul li button.ui-grid-menu-item.ui-grid-menu-item-active{background-color:#9cb2b6}.ui-grid-menu .ui-grid-menu-inner ul li:not(:last-child)>.ui-grid-menu-item{border-bottom:1px solid #d4d4d4}.ui-grid-sortarrow{right:5px;position:absolute;width:20px;top:0;bottom:0;background-position:center}.ui-grid-sortarrow.down{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}@font-face{font-family:'ui-grid';src:url('../fonts/ui-grid.eot');src:url('../fonts/ui-grid.eot#iefix') format('embedded-opentype'),url('../fonts/ui-grid.woff') format('woff'),url('../fonts/ui-grid.ttf') format('truetype'),url('../fonts/ui-grid.svg?#ui-grid') format('svg');font-weight:normal;font-style:normal}[class^="ui-grid-icon"]:before,[class*=" ui-grid-icon"]:before{font-family:"ui-grid";font-style:normal;font-weight:normal;speak:none;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em}.ui-grid-icon-blank::before{width:1em;content:' '}.ui-grid-icon-plus-squared:before{content:'\c350'}.ui-grid-icon-minus-squared:before{content:'\c351'}.ui-grid-icon-search:before{content:'\c352'}.ui-grid-icon-cancel:before{content:'\c353'}.ui-grid-icon-info-circled:before{content:'\c354'}.ui-grid-icon-lock:before{content:'\c355'}.ui-grid-icon-lock-open:before{content:'\c356'}.ui-grid-icon-pencil:before{content:'\c357'}.ui-grid-icon-down-dir:before{content:'\c358'}.ui-grid-icon-up-dir:before{content:'\c359'}.ui-grid-icon-left-dir:before{content:'\c35a'}.ui-grid-icon-right-dir:before{content:'\c35b'}.ui-grid-icon-left-open:before{content:'\c35c'}.ui-grid-icon-right-open:before{content:'\c35d'}.ui-grid-icon-angle-down:before{content:'\c35e'}.ui-grid-icon-filter:before{content:'\c35f'}.ui-grid-icon-sort-alt-up:before{content:'\c360'}.ui-grid-icon-sort-alt-down:before{content:'\c361'}.ui-grid-icon-ok:before{content:'\c362'}.ui-grid-icon-menu:before{content:'\c363'}.ui-grid-icon-indent-left:before{content:'\e800'}.ui-grid-icon-indent-right:before{content:'\e801'}.ui-grid-icon-spin5:before{content:'\ea61'}.ui-grid[dir=rtl] .ui-grid-header-cell,.ui-grid[dir=rtl] .ui-grid-footer-cell,.ui-grid[dir=rtl] .ui-grid-cell{float:right !important}.ui-grid[dir=rtl] .ui-grid-column-menu-button{position:absolute;left:1px;top:0;right:inherit}.ui-grid[dir=rtl] .ui-grid-cell:first-child,.ui-grid[dir=rtl] .ui-grid-header-cell:first-child,.ui-grid[dir=rtl] .ui-grid-footer-cell:first-child{border-right:0}.ui-grid[dir=rtl] .ui-grid-cell:last-child,.ui-grid[dir=rtl] .ui-grid-header-cell:last-child{border-right:1px solid #d4d4d4;border-left:0}.ui-grid[dir=rtl] .ui-grid-header-cell:first-child .ui-grid-vertical-bar,.ui-grid[dir=rtl] .ui-grid-footer-cell:first-child .ui-grid-vertical-bar,.ui-grid[dir=rtl] .ui-grid-cell:first-child .ui-grid-vertical-bar{width:0}.ui-grid[dir=rtl] .ui-grid-menu-button{z-index:2;position:absolute;left:0;right:auto;background:#f3f3f3;border:1px solid #d4d4d4;cursor:pointer;min-height:27px;font-weight:normal}.ui-grid[dir=rtl] .ui-grid-menu-button .ui-grid-menu{left:0;right:auto}.ui-grid[dir=rtl] .ui-grid-filter-container .ui-grid-filter-button{right:initial;left:0}.ui-grid[dir=rtl] .ui-grid-filter-container .ui-grid-filter-button [class^="ui-grid-icon"]{right:initial;left:10px}.ui-grid-animate-spin{-moz-animation:ui-grid-spin 2s infinite linear;-o-animation:ui-grid-spin 2s infinite linear;-webkit-animation:ui-grid-spin 2s infinite linear;animation:ui-grid-spin 2s infinite linear;display:inline-block}@-moz-keyframes ui-grid-spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-webkit-keyframes ui-grid-spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-o-keyframes ui-grid-spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-ms-keyframes ui-grid-spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes ui-grid-spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.ui-grid-cell-focus{outline:0;background-color:#b3c4c7}.ui-grid-focuser{position:absolute;left:0;top:0;z-index:-1;width:100%;height:100%}.ui-grid-focuser:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.ui-grid-offscreen{display:block;position:absolute;left:-10000px;top:-10000px;clip:rect(0, 0, 0, 0)}.ui-grid-cell input{border-radius:inherit;padding:0;width:100%;color:inherit;height:auto;font:inherit;outline:none}.ui-grid-cell input:focus{color:inherit;outline:none}.ui-grid-cell input[type="checkbox"]{margin:9px 0 0 6px;width:auto}.ui-grid-cell input.ng-invalid{border:1px solid #fc8f8f}.ui-grid-cell input.ng-valid{border:1px solid #d4d4d4}.ui-grid-viewport .ui-grid-empty-base-layer-container{position:absolute;overflow:hidden;pointer-events:none;z-index:-1}.expandableRow .ui-grid-row:nth-child(odd) .ui-grid-cell{background-color:#fdfdfd}.expandableRow .ui-grid-row:nth-child(even) .ui-grid-cell{background-color:#f3f3f3}.ui-grid-cell.ui-grid-disable-selection.ui-grid-row-header-cell{pointer-events:none}.ui-grid-expandable-buttons-cell i{pointer-events:all}.scrollFiller{float:left;border:1px solid #d4d4d4}.ui-grid-tree-header-row{font-weight:bold !important}.ui-grid-pager-panel{display:flex;justify-content:space-between;align-items:center;position:absolute;left:0;bottom:0;width:100%;padding-top:3px;padding-bottom:3px;box-sizing:content-box}.ui-grid-pager-container{float:left}.ui-grid-pager-control{padding:5px 0;display:flex;flex-flow:row nowrap;align-items:center;margin-right:10px;margin-left:10px;min-width:135px;float:left}.ui-grid-pager-control button,.ui-grid-pager-control span,.ui-grid-pager-control input{margin-right:4px}.ui-grid-pager-control button{height:25px;min-width:26px;display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background:#f3f3f3;border:1px solid #ccc;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#eee}.ui-grid-pager-control button:hover{border-color:#adadad;text-decoration:none}.ui-grid-pager-control button:focus{border-color:#8c8c8c;text-decoration:none;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.ui-grid-pager-control button:active{border-color:#adadad;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.ui-grid-pager-control button:active:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.ui-grid-pager-control button:active:hover,.ui-grid-pager-control button:active:focus{background-color:#c8c8c8;border-color:#8c8c8c}.ui-grid-pager-control button:hover,.ui-grid-pager-control button:focus,.ui-grid-pager-control button:active{color:#eee;background:#dadada}.ui-grid-pager-control button[disabled]{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.ui-grid-pager-control button[disabled]:hover,.ui-grid-pager-control button[disabled]:focus{background-color:#f3f3f3;border-color:#ccc}.ui-grid-pager-control input{display:inline;height:26px;width:50px;vertical-align:top;color:#555555;background:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.ui-grid-pager-control input:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.ui-grid-pager-control input[disabled],.ui-grid-pager-control input[readonly],.ui-grid-pager-control input::-moz-placeholder{opacity:1}.ui-grid-pager-control input::-moz-placeholder,.ui-grid-pager-control input:-ms-input-placeholder,.ui-grid-pager-control input::-webkit-input-placeholder{color:#999}.ui-grid-pager-control input::-ms-expand{border:0;background-color:transparent}.ui-grid-pager-control input[disabled],.ui-grid-pager-control input[readonly]{background-color:#eeeeee}.ui-grid-pager-control input[disabled]{cursor:not-allowed}.ui-grid-pager-control .ui-grid-pager-max-pages-number{vertical-align:bottom}.ui-grid-pager-control .ui-grid-pager-max-pages-number>*{vertical-align:bottom}.ui-grid-pager-control .ui-grid-pager-max-pages-number abbr{border-bottom:none;text-decoration:none}.ui-grid-pager-control .first-bar{width:10px;border-left:2px solid #4d4d4d;margin-top:-6px;height:12px;margin-left:-3px}.ui-grid-pager-control .first-bar-rtl{width:10px;border-left:2px solid #4d4d4d;margin-top:-6px;height:12px;margin-right:-7px}.ui-grid-pager-control .first-triangle{width:0;height:0;border-style:solid;border-width:5px 8.7px 5px 0;border-color:transparent #4d4d4d transparent transparent;margin-left:2px}.ui-grid-pager-control .next-triangle{margin-left:1px}.ui-grid-pager-control .prev-triangle{margin-left:0}.ui-grid-pager-control .last-triangle{width:0;height:0;border-style:solid;border-width:5px 0 5px 8.7px;border-color:transparent transparent transparent #4d4d4d;margin-left:-1px}.ui-grid-pager-control .last-bar{width:10px;border-left:2px solid #4d4d4d;margin-top:-6px;height:12px;margin-left:1px}.ui-grid-pager-control .last-bar-rtl{width:10px;border-left:2px solid #4d4d4d;margin-top:-6px;height:12px;margin-right:-11px}.ui-grid-pager-row-count-picker{float:left;padding:5px 10px}.ui-grid-pager-row-count-picker select{color:#555555;background:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px;height:25px;width:67px;display:inline;vertical-align:middle}.ui-grid-pager-row-count-picker select:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.ui-grid-pager-row-count-picker select[disabled],.ui-grid-pager-row-count-picker select[readonly],.ui-grid-pager-row-count-picker select::-moz-placeholder{opacity:1}.ui-grid-pager-row-count-picker select::-moz-placeholder,.ui-grid-pager-row-count-picker select:-ms-input-placeholder,.ui-grid-pager-row-count-picker select::-webkit-input-placeholder{color:#999}.ui-grid-pager-row-count-picker select::-ms-expand{border:0;background-color:transparent}.ui-grid-pager-row-count-picker select[disabled],.ui-grid-pager-row-count-picker select[readonly]{background-color:#eeeeee}.ui-grid-pager-row-count-picker select[disabled]{cursor:not-allowed}.ui-grid-pager-row-count-picker .ui-grid-pager-row-count-label{margin-top:3px}.ui-grid-pager-count-container{float:right;margin-top:4px;min-width:50px}.ui-grid-pager-count-container .ui-grid-pager-count{margin-right:10px;margin-left:10px;float:right}.ui-grid-pager-count-container .ui-grid-pager-count abbr{border-bottom:none;text-decoration:none}.ui-grid-pinned-container{position:absolute;display:inline;top:0}.ui-grid-pinned-container.ui-grid-pinned-container-left{float:left;left:0}.ui-grid-pinned-container.ui-grid-pinned-container-right{float:right;right:0}.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-header-cell:last-child{box-sizing:border-box;border-right:1px solid;border-width:1px;border-right-color:#aeaeae}.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-cell:last-child{box-sizing:border-box;border-right:1px solid;border-width:1px;border-right-color:#aeaeae}.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar,.ui-grid-pinned-container .ui-grid-cell:not(:last-child) .ui-grid-vertical-bar{width:1px}.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar{background-color:#d4d4d4}.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-cell:not(:last-child) .ui-grid-vertical-bar{background-color:#aeaeae}.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-header-cell:last-child .ui-grid-vertical-bar{right:-1px;width:1px;background-color:#aeaeae}.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-header-cell:first-child{box-sizing:border-box;border-left:1px solid;border-width:1px;border-left-color:#aeaeae}.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-cell:first-child{box-sizing:border-box;border-left:1px solid;border-width:1px;border-left-color:#aeaeae}.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-header-cell:not(:first-child) .ui-grid-vertical-bar,.ui-grid-pinned-container .ui-grid-cell:not(:first-child) .ui-grid-vertical-bar{width:1px}.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-header-cell:not(:first-child) .ui-grid-vertical-bar{background-color:#d4d4d4}.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-cell:not(:last-child) .ui-grid-vertical-bar{background-color:#aeaeae}.ui-grid-pinned-container.ui-grid-pinned-container-first .ui-grid-header-cell:first-child .ui-grid-vertical-bar{left:-1px;width:1px;background-color:#aeaeae}.ui-grid-column-resizer{top:0;bottom:0;width:5px;position:absolute;cursor:col-resize}.ui-grid-column-resizer.left{left:0}.ui-grid-column-resizer.right{right:0}.ui-grid-header-cell:last-child .ui-grid-column-resizer.right{border-right:1px solid #d4d4d4}.ui-grid[dir=rtl] .ui-grid-header-cell:last-child .ui-grid-column-resizer.right{border-right:0}.ui-grid[dir=rtl] .ui-grid-header-cell:last-child .ui-grid-column-resizer.left{border-left:1px solid #d4d4d4}.ui-grid.column-resizing{cursor:col-resize;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui-grid.column-resizing .ui-grid-resize-overlay{position:absolute;top:0;height:100%;width:1px;background-color:#aeaeae}.ui-grid-row-saving .ui-grid-cell{color:#848484 !important}.ui-grid-row-dirty .ui-grid-cell{color:#610B38}.ui-grid-row-error .ui-grid-cell{color:#FF0000 !important}.ui-grid-row.ui-grid-row-selected>[ui-grid-row]>.ui-grid-cell{background-color:#C9DDE1}.ui-grid-disable-selection{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.ui-grid-selection-row-header-buttons{display:flex;align-items:center;height:100%;cursor:pointer}.ui-grid-selection-row-header-buttons::before{opacity:.1}.ui-grid-selection-row-header-buttons.ui-grid-row-selected::before,.ui-grid-selection-row-header-buttons.ui-grid-all-selected::before{opacity:1}.ui-grid-tree-row-header-buttons.ui-grid-tree-header{cursor:pointer;opacity:1}.ui-grid-tree-header-row{font-weight:bold !important}.ui-grid-tree-header-row .ui-grid-cell.ui-grid-disable-selection.ui-grid-row-header-cell{pointer-events:all}.ui-grid-cell-contents.invalid{border:1px solid #fc8f8f} \ No newline at end of file diff --git a/release/4.12.0/css/ui-grid.moveColumns.css b/release/4.12.0/css/ui-grid.moveColumns.css new file mode 100644 index 000000000..1168c4b1e --- /dev/null +++ b/release/4.12.0/css/ui-grid.moveColumns.css @@ -0,0 +1,15 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ +.movingColumn { + position: absolute; + top: 0; + border: 1px solid #d4d4d4; + box-shadow: inset 0 0 14px rgba(0, 0, 0, 0.2); +} +.movingColumn .ui-grid-icon-angle-down { + display: none; +} + diff --git a/release/4.12.0/css/ui-grid.moveColumns.min.css b/release/4.12.0/css/ui-grid.moveColumns.min.css new file mode 100644 index 000000000..0a2ee7fa5 --- /dev/null +++ b/release/4.12.0/css/ui-grid.moveColumns.min.css @@ -0,0 +1,5 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */.movingColumn{border:1px solid #d4d4d4;box-shadow:inset 0 0 14px rgba(0,0,0,.2);position:absolute;top:0}.movingColumn .ui-grid-icon-angle-down{display:none} \ No newline at end of file diff --git a/release/4.12.0/css/ui-grid.pagination.css b/release/4.12.0/css/ui-grid.pagination.css new file mode 100644 index 000000000..6ef5d98e7 --- /dev/null +++ b/release/4.12.0/css/ui-grid.pagination.css @@ -0,0 +1,305 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ +/* This file contains variable declarations (do not remove this line) */ +/*-- VARIABLES (DO NOT REMOVE THESE COMMENTS) --*/ +/** +* @section Grid styles +*/ +/** +* @section Header styles +*/ +/** @description Colors for header gradient */ +/** +* @section Grid body styles +*/ +/** @description Colors used for row alternation */ +/** +* @section Grid Menu colors +*/ +/** +* @section Sort arrow colors +*/ +/** +* @section Scrollbar styles +*/ +/** +* @section font library path +*/ +/*-- END VARIABLES (DO NOT REMOVE THESE COMMENTS) --*/ +/*--------------------------------------------------- + LESS Elements 0.9 + --------------------------------------------------- + A set of useful LESS mixins + More info at: http://lesselements.com + ---------------------------------------------------*/ +.ui-grid-pager-panel { + display: flex; + justify-content: space-between; + align-items: center; + position: absolute; + left: 0; + bottom: 0; + width: 100%; + padding-top: 3px; + padding-bottom: 3px; + box-sizing: content-box; +} +.ui-grid-pager-container { + float: left; +} +.ui-grid-pager-control { + padding: 5px 0; + display: flex; + flex-flow: row nowrap; + align-items: center; + margin-right: 10px; + margin-left: 10px; + min-width: 135px; + float: left; +} +.ui-grid-pager-control button, +.ui-grid-pager-control span, +.ui-grid-pager-control input { + margin-right: 4px; +} +.ui-grid-pager-control button { + height: 25px; + min-width: 26px; + display: inline-block; + margin-bottom: 0; + font-weight: normal; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background: #f3f3f3; + border: 1px solid #ccc; + white-space: nowrap; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #eee; +} +.ui-grid-pager-control button:hover { + border-color: #adadad; + text-decoration: none; +} +.ui-grid-pager-control button:focus { + border-color: #8c8c8c; + text-decoration: none; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.ui-grid-pager-control button:active { + border-color: #adadad; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.ui-grid-pager-control button:active:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.ui-grid-pager-control button:active:hover, +.ui-grid-pager-control button:active:focus { + background-color: #c8c8c8; + border-color: #8c8c8c; +} +.ui-grid-pager-control button:hover, +.ui-grid-pager-control button:focus, +.ui-grid-pager-control button:active { + color: #eee; + background: #dadada; +} +.ui-grid-pager-control button[disabled] { + cursor: not-allowed; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} +.ui-grid-pager-control button[disabled]:hover, +.ui-grid-pager-control button[disabled]:focus { + background-color: #f3f3f3; + border-color: #ccc; +} +.ui-grid-pager-control input { + display: inline; + height: 26px; + width: 50px; + vertical-align: top; + color: #555555; + background: #fff; + border: 1px solid #ccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.ui-grid-pager-control input:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.ui-grid-pager-control input[disabled], +.ui-grid-pager-control input[readonly], +.ui-grid-pager-control input::-moz-placeholder { + opacity: 1; +} +.ui-grid-pager-control input::-moz-placeholder, +.ui-grid-pager-control input:-ms-input-placeholder, +.ui-grid-pager-control input::-webkit-input-placeholder { + color: #999; +} +.ui-grid-pager-control input::-ms-expand { + border: 0; + background-color: transparent; +} +.ui-grid-pager-control input[disabled], +.ui-grid-pager-control input[readonly] { + background-color: #eeeeee; +} +.ui-grid-pager-control input[disabled] { + cursor: not-allowed; +} +.ui-grid-pager-control .ui-grid-pager-max-pages-number { + vertical-align: bottom; +} +.ui-grid-pager-control .ui-grid-pager-max-pages-number > * { + vertical-align: bottom; +} +.ui-grid-pager-control .ui-grid-pager-max-pages-number abbr { + border-bottom: none; + text-decoration: none; +} +.ui-grid-pager-control .first-bar { + width: 10px; + border-left: 2px solid #4d4d4d; + margin-top: -6px; + height: 12px; + margin-left: -3px; +} +.ui-grid-pager-control .first-bar-rtl { + width: 10px; + border-left: 2px solid #4d4d4d; + margin-top: -6px; + height: 12px; + margin-right: -7px; +} +.ui-grid-pager-control .first-triangle { + width: 0; + height: 0; + border-style: solid; + border-width: 5px 8.7px 5px 0; + border-color: transparent #4d4d4d transparent transparent; + margin-left: 2px; +} +.ui-grid-pager-control .next-triangle { + margin-left: 1px; +} +.ui-grid-pager-control .prev-triangle { + margin-left: 0; +} +.ui-grid-pager-control .last-triangle { + width: 0; + height: 0; + border-style: solid; + border-width: 5px 0 5px 8.7px; + border-color: transparent transparent transparent #4d4d4d; + margin-left: -1px; +} +.ui-grid-pager-control .last-bar { + width: 10px; + border-left: 2px solid #4d4d4d; + margin-top: -6px; + height: 12px; + margin-left: 1px; +} +.ui-grid-pager-control .last-bar-rtl { + width: 10px; + border-left: 2px solid #4d4d4d; + margin-top: -6px; + height: 12px; + margin-right: -11px; +} +.ui-grid-pager-row-count-picker { + float: left; + padding: 5px 10px; +} +.ui-grid-pager-row-count-picker select { + color: #555555; + background: #fff; + border: 1px solid #ccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + height: 25px; + width: 67px; + display: inline; + vertical-align: middle; +} +.ui-grid-pager-row-count-picker select:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.ui-grid-pager-row-count-picker select[disabled], +.ui-grid-pager-row-count-picker select[readonly], +.ui-grid-pager-row-count-picker select::-moz-placeholder { + opacity: 1; +} +.ui-grid-pager-row-count-picker select::-moz-placeholder, +.ui-grid-pager-row-count-picker select:-ms-input-placeholder, +.ui-grid-pager-row-count-picker select::-webkit-input-placeholder { + color: #999; +} +.ui-grid-pager-row-count-picker select::-ms-expand { + border: 0; + background-color: transparent; +} +.ui-grid-pager-row-count-picker select[disabled], +.ui-grid-pager-row-count-picker select[readonly] { + background-color: #eeeeee; +} +.ui-grid-pager-row-count-picker select[disabled] { + cursor: not-allowed; +} +.ui-grid-pager-row-count-picker .ui-grid-pager-row-count-label { + margin-top: 3px; +} +.ui-grid-pager-count-container { + float: right; + margin-top: 4px; + min-width: 50px; +} +.ui-grid-pager-count-container .ui-grid-pager-count { + margin-right: 10px; + margin-left: 10px; + float: right; +} +.ui-grid-pager-count-container .ui-grid-pager-count abbr { + border-bottom: none; + text-decoration: none; +} + diff --git a/release/4.12.0/css/ui-grid.pagination.min.css b/release/4.12.0/css/ui-grid.pagination.min.css new file mode 100644 index 000000000..20051911e --- /dev/null +++ b/release/4.12.0/css/ui-grid.pagination.min.css @@ -0,0 +1,5 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */.ui-grid-pager-panel{align-items:center;bottom:0;box-sizing:content-box;display:flex;justify-content:space-between;left:0;padding-bottom:3px;padding-top:3px;position:absolute;width:100%}.ui-grid-pager-container{float:left}.ui-grid-pager-control{align-items:center;display:flex;flex-flow:row nowrap;float:left;margin-left:10px;margin-right:10px;min-width:135px;padding:5px 0}.ui-grid-pager-control button,.ui-grid-pager-control input,.ui-grid-pager-control span{margin-right:4px}.ui-grid-pager-control button{background:#f3f3f3;border:1px solid #ccc;border-radius:4px;color:#eee;cursor:pointer;display:inline-block;font-size:14px;font-weight:400;height:25px;line-height:1.42857143;margin-bottom:0;min-width:26px;padding:6px 12px;text-align:center;touch-action:manipulation;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.ui-grid-pager-control button:hover{border-color:#adadad;text-decoration:none}.ui-grid-pager-control button:focus{border-color:#8c8c8c;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;text-decoration:none}.ui-grid-pager-control button:active{border-color:#adadad;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125);outline:0}.ui-grid-pager-control button:active:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.ui-grid-pager-control button:active:focus,.ui-grid-pager-control button:active:hover{background-color:#c8c8c8;border-color:#8c8c8c}.ui-grid-pager-control button:active,.ui-grid-pager-control button:focus,.ui-grid-pager-control button:hover{background:#dadada;color:#eee}.ui-grid-pager-control button[disabled]{-webkit-box-shadow:none;box-shadow:none;cursor:not-allowed;filter:alpha(opacity=65);opacity:.65}.ui-grid-pager-control button[disabled]:focus,.ui-grid-pager-control button[disabled]:hover{background-color:#f3f3f3;border-color:#ccc}.ui-grid-pager-control input{background:#fff;border:1px solid #ccc;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);color:#555;display:inline;font-size:12px;height:26px;line-height:1.5;padding:5px 10px;-webkit-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:top;width:50px}.ui-grid-pager-control input:focus{border-color:#66afe9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);outline:0}.ui-grid-pager-control input::-moz-placeholder,.ui-grid-pager-control input[disabled],.ui-grid-pager-control input[readonly]{opacity:1}.ui-grid-pager-control input:-ms-input-placeholder,.ui-grid-pager-control input::-moz-placeholder,.ui-grid-pager-control input::-webkit-input-placeholder{color:#999}.ui-grid-pager-control input::-ms-expand{background-color:transparent;border:0}.ui-grid-pager-control input[disabled],.ui-grid-pager-control input[readonly]{background-color:#eee}.ui-grid-pager-control input[disabled]{cursor:not-allowed}.ui-grid-pager-control .ui-grid-pager-max-pages-number,.ui-grid-pager-control .ui-grid-pager-max-pages-number>*{vertical-align:bottom}.ui-grid-pager-control .ui-grid-pager-max-pages-number abbr{border-bottom:none;text-decoration:none}.ui-grid-pager-control .first-bar{border-left:2px solid #4d4d4d;height:12px;margin-left:-3px;margin-top:-6px;width:10px}.ui-grid-pager-control .first-bar-rtl{border-left:2px solid #4d4d4d;height:12px;margin-right:-7px;margin-top:-6px;width:10px}.ui-grid-pager-control .first-triangle{border-color:transparent #4d4d4d transparent transparent;border-style:solid;border-width:5px 8.7px 5px 0;height:0;margin-left:2px;width:0}.ui-grid-pager-control .next-triangle{margin-left:1px}.ui-grid-pager-control .prev-triangle{margin-left:0}.ui-grid-pager-control .last-triangle{border-color:transparent transparent transparent #4d4d4d;border-style:solid;border-width:5px 0 5px 8.7px;height:0;margin-left:-1px;width:0}.ui-grid-pager-control .last-bar{border-left:2px solid #4d4d4d;height:12px;margin-left:1px;margin-top:-6px;width:10px}.ui-grid-pager-control .last-bar-rtl{border-left:2px solid #4d4d4d;height:12px;margin-right:-11px;margin-top:-6px;width:10px}.ui-grid-pager-row-count-picker{float:left;padding:5px 10px}.ui-grid-pager-row-count-picker select{background:#fff;border:1px solid #ccc;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);color:#555;display:inline;font-size:12px;height:25px;line-height:1.5;padding:5px 10px;-webkit-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;width:67px}.ui-grid-pager-row-count-picker select:focus{border-color:#66afe9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);outline:0}.ui-grid-pager-row-count-picker select::-moz-placeholder,.ui-grid-pager-row-count-picker select[disabled],.ui-grid-pager-row-count-picker select[readonly]{opacity:1}.ui-grid-pager-row-count-picker select:-ms-input-placeholder,.ui-grid-pager-row-count-picker select::-moz-placeholder,.ui-grid-pager-row-count-picker select::-webkit-input-placeholder{color:#999}.ui-grid-pager-row-count-picker select::-ms-expand{background-color:transparent;border:0}.ui-grid-pager-row-count-picker select[disabled],.ui-grid-pager-row-count-picker select[readonly]{background-color:#eee}.ui-grid-pager-row-count-picker select[disabled]{cursor:not-allowed}.ui-grid-pager-row-count-picker .ui-grid-pager-row-count-label{margin-top:3px}.ui-grid-pager-count-container{float:right;margin-top:4px;min-width:50px}.ui-grid-pager-count-container .ui-grid-pager-count{float:right;margin-left:10px;margin-right:10px}.ui-grid-pager-count-container .ui-grid-pager-count abbr{border-bottom:none;text-decoration:none} \ No newline at end of file diff --git a/release/4.12.0/css/ui-grid.pinning.css b/release/4.12.0/css/ui-grid.pinning.css new file mode 100644 index 000000000..ca970f98e --- /dev/null +++ b/release/4.12.0/css/ui-grid.pinning.css @@ -0,0 +1,73 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ +.ui-grid-pinned-container { + position: absolute; + display: inline; + top: 0; +} +.ui-grid-pinned-container.ui-grid-pinned-container-left { + float: left; + left: 0; +} +.ui-grid-pinned-container.ui-grid-pinned-container-right { + float: right; + right: 0; +} +.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-header-cell:last-child { + box-sizing: border-box; + border-right: 1px solid; + border-width: 1px; + border-right-color: #aeaeae; +} +.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-cell:last-child { + box-sizing: border-box; + border-right: 1px solid; + border-width: 1px; + border-right-color: #aeaeae; +} +.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar, +.ui-grid-pinned-container .ui-grid-cell:not(:last-child) .ui-grid-vertical-bar { + width: 1px; +} +.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar { + background-color: #d4d4d4; +} +.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-cell:not(:last-child) .ui-grid-vertical-bar { + background-color: #aeaeae; +} +.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-header-cell:last-child .ui-grid-vertical-bar { + right: -1px; + width: 1px; + background-color: #aeaeae; +} +.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-header-cell:first-child { + box-sizing: border-box; + border-left: 1px solid; + border-width: 1px; + border-left-color: #aeaeae; +} +.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-cell:first-child { + box-sizing: border-box; + border-left: 1px solid; + border-width: 1px; + border-left-color: #aeaeae; +} +.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-header-cell:not(:first-child) .ui-grid-vertical-bar, +.ui-grid-pinned-container .ui-grid-cell:not(:first-child) .ui-grid-vertical-bar { + width: 1px; +} +.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-header-cell:not(:first-child) .ui-grid-vertical-bar { + background-color: #d4d4d4; +} +.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-cell:not(:last-child) .ui-grid-vertical-bar { + background-color: #aeaeae; +} +.ui-grid-pinned-container.ui-grid-pinned-container-first .ui-grid-header-cell:first-child .ui-grid-vertical-bar { + left: -1px; + width: 1px; + background-color: #aeaeae; +} + diff --git a/release/4.12.0/css/ui-grid.pinning.min.css b/release/4.12.0/css/ui-grid.pinning.min.css new file mode 100644 index 000000000..616aa88a9 --- /dev/null +++ b/release/4.12.0/css/ui-grid.pinning.min.css @@ -0,0 +1,5 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */.ui-grid-pinned-container{display:inline;position:absolute;top:0}.ui-grid-pinned-container.ui-grid-pinned-container-left{float:left;left:0}.ui-grid-pinned-container.ui-grid-pinned-container-right{float:right;right:0}.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-cell:last-child,.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-header-cell:last-child{border-width:1px;border-right:1px solid #aeaeae;box-sizing:border-box}.ui-grid-pinned-container .ui-grid-cell:not(:last-child) .ui-grid-vertical-bar,.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar{width:1px}.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar{background-color:#d4d4d4}.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-cell:not(:last-child) .ui-grid-vertical-bar{background-color:#aeaeae}.ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-header-cell:last-child .ui-grid-vertical-bar{background-color:#aeaeae;right:-1px;width:1px}.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-cell:first-child,.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-header-cell:first-child{border-width:1px;border-left:1px solid #aeaeae;box-sizing:border-box}.ui-grid-pinned-container .ui-grid-cell:not(:first-child) .ui-grid-vertical-bar,.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-header-cell:not(:first-child) .ui-grid-vertical-bar{width:1px}.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-header-cell:not(:first-child) .ui-grid-vertical-bar{background-color:#d4d4d4}.ui-grid-pinned-container.ui-grid-pinned-container-right .ui-grid-cell:not(:last-child) .ui-grid-vertical-bar{background-color:#aeaeae}.ui-grid-pinned-container.ui-grid-pinned-container-first .ui-grid-header-cell:first-child .ui-grid-vertical-bar{background-color:#aeaeae;left:-1px;width:1px} \ No newline at end of file diff --git a/release/4.12.0/css/ui-grid.resizeColumns.css b/release/4.12.0/css/ui-grid.resizeColumns.css new file mode 100644 index 000000000..5d04abff5 --- /dev/null +++ b/release/4.12.0/css/ui-grid.resizeColumns.css @@ -0,0 +1,44 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ +.ui-grid-column-resizer { + top: 0; + bottom: 0; + width: 5px; + position: absolute; + cursor: col-resize; +} +.ui-grid-column-resizer.left { + left: 0; +} +.ui-grid-column-resizer.right { + right: 0; +} +.ui-grid-header-cell:last-child .ui-grid-column-resizer.right { + border-right: 1px solid #d4d4d4; +} +.ui-grid[dir=rtl] .ui-grid-header-cell:last-child .ui-grid-column-resizer.right { + border-right: 0; +} +.ui-grid[dir=rtl] .ui-grid-header-cell:last-child .ui-grid-column-resizer.left { + border-left: 1px solid #d4d4d4; +} +.ui-grid.column-resizing { + cursor: col-resize; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.ui-grid.column-resizing .ui-grid-resize-overlay { + position: absolute; + top: 0; + height: 100%; + width: 1px; + background-color: #aeaeae; +} + diff --git a/release/4.12.0/css/ui-grid.resizeColumns.min.css b/release/4.12.0/css/ui-grid.resizeColumns.min.css new file mode 100644 index 000000000..427817f05 --- /dev/null +++ b/release/4.12.0/css/ui-grid.resizeColumns.min.css @@ -0,0 +1,5 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */.ui-grid-column-resizer{bottom:0;cursor:col-resize;position:absolute;top:0;width:5px}.ui-grid-column-resizer.left{left:0}.ui-grid-column-resizer.right{right:0}.ui-grid-header-cell:last-child .ui-grid-column-resizer.right{border-right:1px solid #d4d4d4}.ui-grid[dir=rtl] .ui-grid-header-cell:last-child .ui-grid-column-resizer.right{border-right:0}.ui-grid[dir=rtl] .ui-grid-header-cell:last-child .ui-grid-column-resizer.left{border-left:1px solid #d4d4d4}.ui-grid.column-resizing{-webkit-touch-callout:none;cursor:col-resize;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui-grid.column-resizing .ui-grid-resize-overlay{background-color:#aeaeae;height:100%;position:absolute;top:0;width:1px} \ No newline at end of file diff --git a/release/4.12.0/css/ui-grid.rowEdit.css b/release/4.12.0/css/ui-grid.rowEdit.css new file mode 100644 index 000000000..0c720d0d6 --- /dev/null +++ b/release/4.12.0/css/ui-grid.rowEdit.css @@ -0,0 +1,15 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ +.ui-grid-row-saving .ui-grid-cell { + color: #848484 !important; +} +.ui-grid-row-dirty .ui-grid-cell { + color: #610B38; +} +.ui-grid-row-error .ui-grid-cell { + color: #FF0000 !important; +} + diff --git a/release/4.12.0/css/ui-grid.rowEdit.min.css b/release/4.12.0/css/ui-grid.rowEdit.min.css new file mode 100644 index 000000000..900d1ac94 --- /dev/null +++ b/release/4.12.0/css/ui-grid.rowEdit.min.css @@ -0,0 +1,5 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */.ui-grid-row-saving .ui-grid-cell{color:#848484!important}.ui-grid-row-dirty .ui-grid-cell{color:#610b38}.ui-grid-row-error .ui-grid-cell{color:red!important} \ No newline at end of file diff --git a/release/4.12.0/css/ui-grid.selection.css b/release/4.12.0/css/ui-grid.selection.css new file mode 100644 index 000000000..38600d3fe --- /dev/null +++ b/release/4.12.0/css/ui-grid.selection.css @@ -0,0 +1,31 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ +.ui-grid-row.ui-grid-row-selected > [ui-grid-row] > .ui-grid-cell { + background-color: #C9DDE1; +} +.ui-grid-disable-selection { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; +} +.ui-grid-selection-row-header-buttons { + display: flex; + align-items: center; + height: 100%; + cursor: pointer; +} +.ui-grid-selection-row-header-buttons::before { + opacity: 0.1; +} +.ui-grid-selection-row-header-buttons.ui-grid-row-selected::before, +.ui-grid-selection-row-header-buttons.ui-grid-all-selected::before { + opacity: 1; +} + diff --git a/release/4.12.0/css/ui-grid.selection.min.css b/release/4.12.0/css/ui-grid.selection.min.css new file mode 100644 index 000000000..d4861f0e8 --- /dev/null +++ b/release/4.12.0/css/ui-grid.selection.min.css @@ -0,0 +1,5 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */.ui-grid-row.ui-grid-row-selected>[ui-grid-row]>.ui-grid-cell{background-color:#c9dde1}.ui-grid-disable-selection{-webkit-touch-callout:none;cursor:default;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui-grid-selection-row-header-buttons{align-items:center;cursor:pointer;display:flex;height:100%}.ui-grid-selection-row-header-buttons:before{opacity:.1}.ui-grid-selection-row-header-buttons.ui-grid-all-selected:before,.ui-grid-selection-row-header-buttons.ui-grid-row-selected:before{opacity:1} \ No newline at end of file diff --git a/release/4.12.0/css/ui-grid.treeBase.css b/release/4.12.0/css/ui-grid.treeBase.css new file mode 100644 index 000000000..b12e2e1dd --- /dev/null +++ b/release/4.12.0/css/ui-grid.treeBase.css @@ -0,0 +1,10 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ +.ui-grid-tree-row-header-buttons.ui-grid-tree-header { + cursor: pointer; + opacity: 1; +} + diff --git a/release/4.12.0/css/ui-grid.treeBase.min.css b/release/4.12.0/css/ui-grid.treeBase.min.css new file mode 100644 index 000000000..e4509e86b --- /dev/null +++ b/release/4.12.0/css/ui-grid.treeBase.min.css @@ -0,0 +1,5 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */.ui-grid-tree-row-header-buttons.ui-grid-tree-header{cursor:pointer;opacity:1} \ No newline at end of file diff --git a/release/4.12.0/css/ui-grid.treeView.css b/release/4.12.0/css/ui-grid.treeView.css new file mode 100644 index 000000000..00c83a210 --- /dev/null +++ b/release/4.12.0/css/ui-grid.treeView.css @@ -0,0 +1,12 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ +.ui-grid-tree-header-row { + font-weight: bold !important; +} +.ui-grid-tree-header-row .ui-grid-cell.ui-grid-disable-selection.ui-grid-row-header-cell { + pointer-events: all; +} + diff --git a/release/4.12.0/css/ui-grid.treeView.min.css b/release/4.12.0/css/ui-grid.treeView.min.css new file mode 100644 index 000000000..8bcfdc2f0 --- /dev/null +++ b/release/4.12.0/css/ui-grid.treeView.min.css @@ -0,0 +1,5 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */.ui-grid-tree-header-row{font-weight:700!important}.ui-grid-tree-header-row .ui-grid-cell.ui-grid-disable-selection.ui-grid-row-header-cell{pointer-events:all} \ No newline at end of file diff --git a/release/4.12.0/css/ui-grid.validate.css b/release/4.12.0/css/ui-grid.validate.css new file mode 100644 index 000000000..f93a9467c --- /dev/null +++ b/release/4.12.0/css/ui-grid.validate.css @@ -0,0 +1,9 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ +.ui-grid-cell-contents.invalid { + border: 1px solid #fc8f8f; +} + diff --git a/release/4.12.0/css/ui-grid.validate.min.css b/release/4.12.0/css/ui-grid.validate.min.css new file mode 100644 index 000000000..2f1d436a6 --- /dev/null +++ b/release/4.12.0/css/ui-grid.validate.min.css @@ -0,0 +1,5 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */.ui-grid-cell-contents.invalid{border:1px solid #fc8f8f} \ No newline at end of file diff --git a/release/4.12.0/index.js b/release/4.12.0/index.js new file mode 100644 index 000000000..99a083346 --- /dev/null +++ b/release/4.12.0/index.js @@ -0,0 +1,2 @@ +require('./ui-grid'); +module.exports = 'ui.grid'; diff --git a/release/4.12.0/less/animation.less b/release/4.12.0/less/animation.less new file mode 100644 index 000000000..cd78e6d21 --- /dev/null +++ b/release/4.12.0/less/animation.less @@ -0,0 +1,85 @@ +/* + Animation example, for spinners +*/ +.ui-grid-animate-spin { + -moz-animation: ui-grid-spin 2s infinite linear; + -o-animation: ui-grid-spin 2s infinite linear; + -webkit-animation: ui-grid-spin 2s infinite linear; + animation: ui-grid-spin 2s infinite linear; + display: inline-block; +} +@-moz-keyframes ui-grid-spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-webkit-keyframes ui-grid-spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-o-keyframes ui-grid-spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-ms-keyframes ui-grid-spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes ui-grid-spin { + 0% { + -moz-transform: rotate(0deg); + -o-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -moz-transform: rotate(359deg); + -o-transform: rotate(359deg); + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} diff --git a/release/4.12.0/less/body.less b/release/4.12.0/less/body.less new file mode 100644 index 000000000..511526bbb --- /dev/null +++ b/release/4.12.0/less/body.less @@ -0,0 +1,84 @@ +@import (reference) 'variables.less'; +@import (reference) 'elements.less'; +@import (reference) 'header.less'; + +.ui-grid-render-container { + position: inherit; + + .border-radius(0, @gridBorderRadius, @gridBorderRadius, 0); + + // Prevent an outline from showing if we focus the render container element + &:focus { + outline: none; + } +} + +.ui-grid-viewport { + min-height: 20px; + position: relative; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + + &:focus { + outline: none !important; + } +} + +.ui-grid-canvas { + position: relative; + padding-top: 1px; // to prevent canvas from absorbing the 1st rendered row's margin + min-height: 1px; // so that it's rendered, even if it has no data +} + +.ui-grid-row { + clear: both; // prevent columns mixing after expand + + &:nth-child(odd) .ui-grid-cell { + background-color: @rowColorOdd; // rgb(253, 253, 253); + } + + &:nth-child(even) .ui-grid-cell { + background-color: @rowColorEven; + } + + &:last-child .ui-grid-cell { + border-bottom-color: @borderColor; + border-bottom-style: solid; + } + + &:hover > [ui-grid-row] > .ui-grid-cell, + &:nth-child(odd), + &:nth-child(even){ + &:hover .ui-grid-cell { + background-color: @rowColorHovered; + } + } +} + +.ui-grid-no-row-overlay { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: 10%; + + .ui-grid-top-panel-background; + .border-radius(@gridBorderRadius); + border: @gridBorderWidth solid @borderColor; + + font-size: 2em; + text-align: center; + + > * { + position: absolute; + display: table; + margin: auto 0; + width: 100%; + top: 0; + bottom: 0; + left: 0; + right: 0; + opacity: 0.66; + } +} diff --git a/release/4.12.0/less/cell.less b/release/4.12.0/less/cell.less new file mode 100644 index 000000000..3ca5c4894 --- /dev/null +++ b/release/4.12.0/less/cell.less @@ -0,0 +1,46 @@ +@import 'variables'; + +.ui-grid-cell { + overflow: hidden; + float: left; + background-color: inherit; + border-right: @gridBorderWidth solid; + border-color: @borderColor; + box-sizing: border-box; + + &:last-child { + border-right: 0; + } +} + +.ui-grid-cell-contents { + padding: 5px; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + white-space: nowrap; + -ms-text-overflow: ellipsis; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden; + height: 100%; +} + +.ui-grid-cell-contents-hidden { + visibility: hidden; + width: 0; + height:0; + display: none; +} + +.ui-grid-row .ui-grid-cell.ui-grid-row-header-cell { + background-color: @rowHeaderCell; + border-bottom: solid @gridBorderWidth @borderColor; +} + +.ui-grid-cell-empty { + display: inline-block; + width: 10px; + height: 10px; +} + diff --git a/release/4.12.0/less/cellNav.less b/release/4.12.0/less/cellNav.less new file mode 100644 index 000000000..41fa217cc --- /dev/null +++ b/release/4.12.0/less/cellNav.less @@ -0,0 +1,29 @@ +@import (reference) '../../core/less/variables'; + +.ui-grid-cell-focus { + outline: 0; + background-color: @focusedCell; +} + +.ui-grid-focuser { + position: absolute; + left: 0; + top: 0; + z-index: -1; + width:100%; + height:100%; + &:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + } +} + +.ui-grid-offscreen{ + display: block; + position: absolute; + left: -10000px; + top: -10000px; + clip:rect(0px,0px,0px,0px); +} diff --git a/release/4.12.0/less/core.less b/release/4.12.0/less/core.less new file mode 100644 index 000000000..c4f22d421 --- /dev/null +++ b/release/4.12.0/less/core.less @@ -0,0 +1,11 @@ +@import (reference) 'elements'; +@import 'grid'; +@import 'header'; +@import 'body'; +@import 'cell'; +@import 'footer'; +@import 'menu'; +@import 'sorting'; +@import 'icons'; +@import 'rtl'; +@import 'animation'; \ No newline at end of file diff --git a/release/4.12.0/less/edit.less b/release/4.12.0/less/edit.less new file mode 100644 index 000000000..6bd425e0c --- /dev/null +++ b/release/4.12.0/less/edit.less @@ -0,0 +1,27 @@ +@import (reference) '../../core/less/variables'; + +.ui-grid-cell { + input { + border-radius: inherit; + padding: 0; + width: 100%; + color: inherit; + height: auto; + font: inherit; + outline: none; + } + input:focus { + color: inherit; + outline: none; + } + input[type="checkbox"] { + margin: 9px 0 0 6px; + width: auto; + } + input.ng-invalid { + border: @invalidValueBorder; + } + input.ng-valid { + border: @validValueBorder; + } +} \ No newline at end of file diff --git a/release/4.12.0/less/elements.less b/release/4.12.0/less/elements.less new file mode 100644 index 000000000..f5c032209 --- /dev/null +++ b/release/4.12.0/less/elements.less @@ -0,0 +1,156 @@ +/*--------------------------------------------------- + LESS Elements 0.9 + --------------------------------------------------- + A set of useful LESS mixins + More info at: http://lesselements.com + ---------------------------------------------------*/ + +.gradient(@color: #F5F5F5, @start: #EEE, @stop: #FFF) { + background: @color; + background: -webkit-gradient(linear, + left bottom, + left top, + color-stop(0, @start), + color-stop(1, @stop)); + background: -ms-linear-gradient(bottom, + @start, + @stop); + background: -moz-linear-gradient(center bottom, + @start 0%, + @stop 100%); + background: -o-linear-gradient(@stop, + @start); + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@stop,@start)); +} +.bw-gradient(@color: #F5F5F5, @start: 0, @stop: 255) { + background: @color; + background: -webkit-gradient(linear, + left bottom, + left top, + color-stop(0, rgb(@start,@start,@start)), + color-stop(1, rgb(@stop,@stop,@stop))); + background: -ms-linear-gradient(bottom, + rgb(@start,@start,@start) 0%, + rgb(@stop,@stop,@stop) 100%); + background: -moz-linear-gradient(center bottom, + rgb(@start,@start,@start) 0%, + rgb(@stop,@stop,@stop) 100%); + background: -o-linear-gradient(rgb(@stop,@stop,@stop), + rgb(@start,@start,@start)); + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",rgb(@stop,@stop,@stop),rgb(@start,@start,@start))); +} +.bordered(@top-color: #EEE, @right-color: #EEE, @bottom-color: #EEE, @left-color: #EEE) { + border-top: solid 1px @top-color; + border-left: solid 1px @left-color; + border-right: solid 1px @right-color; + border-bottom: solid 1px @bottom-color; +} +.drop-shadow(@x-axis: 0, @y-axis: 1px, @blur: 2px, @alpha: 0.1) { + -webkit-box-shadow: @x-axis @y-axis @blur rgba(0, 0, 0, @alpha); + -moz-box-shadow: @x-axis @y-axis @blur rgba(0, 0, 0, @alpha); + box-shadow: @x-axis @y-axis @blur rgba(0, 0, 0, @alpha); +} +.rounded(@radius: 2px) { + -webkit-border-radius: @radius; + -moz-border-radius: @radius; + border-radius: @radius; +} +.border-radius(@topright: 0, @bottomright: 0, @bottomleft: 0, @topleft: 0) { + -webkit-border-top-right-radius: @topright; + -webkit-border-bottom-right-radius: @bottomright; + -webkit-border-bottom-left-radius: @bottomleft; + -webkit-border-top-left-radius: @topleft; + -moz-border-radius-topright: @topright; + -moz-border-radius-bottomright: @bottomright; + -moz-border-radius-bottomleft: @bottomleft; + -moz-border-radius-topleft: @topleft; + border-top-right-radius: @topright; + border-bottom-right-radius: @bottomright; + border-bottom-left-radius: @bottomleft; + border-top-left-radius: @topleft; + .background-clip(padding-box); +} +.opacity(@opacity: 0.5) { + -moz-opacity: @opacity; + -khtml-opacity: @opacity; + -webkit-opacity: @opacity; + opacity: @opacity; + @opperc: @opacity * 100; + -ms-filter: ~"progid:DXImageTransform.Microsoft.Alpha(opacity=@{opperc})"; + filter: ~"alpha(opacity=@{opperc})"; +} +.transition-duration(@duration: 0.2s) { + -moz-transition-duration: @duration; + -webkit-transition-duration: @duration; + -o-transition-duration: @duration; + transition-duration: @duration; +} +.transform(...) { + -webkit-transform: @arguments; + -moz-transform: @arguments; + -o-transform: @arguments; + -ms-transform: @arguments; + transform: @arguments; +} +.rotation(@deg:5deg){ + .transform(rotate(@deg)); +} +.scale(@ratio:1.5){ + .transform(scale(@ratio)); +} +.transition(@type:all, @duration:0.2s, @ease:ease-out) { + -webkit-transition: @type @duration @ease; + -moz-transition: @type @duration @ease; + -o-transition: @type @duration @ease; + transition: @type @duration @ease; +} +.inner-shadow(@horizontal:0, @vertical:1px, @blur:2px, @alpha: 0.4) { + -webkit-box-shadow: inset @horizontal @vertical @blur rgba(0, 0, 0, @alpha); + -moz-box-shadow: inset @horizontal @vertical @blur rgba(0, 0, 0, @alpha); + box-shadow: inset @horizontal @vertical @blur rgba(0, 0, 0, @alpha); +} +.box-shadow(@arguments) { + -webkit-box-shadow: @arguments; + -moz-box-shadow: @arguments; + box-shadow: @arguments; +} +.box-sizing(@sizing: border-box) { + -ms-box-sizing: @sizing; + -moz-box-sizing: @sizing; + -webkit-box-sizing: @sizing; + box-sizing: @sizing; +} +.user-select(@argument: none) { + -webkit-user-select: @argument; + -moz-user-select: @argument; + -ms-user-select: @argument; + user-select: @argument; +} +.columns(@colwidth: 250px, @colcount: 0, @colgap: 50px, @columnRuleColor: #EEE, @columnRuleStyle: solid, @columnRuleWidth: 1px) { + -moz-column-width: @colwidth; + -moz-column-count: @colcount; + -moz-column-gap: @colgap; + -moz-column-rule-color: @columnRuleColor; + -moz-column-rule-style: @columnRuleStyle; + -moz-column-rule-width: @columnRuleWidth; + -webkit-column-width: @colwidth; + -webkit-column-count: @colcount; + -webkit-column-gap: @colgap; + -webkit-column-rule-color: @columnRuleColor; + -webkit-column-rule-style: @columnRuleStyle; + -webkit-column-rule-width: @columnRuleWidth; + column-width: @colwidth; + column-count: @colcount; + column-gap: @colgap; + column-rule-color: @columnRuleColor; + column-rule-style: @columnRuleStyle; + column-rule-width: @columnRuleWidth; +} +.translate(@x:0, @y:0) { + .transform(translate(@x, @y)); +} +.background-clip(@argument: padding-box) { + -moz-background-clip: @argument; + -webkit-background-clip: @argument; + background-clip: @argument; +} \ No newline at end of file diff --git a/release/4.12.0/less/emptyBaseLayer.less b/release/4.12.0/less/emptyBaseLayer.less new file mode 100644 index 000000000..d1e3cad15 --- /dev/null +++ b/release/4.12.0/less/emptyBaseLayer.less @@ -0,0 +1,8 @@ +@import (reference) '../../core/less/variables'; + +.ui-grid-viewport .ui-grid-empty-base-layer-container { + position: absolute; + overflow: hidden; + pointer-events: none; + z-index: -1; +} diff --git a/release/4.12.0/less/expandable.less b/release/4.12.0/less/expandable.less new file mode 100644 index 000000000..94fe10a80 --- /dev/null +++ b/release/4.12.0/less/expandable.less @@ -0,0 +1,29 @@ +@import (reference) '../../core/less/variables'; + +.expandableRow { + .ui-grid-row { + + &:nth-child(odd) .ui-grid-cell { + background-color: @rowColorOdd; + } + + &:nth-child(even) .ui-grid-cell { + background-color: @rowColorEven; + } + + } +} + + +.ui-grid-cell.ui-grid-disable-selection.ui-grid-row-header-cell{ + pointer-events: none; +} +.ui-grid-expandable-buttons-cell i{ + pointer-events: all; +} + +.scrollFiller { + float:left; + border:1px solid @borderColor; +} + diff --git a/release/4.12.0/less/exporter.less b/release/4.12.0/less/exporter.less new file mode 100644 index 000000000..366627015 --- /dev/null +++ b/release/4.12.0/less/exporter.less @@ -0,0 +1,4 @@ +@import (reference) '../../core/less/variables'; + +.ui-grid-exporter-header { +} diff --git a/release/4.12.0/less/footer.less b/release/4.12.0/less/footer.less new file mode 100644 index 000000000..7521819ae --- /dev/null +++ b/release/4.12.0/less/footer.less @@ -0,0 +1,76 @@ +@import (reference) 'variables.less'; +@import (reference) 'elements.less'; + +.ui-grid-footer-info { + padding: 5px 10px; +} + +.ui-grid-footer-panel-background { + background-color: @headerBackgroundColor; +} + +@topPanelRadius: @gridBorderRadius - @gridBorderWidth; +.ui-grid-footer-panel { + position: relative; + border-bottom: 1px solid @borderColor; // #D4D4D4 + border-top: 1px solid @borderColor; + overflow: hidden; // Disable so menus show up + font-weight: bold; + + .ui-grid-footer-panel-background; + + .border-radius(@topPanelRadius, 0, 0, @topPanelRadius); +} + +.ui-grid-grid-footer { + float: left; + width: 100%; +} + +.ui-grid-footer-viewport, +.ui-grid-footer-canvas { + height: 100%; +} + +.ui-grid-footer-viewport { + overflow: hidden; // Disable so menus show up +} + +.ui-grid-footer-canvas { + position: relative; + + // Clearfix for floating header cells + &:before, &:after { + content: ""; + display: table; + line-height: 0; + } + + &:after { + clear:both; + } +} + +.ui-grid-footer-cell-wrapper { + position: relative; + display: table; + box-sizing: border-box; + height: 100%; +} + +.ui-grid-footer-cell-row { + display: table-row; +} + +.ui-grid-footer-cell { + overflow: hidden; + background-color: inherit; + border-right: @gridBorderWidth solid; + border-color: @borderColor; + box-sizing: border-box; + display: table-cell; + + &:last-child { + border-right: 0; + } +} diff --git a/release/4.12.0/less/grid.less b/release/4.12.0/less/grid.less new file mode 100644 index 000000000..2f8a53da0 --- /dev/null +++ b/release/4.12.0/less/grid.less @@ -0,0 +1,86 @@ +@import (reference) 'variables.less'; +@import (reference) 'elements.less'; + +.ui-grid { + border: @gridBorderWidth solid @borderColor; + box-sizing: content-box; // If bootstrap (or another included library) makes the default sizing on element "border-box", then calculations get messed up + + .rounded(@gridBorderRadius); + + .transform(translateZ(0)); +} + +.ui-grid-vertical-bar { + position: absolute; + right: 0; + width: 0; +} + +.ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar, .ui-grid-cell:not(:last-child) .ui-grid-vertical-bar { + width: @gridBorderWidth; +} + +.ui-grid-scrollbar-placeholder{ + background-color: transparent; +} + +.ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar { + background-color: @headerVerticalBarColor; +} + +.ui-grid-cell:not(:last-child) .ui-grid-vertical-bar { + background-color: @verticalBarColor; +} + +.ui-grid-header-cell:last-child .ui-grid-vertical-bar { + right: -1px; // TODO(c0bra): Should this be grid width? Test column resizing with custom grid border width + width: @gridBorderWidth; + background-color: @headerVerticalBarColor; +} + +.ui-grid-clearfix { + &:before, &:after { + content: ""; + display: table; + } + + &:after { + clear:both; + } +} + +.ui-grid-invisible { + visibility: hidden; +} + +// Wraps the contents inside the grid directive with a relatively-positioned element so that all absolute elements are positioned relative to the grid, and not the page +.ui-grid-contents-wrapper { + position: relative; + height: 100%; + width: 100%; +} + +// Only display content to screen readers +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +.ui-grid-sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0; +} + +.ui-grid-icon-button { + background-color: transparent; + border: none; + padding: 0; +} + +.clickable { + cursor: pointer; +} diff --git a/release/4.12.0/less/grouping.less b/release/4.12.0/less/grouping.less new file mode 100644 index 000000000..844ce25f7 --- /dev/null +++ b/release/4.12.0/less/grouping.less @@ -0,0 +1,5 @@ +@import (reference) '../../core/less/variables'; + +.ui-grid-tree-header-row { + font-weight: bold !important; +} diff --git a/release/4.12.0/less/header.less b/release/4.12.0/less/header.less new file mode 100644 index 000000000..a6894133e --- /dev/null +++ b/release/4.12.0/less/header.less @@ -0,0 +1,250 @@ +@import (reference) 'variables.less'; +@import (reference) 'elements.less'; + +.ui-grid-top-panel-background { + background-color: @headerBackgroundColor; +} + +@topPanelRadius: @gridBorderRadius - @gridBorderWidth; + +.ui-grid-header { + border-bottom: 1px solid @borderColor; + box-sizing: border-box; +} + +.ui-grid-top-panel { + position: relative; + + overflow: hidden; // Disable so menus show up + font-weight: bold; + + .ui-grid-top-panel-background; + + .border-radius(@topPanelRadius, 0, 0, @topPanelRadius); +} + + +.ui-grid-header-viewport { + overflow: hidden; // Disable so menus show up +} + +.ui-grid-header-canvas { + // Clearfix for floating header cells + &:before, &:after { + content: ""; + display: -ms-flexbox; + display: flex; + line-height: 0; + } + + &:after { + clear:both; + } +} + + +.ui-grid-header-cell-wrapper { + position: relative; + display: -ms-flexbox; + display: flex; + box-sizing: border-box; + height: 100%; + width: 100%; +} + +.ui-grid-header-cell-row { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.ui-grid-header-cell { + position: relative; + box-sizing: border-box; + background-color: inherit; + border-right: @gridBorderWidth solid; + border-color: @headerVerticalBarColor; + + &:last-child { + border-right: 0; + } + + .user-select(none); + + // Default to width 0 so header height can calculate right. Otherwise + // the header cells will flow onto the next line of the header container + // and cause the header height to be calculated as twice the height + // it should be. The column widths are calculated dynamically + width: 0; + + .sortable { + cursor: pointer; + } + + // Moves the sort priority number closer to the icon + .ui-grid-sort-priority-number { + margin-left: -8px; + } +} +/* Fixes IE word-wrap if needed on header cells */ +.ui-grid-header-cell > div { + -ms-flex-basis: 100%; + flex-basis: 100%; +} + +// Make vertical bar in header row fill the height of the cell completely +.ui-grid-header .ui-grid-vertical-bar { + top: 0; + bottom: 0; +} + +.ui-grid-column-menu-button { + position: absolute; + right: @gridBorderWidth; // So it doesn't overlay the vertical bar + top: 0; + + .ui-grid-icon-angle-down { + vertical-align: sub; + } +} + +.ui-grid-header-cell-last-col { + .ui-grid-cell-contents, + .ui-grid-filter-container, + .ui-grid-column-menu-button, + & + .ui-grid-column-resizer.right { + margin-right: 13px; + } +} + +.ui-grid-render-container-right { + .ui-grid-header-cell-last-col { + .ui-grid-cell-contents, + .ui-grid-filter-container, + .ui-grid-column-menu-button, + & + .ui-grid-column-resizer.right { + margin-right: 28px; + } + } +} + +.ui-grid-column-menu { + position: absolute; +} + +/* Slide up/down animations */ +.ui-grid-column-menu .ui-grid-menu .ui-grid-menu-mid { + &.ng-hide-add, &.ng-hide-remove { + .transition(all, 0.04s, linear); + display: block !important; + } + + &.ng-hide-add.ng-hide-add-active, + &.ng-hide-remove { + .transform(translateY(-100%)); + } + + &.ng-hide-add, + &.ng-hide-remove.ng-hide-remove-active { + .transform(translateY(0)); + } +} + +/* Slide up/down animations */ +.ui-grid-menu-button .ui-grid-menu .ui-grid-menu-mid { + &.ng-hide-add, &.ng-hide-remove { + .transition(all, 0.04s, linear); + display: block !important; + } + + &.ng-hide-add.ng-hide-add-active, + &.ng-hide-remove { + .transform(translateY(-100%)); + } + + &.ng-hide-add, + &.ng-hide-remove.ng-hide-remove-active { + .transform(translateY(0)); + } +} + + +.ui-grid-filter-container { + padding: 4px 10px; + position: relative; + + .ui-grid-filter-button { + position: absolute; + top: 0; + bottom: 0; + right: 0; + + [class^="ui-grid-icon"] { + position: absolute; + top: 50%; + line-height: 32px; + margin-top: -16px; + right: 10px; + opacity: 0.66; + + &:hover { + opacity: 1; + } + } + } + + .ui-grid-filter-button-select { + position: absolute; + top: 0; + bottom: 0; + right: 0; + + [class^="ui-grid-icon"] { + position: absolute; + top: 50%; + line-height: 32px; + margin-top: -16px; + right: 0px; + opacity: 0.66; + + &:hover { + opacity: 1; + } + } + } +} + +input[type="text"].ui-grid-filter-input { + box-sizing: border-box; + padding: 0 18px 0 0; + margin: 0; + width: 100%; + + border: @gridBorderWidth solid @borderColor; + .border-radius(@gridBorderRadius); + + &:hover { + border: @gridBorderWidth solid @borderColor; + } +} + +select.ui-grid-filter-select { + padding: 0; + margin: 0; + border: 0; + width: 90%; + + border: @gridBorderWidth solid @borderColor; + .border-radius(@gridBorderRadius); + + &:hover { + border: @gridBorderWidth solid @borderColor; + } + + .ui-grid-filter-cancel-button-hidden & { + width: 100%; + } +} diff --git a/release/4.12.0/less/icons.less b/release/4.12.0/less/icons.less new file mode 100644 index 000000000..88b1d129f --- /dev/null +++ b/release/4.12.0/less/icons.less @@ -0,0 +1,151 @@ +@import (reference) 'variables.less'; + +@font-face { + font-family: 'ui-grid'; + src: url('@{font-path}ui-grid.eot'); + src: url('@{font-path}ui-grid.eot#iefix') format('embedded-opentype'), + url('@{font-path}ui-grid.woff') format('woff'), + url('@{font-path}ui-grid.ttf') format('truetype'), + url('@{font-path}ui-grid.svg?#ui-grid') format('svg'); + font-weight: normal; + font-style: normal; +} + +/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ +/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ +/* +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: 'ui-grid'; + src: url('@{font-path}ui-grid.svg?12312827#ui-grid') format('svg'); + } +} +*/ + +[class^="ui-grid-icon"]:before, [class*=" ui-grid-icon"]:before { + font-family: "ui-grid"; + font-style: normal; + font-weight: normal; + speak: none; + + display: inline-block; + text-decoration: inherit; + width: 1em; + margin-right: .2em; + text-align: center; + /* opacity: .8; */ + + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + + /* Animation center compensation - margins should be symmetric */ + /* remove if not needed */ + margin-left: .2em; + + /* you can be more comfortable with increased icons size */ + /* font-size: 120%; */ + + /* Uncomment for 3D effect */ + /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ +} + +.ui-grid-icon-blank::before { + width: 1em; + content: ' '; +} + +.ui-grid-icon-plus-squared:before { + content: '\c350' +} + +.ui-grid-icon-minus-squared:before { + content: '\c351' +} + +.ui-grid-icon-search:before { + content: '\c352' +} + +.ui-grid-icon-cancel:before { + content: '\c353' +} + +.ui-grid-icon-info-circled:before { + content: '\c354' +} + +.ui-grid-icon-lock:before { + content: '\c355' +} + +.ui-grid-icon-lock-open:before { + content: '\c356' +} + +.ui-grid-icon-pencil:before { + content: '\c357' +} + +.ui-grid-icon-down-dir:before { + content: '\c358' +} + +.ui-grid-icon-up-dir:before { + content: '\c359' +} + +.ui-grid-icon-left-dir:before { + content: '\c35a' +} + +.ui-grid-icon-right-dir:before { + content: '\c35b' +} + +.ui-grid-icon-left-open:before { + content: '\c35c' +} + +.ui-grid-icon-right-open:before { + content: '\c35d' +} + +.ui-grid-icon-angle-down:before { + content: '\c35e' +} + +.ui-grid-icon-filter:before { + content: '\c35f' +} + +.ui-grid-icon-sort-alt-up:before { + content: '\c360' +} + +.ui-grid-icon-sort-alt-down:before { + content: '\c361' +} + +.ui-grid-icon-ok:before { + content: '\c362' +} + +.ui-grid-icon-menu:before { + content: '\c363' +} + +.ui-grid-icon-indent-left:before { + content: '\e800' +} + +.ui-grid-icon-indent-right:before { + content: '\e801' +} + +.ui-grid-icon-spin5:before { + content: '\ea61' +} diff --git a/release/4.12.0/less/importer.less b/release/4.12.0/less/importer.less new file mode 100644 index 000000000..2a8d04c97 --- /dev/null +++ b/release/4.12.0/less/importer.less @@ -0,0 +1,4 @@ +@import (reference) '../../core/less/variables'; + +.ui-grid-importer-header { +} diff --git a/release/4.12.0/less/main.less b/release/4.12.0/less/main.less new file mode 100644 index 000000000..619eafe8a --- /dev/null +++ b/release/4.12.0/less/main.less @@ -0,0 +1,2 @@ +@import (reference) 'variables'; +@import 'core'; \ No newline at end of file diff --git a/release/4.12.0/less/menu.less b/release/4.12.0/less/menu.less new file mode 100644 index 000000000..94920709d --- /dev/null +++ b/release/4.12.0/less/menu.less @@ -0,0 +1,91 @@ +@import (reference) 'variables.less'; +@import (reference) 'elements.less'; + +.ui-grid-menu-button { + z-index: 2; + position: absolute; + right: 0; + top: 0; + background: @headerBackgroundColor; + border: 0; + border-left: @gridBorderWidth solid @borderColor; + border-bottom: @gridBorderWidth solid @borderColor; + cursor: pointer; + height: 32px; + font-weight: normal; +} + +.ui-grid-menu-button .ui-grid-icon-container { + margin-top: 5px; + margin-left: 2px; +} + +.ui-grid-menu-button .ui-grid-menu { + right: 0; + .ui-grid-menu-mid { + overflow: scroll; + } +} + +.ui-grid-menu { + overflow: hidden; + max-width: 320px; + z-index: 2; // So it shows up over grid canvas + position: absolute; + right: 100%; + padding: 0 10px 20px 10px; + cursor: pointer; + box-sizing: border-box; +} + +.ui-grid-menu-item { + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.ui-grid-menu .ui-grid-menu-inner { + background: @menuBackgroundColor; + border: @gridBorderWidth solid @borderColor; + position: relative; + white-space: nowrap; + + .rounded(@gridBorderRadius); +} + +.ui-grid-menu .ui-grid-menu-inner ul { + margin: 0; + padding: 0; + list-style-type: none; + + li { + padding: 0; + .ui-grid-menu-item { + color: @menuTextColor; + min-width: 100%; + padding: 8px; + text-align: left; + background: transparent; + border: none; + cursor: default; + } + button.ui-grid-menu-item { + cursor: pointer; + + // Show a shadow when hovering over a menu item + &:hover, + &:focus { + background-color: @menuHoverColor; + } + &.ui-grid-menu-item-active { + background-color: @menuSelectedColor; + } + } + } + + // Show a bottom border on all but the last menu item + li:not(:last-child) > .ui-grid-menu-item { + border-bottom: @gridBorderWidth solid @borderColor; + } +} diff --git a/release/4.12.0/less/moveColumns.less b/release/4.12.0/less/moveColumns.less new file mode 100644 index 000000000..935117f73 --- /dev/null +++ b/release/4.12.0/less/moveColumns.less @@ -0,0 +1,12 @@ +@import (reference) '../../core/less/variables'; + +.movingColumn { + position: absolute; + top: 0; + border: 1px solid @borderColor; + box-shadow: inset 0 0 14px rgba(0, 0, 0, 0.2); + + .ui-grid-icon-angle-down { + display: none; + } +} diff --git a/release/4.12.0/less/pagination.less b/release/4.12.0/less/pagination.less new file mode 100644 index 000000000..b98038e2d --- /dev/null +++ b/release/4.12.0/less/pagination.less @@ -0,0 +1,297 @@ +@import "../../core/less/variables"; +@import "../../core/less/elements"; + +@btnColor: #eee; +@btnBgColor: #dadada; +@btnBorderHoverColor: #adadad; +@btnActiveColor: #8c8c8c; + +.ui-grid-pager-panel { + display: flex; + justify-content: space-between; + align-items: center; + position: absolute; + left: 0; + bottom: 0; + width: 100%; + padding-top: 3px; + padding-bottom: 3px; + box-sizing: content-box; +} + +.ui-grid-pager-container { + float: left; +} + +.ui-grid-pager-control { + padding: 5px 0; + display: flex; + flex-flow: row nowrap; + align-items: center; + margin-right: 10px; + margin-left: 10px; + min-width: 135px; + float: left; + + button, span, input { + margin-right: 4px; + } + + button { + height: 25px; + min-width: 26px; + display: inline-block; + margin-bottom: 0; + font-weight: normal; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background: #f3f3f3; + border: 1px solid #ccc; + white-space: nowrap; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: @btnColor; + + &:hover { + border-color: @btnBorderHoverColor; + text-decoration: none; + } + + &:focus { + border-color: @btnActiveColor; + text-decoration: none; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } + + &:active { + border-color: @btnBorderHoverColor; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + &:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } + &:hover, + &:focus { + background-color: #c8c8c8; + border-color: @btnActiveColor; + } + } + + &:hover, &:focus, &:active { + color: @btnColor; + background: @btnBgColor; + } + + &[disabled] { + cursor: not-allowed; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + &:hover, + &:focus { + background-color: #f3f3f3; + border-color: #ccc; + } + } + } + + input { + display: inline; + height: 26px; + width: 50px; + vertical-align: top; + color: #555555; + background: #fff; + border: 1px solid #ccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + + &:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + } + &[disabled], + &[readonly], + &::-moz-placeholder { + opacity: 1; + } + &::-moz-placeholder, + &:-ms-input-placeholder, + &::-webkit-input-placeholder { + color: #999; + } + &::-ms-expand { + border: 0; + background-color: transparent; + } + &[disabled], + &[readonly] { + background-color: #eeeeee; + } + &[disabled] { + cursor: not-allowed; + } + } + + .ui-grid-pager-max-pages-number { + vertical-align: bottom; + > * { + vertical-align: bottom; + } + abbr { + border-bottom: none; + text-decoration: none; + } + } + + .first-bar { + width: 10px; + border-left: 2px solid #4d4d4d; + margin-top: -6px; + height: 12px; + margin-left: -3px; + } + + .first-bar-rtl { + width: 10px; + border-left: 2px solid #4d4d4d; + margin-top: -6px; + height: 12px; + margin-right: -7px; + } + + .first-triangle { + width: 0; + height: 0; + border-style: solid; + border-width: 5px 8.7px 5px 0; + border-color: transparent #4d4d4d transparent transparent; + margin-left: 2px; + } + + .next-triangle { + margin-left: 1px; + } + + .prev-triangle { + margin-left: 0; + } + + .last-triangle { + width: 0; + height: 0; + border-style: solid; + border-width: 5px 0 5px 8.7px; + border-color: transparent transparent transparent #4d4d4d; + margin-left: -1px; + } + + .last-bar { + width: 10px; + border-left: 2px solid #4d4d4d; + margin-top: -6px; + height: 12px; + margin-left: 1px; + } + + .last-bar-rtl { + width: 10px; + border-left: 2px solid #4d4d4d; + margin-top: -6px; + height: 12px; + margin-right: -11px; + } +} + +.ui-grid-pager-row-count-picker { + float: left; + padding: 5px 10px; + + select { + color: #555555; + background: #fff; + border: 1px solid #ccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + height: 25px; + width: 67px; + display: inline; + vertical-align: middle; + + &:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + } + &[disabled], + &[readonly], + &::-moz-placeholder { + opacity: 1; + } + &::-moz-placeholder, + &:-ms-input-placeholder, + &::-webkit-input-placeholder { + color: #999; + } + &::-ms-expand { + border: 0; + background-color: transparent; + } + &[disabled], + &[readonly] { + background-color: #eeeeee; + } + &[disabled] { + cursor: not-allowed; + } + } + + .ui-grid-pager-row-count-label { + margin-top: 3px; + } +} + +.ui-grid-pager-count-container { + float: right; + margin-top: 4px; + min-width: 50px; + + .ui-grid-pager-count { + margin-right: 10px; + margin-left: 10px; + float: right; + abbr { + border-bottom: none; + text-decoration: none; + } + } +} diff --git a/release/4.12.0/less/pinning.less b/release/4.12.0/less/pinning.less new file mode 100644 index 000000000..7d90450cc --- /dev/null +++ b/release/4.12.0/less/pinning.less @@ -0,0 +1,86 @@ +@import (reference) '../../core/less/variables'; + +.ui-grid-pinned-container { + position: absolute; + display: inline; + top: 0; + + &.ui-grid-pinned-container-left { + float: left; + left: 0; + } + + &.ui-grid-pinned-container-right { + float: right; + right: 0; + } + + &.ui-grid-pinned-container-left .ui-grid-header-cell:last-child { + box-sizing: border-box; + border-right: @gridBorderWidth solid; + border-width: @gridBorderWidth; + border-right-color: darken(@headerVerticalBarColor, 15%); + } + + &.ui-grid-pinned-container-left .ui-grid-cell:last-child { + box-sizing: border-box; + border-right: @gridBorderWidth solid; + border-width: @gridBorderWidth; + border-right-color: darken(@verticalBarColor, 15%); + } + + &.ui-grid-pinned-container-left .ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar, .ui-grid-cell:not(:last-child) .ui-grid-vertical-bar { + width: @gridBorderWidth; + } + + &.ui-grid-pinned-container-left .ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar { + background-color: @headerVerticalBarColor; + } + + &.ui-grid-pinned-container-left .ui-grid-cell:not(:last-child) .ui-grid-vertical-bar { + background-color: darken(@verticalBarColor, 15%); + } + + &.ui-grid-pinned-container-left .ui-grid-header-cell:last-child .ui-grid-vertical-bar { + right: -1px; // TODO(c0bra): Should this be grid width? Test column resizing with custom grid border width + width: @gridBorderWidth; + background-color: darken(@headerVerticalBarColor, 15%); + } + + + &.ui-grid-pinned-container-right .ui-grid-header-cell:first-child { + box-sizing: border-box; + border-left: @gridBorderWidth solid; + border-width: @gridBorderWidth; + border-left-color: darken(@headerVerticalBarColor, 15%); + } + + &.ui-grid-pinned-container-right .ui-grid-cell:first-child { + box-sizing: border-box; + border-left: @gridBorderWidth solid; + border-width: @gridBorderWidth; + border-left-color: darken(@verticalBarColor, 15%); + } + + &.ui-grid-pinned-container-right .ui-grid-header-cell:not(:first-child) .ui-grid-vertical-bar, .ui-grid-cell:not(:first-child) .ui-grid-vertical-bar { + width: @gridBorderWidth; + } + + &.ui-grid-pinned-container-right .ui-grid-header-cell:not(:first-child) .ui-grid-vertical-bar { + background-color: @headerVerticalBarColor; + } + + &.ui-grid-pinned-container-right .ui-grid-cell:not(:last-child) .ui-grid-vertical-bar { + background-color: darken(@verticalBarColor, 15%); + } + + &.ui-grid-pinned-container-first .ui-grid-header-cell:first-child .ui-grid-vertical-bar { + left: -1px; // TODO(c0bra): Should this be grid width? Test column resizing with custom grid border width + width: @gridBorderWidth; + background-color: darken(@headerVerticalBarColor, 15%); + } +} + +.ui-grid-render-container-body { + // float: left; +} diff --git a/release/4.12.0/less/resizeColumns.less b/release/4.12.0/less/resizeColumns.less new file mode 100644 index 000000000..a63c09093 --- /dev/null +++ b/release/4.12.0/less/resizeColumns.less @@ -0,0 +1,53 @@ +@import (reference) '../../core/less/variables'; + +.ui-grid-column-resizer { + top: 0; + bottom: 0; + width: 5px; + position: absolute; + cursor: col-resize; + + &.left { + left: 0; + } + + &.right { + right: 0; + } +} + +// Add a visual border for final column's resizer element +.ui-grid-header-cell:last-child .ui-grid-column-resizer.right { + border-right: @gridBorderWidth solid @borderColor; +} + +// Put visual border on left of last header cell when direction is rtl +.ui-grid[dir=rtl] .ui-grid-header-cell:last-child { + .ui-grid-column-resizer.right { + border-right: 0; + } + + .ui-grid-column-resizer.left { + border-left: @gridBorderWidth solid @borderColor; + } +} + +.ui-grid { + &.column-resizing { + cursor: col-resize; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + } +} + +.ui-grid.column-resizing .ui-grid-resize-overlay { + position: absolute; + top: 0; + height: 100%; + width: @gridBorderWidth; + background-color: darken(@verticalBarColor, 15%); +} \ No newline at end of file diff --git a/release/4.12.0/less/rowEdit.less b/release/4.12.0/less/rowEdit.less new file mode 100644 index 000000000..2083704b4 --- /dev/null +++ b/release/4.12.0/less/rowEdit.less @@ -0,0 +1,19 @@ +@import (reference) '../../core/less/variables'; + +.ui-grid-row-saving { + .ui-grid-cell { + color: @rowSavingForeground !important; + } +} + +.ui-grid-row-dirty { + .ui-grid-cell { + color: @rowDirtyForeground; + } +} + +.ui-grid-row-error { + .ui-grid-cell { + color: @rowErrorForeground !important; + } +} diff --git a/release/4.12.0/less/rtl.less b/release/4.12.0/less/rtl.less new file mode 100644 index 000000000..4ae83312e --- /dev/null +++ b/release/4.12.0/less/rtl.less @@ -0,0 +1,67 @@ +@import (reference) 'variables.less'; + +/* +* RTL Styles +*/ + +.ui-grid[dir=rtl] { + + .ui-grid-header-cell, + .ui-grid-footer-cell, + .ui-grid-cell { + float: right !important; + } + + .ui-grid-column-menu-button { + position: absolute; + left: 1px; + top: 0; + right: inherit; + } + + .ui-grid-cell:first-child, + .ui-grid-header-cell:first-child, + .ui-grid-footer-cell:first-child { + border-right: 0; + } + + .ui-grid-cell:last-child, .ui-grid-header-cell:last-child { + border-right: @gridBorderWidth solid @borderColor; + border-left: 0; + } + + .ui-grid-header-cell:first-child .ui-grid-vertical-bar, + .ui-grid-footer-cell:first-child .ui-grid-vertical-bar, + .ui-grid-cell:first-child .ui-grid-vertical-bar { + width: 0; + } + + .ui-grid-menu-button { + z-index: 2; + position: absolute; + left: 0; + right: auto; + background: @headerBackgroundColor; + border: @gridBorderWidth solid @borderColor; + cursor: pointer; + min-height: 27px; + font-weight: normal; + } + + .ui-grid-menu-button .ui-grid-menu { + left: 0; + right: auto; + } + + // Position filter-cancel button on the left for rtl grids + .ui-grid-filter-container .ui-grid-filter-button { + right: initial; + left: 0; + + [class^="ui-grid-icon"] { + right: initial; + left: 10px; + } + } + +} \ No newline at end of file diff --git a/release/4.12.0/less/selection.less b/release/4.12.0/less/selection.less new file mode 100644 index 000000000..d42f76149 --- /dev/null +++ b/release/4.12.0/less/selection.less @@ -0,0 +1,29 @@ +@import (reference) '../../core/less/variables'; + +.ui-grid-row.ui-grid-row-selected > [ui-grid-row] > .ui-grid-cell { + background-color: @rowSelected; +} + +.ui-grid-disable-selection { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; +} + +.ui-grid-selection-row-header-buttons { + display: flex; + align-items: center; + height: 100%; + cursor: pointer; + &::before { + opacity: 0.1; + } + &.ui-grid-row-selected::before, + &.ui-grid-all-selected::before { + opacity: 1; + } +} diff --git a/release/4.12.0/less/sorting.less b/release/4.12.0/less/sorting.less new file mode 100644 index 000000000..7fd626651 --- /dev/null +++ b/release/4.12.0/less/sorting.less @@ -0,0 +1,16 @@ +@import (reference) 'elements.less'; + +@sortArrowWidth: 20px; + +.ui-grid-sortarrow { + right: 5px; + position: absolute; + width: @sortArrowWidth; + top: 0; + bottom: 0; + background-position: center; + + &.down { + .transform(rotate(180deg)); + } +} \ No newline at end of file diff --git a/release/4.12.0/less/treeBase.less b/release/4.12.0/less/treeBase.less new file mode 100644 index 000000000..6a7f1afa1 --- /dev/null +++ b/release/4.12.0/less/treeBase.less @@ -0,0 +1,6 @@ +@import (reference) '../../core/less/variables'; + +.ui-grid-tree-row-header-buttons.ui-grid-tree-header { + cursor: pointer; + opacity: 1; +} diff --git a/release/4.12.0/less/treeView.less b/release/4.12.0/less/treeView.less new file mode 100644 index 000000000..286bc018e --- /dev/null +++ b/release/4.12.0/less/treeView.less @@ -0,0 +1,8 @@ +@import (reference) '../../core/less/variables'; + +.ui-grid-tree-header-row { + font-weight: bold !important; +} +.ui-grid-tree-header-row .ui-grid-cell.ui-grid-disable-selection.ui-grid-row-header-cell { + pointer-events: all; +} diff --git a/release/4.12.0/less/validate.less b/release/4.12.0/less/validate.less new file mode 100644 index 000000000..59a1f5a5f --- /dev/null +++ b/release/4.12.0/less/validate.less @@ -0,0 +1,5 @@ +@import (reference) '../../core/less/variables'; + +.ui-grid-cell-contents.invalid { + border: @invalidValueBorder; +} \ No newline at end of file diff --git a/release/4.12.0/less/variables.less b/release/4.12.0/less/variables.less new file mode 100644 index 000000000..7b0632df8 --- /dev/null +++ b/release/4.12.0/less/variables.less @@ -0,0 +1,90 @@ + +/* This file contains variable declarations (do not remove this line) */ + +/*-- VARIABLES (DO NOT REMOVE THESE COMMENTS) --*/ + +/** +* @section Grid styles +*/ +@gridBorderWidth: 1px; +@gridBorderRadius: 0px; +@borderColor: #d4d4d4; +@focusColor: #b3c4c7; +@activeColor: darken(@focusColor, 8%); + +/** +* @section Header styles +*/ + +/** @description Colors for header gradient */ +@headerBackgroundColor: #f3f3f3; +@headerGradientStart: #eee; +@headerGradientStop: #fff; +@headerVerticalBarColor: @borderColor; + +/** +* @section Grid body styles +*/ + +/** @description Colors used for row alternation */ +@verticalBarColor: @borderColor; +@rowColorHovered: #d5eaee; +@rowColorEven: #f3f3f3; +@rowColorOdd: #fdfdfd; + +/** +* @section Grid Menu colors +*/ +@menuBackgroundColor: #fff; +@menuHoverColor: @focusColor; +@menuSelectedColor: @activeColor; +@menuTextColor: #000; + +/** +* @section Sort arrow colors +*/ + +@sortArrowBackgroundColor: #aaaaaa; +@sortArrowBorderColor: #777777; + + +@rowHeaderCell: #F0F0EE; +@rowSelected: #C9DDE1; +@rowSavingForeground: #848484; +@rowErrorForeground: #FF0000; +@rowDirtyForeground: #610B38; + +// TODO: color for cell selections +@focusedCell: @focusColor; + +// Color to use for enabled or selected settings/items/cells, etc. Should probably override the one above +@selectedColor: @activeColor; + +/** +* @section Scrollbar styles +*/ +@scrollbarBackground: darken(@rowColorEven, 15%); +@scrollbarBackgroundHover: darken(@scrollbarBackground, 15%); +@scrollbarBackgroundScrolling: darken(@scrollbarBackgroundHover, 15%); +@scrollbarWidth: 10px; +@scrollbarBorderRadius: 2px; +@scrollbarShadow: 0 0 0px #fff; +@scrollbarBorder: 1px solid darken(@scrollbarBackground, 15%); +@scrollbarBorderScrolling: 1px solid darken(@scrollbarBackgroundScrolling, 15%); + +//Border to be applied to editors when the input value or invalid +@invalidValueBorder: 1px solid #fc8f8f; +@validValueBorder: 1px solid @borderColor; + +//Pagination controls +@paginationButtonColor: @headerGradientStart; +@paginationButtonBackgroundColor: @headerBackgroundColor; +@paginationButtonBorderColor: #ccc; + + +/** +* @section font library path +*/ +@font-path: 'fonts/'; + +/*-- END VARIABLES (DO NOT REMOVE THESE COMMENTS) --*/ diff --git a/release/4.12.0/package.json b/release/4.12.0/package.json new file mode 100644 index 000000000..dd95fdc76 --- /dev/null +++ b/release/4.12.0/package.json @@ -0,0 +1,82 @@ +{ + "name": "angular-ui-grid", + "description": "A data grid for Angular", + "main": "./index.js", + "ignore": [], + "dependencies": { + "angular": ">=1.4.0 1.8.x" + }, + "repository": { + "type": "git", + "url": "https://github.com/angular-ui/ui-grid.git" + }, + "homepage": "http://ui-grid.info", + "bugs": { + "url": "https://github.com/angular-ui/ui-grid/issues" + }, + "keywords": [ + "angular", + "ng-grid", + "nggrid", + "grid", + "angularjs", + "slickgrid", + "kogrid", + "ui-grid", + "ui grid", + "data grid" + ], + "license": "MIT", + "version": "4.12.0", + "files": [ + ".npmignore", + "CHANGELOG.md", + "README.md", + "css", + "index.js", + "less", + "ui-grid.autoResize.js", + "ui-grid.autoResize.min.js", + "ui-grid.cellNav.js", + "ui-grid.cellNav.min.js", + "ui-grid.core.js", + "ui-grid.core.min.js", + "ui-grid.edit.js", + "ui-grid.edit.min.js", + "ui-grid.emptyBaseLayer.js", + "ui-grid.emptyBaseLayer.min.js", + "ui-grid.expandable.js", + "ui-grid.expandable.min.js", + "ui-grid.exporter.js", + "ui-grid.exporter.min.js", + "ui-grid.grouping.js", + "ui-grid.grouping.min.js", + "ui-grid.importer.js", + "ui-grid.importer.min.js", + "ui-grid.infiniteScroll.js", + "ui-grid.infiniteScroll.min.js", + "ui-grid.js", + "ui-grid.min.js", + "ui-grid.min.js.LICENSE.txt", + "ui-grid.moveColumns.js", + "ui-grid.moveColumns.min.js", + "ui-grid.pagination.js", + "ui-grid.pagination.min.js", + "ui-grid.pinning.js", + "ui-grid.pinning.min.js", + "ui-grid.resizeColumns.js", + "ui-grid.resizeColumns.min.js", + "ui-grid.rowEdit.js", + "ui-grid.rowEdit.min.js", + "ui-grid.saveState.js", + "ui-grid.saveState.min.js", + "ui-grid.selection.js", + "ui-grid.selection.min.js", + "ui-grid.treeBase.js", + "ui-grid.treeBase.min.js", + "ui-grid.treeView.js", + "ui-grid.treeView.min.js", + "ui-grid.validate.js", + "ui-grid.validate.min.js" + ] +} \ No newline at end of file diff --git a/release/4.12.0/ui-grid.autoResize.js b/release/4.12.0/ui-grid.autoResize.js new file mode 100644 index 000000000..4e4542b04 --- /dev/null +++ b/release/4.12.0/ui-grid.autoResize.js @@ -0,0 +1,114 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ 605: +/***/ (() => { + +(function() { + 'use strict'; + /** + * @ngdoc overview + * @name ui.grid.autoResize + * + * @description + * + * #ui.grid.autoResize + * + * + * + * This module provides auto-resizing functionality to UI-Grid. + */ + var module = angular.module('ui.grid.autoResize', ['ui.grid']); + + /** + * @ngdoc directive + * @name ui.grid.autoResize.directive:uiGridAutoResize + * @element div + * @restrict A + * + * @description Stacks on top of the ui-grid directive and + * adds the a watch to the grid's height and width which refreshes + * the grid content whenever its dimensions change. + * + */ + module.directive('uiGridAutoResize', ['gridUtil', function(gridUtil) { + return { + require: 'uiGrid', + scope: false, + link: function($scope, $elm, $attrs, uiGridCtrl) { + var debouncedRefresh; + + function getDimensions() { + return { + width: gridUtil.elementWidth($elm), + height: gridUtil.elementHeight($elm) + }; + } + + function refreshGrid(prevWidth, prevHeight, width, height) { + if ($elm[0].offsetParent !== null) { + uiGridCtrl.grid.gridWidth = width; + uiGridCtrl.grid.gridHeight = height; + uiGridCtrl.grid.queueGridRefresh() + .then(function() { + uiGridCtrl.grid.api.core.raise.gridDimensionChanged(prevHeight, prevWidth, height, width); + }); + } + } + + debouncedRefresh = gridUtil.debounce(refreshGrid, 400); + + $scope.$watchCollection(getDimensions, function(newValues, oldValues) { + if (!angular.equals(newValues, oldValues)) { + debouncedRefresh(oldValues.width, oldValues.height, newValues.width, newValues.height); + } + }); + } + }; + }]); +})(); + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +__webpack_require__(605); + +})(); + +/******/ })() +; \ No newline at end of file diff --git a/release/4.12.0/ui-grid.autoResize.min.js b/release/4.12.0/ui-grid.autoResize.min.js new file mode 100644 index 000000000..993ac04a8 --- /dev/null +++ b/release/4.12.0/ui-grid.autoResize.min.js @@ -0,0 +1,2 @@ +/*! For license information please see ui-grid.autoResize.min.js.LICENSE.txt */ +(()=>{var i={605:()=>{!function(){"use strict";angular.module("ui.grid.autoResize",["ui.grid"]).directive("uiGridAutoResize",["gridUtil",function(i){return{require:"uiGrid",scope:!1,link:function(e,r,t,n){var u;u=i.debounce((function(i,e,t,u){null!==r[0].offsetParent&&(n.grid.gridWidth=t,n.grid.gridHeight=u,n.grid.queueGridRefresh().then((function(){n.grid.api.core.raise.gridDimensionChanged(e,i,u,t)})))}),400),e.$watchCollection((function(){return{width:i.elementWidth(r),height:i.elementHeight(r)}}),(function(i,e){angular.equals(i,e)||u(e.width,e.height,i.width,i.height)}))}}}])}()}},e={};function r(t){var n=e[t];if(void 0!==n)return n.exports;var u=e[t]={exports:{}};return i[t](u,u.exports,r),u.exports}r(605)})(); \ No newline at end of file diff --git a/release/4.12.0/ui-grid.cellNav.js b/release/4.12.0/ui-grid.cellNav.js new file mode 100644 index 000000000..57eb6af93 --- /dev/null +++ b/release/4.12.0/ui-grid.cellNav.js @@ -0,0 +1,1233 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ 590: +/***/ (() => { + +(function () { + 'use strict'; + + /** + * @ngdoc overview + * @name ui.grid.cellNav + * + * @description + + #ui.grid.cellNav + + + + This module provides cell navigation functionality to UI-Grid. + */ + var module = angular.module('ui.grid.cellNav', ['ui.grid']); + + /** + * @ngdoc object + * @name ui.grid.cellNav.constant:uiGridCellNavConstants + * + * @description constants available in cellNav + */ + module.constant('uiGridCellNavConstants', { + FEATURE_NAME: 'gridCellNav', + CELL_NAV_EVENT: 'cellNav', + direction: {LEFT: 0, RIGHT: 1, UP: 2, DOWN: 3, PG_UP: 4, PG_DOWN: 5}, + EVENT_TYPE: { + KEYDOWN: 0, + CLICK: 1, + CLEAR: 2 + } + }); + + + module.factory('uiGridCellNavFactory', ['gridUtil', 'uiGridConstants', 'uiGridCellNavConstants', 'GridRowColumn', '$q', + function (gridUtil, uiGridConstants, uiGridCellNavConstants, GridRowColumn, $q) { + /** + * @ngdoc object + * @name ui.grid.cellNav.object:CellNav + * @description returns a CellNav prototype function + * @param {object} rowContainer container for rows + * @param {object} colContainer parent column container + * @param {object} leftColContainer column container to the left of parent + * @param {object} rightColContainer column container to the right of parent + */ + var UiGridCellNav = function UiGridCellNav(rowContainer, colContainer, leftColContainer, rightColContainer) { + this.rows = rowContainer.visibleRowCache; + this.columns = colContainer.visibleColumnCache; + this.leftColumns = leftColContainer ? leftColContainer.visibleColumnCache : []; + this.rightColumns = rightColContainer ? rightColContainer.visibleColumnCache : []; + this.bodyContainer = rowContainer; + }; + + /** returns focusable columns of all containers */ + UiGridCellNav.prototype.getFocusableCols = function () { + var allColumns = this.leftColumns.concat(this.columns, this.rightColumns); + + return allColumns.filter(function (col) { + return col.colDef.allowCellFocus; + }); + }; + + /** + * @ngdoc object + * @name ui.grid.cellNav.api:GridRow + * + * @description GridRow settings for cellNav feature, these are available to be + * set only internally (for example, by other features) + */ + + /** + * @ngdoc object + * @name allowCellFocus + * @propertyOf ui.grid.cellNav.api:GridRow + * @description Enable focus on a cell within this row. If set to false then no cells + * in this row can be focused - group header rows as an example would set this to false. + *
        Defaults to true + */ + /** returns focusable rows */ + UiGridCellNav.prototype.getFocusableRows = function () { + return this.rows.filter(function(row) { + return row.allowCellFocus !== false; + }); + }; + + UiGridCellNav.prototype.getNextRowCol = function (direction, curRow, curCol) { + switch (direction) { + case uiGridCellNavConstants.direction.LEFT: + return this.getRowColLeft(curRow, curCol); + case uiGridCellNavConstants.direction.RIGHT: + return this.getRowColRight(curRow, curCol); + case uiGridCellNavConstants.direction.UP: + return this.getRowColUp(curRow, curCol); + case uiGridCellNavConstants.direction.DOWN: + return this.getRowColDown(curRow, curCol); + case uiGridCellNavConstants.direction.PG_UP: + return this.getRowColPageUp(curRow, curCol); + case uiGridCellNavConstants.direction.PG_DOWN: + return this.getRowColPageDown(curRow, curCol); + } + }; + + UiGridCellNav.prototype.initializeSelection = function () { + var focusableCols = this.getFocusableCols(); + var focusableRows = this.getFocusableRows(); + if (focusableCols.length === 0 || focusableRows.length === 0) { + return null; + } + + return new GridRowColumn(focusableRows[0], focusableCols[0]); // return same row + }; + + UiGridCellNav.prototype.getRowColLeft = function (curRow, curCol) { + var focusableCols = this.getFocusableCols(); + var focusableRows = this.getFocusableRows(); + var curColIndex = focusableCols.indexOf(curCol); + var curRowIndex = focusableRows.indexOf(curRow); + + // could not find column in focusable Columns so set it to 1 + if (curColIndex === -1) { + curColIndex = 1; + } + + var nextColIndex = curColIndex === 0 ? focusableCols.length - 1 : curColIndex - 1; + + // get column to left + if (nextColIndex >= curColIndex) { + // On the first row + // if (curRowIndex === 0 && curColIndex === 0) { + // return null; + // } + if (curRowIndex === 0) { + return new GridRowColumn(curRow, focusableCols[nextColIndex]); // return same row + } + else { + // up one row and far right column + return new GridRowColumn(focusableRows[curRowIndex - 1], focusableCols[nextColIndex]); + } + } + else { + return new GridRowColumn(curRow, focusableCols[nextColIndex]); + } + }; + + + + UiGridCellNav.prototype.getRowColRight = function (curRow, curCol) { + var focusableCols = this.getFocusableCols(); + var focusableRows = this.getFocusableRows(); + var curColIndex = focusableCols.indexOf(curCol); + var curRowIndex = focusableRows.indexOf(curRow); + + // could not find column in focusable Columns so set it to 0 + if (curColIndex === -1) { + curColIndex = 0; + } + var nextColIndex = curColIndex === focusableCols.length - 1 ? 0 : curColIndex + 1; + + if (nextColIndex <= curColIndex) { + if (curRowIndex === focusableRows.length - 1) { + return new GridRowColumn(curRow, focusableCols[nextColIndex]); // return same row + } + else { + // down one row and far left column + return new GridRowColumn(focusableRows[curRowIndex + 1], focusableCols[nextColIndex]); + } + } + else { + return new GridRowColumn(curRow, focusableCols[nextColIndex]); + } + }; + + UiGridCellNav.prototype.getRowColDown = function (curRow, curCol) { + var focusableCols = this.getFocusableCols(); + var focusableRows = this.getFocusableRows(); + var curColIndex = focusableCols.indexOf(curCol); + var curRowIndex = focusableRows.indexOf(curRow); + + // could not find column in focusable Columns so set it to 0 + if (curColIndex === -1) { + curColIndex = 0; + } + + if (curRowIndex === focusableRows.length - 1) { + return new GridRowColumn(curRow, focusableCols[curColIndex]); // return same row + } + else { + // down one row + return new GridRowColumn(focusableRows[curRowIndex + 1], focusableCols[curColIndex]); + } + }; + + UiGridCellNav.prototype.getRowColPageDown = function (curRow, curCol) { + var focusableCols = this.getFocusableCols(); + var focusableRows = this.getFocusableRows(); + var curColIndex = focusableCols.indexOf(curCol); + var curRowIndex = focusableRows.indexOf(curRow); + + // could not find column in focusable Columns so set it to 0 + if (curColIndex === -1) { + curColIndex = 0; + } + + var pageSize = this.bodyContainer.minRowsToRender(); + if (curRowIndex >= focusableRows.length - pageSize) { + return new GridRowColumn(focusableRows[focusableRows.length - 1], focusableCols[curColIndex]); // return last row + } + else { + // down one page + return new GridRowColumn(focusableRows[curRowIndex + pageSize], focusableCols[curColIndex]); + } + }; + + UiGridCellNav.prototype.getRowColUp = function (curRow, curCol) { + var focusableCols = this.getFocusableCols(); + var focusableRows = this.getFocusableRows(); + var curColIndex = focusableCols.indexOf(curCol); + var curRowIndex = focusableRows.indexOf(curRow); + + // could not find column in focusable Columns so set it to 0 + if (curColIndex === -1) { + curColIndex = 0; + } + + if (curRowIndex === 0) { + return new GridRowColumn(curRow, focusableCols[curColIndex]); // return same row + } + else { + // up one row + return new GridRowColumn(focusableRows[curRowIndex - 1], focusableCols[curColIndex]); + } + }; + + UiGridCellNav.prototype.getRowColPageUp = function (curRow, curCol) { + var focusableCols = this.getFocusableCols(); + var focusableRows = this.getFocusableRows(); + var curColIndex = focusableCols.indexOf(curCol); + var curRowIndex = focusableRows.indexOf(curRow); + + // could not find column in focusable Columns so set it to 0 + if (curColIndex === -1) { + curColIndex = 0; + } + + var pageSize = this.bodyContainer.minRowsToRender(); + if (curRowIndex - pageSize < 0) { + return new GridRowColumn(focusableRows[0], focusableCols[curColIndex]); // return first row + } + else { + // up one page + return new GridRowColumn(focusableRows[curRowIndex - pageSize], focusableCols[curColIndex]); + } + }; + return UiGridCellNav; + }]); + + /** + * @ngdoc service + * @name ui.grid.cellNav.service:uiGridCellNavService + * + * @description Services for cell navigation features. If you don't like the key maps we use, + * or the direction cells navigation, override with a service decorator (see angular docs) + */ + module.service('uiGridCellNavService', ['gridUtil', 'uiGridConstants', 'uiGridCellNavConstants', '$q', 'uiGridCellNavFactory', 'GridRowColumn', 'ScrollEvent', + function (gridUtil, uiGridConstants, uiGridCellNavConstants, $q, UiGridCellNav, GridRowColumn, ScrollEvent) { + + var service = { + + initializeGrid: function (grid) { + grid.registerColumnBuilder(service.cellNavColumnBuilder); + + + /** + * @ngdoc object + * @name ui.grid.cellNav.Grid:cellNav + * @description cellNav properties added to grid class + */ + grid.cellNav = {}; + grid.cellNav.lastRowCol = null; + grid.cellNav.focusedCells = []; + + service.defaultGridOptions(grid.options); + + /** + * @ngdoc object + * @name ui.grid.cellNav.api:PublicApi + * + * @description Public Api for cellNav feature + */ + var publicApi = { + events: { + cellNav: { + /** + * @ngdoc event + * @name navigate + * @eventOf ui.grid.cellNav.api:PublicApi + * @description raised when the active cell is changed + *
        +                 *      gridApi.cellNav.on.navigate(scope,function(newRowcol, oldRowCol) {})
        +                 * 
        + * @param {object} newRowCol new position + * @param {object} oldRowCol old position + */ + navigate: function (newRowCol, oldRowCol) {}, + /** + * @ngdoc event + * @name viewPortKeyDown + * @eventOf ui.grid.cellNav.api:PublicApi + * @description is raised when the viewPort receives a keyDown event. Cells never get focus in uiGrid + * due to the difficulties of setting focus on a cell that is not visible in the viewport. Use this + * event whenever you need a keydown event on a cell + *
        + * @param {object} event keydown event + * @param {object} rowCol current rowCol position + */ + viewPortKeyDown: function (event, rowCol) {}, + + /** + * @ngdoc event + * @name viewPortKeyPress + * @eventOf ui.grid.cellNav.api:PublicApi + * @description is raised when the viewPort receives a keyPress event. Cells never get focus in uiGrid + * due to the difficulties of setting focus on a cell that is not visible in the viewport. Use this + * event whenever you need a keypress event on a cell + *
        + * @param {object} event keypress event + * @param {object} rowCol current rowCol position + */ + viewPortKeyPress: function (event, rowCol) {} + } + }, + methods: { + cellNav: { + /** + * @ngdoc function + * @name scrollToFocus + * @methodOf ui.grid.cellNav.api:PublicApi + * @description brings the specified row and column into view, and sets focus + * to that cell + * @param {object} rowEntity gridOptions.data[] array instance to make visible and set focus + * @param {object} colDef to make visible and set focus + * @returns {promise} a promise that is resolved after any scrolling is finished + */ + scrollToFocus: function (rowEntity, colDef) { + return service.scrollToFocus(grid, rowEntity, colDef); + }, + + /** + * @ngdoc function + * @name getFocusedCell + * @methodOf ui.grid.cellNav.api:PublicApi + * @description returns the current (or last if Grid does not have focus) focused row and column + *
        value is null if no selection has occurred + */ + getFocusedCell: function () { + return grid.cellNav.lastRowCol; + }, + + /** + * @ngdoc function + * @name getCurrentSelection + * @methodOf ui.grid.cellNav.api:PublicApi + * @description returns an array containing the current selection + *
        array is empty if no selection has occurred + */ + getCurrentSelection: function () { + return grid.cellNav.focusedCells; + }, + + /** + * @ngdoc function + * @name rowColSelectIndex + * @methodOf ui.grid.cellNav.api:PublicApi + * @description returns the index in the order in which the GridRowColumn was selected, returns -1 if the GridRowColumn + * isn't selected + * @param {object} rowCol the rowCol to evaluate + */ + rowColSelectIndex: function (rowCol) { + // return gridUtil.arrayContainsObjectWithProperty(grid.cellNav.focusedCells, 'col.uid', rowCol.col.uid) && + var index = -1; + for (var i = 0; i < grid.cellNav.focusedCells.length; i++) { + if (grid.cellNav.focusedCells[i].col.uid === rowCol.col.uid && + grid.cellNav.focusedCells[i].row.uid === rowCol.row.uid) { + index = i; + break; + } + } + return index; + } + } + } + }; + + grid.api.registerEventsFromObject(publicApi.events); + + grid.api.registerMethodsFromObject(publicApi.methods); + }, + + defaultGridOptions: function (gridOptions) { + /** + * @ngdoc object + * @name ui.grid.cellNav.api:GridOptions + * + * @description GridOptions for cellNav feature, these are available to be + * set using the ui-grid {@link ui.grid.class:GridOptions gridOptions} + */ + + /** + * @ngdoc object + * @name modifierKeysToMultiSelectCells + * @propertyOf ui.grid.cellNav.api:GridOptions + * @description Enable multiple cell selection only when using the ctrlKey or shiftKey. + *
        Defaults to false + */ + gridOptions.modifierKeysToMultiSelectCells = gridOptions.modifierKeysToMultiSelectCells === true; + + /** + * @ngdoc array + * @name keyDownOverrides + * @propertyOf ui.grid.cellNav.api:GridOptions + * @description An array of event objects to override on keydown. If an event is overridden, the viewPortKeyDown event will + * be raised with the overridden events, allowing custom keydown behavior. + *
        Defaults to [] + */ + gridOptions.keyDownOverrides = gridOptions.keyDownOverrides || []; + + }, + + /** + * @ngdoc service + * @name decorateRenderContainers + * @methodOf ui.grid.cellNav.service:uiGridCellNavService + * @description decorates grid renderContainers with cellNav functions + */ + decorateRenderContainers: function (grid) { + + var rightContainer = grid.hasRightContainer() ? grid.renderContainers.right : null; + var leftContainer = grid.hasLeftContainer() ? grid.renderContainers.left : null; + + if (leftContainer !== null) { + grid.renderContainers.left.cellNav = new UiGridCellNav(grid.renderContainers.body, leftContainer, rightContainer, grid.renderContainers.body); + } + if (rightContainer !== null) { + grid.renderContainers.right.cellNav = new UiGridCellNav(grid.renderContainers.body, rightContainer, grid.renderContainers.body, leftContainer); + } + + grid.renderContainers.body.cellNav = new UiGridCellNav(grid.renderContainers.body, grid.renderContainers.body, leftContainer, rightContainer); + }, + + /** + * @ngdoc service + * @name getDirection + * @methodOf ui.grid.cellNav.service:uiGridCellNavService + * @description determines which direction to for a given keyDown event + * @returns {uiGridCellNavConstants.direction} direction + */ + getDirection: function (evt) { + if (evt.keyCode === uiGridConstants.keymap.LEFT || + (evt.keyCode === uiGridConstants.keymap.TAB && evt.shiftKey)) { + return uiGridCellNavConstants.direction.LEFT; + } + if (evt.keyCode === uiGridConstants.keymap.RIGHT || + evt.keyCode === uiGridConstants.keymap.TAB) { + return uiGridCellNavConstants.direction.RIGHT; + } + + if (evt.keyCode === uiGridConstants.keymap.UP || + (evt.keyCode === uiGridConstants.keymap.ENTER && evt.shiftKey) ) { + return uiGridCellNavConstants.direction.UP; + } + + if (evt.keyCode === uiGridConstants.keymap.PG_UP) { + return uiGridCellNavConstants.direction.PG_UP; + } + + if (evt.keyCode === uiGridConstants.keymap.DOWN || + evt.keyCode === uiGridConstants.keymap.ENTER && !(evt.ctrlKey || evt.altKey)) { + return uiGridCellNavConstants.direction.DOWN; + } + + if (evt.keyCode === uiGridConstants.keymap.PG_DOWN) { + return uiGridCellNavConstants.direction.PG_DOWN; + } + + return null; + }, + + /** + * @ngdoc service + * @name cellNavColumnBuilder + * @methodOf ui.grid.cellNav.service:uiGridCellNavService + * @description columnBuilder function that adds cell navigation properties to grid column + * @returns {promise} promise that will load any needed templates when resolved + */ + cellNavColumnBuilder: function (colDef, col, gridOptions) { + var promises = []; + + /** + * @ngdoc object + * @name ui.grid.cellNav.api:ColumnDef + * + * @description Column Definitions for cellNav feature, these are available to be + * set using the ui-grid {@link ui.grid.class:GridOptions.columnDef gridOptions.columnDefs} + */ + + /** + * @ngdoc object + * @name allowCellFocus + * @propertyOf ui.grid.cellNav.api:ColumnDef + * @description Enable focus on a cell within this column. + *
        Defaults to true + */ + colDef.allowCellFocus = colDef.allowCellFocus === undefined ? true : colDef.allowCellFocus; + + return $q.all(promises); + }, + + /** + * @ngdoc method + * @methodOf ui.grid.cellNav.service:uiGridCellNavService + * @name scrollToFocus + * @description Scroll the grid such that the specified + * row and column is in view, and set focus to the cell in that row and column + * @param {Grid} grid the grid you'd like to act upon, usually available + * from gridApi.grid + * @param {object} rowEntity gridOptions.data[] array instance to make visible and set focus to + * @param {object} colDef to make visible and set focus to + * @returns {promise} a promise that is resolved after any scrolling is finished + */ + scrollToFocus: function (grid, rowEntity, colDef) { + var gridRow = null, gridCol = null; + + if (typeof(rowEntity) !== 'undefined' && rowEntity !== null) { + gridRow = grid.getRow(rowEntity); + } + + if (typeof(colDef) !== 'undefined' && colDef !== null) { + gridCol = grid.getColumn(colDef.name ? colDef.name : colDef.field); + } + return grid.api.core.scrollToIfNecessary(gridRow, gridCol).then(function () { + var rowCol = { row: gridRow, col: gridCol }; + + // Broadcast the navigation + if (gridRow !== null && gridCol !== null) { + grid.cellNav.broadcastCellNav(rowCol, null, null); + } + }); + }, + + + /** + * @ngdoc method + * @methodOf ui.grid.cellNav.service:uiGridCellNavService + * @name getLeftWidth + * @description Get the current drawn width of the columns in the + * grid up to the numbered column, and add an apportionment for the + * column that we're on. So if we are on column 0, we want to scroll + * 0% (i.e. exclude this column from calc). If we're on the last column + * we want to scroll to 100% (i.e. include this column in the calc). So + * we include (thisColIndex / totalNumberCols) % of this column width + * @param {Grid} grid the grid you'd like to act upon, usually available + * from gridApi.grid + * @param {GridColumn} upToCol the column to total up to and including + */ + getLeftWidth: function (grid, upToCol) { + var width = 0; + + if (!upToCol) { + return width; + } + + var lastIndex = grid.renderContainers.body.visibleColumnCache.indexOf( upToCol ); + + // total column widths up-to but not including the passed in column + grid.renderContainers.body.visibleColumnCache.forEach( function( col, index ) { + if ( index < lastIndex ) { + width += col.drawnWidth; + } + }); + + // pro-rata the final column based on % of total columns. + var percentage = lastIndex === 0 ? 0 : (lastIndex + 1) / grid.renderContainers.body.visibleColumnCache.length; + width += upToCol.drawnWidth * percentage; + + return width; + } + }; + + return service; + }]); + + /** + * @ngdoc directive + * @name ui.grid.cellNav.directive:uiCellNav + * @element div + * @restrict EA + * + * @description Adds cell navigation features to the grid columns + * + * @example + + + var app = angular.module('app', ['ui.grid', 'ui.grid.cellNav']); + + app.controller('MainCtrl', ['$scope', function ($scope) { + $scope.data = [ + { name: 'Bob', title: 'CEO' }, + { name: 'Frank', title: 'Lowly Developer' } + ]; + + $scope.columnDefs = [ + {name: 'name'}, + {name: 'title'} + ]; + }]); + + +
        +
        +
        +
        +
        + */ + module.directive('uiGridCellnav', ['gridUtil', 'uiGridCellNavService', 'uiGridCellNavConstants', 'uiGridConstants', 'GridRowColumn', '$timeout', '$compile', 'i18nService', + function (gridUtil, uiGridCellNavService, uiGridCellNavConstants, uiGridConstants, GridRowColumn, $timeout, $compile, i18nService) { + return { + replace: true, + priority: -150, + require: '^uiGrid', + scope: false, + controller: function () {}, + compile: function () { + return { + pre: function ($scope, $elm, $attrs, uiGridCtrl) { + var _scope = $scope; + + var grid = uiGridCtrl.grid; + uiGridCellNavService.initializeGrid(grid); + + uiGridCtrl.cellNav = {}; + + // Ensure that the object has all of the methods we expect it to + uiGridCtrl.cellNav.makeRowCol = function (obj) { + if (!(obj instanceof GridRowColumn)) { + obj = new GridRowColumn(obj.row, obj.col); + } + return obj; + }; + + uiGridCtrl.cellNav.getActiveCell = function () { + var elms = $elm[0].getElementsByClassName('ui-grid-cell-focus'); + if (elms.length > 0) { + return elms[0]; + } + + return undefined; + }; + + uiGridCtrl.cellNav.broadcastCellNav = grid.cellNav.broadcastCellNav = function (newRowCol, modifierDown, originEvt) { + modifierDown = !(modifierDown === undefined || !modifierDown); + + newRowCol = uiGridCtrl.cellNav.makeRowCol(newRowCol); + + uiGridCtrl.cellNav.broadcastFocus(newRowCol, modifierDown, originEvt); + _scope.$broadcast(uiGridCellNavConstants.CELL_NAV_EVENT, newRowCol, modifierDown, originEvt); + }; + + uiGridCtrl.cellNav.clearFocus = grid.cellNav.clearFocus = function () { + grid.cellNav.focusedCells = []; + _scope.$broadcast(uiGridCellNavConstants.CELL_NAV_EVENT); + }; + + uiGridCtrl.cellNav.broadcastFocus = function (rowCol, modifierDown, originEvt) { + modifierDown = !(modifierDown === undefined || !modifierDown); + + rowCol = uiGridCtrl.cellNav.makeRowCol(rowCol); + + var row = rowCol.row, + col = rowCol.col; + + var rowColSelectIndex = uiGridCtrl.grid.api.cellNav.rowColSelectIndex(rowCol); + + if (grid.cellNav.lastRowCol === null || rowColSelectIndex === -1 || (grid.cellNav.lastRowCol.col === col && grid.cellNav.lastRowCol.row === row)) { + var newRowCol = new GridRowColumn(row, col); + + if (grid.cellNav.lastRowCol === null || grid.cellNav.lastRowCol.row !== newRowCol.row || grid.cellNav.lastRowCol.col !== newRowCol.col || grid.options.enableCellEditOnFocus) { + grid.api.cellNav.raise.navigate(newRowCol, grid.cellNav.lastRowCol, originEvt); + grid.cellNav.lastRowCol = newRowCol; + } + if (uiGridCtrl.grid.options.modifierKeysToMultiSelectCells && modifierDown) { + grid.cellNav.focusedCells.push(rowCol); + } else { + grid.cellNav.focusedCells = [rowCol]; + } + } else if (grid.options.modifierKeysToMultiSelectCells && modifierDown && + rowColSelectIndex >= 0) { + + grid.cellNav.focusedCells.splice(rowColSelectIndex, 1); + } + }; + + uiGridCtrl.cellNav.handleKeyDown = function (evt) { + var direction = uiGridCellNavService.getDirection(evt); + if (direction === null) { + return null; + } + + var containerId = 'body'; + if (evt.uiGridTargetRenderContainerId) { + containerId = evt.uiGridTargetRenderContainerId; + } + + // Get the last-focused row+col combo + var lastRowCol = uiGridCtrl.grid.api.cellNav.getFocusedCell(); + if (lastRowCol) { + // Figure out which new row+combo we're navigating to + var rowCol = uiGridCtrl.grid.renderContainers[containerId].cellNav.getNextRowCol(direction, lastRowCol.row, lastRowCol.col); + var focusableCols = uiGridCtrl.grid.renderContainers[containerId].cellNav.getFocusableCols(); + var rowColSelectIndex = uiGridCtrl.grid.api.cellNav.rowColSelectIndex(rowCol); + // Shift+tab on top-left cell should exit cellnav on render container + if ( + // Navigating left + direction === uiGridCellNavConstants.direction.LEFT && + // New col is last col (i.e. wrap around) + rowCol.col === focusableCols[focusableCols.length - 1] && + // Staying on same row, which means we're at first row + rowCol.row === lastRowCol.row && + evt.keyCode === uiGridConstants.keymap.TAB && + evt.shiftKey + ) { + grid.cellNav.focusedCells.splice(rowColSelectIndex, 1); + uiGridCtrl.cellNav.clearFocus(); + return true; + } + // Tab on bottom-right cell should exit cellnav on render container + else if ( + direction === uiGridCellNavConstants.direction.RIGHT && + // New col is first col (i.e. wrap around) + rowCol.col === focusableCols[0] && + // Staying on same row, which means we're at first row + rowCol.row === lastRowCol.row && + evt.keyCode === uiGridConstants.keymap.TAB && + !evt.shiftKey + ) { + grid.cellNav.focusedCells.splice(rowColSelectIndex, 1); + uiGridCtrl.cellNav.clearFocus(); + return true; + } + + // Scroll to the new cell, if it's not completely visible within the render container's viewport + grid.scrollToIfNecessary(rowCol.row, rowCol.col).then(function () { + uiGridCtrl.cellNav.broadcastCellNav(rowCol, null, evt); + }); + + + evt.stopPropagation(); + evt.preventDefault(); + + return false; + } + }; + }, + post: function ($scope, $elm, $attrs, uiGridCtrl) { + var grid = uiGridCtrl.grid; + var usesAria = true; + + // Detect whether we are using ngAria + // (if ngAria module is not used then the stuff inside addAriaLiveRegion + // is not used and provides extra fluff) + try { + angular.module('ngAria'); + } + catch (err) { + usesAria = false; + } + + function addAriaLiveRegion() { + // Thanks to google docs for the inspiration behind how to do this + // XXX: Why is this entire mess nessasary? + // Because browsers take a lot of coercing to get them to read out live regions + // http://www.paciellogroup.com/blog/2012/06/html5-accessibility-chops-aria-rolealert-browser-support/ + var ariaNotifierDomElt = '
        ' + + ' ' + + '
        '; + + var ariaNotifier = $compile(ariaNotifierDomElt)($scope); + $elm.prepend(ariaNotifier); + $scope.$on(uiGridCellNavConstants.CELL_NAV_EVENT, function (evt, rowCol, modifierDown, originEvt) { + /* + * If the cell nav event was because of a focus event then we don't want to + * change the notifier text. + * Reasoning: Voice Over fires a focus events when moving arround the grid. + * If the screen reader is handing the grid nav properly then we don't need to + * use the alert to notify the user of the movement. + * In all other cases we do want a notification event. + */ + if (originEvt && originEvt.type === 'focus') {return;} + + function setNotifyText(text) { + if (text === ariaNotifier.text().trim()) {return;} + ariaNotifier[0].style.clip = 'rect(0px,0px,0px,0px)'; + /* + * This is how google docs handles clearing the div. Seems to work better than setting the text of the div to '' + */ + ariaNotifier[0].innerHTML = ""; + ariaNotifier[0].style.visibility = 'hidden'; + ariaNotifier[0].style.visibility = 'visible'; + if (text !== '') { + ariaNotifier[0].style.clip = 'auto'; + /* + * The space after the text is something that google docs does. + */ + ariaNotifier[0].appendChild(document.createTextNode(text + " ")); + ariaNotifier[0].style.visibility = 'hidden'; + ariaNotifier[0].style.visibility = 'visible'; + } + } + + function getAppendedColumnHeaderText(col) { + return ', ' + i18nService.getSafeText('headerCell.aria.column') + ' ' + col.displayName; + } + + function getCellDisplayValue(currentRowColumn) { + var prefix = ''; + + if (currentRowColumn.col.field === 'selectionRowHeaderCol') { + // This is the case when the 'selection' feature is used in the grid and the user has moved + // to or inside of the left grid container which holds the checkboxes for selecting rows. + // This is necessary for Accessibility. Without this a screen reader cannot determine if the row + // is or is not currently selected. + prefix = (currentRowColumn.row.isSelected ? i18nService.getSafeText('search.aria.selected') : i18nService.getSafeText('search.aria.notSelected')) + ', '; + } + return prefix + grid.getCellDisplayValue(currentRowColumn.row, currentRowColumn.col); + } + + var values = []; + var currentSelection = grid.api.cellNav.getCurrentSelection(); + for (var i = 0; i < currentSelection.length; i++) { + var cellDisplayValue = getCellDisplayValue(currentSelection[i]) + getAppendedColumnHeaderText(currentSelection[i].col); + values.push(cellDisplayValue); + } + setNotifyText(values.toString()); + }); + } + // Only add the ngAria stuff it will be used + if (usesAria) { + addAriaLiveRegion(); + } + } + }; + } + }; + }]); + + module.directive('uiGridRenderContainer', ['$timeout', '$document', 'gridUtil', 'uiGridConstants', 'uiGridCellNavService', '$compile','uiGridCellNavConstants', + function ($timeout, $document, gridUtil, uiGridConstants, uiGridCellNavService, $compile, uiGridCellNavConstants) { + return { + replace: true, + priority: -99999, // this needs to run very last + require: ['^uiGrid', 'uiGridRenderContainer', '?^uiGridCellnav'], + scope: false, + compile: function () { + return { + post: function ($scope, $elm, $attrs, controllers) { + var uiGridCtrl = controllers[0], + renderContainerCtrl = controllers[1], + uiGridCellnavCtrl = controllers[2]; + + // Skip attaching cell-nav specific logic if the directive is not attached above us + if (!uiGridCtrl.grid.api.cellNav) { return; } + + var containerId = renderContainerCtrl.containerId; + + var grid = uiGridCtrl.grid; + + // run each time a render container is created + uiGridCellNavService.decorateRenderContainers(grid); + + // focusser only created for body + if (containerId !== 'body') { + return; + } + + if (uiGridCtrl.grid.options.modifierKeysToMultiSelectCells) { + $elm.attr('aria-multiselectable', true); + } + else { + $elm.attr('aria-multiselectable', false); + } + + // add an element with no dimensions that can be used to set focus and capture keystrokes + var focuser = $compile('
        ')($scope); + $elm.append(focuser); + + focuser.on('focus', function (evt) { + evt.uiGridTargetRenderContainerId = containerId; + var rowCol = uiGridCtrl.grid.api.cellNav.getFocusedCell(); + if (rowCol === null) { + rowCol = uiGridCtrl.grid.renderContainers[containerId].cellNav.getNextRowCol(uiGridCellNavConstants.direction.DOWN, null, null); + if (rowCol.row && rowCol.col) { + uiGridCtrl.cellNav.broadcastCellNav(rowCol); + } + } + }); + + uiGridCellnavCtrl.setAriaActivedescendant = function(id) { + $elm.attr('aria-activedescendant', id); + }; + + uiGridCellnavCtrl.removeAriaActivedescendant = function(id) { + if ($elm.attr('aria-activedescendant') === id) { + $elm.attr('aria-activedescendant', ''); + } + }; + + + uiGridCtrl.focus = function () { + gridUtil.focus.byElement(focuser[0]); + // allow for first time grid focus + }; + + var viewPortKeyDownWasRaisedForRowCol = null; + // Bind to keydown events in the render container + focuser.on('keydown', function (evt) { + evt.uiGridTargetRenderContainerId = containerId; + var rowCol = uiGridCtrl.grid.api.cellNav.getFocusedCell(); + var raiseViewPortKeyDown = uiGridCtrl.grid.options.keyDownOverrides.some(function (override) { + return Object.keys(override).every( function (property) { + return override[property] === evt[property]; + }); + }); + var result = raiseViewPortKeyDown ? null : uiGridCtrl.cellNav.handleKeyDown(evt); + if (result === null) { + uiGridCtrl.grid.api.cellNav.raise.viewPortKeyDown(evt, rowCol, uiGridCtrl.cellNav.handleKeyDown); + viewPortKeyDownWasRaisedForRowCol = rowCol; + } + }); + // Bind to keypress events in the render container + // keypress events are needed by edit function so the key press + // that initiated an edit is not lost + // must fire the event in a timeout so the editor can + // initialize and subscribe to the event on another event loop + focuser.on('keypress', function (evt) { + if (viewPortKeyDownWasRaisedForRowCol) { + $timeout(function () { + uiGridCtrl.grid.api.cellNav.raise.viewPortKeyPress(evt, viewPortKeyDownWasRaisedForRowCol); + }, 4); + + viewPortKeyDownWasRaisedForRowCol = null; + } + }); + + $scope.$on('$destroy', function() { + // Remove all event handlers associated with this focuser. + focuser.off(); + }); + } + }; + } + }; + }]); + + module.directive('uiGridViewport', + function () { + return { + replace: true, + priority: -99999, // this needs to run very last + require: ['^uiGrid', '^uiGridRenderContainer', '?^uiGridCellnav'], + scope: false, + compile: function () { + return { + pre: function ($scope, $elm, $attrs, uiGridCtrl) { + }, + post: function ($scope, $elm, $attrs, controllers) { + var uiGridCtrl = controllers[0], + renderContainerCtrl = controllers[1]; + + // Skip attaching cell-nav specific logic if the directive is not attached above us + if (!uiGridCtrl.grid.api.cellNav) { return; } + + var containerId = renderContainerCtrl.containerId; + // no need to process for other containers + if (containerId !== 'body') { + return; + } + + var grid = uiGridCtrl.grid; + + grid.api.core.on.scrollBegin($scope, function () { + + // Skip if there's no currently-focused cell + var lastRowCol = uiGridCtrl.grid.api.cellNav.getFocusedCell(); + if (lastRowCol === null) { + return; + } + + // if not in my container, move on + // todo: worry about horiz scroll + if (!renderContainerCtrl.colContainer.containsColumn(lastRowCol.col)) { + return; + } + + uiGridCtrl.cellNav.clearFocus(); + + }); + + grid.api.core.on.scrollEnd($scope, function (args) { + // Skip if there's no currently-focused cell + var lastRowCol = uiGridCtrl.grid.api.cellNav.getFocusedCell(); + if (lastRowCol === null) { + return; + } + + // if not in my container, move on + // todo: worry about horiz scroll + if (!renderContainerCtrl.colContainer.containsColumn(lastRowCol.col)) { + return; + } + + uiGridCtrl.cellNav.broadcastCellNav(lastRowCol); + }); + + grid.api.cellNav.on.navigate($scope, function () { + // focus again because it can be lost + uiGridCtrl.focus(); + }); + } + }; + } + }; + }); + + /** + * @ngdoc directive + * @name ui.grid.cellNav.directive:uiGridCell + * @element div + * @restrict A + * @description Stacks on top of ui.grid.uiGridCell to provide cell navigation + */ + module.directive('uiGridCell', ['$timeout', '$document', 'uiGridCellNavService', 'gridUtil', 'uiGridCellNavConstants', 'uiGridConstants', 'GridRowColumn', + function ($timeout, $document, uiGridCellNavService, gridUtil, uiGridCellNavConstants, uiGridConstants, GridRowColumn) { + return { + priority: -150, // run after default uiGridCell directive and ui.grid.edit uiGridCell + restrict: 'A', + require: ['^uiGrid', '?^uiGridCellnav'], + scope: false, + link: function ($scope, $elm, $attrs, controllers) { + var uiGridCtrl = controllers[0], + uiGridCellnavCtrl = controllers[1]; + // Skip attaching cell-nav specific logic if the directive is not attached above us + if (!uiGridCtrl.grid.api.cellNav) { return; } + + if (!$scope.col.colDef.allowCellFocus) { + return; + } + + // Convinience local variables + var grid = uiGridCtrl.grid; + $scope.focused = false; + + // Make this cell focusable but only with javascript/a mouse click + $elm.attr('tabindex', -1); + + // When a cell is clicked, broadcast a cellNav event saying that this row+col combo is now focused + $elm.find('div').on('click', function (evt) { + uiGridCtrl.cellNav.broadcastCellNav(new GridRowColumn($scope.row, $scope.col), evt.ctrlKey || evt.metaKey, evt); + + evt.stopPropagation(); + $scope.$apply(); + }); + + + /* + * XXX Hack for screen readers. + * This allows the grid to focus using only the screen reader cursor. + * Since the focus event doesn't include key press information we can't use it + * as our primary source of the event. + */ + $elm.on('mousedown', preventMouseDown); + + // turn on and off for edit events + if (uiGridCtrl.grid.api.edit) { + uiGridCtrl.grid.api.edit.on.beginCellEdit($scope, function () { + $elm.off('mousedown', preventMouseDown); + }); + + uiGridCtrl.grid.api.edit.on.afterCellEdit($scope, function () { + $elm.on('mousedown', preventMouseDown); + }); + + uiGridCtrl.grid.api.edit.on.cancelCellEdit($scope, function () { + $elm.on('mousedown', preventMouseDown); + }); + } + + // In case we created a new row, and we are the new created row by ngRepeat + // then this cell content might have been selected previously + refreshCellFocus(); + + function preventMouseDown(evt) { + // Prevents the foucus event from firing if the click event is already going to fire. + // If both events fire it will cause bouncing behavior. + evt.preventDefault(); + } + + // You can only focus on elements with a tabindex value + $elm.on('focus', function (evt) { + uiGridCtrl.cellNav.broadcastCellNav(new GridRowColumn($scope.row, $scope.col), false, evt); + evt.stopPropagation(); + $scope.$apply(); + }); + + // This event is fired for all cells. If the cell matches, then focus is set + $scope.$on(uiGridCellNavConstants.CELL_NAV_EVENT, refreshCellFocus); + + // Refresh cell focus when a new row id added to the grid + var dataChangeDereg = uiGridCtrl.grid.registerDataChangeCallback(function (grid) { + // Clear the focus if it's set to avoid the wrong cell getting focused during + // a short period of time (from now until $timeout function executed) + clearFocus(); + + $scope.$applyAsync(refreshCellFocus); + }, [uiGridConstants.dataChange.ROW]); + + function refreshCellFocus() { + var isFocused = grid.cellNav.focusedCells.some(function (focusedRowCol, index) { + return (focusedRowCol.row === $scope.row && focusedRowCol.col === $scope.col); + }); + if (isFocused) { + setFocused(); + } else { + clearFocus(); + } + } + + function setFocused() { + if (!$scope.focused) { + var div = $elm.find('div'); + div.addClass('ui-grid-cell-focus'); + $elm.attr('aria-selected', true); + uiGridCellnavCtrl.setAriaActivedescendant($elm.attr('id')); + $scope.focused = true; + } + } + + function clearFocus() { + if ($scope.focused) { + var div = $elm.find('div'); + div.removeClass('ui-grid-cell-focus'); + $elm.attr('aria-selected', false); + uiGridCellnavCtrl.removeAriaActivedescendant($elm.attr('id')); + $scope.focused = false; + } + } + + $scope.$on('$destroy', function () { + dataChangeDereg(); + + // .off withouth paramaters removes all handlers + $elm.find('div').off(); + $elm.off(); + }); + } + }; + }]); +})(); + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other entry modules. +(() => { +__webpack_require__(590); + +})(); + +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +(() => { +"use strict"; +// extracted by mini-css-extract-plugin + +})(); + +/******/ })() +; \ No newline at end of file diff --git a/release/4.12.0/ui-grid.cellNav.min.js b/release/4.12.0/ui-grid.cellNav.min.js new file mode 100644 index 000000000..ca09708bc --- /dev/null +++ b/release/4.12.0/ui-grid.cellNav.min.js @@ -0,0 +1,2 @@ +/*! For license information please see ui-grid.cellNav.min.js.LICENSE.txt */ +(()=>{var e={590:()=>{!function(){"use strict";var e=angular.module("ui.grid.cellNav",["ui.grid"]);e.constant("uiGridCellNavConstants",{FEATURE_NAME:"gridCellNav",CELL_NAV_EVENT:"cellNav",direction:{LEFT:0,RIGHT:1,UP:2,DOWN:3,PG_UP:4,PG_DOWN:5},EVENT_TYPE:{KEYDOWN:0,CLICK:1,CLEAR:2}}),e.factory("uiGridCellNavFactory",["gridUtil","uiGridConstants","uiGridCellNavConstants","GridRowColumn","$q",function(e,l,i,o,n){var t=function(e,l,i,o){this.rows=e.visibleRowCache,this.columns=l.visibleColumnCache,this.leftColumns=i?i.visibleColumnCache:[],this.rightColumns=o?o.visibleColumnCache:[],this.bodyContainer=e};return t.prototype.getFocusableCols=function(){return this.leftColumns.concat(this.columns,this.rightColumns).filter((function(e){return e.colDef.allowCellFocus}))},t.prototype.getFocusableRows=function(){return this.rows.filter((function(e){return!1!==e.allowCellFocus}))},t.prototype.getNextRowCol=function(e,l,o){switch(e){case i.direction.LEFT:return this.getRowColLeft(l,o);case i.direction.RIGHT:return this.getRowColRight(l,o);case i.direction.UP:return this.getRowColUp(l,o);case i.direction.DOWN:return this.getRowColDown(l,o);case i.direction.PG_UP:return this.getRowColPageUp(l,o);case i.direction.PG_DOWN:return this.getRowColPageDown(l,o)}},t.prototype.initializeSelection=function(){var e=this.getFocusableCols(),l=this.getFocusableRows();return 0===e.length||0===l.length?null:new o(l[0],e[0])},t.prototype.getRowColLeft=function(e,l){var i=this.getFocusableCols(),n=this.getFocusableRows(),t=i.indexOf(l),r=n.indexOf(e);-1===t&&(t=1);var a=0===t?i.length-1:t-1;return new o(a>=t?0===r?e:n[r-1]:e,i[a])},t.prototype.getRowColRight=function(e,l){var i=this.getFocusableCols(),n=this.getFocusableRows(),t=i.indexOf(l),r=n.indexOf(e);-1===t&&(t=0);var a=t===i.length-1?0:t+1;return a<=t?r===n.length-1?new o(e,i[a]):new o(n[r+1],i[a]):new o(e,i[a])},t.prototype.getRowColDown=function(e,l){var i=this.getFocusableCols(),n=this.getFocusableRows(),t=i.indexOf(l),r=n.indexOf(e);return-1===t&&(t=0),r===n.length-1?new o(e,i[t]):new o(n[r+1],i[t])},t.prototype.getRowColPageDown=function(e,l){var i=this.getFocusableCols(),n=this.getFocusableRows(),t=i.indexOf(l),r=n.indexOf(e);-1===t&&(t=0);var a=this.bodyContainer.minRowsToRender();return r>=n.length-a?new o(n[n.length-1],i[t]):new o(n[r+a],i[t])},t.prototype.getRowColUp=function(e,l){var i=this.getFocusableCols(),n=this.getFocusableRows(),t=i.indexOf(l),r=n.indexOf(e);return-1===t&&(t=0),new o(0===r?e:n[r-1],i[t])},t.prototype.getRowColPageUp=function(e,l){var i=this.getFocusableCols(),n=this.getFocusableRows(),t=i.indexOf(l),r=n.indexOf(e);-1===t&&(t=0);var a=this.bodyContainer.minRowsToRender();return new o(r-a<0?n[0]:n[r-a],i[t])},t}]),e.service("uiGridCellNavService",["gridUtil","uiGridConstants","uiGridCellNavConstants","$q","uiGridCellNavFactory","GridRowColumn","ScrollEvent",function(e,l,i,o,n,t,r){var a={initializeGrid:function(e){e.registerColumnBuilder(a.cellNavColumnBuilder),e.cellNav={},e.cellNav.lastRowCol=null,e.cellNav.focusedCells=[],a.defaultGridOptions(e.options);var l={events:{cellNav:{navigate:function(e,l){},viewPortKeyDown:function(e,l){},viewPortKeyPress:function(e,l){}}},methods:{cellNav:{scrollToFocus:function(l,i){return a.scrollToFocus(e,l,i)},getFocusedCell:function(){return e.cellNav.lastRowCol},getCurrentSelection:function(){return e.cellNav.focusedCells},rowColSelectIndex:function(l){for(var i=-1,o=0;o0)return e[0]},a.cellNav.broadcastCellNav=s.cellNav.broadcastCellNav=function(e,l,o){l=!(void 0===l||!l),e=a.cellNav.makeRowCol(e),a.cellNav.broadcastFocus(e,l,o),c.$broadcast(i.CELL_NAV_EVENT,e,l,o)},a.cellNav.clearFocus=s.cellNav.clearFocus=function(){s.cellNav.focusedCells=[],c.$broadcast(i.CELL_NAV_EVENT)},a.cellNav.broadcastFocus=function(e,l,i){l=!(void 0===l||!l);var o=(e=a.cellNav.makeRowCol(e)).row,t=e.col,r=a.grid.api.cellNav.rowColSelectIndex(e);if(null===s.cellNav.lastRowCol||-1===r||s.cellNav.lastRowCol.col===t&&s.cellNav.lastRowCol.row===o){var c=new n(o,t);(null===s.cellNav.lastRowCol||s.cellNav.lastRowCol.row!==c.row||s.cellNav.lastRowCol.col!==c.col||s.options.enableCellEditOnFocus)&&(s.api.cellNav.raise.navigate(c,s.cellNav.lastRowCol,i),s.cellNav.lastRowCol=c),a.grid.options.modifierKeysToMultiSelectCells&&l?s.cellNav.focusedCells.push(e):s.cellNav.focusedCells=[e]}else s.options.modifierKeysToMultiSelectCells&&l&&r>=0&&s.cellNav.focusedCells.splice(r,1)},a.cellNav.handleKeyDown=function(e){var n=l.getDirection(e);if(null===n)return null;var t="body";e.uiGridTargetRenderContainerId&&(t=e.uiGridTargetRenderContainerId);var r=a.grid.api.cellNav.getFocusedCell();if(r){var c=a.grid.renderContainers[t].cellNav.getNextRowCol(n,r.row,r.col),d=a.grid.renderContainers[t].cellNav.getFocusableCols(),u=a.grid.api.cellNav.rowColSelectIndex(c);return n===i.direction.LEFT&&c.col===d[d.length-1]&&c.row===r.row&&e.keyCode===o.keymap.TAB&&e.shiftKey?(s.cellNav.focusedCells.splice(u,1),a.cellNav.clearFocus(),!0):n!==i.direction.RIGHT||c.col!==d[0]||c.row!==r.row||e.keyCode!==o.keymap.TAB||e.shiftKey?(s.scrollToIfNecessary(c.row,c.col).then((function(){a.cellNav.broadcastCellNav(c,null,e)})),e.stopPropagation(),e.preventDefault(),!1):(s.cellNav.focusedCells.splice(u,1),a.cellNav.clearFocus(),!0)}}},post:function(e,l,o,n){var t,c,s=n.grid,d=!0;try{angular.module("ngAria")}catch(e){d=!1}d&&(t='',c=r(t)(e),l.prepend(c),e.$on(i.CELL_NAV_EVENT,(function(e,l,i,o){if(!o||"focus"!==o.type){for(var n,t,r,d,u=[],v=s.api.cellNav.getCurrentSelection(),C=0;C
        ')(l);o.append(f),f.on("focus",(function(e){e.uiGridTargetRenderContainerId=v;var l=s.grid.api.cellNav.getFocusedCell();null===l&&(l=s.grid.renderContainers[v].cellNav.getNextRowCol(r.direction.DOWN,null,null)).row&&l.col&&s.cellNav.broadcastCellNav(l)})),u.setAriaActivedescendant=function(e){o.attr("aria-activedescendant",e)},u.removeAriaActivedescendant=function(e){o.attr("aria-activedescendant")===e&&o.attr("aria-activedescendant","")},s.focus=function(){i.focus.byElement(f[0])};var g=null;f.on("keydown",(function(e){e.uiGridTargetRenderContainerId=v;var l=s.grid.api.cellNav.getFocusedCell();null===(s.grid.options.keyDownOverrides.some((function(l){return Object.keys(l).every((function(i){return l[i]===e[i]}))}))?null:s.cellNav.handleKeyDown(e))&&(s.grid.api.cellNav.raise.viewPortKeyDown(e,l,s.cellNav.handleKeyDown),g=l)})),f.on("keypress",(function(l){g&&(e((function(){s.grid.api.cellNav.raise.viewPortKeyPress(l,g)}),4),g=null)})),l.$on("$destroy",(function(){f.off()}))}}}}}}}]),e.directive("uiGridViewport",(function(){return{replace:!0,priority:-99999,require:["^uiGrid","^uiGridRenderContainer","?^uiGridCellnav"],scope:!1,compile:function(){return{pre:function(e,l,i,o){},post:function(e,l,i,o){var n=o[0],t=o[1];if(n.grid.api.cellNav&&"body"===t.containerId){var r=n.grid;r.api.core.on.scrollBegin(e,(function(){var e=n.grid.api.cellNav.getFocusedCell();null!==e&&t.colContainer.containsColumn(e.col)&&n.cellNav.clearFocus()})),r.api.core.on.scrollEnd(e,(function(e){var l=n.grid.api.cellNav.getFocusedCell();null!==l&&t.colContainer.containsColumn(l.col)&&n.cellNav.broadcastCellNav(l)})),r.api.cellNav.on.navigate(e,(function(){n.focus()}))}}}}}})),e.directive("uiGridCell",["$timeout","$document","uiGridCellNavService","gridUtil","uiGridCellNavConstants","uiGridConstants","GridRowColumn",function(e,l,i,o,n,t,r){return{priority:-150,restrict:"A",require:["^uiGrid","?^uiGridCellnav"],scope:!1,link:function(e,l,i,o){var a=o[0],c=o[1];if(a.grid.api.cellNav&&e.col.colDef.allowCellFocus){var s=a.grid;e.focused=!1,l.attr("tabindex",-1),l.find("div").on("click",(function(l){a.cellNav.broadcastCellNav(new r(e.row,e.col),l.ctrlKey||l.metaKey,l),l.stopPropagation(),e.$apply()})),l.on("mousedown",u),a.grid.api.edit&&(a.grid.api.edit.on.beginCellEdit(e,(function(){l.off("mousedown",u)})),a.grid.api.edit.on.afterCellEdit(e,(function(){l.on("mousedown",u)})),a.grid.api.edit.on.cancelCellEdit(e,(function(){l.on("mousedown",u)}))),v(),l.on("focus",(function(l){a.cellNav.broadcastCellNav(new r(e.row,e.col),!1,l),l.stopPropagation(),e.$apply()})),e.$on(n.CELL_NAV_EVENT,v);var d=a.grid.registerDataChangeCallback((function(l){C(),e.$applyAsync(v)}),[t.dataChange.ROW]);e.$on("$destroy",(function(){d(),l.find("div").off(),l.off()}))}function u(e){e.preventDefault()}function v(){s.cellNav.focusedCells.some((function(l,i){return l.row===e.row&&l.col===e.col}))?function(){if(!e.focused){l.find("div").addClass("ui-grid-cell-focus"),l.attr("aria-selected",!0),c.setAriaActivedescendant(l.attr("id")),e.focused=!0}}():C()}function C(){e.focused&&(l.find("div").removeClass("ui-grid-cell-focus"),l.attr("aria-selected",!1),c.removeAriaActivedescendant(l.attr("id")),e.focused=!1)}}}}])}()}},l={};function i(o){var n=l[o];if(void 0!==n)return n.exports;var t=l[o]={exports:{}};return e[o](t,t.exports,i),t.exports}i(590)})(); \ No newline at end of file diff --git a/release/4.12.0/ui-grid.core.js b/release/4.12.0/ui-grid.core.js new file mode 100644 index 000000000..c0ed6a2bc --- /dev/null +++ b/release/4.12.0/ui-grid.core.js @@ -0,0 +1,13055 @@ +/*! + * ui-grid - v4.12.0 - 2023-01-12 + * http://ui-grid.info/ + * Copyright (c) 2023 UI Grid Team; License: MIT + */ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ 5747: +/***/ ((module) => { + +module.exports = "\n \n \n\n \n \n  \n \n \n \n\n \n 0\"\n ng-attr-placeholder=\"{{colFilter.placeholder || aria.defaultFilterLabel}}\"\n aria-label=\"{{colFilter.ariaLabel || ''}}\"\n ng-options=\"option.value as option.label for option in colFilter.selectOptions\">\n \n \n\n \n \n  \n \n \n \n\n" + +/***/ }), + +/***/ 2834: +/***/ ((module) => { + +module.exports = " \n \n \n \n \n \n \n \n \n \n \n\n" + +/***/ }), + +/***/ 5123: +/***/ ((module) => { + +module.exports = "\n" + +/***/ }), + +/***/ 5847: +/***/ ((module) => { + +module.exports = " \n \n \n \n \n \n \n \n \n \n \n \n \n\n" + +/***/ }), + +/***/ 5195: +/***/ ((module) => { + +module.exports = "
        \n
        \n  \n
        \n
        \n
        \n" + +/***/ }), + +/***/ 4095: +/***/ ((module) => { + +module.exports = "
      • \n\t\n\t\t\n\t\t\n\t\n
      • " + +/***/ }), + +/***/ 2056: +/***/ ((module) => { + +module.exports = "
        \n
        " + +/***/ }), + +/***/ 5004: +/***/ ((module) => { + +module.exports = " \n\n" + +/***/ }), + +/***/ 2194: +/***/ ((module) => { + +module.exports = "
        \n \n \n\n
        \n
        \n\n
        \n\n
        \n
        \n\n
        \n\n\n
        \n\n
        \n\n
        \n
        \n
        \n" + +/***/ }), + +/***/ 5352: +/***/ ((module) => { + +module.exports = "\n {{COL_FIELD CUSTOM_FILTERS}}\n\n" + +/***/ }), + +/***/ 8350: +/***/ ((module) => { + +module.exports = "
        \n
        \n \n
        \n
        " + +/***/ }), + +/***/ 4358: +/***/ ((module) => { + +module.exports = "\n
        \n {{ col.getAggregationText() + ( col.getAggregationValue() CUSTOM_FILTERS ) }}\n
        \n\n" + +/***/ }), + +/***/ 6715: +/***/ ((module) => { + +module.exports = "\n \n {{ col.displayName CUSTOM_FILTERS }}\n\n \n \n \n \n {{col.sort.priority + 1}}\n \n \n \n\n \n \n  \n \n \n\n
        \n\n" + +/***/ }), + +/***/ 5760: +/***/ ((module) => { + +module.exports = "\n \n \n \n \n \n \n
      • \n
        \n
      • \n \n \n \n\n" + +/***/ }), + +/***/ 9000: +/***/ ((module) => { + +module.exports = "\n